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

_Vine_

Активный
154
57
>> Проблема не решена. <<
C++:
ImGui::Checkbox("Крашить игроков", (bool*)&functeion_crash);

How can I edit a text before sending it to server?
If I type [/command someText] i want to edit it into: [/command Some text!].
I mean I want to parse and edit the text before sending it to server.
You should hook the outcomimg RPC_ServerCommamd
 
Последнее редактирование:
  • Нравится
Реакции: Receiver

-raymond-

Известный
110
9
как в имгуи преобразовать цвет из rgba в ImVec2? Есть ли генератор такого цвета?
 

Receiver

leet-cheats 👑
Проверенный
619
882
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "дебаг");
        if (!strcmp(string, "Server closed the connection."))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Сервер закрыл соединение");
        }
    }
    return true;
}

В чат выводит "дебаг", но "Сервер закрыл соединение" - нет. Почему так ?
 

-raymond-

Известный
110
9
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "дебаг");
        if (!strcmp(string, "Server closed the connection."))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Сервер закрыл соединение");
        }
    }
    return true;
}

В чат выводит "дебаг", но "Сервер закрыл соединение" - нет. Почему так ?
вроде нельзя этот текст хукнуть через raknet

мб в ImVec4? в полезных функциях вроде был сниппет.
да в imvec4
 

astap_

Известный
Всефорумный модератор
626
601
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "дебаг");
        if (!strcmp(string, "Server closed the connection."))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Сервер закрыл соединение");
        }
    }
    return true;
}

В чат выводит "дебаг", но "Сервер закрыл соединение" - нет. Почему так ?
отлавливай через структуру чата либо через хук DISCONNECTION_NOTIFICATION
 

ALF

Известный
Проверенный
320
539
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "дебаг");
        if (!strcmp(string, "Server closed the connection."))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Сервер закрыл соединение");
        }
    }
    return true;
}

В чат выводит "дебаг", но "Сервер закрыл соединение" - нет. Почему так ?
1. не правильно читаешь
2. Server closed the connection не приходит в RPC_ScrClientMessage
 

ALF

Известный
Проверенный
320
539
Без разницы на этот клосед коннекцион, как любое другое сообщение отловить и сравнить ?
C++:
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, "text"))
{
    // ...
}
 

Receiver

leet-cheats 👑
Проверенный
619
882
C++:
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, "text"))
{
    // ...
}
не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
 

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
C++:
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();
    message[len] = '\0';

    if (strcmp(message, "cakebou") == 0)
    {
        SF->getSAMP()->getChat()->AddChatMessage(-1, "Got it!");
    }
};

не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
Если что функция strcmp проверяет целую строку, а strstr проверяет часть строки