addEventHandler("onSendPacket", function(id, bs)
-- читаем по 1 байту
local bytes = {}
local length = raknetBitStreamGetNumberOfBytesUsed(bs)
for i = 1, length do
table.insert(bytes, raknetBitStreamReadInt8(bs))
end
-- если первые 6 байт - наши
local is_cef = true
local first_bytes = { 220, 18, 30, 0, 0, 0 }
for i = 1, 6 do
if bytes[i] ~= first_bytes[i] then
is_cef = false
break
end
end
-- если это CEF RPC
if is_cef then
-- у символа "|" числовой код 124
local start -- символ "|" перед первым числом
for i = 7, length do
if bytes[i] == 124 then
start = i
break
end
end
local medium -- символ "|" между числами
for i = start + 1, length do
if bytes[i] == 124 then
medium = i
break
end
end
local our_second_number = {}
local finish -- символ "|" после второго числа
for i = medium + 1, length do
if bytes[i] == 124 then
finish = i
break
else
table.insert(our_second_number, bytes[i]) -- записываем второе число
end
end
-- а теперь вставляем текст "miniGame.DebugKeyID|" (и первые 6 байт)
local new_bytes = { 220, 18, 30, 0, 0, 0, 109, 105, 110, 105, 71, 97, 109, 101, 46, 68, 101, 98, 117, 103, 75, 101, 121, 73, 68, 124 }
-- добавляем к нему второе число
for i = 1, #our_second_number do
table.insert(new_bytes, our_second_number[i])
end
-- добавляем разделитель между числами "|"
table.insert(new_bytes, 124)
-- добавляем второе число еще раз
for i = 1, #our_second_number do
table.insert(new_bytes, our_second_number[i])
end
-- и наконец добавляем "|true" (там еще в конце 4 нулевых символа)
local bytes_end = { 124, 116, 114, 117, 101, 0, 0, 0, 0 }
for i = 1, #bytes_end do
table.insert(new_bytes, bytes_end[i])
end
-- и теперь этот пакет надо отправить
local new_bs = raknetNewBitStream()
for i = 1, #new_bytes do
raknetBitStreamWriteInt8(new_bs, new_bytes[i])
end
return { id, new_bs }
end
end)