Всем салам, в этой "статье" я попытаюсь объяснить как эмулировать получение RPC, а так же как "заполнить" битстрим.
Для начала нам необходимо найти айди и содержимое RPC, получение которого мы будем эмулировать. Для этого перейдем по этой ссылке.
Лично я выберу RPC 153 (установка скина игроку)
Для написания кода нам нужны следующие функции:
Для начала нам необходимо создать битстрим, для этого будем использовать функцию:
Теперь перейдем к списку RPC и посмотрим что должно быть в RPC
Тут мы видим что бс состоит из 2 параметров, а именно: int32 ид игрока, int32 ид скина
!!! в списке rpc написано uint, но нам похуй, будем юзать int, а так же надо запомнить что нельзя вписывать в int число меньше нуля
Теперь соблюдая порядок составляем такой код:
Ну и теперь нам необходимо добавить 2 строки:
Пример кода с изменением скина:
я сам нихуя не понял, но надеюсь что вы поймете
Для начала нам необходимо найти айди и содержимое 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 ид скина
!!! в списке 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
так же содержимое бс можно брать тут
фут, не оставляй гневных комментариев о том что я нихуя не могу но при этом пишу "гайды", я и сам это знаю
так же содержимое бс можно брать тут
фут, не оставляй гневных комментариев о том что я нихуя не могу но при этом пишу "гайды", я и сам это знаю
Последнее редактирование: