ФАЛЬШИВЫЙ setVirtualKeyDown

Sam201

Известный
Автор темы
104
5
Версия MoonLoader
.027.0-preview
В общем, мой вопрос..
Можно ли подделать отправку виртуального ключа на сервер, не нажимая его на стороне клиента?


Например, я хочу залить кнопку Y, но не хочу, чтобы она была затоплена на стороне моего клиента. Я хочу, чтобы сервер думал, что я нажимаю y, хотя на самом деле это не так.



И это не должно повлиять на моего клиента



другой пример — поддельная клавиша «Отправить вниз» W, поэтому сервер должен прочитать, что я нажимаю кнопку W, но он не должен заставлять мой player_ped двигаться, потому что это поддельный setVirtualKeyDown.

возможно или невозможно?
 

MrDorlik

Известный
957
384
 
  • Эм
Реакции: sdfy

Sam201

Известный
Автор темы
104
5
так что это возможно только в asi?
 

wojciech?

Известный
Проверенный
349
230
структура PlayerSync
C:
typedef struct PlayerSyncData {
    uint16_t leftRightKeys;
    uint16_t upDownKeys;
    union {
        uint16_t keysData;
        SampKeys keys;
    };
    VectorXYZ position;
    float     quaternion[4];
    uint8_t   health;
    uint8_t   armor;
    uint8_t   weapon : 6;
    uint8_t   specialKey : 2;
    uint8_t   specialAction;
    VectorXYZ moveSpeed;
    VectorXYZ surfingOffsets;
    uint16_t  surfingVehicleId;
    union {
        struct {
            uint16_t id;
            uint8_t  frameDelta;
            union {
                struct {
                    bool    loop : 1;
                    bool    lockX : 1;
                    bool    lockY : 1;
                    bool    freeze : 1;
                    uint8_t time : 2;
                    uint8_t _unused : 1;
                    bool    regular : 1;
                };
                uint8_t value;
            } flags;
        } animation;
        struct {
            uint16_t  animationId;
            uint16_t  animationFlags;
        };
    };
} PlayerSyncData;

в синхре персонажа записываешь нужную keysData (сумма значений кнопок) и отправляешь её серверу (или подменяешь исходящую, даже лучше)

значения кнопок https://sampwiki.blast.hk/wiki/Keys
похожая тема https://www.blast.hk/threads/37944/
 
  • Вау
Реакции: Sam201

Sam201

Известный
Автор темы
104
5
структура PlayerSync
C:
typedef struct PlayerSyncData {
    uint16_t leftRightKeys;
    uint16_t upDownKeys;
    union {
        uint16_t keysData;
        SampKeys keys;
    };
    VectorXYZ position;
    float     quaternion[4];
    uint8_t   health;
    uint8_t   armor;
    uint8_t   weapon : 6;
    uint8_t   specialKey : 2;
    uint8_t   specialAction;
    VectorXYZ moveSpeed;
    VectorXYZ surfingOffsets;
    uint16_t  surfingVehicleId;
    union {
        struct {
            uint16_t id;
            uint8_t  frameDelta;
            union {
                struct {
                    bool    loop : 1;
                    bool    lockX : 1;
                    bool    lockY : 1;
                    bool    freeze : 1;
                    uint8_t time : 2;
                    uint8_t _unused : 1;
                    bool    regular : 1;
                };
                uint8_t value;
            } flags;
        } animation;
        struct {
            uint16_t  animationId;
            uint16_t  animationFlags;
        };
    };
} PlayerSyncData;

в синхре персонажа записываешь нужную keysData (сумма значений кнопок) и отправляешь её серверу (или подменяешь исходящую, даже лучше)

значения кнопок https://sampwiki.blast.hk/wiki/Keys
похожая тема https://www.blast.hk/threads/37944/
thanks, I can't find the arrow keys or the WASD keys
я использую этот метод
local data = samp_create_sync_data('player')
data.keysData = data.keysData + 1024
data.send()
end
end
 

wojciech?

Известный
Проверенный
349
230
I can't find the arrow keys or the WASD keys
1697053510149.png
 

MrDorlik

Известный
957
384
thanks, I can't find the arrow keys or the WASD keys
я использую этот метод
local data = samp_create_sync_data('player')
data.keysData = data.keysData + 1024
data.send()
end
end
за WASD отвечают leftRightKeys и upDownKeys. вверх или влево = 65408, вниз или вправо = 128