Информация Гайд Эмуляция RPC, заполнение BitStream для кипятильников

Всем салам, в этой "статье" я попытаюсь объяснить как эмулировать получение RPC, а так же как "заполнить" битстрим.

Для начала нам необходимо найти айди и содержимое RPC, получение которого мы будем эмулировать. Для этого перейдем по этой ссылке.
Лично я выберу RPC 153 (установка скина игроку)

Для написания кода нам нужны следующие функции:
Lua:
bs = raknetNewBitStream() --создаем битстрим (вместо bs можно написать что угодно)
raknetEmulRpcReceiveBitStream(int rpc, bs) --эмулируем получение RPC (айди rpc, битстрим)
raknetDeleteBitStream(bs) --после эмуляции удаляем битстрим
raknetBitStreamWriteBool(Bitstream bs, bool value)  -- записать в бс данные типа bool (true/false)
raknetBitStreamWriteInt8(Bitstream bs, int value)  -- записать в бс данные типа int8 (число)
raknetBitStreamWriteInt16(Bitstream bs, int value)  -- записать в бс данные типа int16 (число)
raknetBitStreamWriteInt32(Bitstream bs, int value)  -- записать в бс данные типа int32 (число)
raknetBitStreamWriteFloat(Bitstream bs, float value)  -- записать в бс данные типа float (пример: 1.1337)
raknetBitStreamWriteString(Bitstream bs, string str)  -- записать в бс данные типа string (пример: "хуй трахать сперма пирожки")

Для начала нам необходимо создать битстрим, для этого будем использовать функцию:
Lua:
raknetNewBitStream()

Теперь перейдем к списку RPC и посмотрим что должно быть в RPC
Тут мы видим что бс состоит из 2 параметров, а именно: int32 ид игрока, int32 ид скина
1626360781342.png


!!! в списке rpc написано uint, но нам похуй, будем юзать int, а так же надо запомнить что нельзя вписывать в int число меньше нуля

Теперь соблюдая порядок составляем такой код:
Lua:
bs = raknetNewBitStream()
raknetBitStreamWriteInt32(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) --id игрока которому будем выдавать скин
raknetBitStreamWriteInt32(bs, 49) --id скина

Ну и теперь нам необходимо добавить 2 строки:
Lua:
bs = raknetNewBitStream()

raknetBitStreamWriteInt32(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) --id игрока которому будем выдавать скин
raknetBitStreamWriteInt32(bs, 49) --id скина

raknetEmulRpcReceiveBitStream(153, bs) --эмулируем получение 153 rpc
raknetDeleteBitStream(bs) --удаляем бс

Пример кода с изменением скина:
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('setskin', function(skinId)
        bs = raknetNewBitStream()
        raknetBitStreamWriteInt32(bs, select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) --id игрока которому будем выдавать скин
        raknetBitStreamWriteInt32(bs, tonumber(skinId)) --id скина
        raknetEmulRpcReceiveBitStream(153, bs)
        raknetDeleteBitStream(bs)
    end)
    wait(-1)
end
я сам нихуя не понял, но надеюсь что вы поймете
СПИСОК ВСЕХ RPC
так же содержимое бс можно брать тут

фут, не оставляй гневных комментариев о том что я нихуя не могу но при этом пишу "гайды", я и сам это знаю​
 
Последнее редактирование:

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,652
2,535
  • Грустно
  • Нравится
Реакции: chapo и Sargon

4el0ve4ik

Известный
Всефорумный модератор
1,550
1,343
Ужасный гайд, если и писать про заполнение битстрима, то только без использования сф, ибо с сф и так все понятно.
 
  • Эм
  • Грустно
Реакции: MAHEKEH и chapo

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,652
2,535
без использования сф
🙂 🙂 🤟