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

tlwsn

Известный
537
85
Как из строки
Администратор Nick_Name добавил 50000 материалов на склад фракции Grove Gang. Текущее состояние склада: 100000
Достать Nick_Name, 50000, Grove Gang, 100000?

C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD color;
        DWORD strlen;
        char msg[144];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(strlen);
        params->bitStream->Read(msg, strlen);
        msg[strlen] = '\0';
        
        std::cmatch res;
        
        if (std::regex_search(msg, res, std::regex("Администратор (.+) добавил (\\d+) материалов на склад фракции (.+). Текущее состояние склада: (\\d+)"))) {

            for (auto element : res) SF->getSAMP()->getChat()->AddChatMessage(-1, "%s", element);
        }

        SF->LogConsole(msg);

        return true;
    }
};
 
У

Удалённый пользователь 123482

Гость
Как из строки
Достать Nick_Name, 50000, Grove Gang, 100000?

C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD color;
        DWORD strlen;
        char msg[144];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(strlen);
        params->bitStream->Read(msg, strlen);
        msg[strlen] = '\0';
       
        std::cmatch res;
       
        if (std::regex_search(msg, res, std::regex("Администратор (.+) добавил (\\d+) материалов на склад фракции (.+). Текущее состояние склада: (\\d+)"))) {

            for (auto element : res) SF->getSAMP()->getChat()->AddChatMessage(-1, "%s", element);
        }

        SF->LogConsole(msg);

        return true;
    }
};
Через sscanf проще будет
 
У

Удалённый пользователь 123482

Гость
В клео для того чтобы работал ток на одном сервере используется опкод 0b39.
В луа — sampGetCurrentServerAddress()
А вот в sf/asi плагинах я даж не знаю, как реализовать это.
Чего там реализовывать то, вот пример из моего ARZ Renderer.
C++:
if (strstr(SF->getSAMP()->getInfo()->szHostname, "Arizona"))
    pluginState = true;
 
  • Нравится
Реакции: MassKill

raymondique

Новичок
4
6
мне нужно открыть карту гта через память, не открывая главного меню на escape

1583419708964.png

такой код не работает должным образом
брал адреса отсюда:
1583419745603.png

 
  • Нравится
Реакции: atizoff

MassKill

Новичок
4
1
Почему анимация не производится?
C++:
bool CALLBACK inRPC(stRakNetHookParams* params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrApplyAnimation)
    {
        ushort        uPlayerID;
        byte        byteNameLenAnimLib;
        char        cAnimLib[50];
        byte        byteNameLenAnimName;
        char        cAnimName[50];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(uPlayerID);

        params->bitStream->Read(byteNameLenAnimLib);
        params->bitStream->Read(cAnimLib, byteNameLenAnimLib);
        cAnimLib[byteNameLenAnimLib] = NULL;

        params->bitStream->Read(byteNameLenAnimName);
        params->bitStream->Read(cAnimName, byteNameLenAnimName);
        cAnimName[byteNameLenAnimName] = NULL;

        if (uPlayerID == SF->getSAMP()->getPlayers()->sLocalPlayerID)
        {
            if (strstr(cAnimLib, "PED") && strstr(cAnimName, "WALK_DRUNK") && TEST == true)
            {
                return false;
            }
        }
    }
    return true;
}
 

raymondique

Новичок
4
6
В настройках игры, а именно в разделе настроек дисплея есть настройка разрешения, мне нужно изменить разрешение игры не открывая меню через DLL. Изменяя адрес разрешение остается таким же потому что не нажимается кнопка ENTER которая применяет настройки
 

AM0R3M1O

Участник
34
34
Как отобразить нужный мне объект на экране , либо вывести его координаты в чат?
void:
void Render_Flowers()
{
    for(int i = 0;i< SAMP_MAX_OBJECTS;i++)
    {
        // Объект с ID = 14 должен высвечиваться либо на карте меткой , либо на экране точкой ,либо
        // его коорды в чате.

    }
}
 
Последнее редактирование:

Receiver

leet-cheats 👑
Проверенный
620
889
C++:
if (std::regex_match(string, result, std::regex("^Администратор (\\w+) ответил вам: (.+)"))) {
    SF->getSAMP()->getChat()->AddChatMessage(-1, ">> Nick: %s", result[1]);
    SF->getSAMP()->getChat()->AddChatMessage(-1, ">> Answer: %s", result[2]);
}
как это работает, я пытаюсь получить ник и ответ администратора
ну и вот что получается:
1585494879952.png

поправьте мою регулярку плиз 😘
 

Receiver

leet-cheats 👑
Проверенный
620
889
Да, я тоже строил регулярку через этот сайт, но что-то не катит вообще
1585561316125.png
 
Последнее редактирование: