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

-raymond-

Известный
110
9
в собейте нет. самому сделать несложно.
Код:
int getPlayerIDFromName(char *PlayerName)
{
    for (int id = 0; id <= SAMP_MAX_PLAYERS; id++)
    {
        if (strcmp(getPlayerName(id), PlayerName) != 0)
            continue;
        else return id;
    }
    return NULL;
}

const char *getPlayerName(int iPlayerID) //  samp.cpp
{
    if (g_Players == NULL || iPlayerID < 0 || iPlayerID > SAMP_MAX_PLAYERS)
        return NULL;

    if (iPlayerID < 0 || iPlayerID > SAMP_MAX_PLAYERS)
        return NULL;

    if (iPlayerID == g_Players->sLocalPlayerID)
        return g_Players->strLocalPlayerName.c_str();

    if (g_Players->pRemotePlayer[iPlayerID] == NULL)
        return NULL;

    return g_Players->pRemotePlayer[iPlayerID]->strPlayerName.c_str();
}
мог бы не расписывать, сам знаю что парсить всех игроков надо, но все равно благодарю
 

Receiver

leet-cheats 👑
Проверенный
619
882
При чём тут гуй к хукам ракнета?


Собейт установлен?

Почему тут просто "этот дом"? strcmp не ищет подстроки если чо я же писал тебе.
Скопируй полностью строку из chatlog.txt
Собейт не установлен, "этот дом" потому что пробовал полностью - тоже не работает.
 
  • Нравится
Реакции: Fomikus

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Собейт не установлен, "этот дом" потому что пробовал полностью - тоже не работает.
Как оно должно заработать если строка не полная ?! Уже сколько раз отвечал как работает функция strcmp и strstr
У кого-то руки не от туда растут, скорее всего

Собейт не установлен, "этот дом" потому что пробовал полностью - тоже не работает.
Приложи фулл код плагина
 

Receiver

leet-cheats 👑
Проверенный
619
882
Как оно должно заработать если строка не полная ?! Уже сколько раз отвечал как работает функция strcmp и strstr
У кого-то руки не от туда растут, скорее всего


Приложи фулл код плагина
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(message, len);
        params->bitStream->ResetReadPointer();

        SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM ne BAYED");
        // [Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!
        if (strcmp(message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом ваш") == 0)
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM BAYED");
            char result[12];
            strcat(message, " [1.9741]");
            return 1;
        }
    };
    return 1;
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;

        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
       

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

всегда дом не байед блеать
 
  • Нравится
Реакции: Fomikus

_Vine_

Активный
154
57
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(message, len);
        params->bitStream->ResetReadPointer();

        SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM ne BAYED");
        // [Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!
        if (strcmp(message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом ваш") == 0)
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM BAYED");
            char result[12];
            strcat(message, " [1.9741]");
            return 1;
        }
    };
    return 1;
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;

        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
      

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

всегда дом не байед блеать
Значит не правильная строка о покупке дома. Попробуй выводить переменную message в чат и копировать строку о покупке дома из нее
 

Неадекватная сова

Известный
Проверенный
208
147
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(message, len);
        params->bitStream->ResetReadPointer();

        SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM ne BAYED");
        // [Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!
        if (strcmp(message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом ваш") == 0)
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM BAYED");
            char result[12];
            strcat(message, " [1.9741]");
            return 1;
        }
    };
    return 1;
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;

        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
      

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

всегда дом не байед блеать
C++:
if (strstr(message, "Поздравляю! Теперь этот дом ваш") != 0) {
   
}
 

ALF

Известный
Проверенный
320
539
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(message, len);
        params->bitStream->ResetReadPointer();

        SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM ne BAYED");
        // [Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!
        if (strcmp(message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом ваш") == 0)
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "DOM BAYED");
            char result[12];
            strcat(message, " [1.9741]");
            return 1;
        }
    };
    return 1;
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;

        SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
    

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

всегда дом не байед блеать
ты заебал, я же тебе уже отвечал и давал полностью рабочий пример
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        uint strLen, color;
        char szMsg[144];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(strLen);
        if (strLen >= sizeof(szMsg)) strLen = sizeof(szMsg) - 1;
        params->bitStream->Read(szMsg, strLen);
        szMsg[strLen] = '\0';
     
        if(strstr(szMsg, "Поздравляю! Теперь этот дом ваш"))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "kla$$");
            // ...
        }
    }
    return 1;
}
 

-raymond-

Известный
110
9
возможно ли в сф отрендерить текст при загрузке игры? как в собейте на месте худа снизу
 

checkdasound

Известный
Проверенный
963
410
В структуре actor_info есть элемент runningStyle, для примера там указаны такие значения как: 0x36 = cj, 0x8A = rollerskate, 0x7F = woozie, 0x75 = crash.
Где можно найти полный список?
 

Roger571

Известный
58
31
В структуре actor_info есть элемент runningStyle, для примера там указаны такие значения как: 0x36 = cj, 0x8A = rollerskate, 0x7F = woozie, 0x75 = crash.
Где можно найти полный список?
C++:
const struct move_animation_info    move_animations[MOVE_ANIMATIONS_COUNT] =
{
    // ordered by eMoveAnim-ids (ascending)
    { MOVE_PLAYER, "CJ" },
//    { MOVE_PLAYER_F, "Player (F)" },
//    { MOVE_PLAYER_M, "Player (M)" },
    { MOVE_ROCKET, "Rocket" },
//    { MOVE_ROCKET_F, "Rocket (F)" },
//    { MOVE_ROCKET_M, "Rocket (M)" },
    { MOVE_ARMED, "Armed" },
//    { MOVE_ARMED_F, "Armed (F)" },
//    { MOVE_ARMED_M, "Armed (M)" },
    { MOVE_BBBAT, "Baseball" },
//    { MOVE_BBBAT_F, "Baseball (F)" },
//    { MOVE_BBBAT_M, "Baseball (M)" },
    { MOVE_CSAW, "Chainsaw" },
//    { MOVE_CSAW_F, "Chainsaw (F)" },
//    { MOVE_CSAW_M, "Chainsaw (M)" },
    { MOVE_SNEAK, "Sneak" },
    { MOVE_JETPACK, "Jetpack" },
    { MOVE_MAN, "Man" },
    { MOVE_SHUFFLE, "Shuffle" },
    { MOVE_OLDMAN, "Old (M)" },
    { MOVE_GANG1, "Gang1" },
    { MOVE_GANG2, "Gang2" },
    { MOVE_OLDFATMAN, "Old fat (M)" },
    { MOVE_FATMAN, "Fat (M)" },
    { MOVE_JOGGER, "Jogger (M)" },
    { MOVE_DRUNKMAN, "Drunk" },
    { MOVE_BLINDMAN, "Woozie" },
    { MOVE_SWAT, "SWAT" },
    { MOVE_WOMAN, "Woman" },
    { MOVE_SHOPPING, "Shopping" },
    { MOVE_BUSYWOMAN, "Busy (F)" },
    { MOVE_SEXYWOMAN, "Sexy (F)" },
    { MOVE_PRO, "Pro" },
    { MOVE_OLDWOMAN, "Old (F)" },
    { MOVE_FATWOMAN, "Fat (F)" },
    { MOVE_JOGWOMAN, "Jogger (F)" },
    { MOVE_OLDFATWOMAN, "Old fat (F)" },
//    { MOVE_SKATE, "Skate" }, /needs to be loaded from some not always loaded file?
};

C++:
enum eMoveAnim
{
    MOVE_PLAYER = 54,
    MOVE_PLAYER_F,
    MOVE_PLAYER_M,
    MOVE_ROCKET,
    MOVE_ROCKET_F,
    MOVE_ROCKET_M,
    MOVE_ARMED,
    MOVE_ARMED_F,
    MOVE_ARMED_M,
    MOVE_BBBAT,
    MOVE_BBBAT_F,
    MOVE_BBBAT_M,
    MOVE_CSAW,
    MOVE_CSAW_F,
    MOVE_CSAW_M,
    MOVE_SNEAK,
    MOVE_JETPACK,
    MOVE_MAN = 118,
    MOVE_SHUFFLE,
    MOVE_OLDMAN,
    MOVE_GANG1,
    MOVE_GANG2,
    MOVE_OLDFATMAN,
    MOVE_FATMAN,
    MOVE_JOGGER,
    MOVE_DRUNKMAN,
    MOVE_BLINDMAN,
    MOVE_SWAT,
    MOVE_WOMAN,
    MOVE_SHOPPING,
    MOVE_BUSYWOMAN,
    MOVE_SEXYWOMAN,
    MOVE_PRO,
    MOVE_OLDWOMAN,
    MOVE_FATWOMAN,
    MOVE_JOGWOMAN,
    MOVE_OLDFATWOMAN,
    MOVE_SKATE,
};
 
  • Нравится
Реакции: checkdasound

ishi

Известный
493
110
Как получить адрес(&) виртуального указателя-члена класса?