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

Daniel_Govnocode

Активный
328
61
Сегодня на аризоне немного обновился цеф и часть скриптов перестала работать. Изменили они не очень много, вот новая структура входящего пакета:
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) из темы:
Lua:
function main()
    while not isSampAvailable() do wait(0) end
end



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)

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)

Хз чё такое, открываю например интерфейс рулетки и в логах просто пустая строка.
 

Rice.

Известный
Автор темы
Модератор
1,755
1,648
Lua:
function main()
    while not isSampAvailable() do wait(0) end
end



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)

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)

Хз чё такое, открываю например интерфейс рулетки и в логах просто пустая строка.
ну ты уверен, что структура там такая? 220, 17, 0, 0, 0 ... ?
 

wojciech?

Известный
Проверенный
385
282
где-то ты накосячил, код аналогичен тому, что в твоем посте:
1741596781211.png