Другое SAMPFUNCS | API C++

kemperrr

Известный
104
2
Спрошу еще раз, нашел как отправить на сервер пакет о нажатии клавиши, но беда, нажимается только один раз (код находится в mainloop), пытаясь отправить пакет о том что клавиша не нажата так же нажимается 1 раз + теряется соединение с сервером, дак вот более опытные подскажите как сделать что бы не отправлялось столько пакетов(во избежания дисконнектов) и сделать цикличное нажатие одной и той же клавиши дапустим Y ( Y - 64(0x40) , когда не нажата - 0(0x0) )
Код:
stOnFootData sync; 
            memset(&sync, 0, sizeof(stOnFootData)); 

            sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

            sync.byteCurrentWeapon = 64; // Y

            BitStream bsActorSync;
            bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
            bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
            SF->getRakNet()->SendPacket(&bsActorSync);
 

return

Новичок
82
5
как мышкой изменять координаты текста на экране?
ну, курсор отобразить я могу, но как управлять текст им?
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Юзай std::vector и std::find для поиска или циклом фор авто пробегайся по вектору.
 

nikita_cheater

Новичок
13
3
Спрошу еще раз, нашел как отправить на сервер пакет о нажатии клавиши, но беда, нажимается только один раз (код находится в mainloop), пытаясь отправить пакет о том что клавиша не нажата так же нажимается 1 раз + теряется соединение с сервером, дак вот более опытные подскажите как сделать что бы не отправлялось столько пакетов(во избежания дисконнектов) и сделать цикличное нажатие одной и той же клавиши дапустим Y ( Y - 64(0x40) , когда не нажата - 0(0x0) )
Код:
stOnFootData sync;
            memset(&sync, 0, sizeof(stOnFootData));

            sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;

            sync.byteCurrentWeapon = 64; // Y

            BitStream bsActorSync;
            bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
            bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
            SF->getRakNet()->SendPacket(&bsActorSync);
byteCurrentWeapon - оружие в руке, а не нажатая клавиша
 

kemperrr

Известный
104
2
Значит в твоем случае пиздит
Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее
 

Woofing Giraffe

Активный
402
49
Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее
C++:
void EmulKey(int KeyId)
{
    stOnFootData sync;
    memset(&sync, 0, sizeof(stOnFootData));
    sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
    sync.byteCurrentWeapon = KeyId;
    BitStream bsActorSync;
    bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
    bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
    SF->getRakNet()->SendPacket(&bsActorSync);
    memset(&bsActorSync, 0, sizeof(BitStream));
    sync.byteCurrentWeapon = 0;
    bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
    bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
    SF->getRakNet()->SendPacket(&bsActorSync);
}
И в мэин
C++:
for (int i = 0; i < 3; i++) EmulKey(64); // 3 раза эмулируем
 

kemperrr

Известный
104
2
C++:
void EmulKey(int KeyId)
{
    stOnFootData sync;
    memset(&sync, 0, sizeof(stOnFootData));
    sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
    sync.byteCurrentWeapon = KeyId;
    BitStream bsActorSync;
    bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
    bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
    SF->getRakNet()->SendPacket(&bsActorSync);
    memset(&bsActorSync, 0, sizeof(BitStream));
    sync.byteCurrentWeapon = 0;
    bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
    bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
    SF->getRakNet()->SendPacket(&bsActorSync);
}
И в мэин
C++:
for (int i = 0; i < 3; i++) EmulKey(64); // 3 раза эмулируем
Ух, и точно можно же было циклом сделать, тупизна зашкаливает) Сябки
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Зачем это ты используешь?
Код:
memset(&bsActorSync, 0, sizeof(BitStream));
    sync.byteCurrentWeapon = 0;
    bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
    bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
    SF->getRakNet()->SendPacket(&bsActorSync);