Исходник Гайд [ARZ] CEF Events

976h

Активный
271
88
Для своих нужд склепан такой вариант. Вдруг кому то будет по душе

Регистрируем хендлер на определенный ивент и слушаем его
Имеет поддержку отклонение пакета через return false

Lua:
local cefLib = require("cefLib")

local cefHandler = cefLib.new()

cefHandler:registerReceiveHandler("event.setActiveView", function(event, data)
    print(event) -- event.setActiveView
    print(data) -- Phone
end)

cefHandler:registerReceiveHandler("event.arizonahud.setRadialKey", function(event, data)
    print(event) -- event.arizonahud.setRadialKey
    print(data) -- R
end)

addEventHandler("onReceivePacket", function(id, bs)
    return cefHandler:onReceivePacket(id, bs)
end)
Регистрируем глобальный хендлер на все исходящие пакеты
Имеет поддержку отклонение пакета через return false

Lua:
local cefLib = require("cefLib")

local cefHandler = cefLib.new()

cefHandler:registerSendHandler(function(event, data)
    print(event) -- onActiveViewChanged
    print(data) -- Phone
end)

addEventHandler("onSendPacket", function(id, bs)
    return cefHandler:onSendPacket(id, bs)
end)

Ну и базовые функции:
Lua:
cefHandler:Emulate({220, 0, 80, 64}) -- Открываем телефон
cefHandler:SendCEF('launchedApp|24') -- Открываем приложение в телефоне
cefHandler:Emulate({220, 0, 27, 64}) -- Закрываем телефон
Зачем библиотеку отдельную для отправки?
 

NaTilte

Новичок
2
0
Ребят, я недавно начал изучать луа, ПК есть, но я больше для монетлоадер делаю скрипты, вот по тихоньку разобрался с rpc,mimgui, sampfuncs, и освоил базу(немного путаюсь но все же), так вот, хочу изучить cef диалоги, научится работать с ними, но я немогу нигде найти никаких гайдов, мб плохо искал но все же, можете кому не сложно скинуть ссылку на рабочий скрипт для отлова пакетов cef(я пробовал какой то 1, он не ало вроде), буду очень благодарен!!!
 

vmprotect

Известный
393
271
Сегодня на аризоне немного обновился цеф и часть скриптов перестала работать. Изменили они не очень много, вот новая структура входящего пакета:
C:
struct cef_packet_recieved {
    uint8_t packet_id; // default 220
    uint8_t unknown_id; // default 17
    uint32_t _unused;
    uint16_t length;
    uint8_t is_encoded; // 1 - encoded, 0 - default
    char[] str; // char[length + is_encoded]
    // если строка закодирована, то + 1 байт к длине, иначе не захватит последний символ
};

Код для чтения входящего пакета:
Lua:
addEventHandler('onReceivePacket', function (id, bs)
  if id == 220 then
    raknetBitStreamIgnoreBits(bs, 8)
    if (raknetBitStreamReadInt8(bs) == 17) then
      raknetBitStreamIgnoreBits(bs, 32)
      local length = raknetBitStreamReadInt16(bs)
      local encoded = raknetBitStreamReadInt8(bs)
      local str = (encoded ~= 0) and raknetBitStreamDecodeString(bs, length + encoded) or raknetBitStreamReadString(bs, length)
      print(str) -- строка из пакета
    end
  end
end)

up
Исходящие пакеты всё-таки тоже изменились:
C:
struct cef_packet_sended {
    uint8_t packet_id; // default 220, другие не разбирал
    uint8_t packet_type;
    uint16_t length;
    char[] str; // строка из пакета: char[length]
    uint32_t _unused;
}

Код для отправки исходящего пакета:
Lua:
function send_cef(str)
  local bs = raknetNewBitStream()
  raknetBitStreamWriteInt8(bs, 220)
  raknetBitStreamWriteInt8(bs, 18)
  raknetBitStreamWriteInt16(bs, #str)
  raknetBitStreamWriteString(bs, str)
  raknetBitStreamWriteInt32(bs, 0)
  raknetSendBitStream(bs)
  raknetDeleteBitStream(bs)
end

Код для чтения исходящего пакета:
Lua:
addEventHandler('onSendPacket', function (id, bs, priority, reliability, orderingChannel)
  if id == 220 then
    local id = raknetBitStreamReadInt8(bs)
    local packettype = raknetBitStreamReadInt8(bs)
    local strlen = raknetBitStreamReadInt16(bs)
    local str = raknetBitStreamReadString(bs, strlen)
    if packettype ~= 0 and packettype ~= 1 and #str > 2 then
      print(str) -- исходящая строка
    end
  end
end)


Ниже обновленная библиотека (x2) из темы:
откуда struct достается ?