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

CarLCas

Известный
161
118
В чем может быть проблема?
И да, почему клавиша не нажимается? ;(
Посмотреть вложение 8992
isKeyPressed проверяет ли нажата клавиша, а не эмулирует её нажатие. Для этого есть другие способы: передать синхру с нужным кодом клавиши (можешь тут поискать, были обсуждения на эту тему), или использовать keybd_event.
 
  • Нравится
Реакции: Revalto

BlackKnigga

Известный
BH Team
922
446
Код:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        uint32_t    len, color;
        char        msg[144];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(msg, len);
        msg[len] = '\0';
        params->bitStream->ResetReadPointer();

        if (toggle == true)
        {
            if (strstr(msg, "Депозит в банке: 13$"))
                //SF->getSAMP()->sendWastedNotification(0, SF->getSAMP()->getPlayers()->sLocalPlayerID);
                keybd_event('N', 0, 0, 0);
                keybd_event('N', 0, KEYEVENTF_KEYUP, 0);
                //SF->getSAMP()->getPlayers()->pLocalPlayer->Say("И тут появляется батя!");
        }
    };
    return true;
};

void __stdcall cmd_toggle(string str)
{
    toggle ^= true;
    if (toggle == true)
        SF->Log("{009ACD}[Скрипт]: Скрипт успешно запущен!");
    else
        SF->Log("{009ACD}[Скрипт]: Скрипт успешно отключен!");
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (!SF->getSAMP()->IsInitialized())
            return;

        SF->getSAMP()->getChat()->AddChatMessage(0x009ACD, "[Скрипт]: Ловля домов by Nestro");
        SF->Log("{009ACD}[Скрипт]: Ловля домов by Nestro");
        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
        SF->getSAMP()->registerChatCommand("arzbuy", cmd_toggle);
        SF->registerConsoleCommand("arzbuy", cmd_toggle);

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
        SF->initPlugin(mainloop, hModule);
    return TRUE;
}
Нажатие на сервер можно отправлять через player sync. Поищи функцию нажатия в теме с функциями
 
  • Нравится
Реакции: Revalto

BlackKnigga

Известный
BH Team
922
446
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);
}
 
  • Нравится
Реакции: Revalto

Revalto

Известный
532
225
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);
}
Благодарю, сейчас попробую подогнать под буковку N)

P.S. поможешь?) Буду очень благодарен.. Хотя я и так очень благодарен за помощь!
 

Matthew3321AS

Новичок
19
0
Подскажите, как найти айди 3дтекста? Есть вот такой код, но что - то не получается
Код:
for(int i = 0; i < SAMP_MAX_3DTEXTS; i++)
{
    if(SF->getSAMP()->getInfo()->pPools->pText3D->iIsListed[i] != 1)
        continue;

    /* делаешь то что тебе надо */
    // SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[i].pText;
}
 

Woofing Giraffe

Активный
402
49
Можно ли реализовать поднятие чекпоинта, который находится у тебя прямо над головой, при этом не меняя Z координату
 

return

Новичок
82
5
Подскажите, как найти айди 3дтекста? Есть вот такой код, но что - то не получается
Код:
for(int i = 0; i < SAMP_MAX_3DTEXTS; i++)
{
    if(SF->getSAMP()->getInfo()->pPools->pText3D->iIsListed[i] != 1)
        continue;

    /* делаешь то что тебе надо */
    // SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[i].pText;
}
i - id 3d текста.
 

Scr1m

Новичок
6
1
Подскажите пожалуйста как вызвать серверный диалог? Я понимаю, что через ракнет, но что-то не получается нормально вызвать, либо диалог не тот, либо вообще не открывается. Буду благодарен за пример...