Как эмулировать входящий пакет ONFOOT_SYNC от другого игрока

kuzheren

Известный
Автор темы
484
445
Версия MoonLoader
.026-beta
Если загуглить содержимое пакета ONFOOT_SYNC, то мы найдем следующее:
  • ID_ONFOOT_SYNC - ID: 207​

Parameters: UINT8 Packet_ID, UINT16 lrKey, UINT16 udKey, UINT16 keys, float X, float Y, float Z, float quat_w, float quat_x, float quat_y, float quat_z, UINT8 health, UINT8 armour, 2_BITS additional_key, 6_BITS weapon_id, UINT8 special_action, float velocity_x, float velocity_y, float velocity_z, float surfing_offsets_x, float surfing_offsets_y, float surfing_offsets_z, UINT16 surfing_vehicle_id, INT16 animation_id, INT16 animation_flags
Указать тут ID игрока не получится, так что подскажите, как сэмулировать этот пакет от лица конкретного игрока? Желательно чтобы все было на битстриме, буду очень благодарен и поставлю свечку в церкви
 
  • Нравится
Реакции: Ya Zaregalsya
Решение
Если загуглить содержимое пакета ONFOOT_SYNC, то мы найдем следующее:
  • ID_ONFOOT_SYNC - ID: 207​

Указать тут ID игрока не получится, так что подскажите, как сэмулировать этот пакет от лица конкретного игрока? Желательно чтобы все было на битстриме, буду очень благодарен и поставлю свечку в церкви
Во входящих клиенту пакетах после id пакета идёт id игрока размером uint 16(2 байта)

bottom_text

Известный
675
318
Если загуглить содержимое пакета ONFOOT_SYNC, то мы найдем следующее:
  • ID_ONFOOT_SYNC - ID: 207​

Указать тут ID игрока не получится, так что подскажите, как сэмулировать этот пакет от лица конкретного игрока? Желательно чтобы все было на битстриме, буду очень благодарен и поставлю свечку в церкви
Во входящих клиенту пакетах после id пакета идёт id игрока размером uint 16(2 байта)
 
  • Влюблен
  • Нравится
Реакции: sfdsfdgrr32 и kuzheren

bottom_text

Известный
675
318
там же еще хп и армор вместе надо делать. как отправить совместное значение хп и армор?
Смотри исходники samp.lua, там есть это
1625137488413.png
 
  • Нравится
Реакции: sfdsfdgrr32

RAYDON

Известный
844
378
Если загуглить содержимое пакета ONFOOT_SYNC, то мы найдем следующее:
  • ID_ONFOOT_SYNC - ID: 207​

Указать тут ID игрока не получится, так что подскажите, как сэмулировать этот пакет от лица конкретного игрока? Желательно чтобы все было на битстриме, буду очень благодарен и поставлю свечку в церкви
типо визуально установить определенное кол-во хп и броника определенному игроку?
 

kuzheren

Известный
Автор темы
484
445
типо визуально установить определенное кол-во хп и броника определенному игроку?
не только хп и броник, но вообще все параметры, по типу координат и скорости
 

kuzheren

Известный
Автор темы
484
445
бля я ща пытался эмулировать этот пакет но игрок тепнулся на нулевые координаты, хотя я написал все в правильном порядке и убрал параметр uint8 packet_id, у кого есть порядок входящей онфут синхры?
 

sfdsfdgrr32

Участник
51
3
бля я ща пытался эмулировать этот пакет но игрок тепнулся на нулевые координаты, хотя я написал все в правильном порядке и убрал параметр uint8 packet_id, у кого есть порядок входящей онфут синхры?
playerId: 813
keysData: 0
position: 1789.4520263672 -1896.7053222656 13.396314620972
quaternion: 0.39403212905127 0 0 -0.91909666590372
health/armor: 49 0
weapon: 0
specialAction: 3
moveSpeed: 0 0 0
animationId: 1044
animationFlags: 32772
вроде вот.
 

kuzheren

Известный
Автор темы
484
445
playerId: 813
keysData: 0
position: 1789.4520263672 -1896.7053222656 13.396314620972
quaternion: 0.39403212905127 0 0 -0.91909666590372
health/armor: 49 0
weapon: 0
specialAction: 3
moveSpeed: 0 0 0
animationId: 1044
animationFlags: 32772
вроде вот.
это для самп евентс, а мне нужно для битстрима...
 

kuzheren

Известный
Автор темы
484
445
А как эмулировать этот пакет, но в additional_key изменить на 1? То ли на мордоре, то ли на флине есть проверка на additional_key, который меняется от 0 до 3
additional key есть рядом с айди оружия и занимает 2 бита (2_BITS additional_key, 6_BITS weapon_id), из-за чего придется каким-то образом склеить этот самый additional key и ид оружия, но можно просто без айди оружия отправить этот additional key, если его перевести в двоичный вид - 01000000 - получится 64 в десятичном виде, а additional key будет равен единице
 

kuzheren

Известный
Автор темы
484
445
Можно же просто открыть handlers.lua
Посмотреть вложение 103416
открыл, но ничего не изменилось, перс стоит на нулевых кординатах и его кватернион зависит от моей коорды z, но при любой попытке сдвинуть отправляемые значения влево или вправо перс телепортируется на 2 трилионные координаты
1625159785193.png
1625159971649.png
Вот чудеснейший код:
Lua:
local emul = false
local playerid = 0
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('emul', function(arg)
        if arg ~= nil and arg ~= '' then
            playerid = tonumber(arg)
            emul = not emul
            if emul then
                sampAddChatMessage('Следование включено', -1)
            else
                sampAddChatMessage('Следование выключено', -1)
            end    
        else
            sampAddChatMessage('Напиши ид', -1)
        end
    end)
    while true do wait(0)
        if emul then
            local bs = raknetNewBitStream()
            local x, y, z = getCharCoordinates(PLAYER_PED)
            raknetBitStreamWriteInt16(bs, playerid)
            raknetBitStreamWriteInt16(bs, 0) -- leftright keys
            raknetBitStreamWriteInt16(bs, 0) -- updownkeys
            raknetBitStreamWriteInt16(bs, 0) -- keysdata
            raknetBitStreamWriteFloat(bs, x)
            raknetBitStreamWriteFloat(bs, y)
            raknetBitStreamWriteFloat(bs, z)
            raknetBitStreamWriteFloat(bs, 1) -- quat
            raknetBitStreamWriteFloat(bs, 0) -- quat
            raknetBitStreamWriteFloat(bs, 0) -- quat
            raknetBitStreamWriteFloat(bs, 1) -- quat
            raknetBitStreamWriteInt8(bs, 0) -- health, armor
            raknetBitStreamWriteInt8(bs, 0) -- weaponid
            raknetBitStreamWriteInt8(bs, 0) -- specialaction
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetEmulPacketReceiveBitStream(207, bs)
            raknetDeleteBitStream(bs)
        end
    end
end
 

Musaigen

abobusnik
Проверенный
1,583
1,302
открыл, но ничего не изменилось, перс стоит на нулевых кординатах и его кватернион зависит от моей коорды z, но при любой попытке сдвинуть отправляемые значения влево или вправо перс телепортируется на 2 трилионные координаты
Вот чудеснейший код:
Lua:
local emul = false
local playerid = 0
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('emul', function(arg)
        if arg ~= nil and arg ~= '' then
            playerid = tonumber(arg)
            emul = not emul
            if emul then
                sampAddChatMessage('Следование включено', -1)
            else
                sampAddChatMessage('Следование выключено', -1)
            end   
        else
            sampAddChatMessage('Напиши ид', -1)
        end
    end)
    while true do wait(0)
        if emul then
            local bs = raknetNewBitStream()
            local x, y, z = getCharCoordinates(PLAYER_PED)
            raknetBitStreamWriteInt16(bs, playerid)
            raknetBitStreamWriteInt16(bs, 0) -- leftright keys
            raknetBitStreamWriteInt16(bs, 0) -- updownkeys
            raknetBitStreamWriteInt16(bs, 0) -- keysdata
            raknetBitStreamWriteFloat(bs, x)
            raknetBitStreamWriteFloat(bs, y)
            raknetBitStreamWriteFloat(bs, z)
            raknetBitStreamWriteFloat(bs, 1) -- quat
            raknetBitStreamWriteFloat(bs, 0) -- quat
            raknetBitStreamWriteFloat(bs, 0) -- quat
            raknetBitStreamWriteFloat(bs, 1) -- quat
            raknetBitStreamWriteInt8(bs, 0) -- health, armor
            raknetBitStreamWriteInt8(bs, 0) -- weaponid
            raknetBitStreamWriteInt8(bs, 0) -- specialaction
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetBitStreamWriteFloat(bs, 0) -- movespeed
            raknetEmulPacketReceiveBitStream(207, bs)
            raknetDeleteBitStream(bs)
        end
    end
end
При leftRightKeys + upDownKeys нужно дополнительно записывать bool перед параметрами.
 
  • Нравится
Реакции: kuzheren

sfdsfdgrr32

Участник
51
3
Если загуглить содержимое пакета ONFOOT_SYNC, то мы найдем следующее:
  • ID_ONFOOT_SYNC - ID: 207​

Указать тут ID игрока не получится, так что подскажите, как сэмулировать этот пакет от лица конкретного игрока? Желательно чтобы все было на битстриме, буду очень благодарен и поставлю свечку в церкви
напиши есть получится