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

Apolo11

Известный
54
9
По какой причине колоредитор может не отображать выбираемый цвет в имгуи? Именно сам квадрат белый всегда.
 

Revalto

Известный
532
225
Вообщем, проблема такая. RegEx не может найти ник в чате. Что не так?
Код:
std::string chatm = msg;
        std::smatch chatres;
        std::regex poisk(R"(Samuel_Revalto)");
        if (std::regex_match(chatm, chatres, poisk))
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Найдено");
        SF->getSAMP()->getChat()->AddChatMessage(-1, "%s", poisk);

Пробовал даже выводить его в AddChatMessage, на что я получал это:
eiATZAYNK2U.jpg


Пример сообщения:
Администратор Samuel_Revalto[235] для Paolo_Boone[133]: Транслит офф
 

Vlad Horii

Известный
Проверенный
310
171
Вообщем, проблема такая. RegEx не может найти ник в чате. Что не так?
Код:
std::string chatm = msg;
        std::smatch chatres;
        std::regex poisk(R"(Samuel_Revalto)");
        if (std::regex_match(chatm, chatres, poisk))
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Найдено");
        SF->getSAMP()->getChat()->AddChatMessage(-1, "%s", poisk);

Пробовал даже выводить его в AddChatMessage, на что я получал это:
eiATZAYNK2U.jpg


Пример сообщения:
Администратор Samuel_Revalto[235] для Paolo_Boone[133]: Транслит офф
C++:
regex_search
 

Revalto

Известный
532
225
Дай всю строку.
Спасибо, я забыл, что создавал подобную тему в SF API, вы мне тогда ответили, все прекрасно работает!
Код:
#include <regex>
#include <string>
using namespace std;

bool CALLBACK incomingRPC(stRakNetHookParams *params) {
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage) {
        DWORD        len, color;
        char        msg[144];
        BitStream *bs = params->bitStream;
        bs->Read(color);
        bs->Read(len);
        bs->Read(msg, len);
        msg[len] = '\0';
        string str = msg;
        try {
            if (color == 0xFF5030AA &&
                regex_search(msg, res, regex(R"(Администратор (.*) выдал бан чата игроку)"))){
                SF->getSAMP()->getChat()->AddChatMessage(-1, "%s", res[1].str().c_str());
            }
        }
        catch (const exceptions &e){
            SF->Log("%s | %s", __FUCTION__, e.what());
        }
    };
    return true; // успешно завершаем обработку RPC.
};

Уже нашел ответ...
 

_Vine_

Активный
154
57
В чем тут проблема?
При нажатии клавиши "1", "2" или "3" должна эмулироватся игровая клавиша под номером "1", которая заставляет игрока бежать вперед/назад.
Писал код на CLEO - все работает безупречно, персонаж бежит.
Писал код на SF API, используя SF->getGame()->emulGTAKey() - персонаж не бежит
Писал код на SF API, используя SF->getCLEO()->callOpcode() - персонаж не бежит

Проверял, что функции SF API вызываются, выводя в чат сообщение перед и после их вызова - сообщения в чат выводились, но игрок так же не бежал.
Код CLEO:
CLEO:
while true
wait 0
key_down 49
jf continue
0B56: set_game_key 1 state -128
end

Код SF API:
C++:
void CALLBACK mainloop()
{
    static bool init = false;
    if (init)
    {
        if (SF->getGame()->isKeyDown(50))
            SF->getGame()->emulateGTAKey(1, -128);
        if (SF->getGame()->isKeyDown(51))
            SF->getCLEO()->callOpcode("0B56: set_game_key 1 state -128");
        return;
    }
    if (!init)
    {
        if (GAME == nullptr || GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME || !SF->getSAMP()->IsInitialized())
            return;
        init = true;
    }
}
 

Шурик

Активный
216
42
Вопрос, почему зависает при использовании рендера у Windows XP? На 7, 8, 10 всё нормально работает, а на XP - зависание.