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