Другое С/С++ Вопрос - Ответ

BlackKnigga

Известный
BH Team
922
445
C++:
stOnFootData sync;
         memset(&sync, 0, sizeof(stOnFootData));
         sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
         sync.sKeys = 131072;
         BitStream bsActorSync;
         bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
         bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
     
         SF->getRakNet()->SendPacket(&bsActorSync);
Пытаюсь отправить нажатие клавиши N через синхру, но почему-то именно эта клавиша (а ещё Y) не отсылается (при нажатии sKeys остаётся 0), но при этом если заноппить "ноги", сервер перестанет реагировать на нажатие, что говорит о том что оно отсылается-таки через них.
Ну и вопрос: что не так? коды клавиш взял отсюда, способ заполнения и отправки взял отсюда, даже на всякий проверил на соответствие правильному варианту структуры samp.lua
Чекни через раклоггер точный номер клавиши
Я отправлял нажатие N и там было точно не то что ты отправляешь
 

CarLCas

Известный
161
118
C++:
stOnFootData sync;
         memset(&sync, 0, sizeof(stOnFootData));
         sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
         sync.sKeys = 131072;
         BitStream bsActorSync;
         bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
         bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
       
         SF->getRakNet()->SendPacket(&bsActorSync);
Пытаюсь отправить нажатие клавиши N через синхру, но почему-то именно эта клавиша (а ещё Y) не отсылается (при нажатии sKeys остаётся 0), но при этом если заноппить "ноги", сервер перестанет реагировать на нажатие, что говорит о том что оно отсылается-таки через них.
Ну и вопрос: что не так? коды клавиш взял отсюда, способ заполнения и отправки взял отсюда, даже на всякий проверил на соответствие правильному варианту структуры samp.lua
На сколько я помню нажатие Y передаётся в currentWeapon, скорее всего нажатие N передаётся аналогичным образом.
 
  • Нравится
Реакции: ishi

BlackKnigga

Известный
BH Team
922
445
На сколько я помню нажатие Y передаётся в currentWeapon, скорее всего нажатие N передаётся аналогичным образом.
Да, так и есть
C++:
stOnFootData sync;
         memset(&sync, 0, sizeof(stOnFootData));
         sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
         sync.sKeys = 131072;
         BitStream bsActorSync;
         bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
         bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
       
         SF->getRakNet()->SendPacket(&bsActorSync);
Пытаюсь отправить нажатие клавиши N через синхру, но почему-то именно эта клавиша (а ещё Y) не отсылается (при нажатии sKeys остаётся 0), но при этом если заноппить "ноги", сервер перестанет реагировать на нажатие, что говорит о том что оно отсылается-таки через них.
Ну и вопрос: что не так? коды клавиш взял отсюда, способ заполнения и отправки взял отсюда, даже на всякий проверил на соответствие правильному варианту структуры samp.lua
Вот тебе функция:
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);
}
 
  • Нравится
Реакции: ishi

ishi

Известный
493
110
Да, так и есть

Вот тебе функция:
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);
}
так у тебя же там повторяется код, или это я слепой?
 

SR_team

like pancake
BH Team
4,720
6,370
Все правильно, сначала отправляем зажатую клавишу, потом отжатую. Это надежнее чем простой спам пакетами
он сам отправит отжатую же. Ты ведь не держишь клавишу. И почему KeyId - int, если CurrentWeapon всего байт?
 

memir

🇷🇺
Всефорумный модератор
333
598
Как реализовать бесконечный цикл в DLL файле без остановки основной программы?
 

VovaDit

Известный
21
2
1.Ваш вопрос: Ребят, хотел поинтересоваться. Вот у меня есть программа написанная вроде как на с++, предназначена для сампа. Одна из функций это считываение инфы с гугл таблицы и вывод в игру, типо проверка на ЧС. Только там уже устаревшая таблица привязана, возможно ли как нибудь отредактировать прогу?