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

Vintik

Мечтатель
Проверенный
1,484
943
Здравствуйте) Хотелось бы посоветовать использовать след. WinAPI ф-ции
https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandlea
https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandleexa
Пример использования в собейте
https://github.com/BlastHackNet/mod...6f567b5391b0b2a6dc8/src/cheat_funcs.cpp#L3102
https://github.com/BlastHackNet/mod...b6325e566f567b5391b0b2a6dc8/src/samp.cpp#L178

Только не забывайте, что такая арифметика в языке С иногда не работает так, как предполагается: арифметика указателей в C всегда автоматически масштабируется под размер объектов, на которые ссылается указатель
Спасибо за всё, но я так нифига и не понял.

Объясняю свою ситуацию. Я прочитал на различных форумах, как искать базовый адрес (ну + смещения и указатели) и начал искать базовый адрес информации игрока (SAMP), чтобы он него оттолкнуться и найти твой текущий ID (и я его нашёл). Выглядит оно примерно так (в кавычках БА): [samp.dll + 0x151434] + 0x2F1C -> указатель на ID. Теперь хочу написать на С++ программу, которая будет искать мой ID и сохранять его в какую-либо переменную (через ReadProcessMemory). Суть в том, что надо искать смещение для "samp.dll". Пожалуйста, покажите какой-либо готовый код (он же там не длинный), либо функцию, которая, зная хэндл ГТАшки, кидает мне БА сампа.длл. Буду очень благодарен =)
 

Stiopko

Известный
Проверенный
307
218
как можно изменить 3dText c какимто айдишником?
 

Stiopko

Известный
Проверенный
307
218
Я не понял, что ты хочешь
У меня есть айди 3d текста который пришел с сервера, мне нужно изменить в нём текст, и установить другую максимальную дальность видимости текста, хукать RPC и изменять данные RPC пакета не вариант потому что плагин могут загрузить когда RPC уже придет, поэтому я прохожусь по всем 3dtext там и ищу нужній мне и после того когда я нашел нужнужный я хочу изменить в нём текст, и установить другую максимальную дальность видимости текста
 

_Vine_

Активный
154
57
У меня есть айди 3d текста который пришел с сервера, мне нужно изменить в нём текст, и установить другую максимальную дальность видимости текста, хукать RPC и изменять данные RPC пакета не вариант потому что плагин могут загрузить когда RPC уже придет, поэтому я прохожусь по всем 3dtext там и ищу нужній мне и после того когда я нашел нужнужный я хочу изменить в нём текст, и установить другую максимальную дальность видимости текста
C++:
strcpy(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[ID].pText, TEXT);
SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[ID].fMaxViewDistance = DISTANCE
 
  • Нравится
Реакции: Stiopko

Stiopko

Известный
Проверенный
307
218
C++:
strcpy(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[ID].pText, TEXT);
SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[ID].fMaxViewDistance = DISTANCE

Не робит:sad_frog2:

C++:
strcat(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[s].pText, "\n");
            strcat(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[s].pText, temp);
            strcat(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[s].pText, " / ");
            strcat(SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[s].pText, (ksh->GetState() == 0 ? "Unsigned" : (ksh->GetState() == 2 ? "Vyros" : "Scoro vyroste")));
            SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[s].fMaxViewDistance = 299.;

---------------------

Сори, протупил все чётко работает
 
Последнее редактирование:

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
595
807
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char zq_message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(zq_message, len);
        params->bitStream->ResetReadPointer();
        zq_message[len] = '\0';

        // strstr(zq_message, "[Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!")
        if (!strcmp(zq_message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом"))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Вы купили дом за 1.3124 мс.");
        }
    };
    return true;
}
не работает, сообщение 100% правильное
 

Stiopko

Известный
Проверенный
307
218
C++:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        size_t len;
        DWORD color;
        char zq_message[256];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(len);
        params->bitStream->Read(zq_message, len);
        params->bitStream->ResetReadPointer();
        zq_message[len] = '\0';

        // strstr(zq_message, "[Информация] {FFFFFF}Поздравляю! Теперь этот бизнес ваш!")
        if (!strcmp(zq_message, "[Информация] {FFFFFF}Поздравляю! Теперь этот дом"))
        {
            SF->getSAMP()->getChat()->AddChatMessage(-1, "Вы купили дом за 1.3124 мс.");
        }
    };
    return true;
}
не работает, сообщение 100% правильное
замени !strcmp на strstr