Исходник Гайд [RodinaRP] [CEF] Dialogs & Auto log/reg & guide. (RakSamp Lite/ARZ Launcher)

ScripTER 2.0

Участник
113
5
никому ниче размусоливать не буду, не поняли - вам в раздел "работа и услуги".

Суть скрипта и его команды(arz launcher):​

/cef - активация/дезактивация скрипта.
/cefadd - добавление действия в список.
/cefclear - удаление всех действий из списка.
/cefstart - запуск всех действий из списка.

Гайд по тому, как узнавать какие действия нужны.
Запускаем скрипт, активируем.
Выполням любое действие связанное с цефом.
Справа от карты появится строка, которую можно эмулировать, добавив ее в список через /cefadd.
/cefreg - зарегистрироваться (можно прямо с окна авторизации) с ранее записанными данными в таблице (через код).
/ceflogin - авторизация с раннее записанными данными в таблице (через код).
Переходим к коду.
Строку действия вы можете получить по гайду выше.
Lua:
function sendCef(str)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt8(bs, string.len(str))
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetSendBitStreamEx(bs, 2, 9, 6)
end
Обработчик диалогов есть в коде (айди, тип, заголовок, текст, текст первой кнопки, текст второй кнопки, мод(хз что это) передаётся на 39 строке при появлении диалога.
Отправка ответа диалогу.
Lua:
function sendDialogResponse(id, button, list, input)
    local str = string.format("@0, sendResponse, %s, %s, %s, %s", id, list, button, input)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt8(bs, string.len(str))
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt8(bs, 0)
    raknetSendBitStreamEx(bs, 2, 9, 6)
end
Регистрация:
function sendReg(nick, password, ref)
    lua_thread.create(function()
        local str1 = string.format("registration|%s|%s|null|friends|%s", nick, password, ref)
        local bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(bs, 220)
        raknetBitStreamWriteInt8(bs, 18)
        raknetBitStreamWriteInt32(bs, string.len(str1))
        raknetBitStreamWriteString(bs, str1)
        raknetBitStreamWriteInt32(bs, 1)
        raknetSendBitStreamEx(bs, 2, 9, 6)

        wait(500)

        local str2 = "createCharacter|man|0"
        local bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(bs, 220)
        raknetBitStreamWriteInt8(bs, 18)
        raknetBitStreamWriteInt32(bs, string.len(str2))
        raknetBitStreamWriteString(bs, str2)
        raknetBitStreamWriteInt32(bs, 1)
        raknetSendBitStreamEx(bs, 2, 9, 6)
    end)
end

Авторизация:
function sendAuth(nick, password)
    local str = string.format("authorization|%s|%s|0", nick, password)
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 220)
    raknetBitStreamWriteInt8(bs, 18)
    raknetBitStreamWriteInt32(bs, string.len(str))
    raknetBitStreamWriteString(bs, str)
    raknetBitStreamWriteInt32(bs, 1)
    raknetSendBitStreamEx(bs, 2, 9, 6)
end


Перейдем к скрипту на RakSampLite:​

Обработчик диалогов есть в коде (айди, тип, заголовок, текст, текст первой кнопки, текст второй кнопки, мод(хз что это) передаётся на 32 строке при появлении диалога.
Отправка ответа диалогу.
Lua:
function sendDialogResponse(id, button, list, input)
    local string = string.format("@0, sendResponse, %s, %s, %s, %s", id, list, button, input)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()
end
Lua:
function Validation()
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(20)
    bs:writeInt8(128)
    bs:writeInt8(7)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(56)
    bs:writeInt8(4)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(38)
    bs:writeInt8(101)
    bs:writeInt8(7)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(56)
    bs:writeInt8(4)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(50)
    bs:writeInt8(1)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new() -- TEST
    bs:writeInt8(220)
    bs:writeInt8(10)
    bs:writeInt8(0)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new() -- TEST
    bs:writeInt8(220)
    bs:writeInt8(10)
    bs:writeInt8(1)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "svelteReady"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt32(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "@0, vueReady"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "onActiveViewChanged|"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "onActiveViewChanged|Auth"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()
end
Авторизация:
function sendAuthorization(nick, pass)
    local string = string.format("authorization|%s|%s|0", nick, pass)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt32(string.len(string))
    bs:writeString(string)
    bs:writeInt32(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()
end

Регистрация:
function sendRegister(nick, pass, ref)
    newTask(function()
        local string1 = string.format("registration|%s|%s|null|friends|%s", nick, pass, ref)
        local bs = bitStream.new()
        bs:writeInt8(220)
        bs:writeInt8(18)
        bs:writeInt32(string.len(string1))
        bs:writeString(string1)
        bs:writeInt32(1)
        bs:sendPacketEx(2, 9, 6)
        bs:reset()

        wait(500)

        local string2 = "createCharacter|man|0"
        local bs = bitStream.new()
        bs:writeInt8(220)
        bs:writeInt8(18)
        bs:writeInt32(string.len(string2))
        bs:writeString(string2)
        bs:writeInt32(1)
        bs:sendPacketEx(2, 9, 6)
        bs:reset()
    end)
end

raksamp cef rodinarp.lua - на 5 и 6 строке вписать ник и пароль в кавычки(для автологина).

спс @neverlane за помощь с авторизацией

при использовании любого кода с данной темы надо указывать ссылку на эту тему.
Было сложно сделать что бы он сам нажмал куда спавнится? если можешь скажи как сделать или ты сделай очень нужная тема)
 

kickflip

Потрачен
92
14
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а как сделать нажатие кнопки на новых cef квестах на аризонке?
 

Улиточка

Известный
383
135
Я cef почти не знаю, но из того что я знаю могу сделать вывод что это афигенно.
А где можно документацию по cef глянуть? хочу попробовать переделать некоторые скрипты под него.
а в обычном луа коде идентично как и в раксамплайте код пишется ? я просто деревянный и не понимаю пока.
 

qioxun

Участник
37
9
будет ли фикс в связи с последним обновлением входящих и исходящих пакетов?
 

Notepad++

Известный
288
166
будет ли фикс в связи с последним обновлением входящих и исходящих пакетов?
 

qioxun

Участник
37
9
там пример больше подходит для автологина под лаунчер, мне же нужен для раксампа
 

Notepad++

Известный
288
166
там пример больше подходит для автологина под лаунчер, мне же нужен для раксампа
Lua:
function onReceivePacket(id, bs)
    if id == 220 then
        bs:ignoreBits(8)
        if (bs:readInt8() == 17) then
            bs:ignoreBits(32)
            local length = bs:readInt16()
            local encoded = bs:readInt8()
            local str = (encoded ~= 0) and bs:readEncoded(length + encoded) or bs:readString(length)
            print(str)
        end
    end
end

--отправка
function emulcef(str)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt16(#str)
    bs:writeString(str)
    bs:writeInt32(0)
    bs:writeInt16(0)
    bs:sendPacket()
    bs:reset()
end
 

qioxun

Участник
37
9
Lua:
function onReceivePacket(id, bs)
    if id == 220 then
        bs:ignoreBits(8)
        if (bs:readInt8() == 17) then
            bs:ignoreBits(32)
            local length = bs:readInt16()
            local encoded = bs:readInt8()
            local str = (encoded ~= 0) and bs:readEncoded(length + encoded) or bs:readString(length)
            print(str)
        end
    end
end

--отправка
function emulcef(str)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt16(#str)
    bs:writeString(str)
    bs:writeInt32(0)
    bs:writeInt16(0)
    bs:sendPacket()
    bs:reset()
end
даже при таком раскладе не хочет авторизовываться


Lua:
function sampev.onSendClientJoin(version, mod, nickname, challengeResponse, joinAuthKey, clientVer, challengeResponse2)
    newTask(function()
        wait(1000)
        Validation()
        
        wait(1000)
        local initString = "svelteReady"
        emulcef(initString)
        
        wait(500)
        emulcef("@0, vueReady")
        
        wait(500)
        emulcef("onActiveViewChanged|Auth")
    end)
end

function onReceivePacket(id, bs)
    if id == 220 then
        bs:ignoreBits(8)
        local subType = bs:readInt8()
        if (subType == 17) then
            bs:ignoreBits(32)
            local length = bs:readInt16()
            local encoded = bs:readInt8()
            local str = (encoded ~= 0) and bs:readEncoded(length + encoded) or bs:readString(length)
            print("Received string:", tostring(str))
            
            if str:find("window.executeEvent%(%'event%.setActiveView%'%,") and str:find('%[%"Auth%"%]') then
                if authorization.nick ~= "" and authorization.password ~= "" then
                    newTask(function()
                        wait(1000)
                        sendAuthorization(authorization.nick, authorization.password)
                    end)
                end
            end
            
            if str:find("vue%.showModal%(%'Dialog%'") then
                local event, js = str:match("vue%.showModal%(%'(.+)%'%, (.+)")
                js = js:gsub("%{......%}", "")
                local id, type, title, text, btn1, btn2, _ = js:match("%{id%:(%d+)%,type%:(%d+)%,header%:%'(.+)%'%,body%:%`(.+)%`%,primaryButton%:%'(.+)%'%,secondaryButton%:%'(.+)%'%,mode%:(%d+)")
                print("Dialog! | id " ..id.. " | type " ..type.. " | title " ..title.. " | text " .. text)
            end
        end
    end
end

function emulcef(str)
    str = str or ""
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt16(#str)
    bs:writeString(str)
    bs:writeInt32(0)
    bs:writeInt16(0)
    bs:sendPacket()
    bs:reset()
end

function Validation()
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(20)
    bs:writeInt8(128)
    bs:writeInt8(7)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(56)
    bs:writeInt8(4)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(38)
    bs:writeInt8(101)
    bs:writeInt8(7)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(56)
    bs:writeInt8(4)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(50)
    bs:writeInt8(1)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new() -- TEST
    bs:writeInt8(220)
    bs:writeInt8(10)
    bs:writeInt8(0)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local bs = bitStream.new() -- TEST
    bs:writeInt8(220)
    bs:writeInt8(10)
    bs:writeInt8(1)
    bs:writeInt16(1)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "svelteReady"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt32(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "@0, vueReady"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "onActiveViewChanged|"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()

    local string = "onActiveViewChanged|Auth"
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(1)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()
end

function sendDialogResponse(id, button, list, input)
    local string = string.format("@0, sendResponse, %s, %s, %s, %s", id, list, button, input)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(string.len(string))
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(string)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(2, 9, 6)
    bs:reset()
end

function sendAuthorization(nick, pass)
    print("[DEBUG] Sending auth data for:", nick)
    local authString = string.format("authorization|%s|%s|0", nick, pass)
    print("[DEBUG] Auth string:", authString)
    local bs = bitStream.new()
    bs:writeInt8(220)
    bs:writeInt8(18)
    bs:writeInt16(#authString)
    bs:writeString(authString)
    bs:writeInt32(1)
    bs:writeInt16(0)
    bs:sendPacket()
    bs:reset()
end

function sendRegister(nick, pass, ref)
    newTask(function()
        local string1 = string.format("registration|%s|%s|null|friends|%s", nick, pass, ref)
        local bs = bitStream.new()
        bs:writeInt8(220)
        bs:writeInt8(18)
        bs:writeInt32(string.len(string1))
        bs:writeString(string1)
        bs:writeInt32(1)
        bs:sendPacketEx(2, 9, 6)
        bs:reset()

        wait(500)

        local string2 = "createCharacter|man|0"
        local bs = bitStream.new()
        bs:writeInt8(220)
        bs:writeInt8(18)
        bs:writeInt32(string.len(string2))
        bs:writeString(string2)
        bs:writeInt32(1)
        bs:sendPacketEx(2, 9, 6)
        bs:reset()
    end)
end