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

pretlant

Новичок
20
28
Мне в GTA:SA нужно получить список объетов (их координаты и т.п), которые расположены от меня на определенном радиусе. Есть идеи? Кто-нибудь пробовал?

Больше упор на то, как получить этим объекты?
 

SR_team

like pancake
BH Team
4,815
6,514
Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через EVENT
Помогите сделать нормальный поток с остановкой цикла и завершением самого потока при отгрузке скрипта)

C++:
HANDLE event;

void ThreadProc(void* pParam) {
    while (WaitForSingleObject(event, 100) != WAIT_OBJECT_0)
    {
        // Anything actions in while
    }
    _endthread();
}

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;
     
        event = CreateEvent(NULL, FALSE, FALSE, NULL);
        _beginthread(ThreadProc, 0, NULL);
     
        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
        {
            SF->initPlugin(mainloop, hModule);
        } break;
        case DLL_PROCESS_DETACH:
        {
            SetEvent(event);
        } break;
    }
    return TRUE;
}
Зачем тебе поток?
 

Vintik

Через тернии к звёздам
Проверенный
1,565
1,038
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)
1) Как найти оффсеты на самп-античит (который фризит)? Мне нужно для КРМП, но оффсеты я желаю найти сам, хочу получить лишь пошаговый алгоритм действий (это тебе не хп или координаты искать, не от чего оттолкнуться).
2) Я сделал хук функции [посл. введённая команда], но там есть несколько багов. Помогите, плиз (всё описал в посту): клик
3) Как на чистом С++ заспавнить машину? Тоже интересно узнать, желательно опять таки, не скидывать функцию из собейта, а расписать пошаговый алгоритм (хотя бы примерный), чтобы я смог повторить его в других играх (не только самп).

Пока что всё =) Еще раз спасибки
@SR_team @DarkP1xel помогите
 

Vintik

Через тернии к звёздам
Проверенный
1,565
1,038
удачи тебе со спавном инфернуса в варкрафте, используя метод из гта. А ач ищется так же как и хп с координатами
А можешь более конкретно ответить? Ты по сути нифига не сказал, а все 3 вопроса остаются в силе (кста, не играю в варкрафт, сравнить машины в одинухе гта 5)
Как ач ищется? От чего оттолкнуться
 

SR_team

like pancake
BH Team
4,815
6,514
От чего оттолкнуться
от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.

В общем, как я и сказал, алгоритм идентичен поиску хп/коорд
 
  • Нравится
Реакции: Vintik

Vintik

Через тернии к звёздам
Проверенный
1,565
1,038
от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.

В общем, как я и сказал, алгоритм идентичен поиску хп/коорд
Спасибо, сделаю, все понял)

А по поводу спавна все же как?)
 

Vintik

Через тернии к звёздам
Проверенный
1,565
1,038
так же. Это универсальный метод поиска нужного кода
А потом просто его вызывать? А аргументы как искать? И еще в первом посту я скинул ссылку на то, где я пытался сделать хук, но по непонятным мне причинам тщетно.
 

Receiver

leet-cheats 👑
Модератор
645
957
как можно получить разрешение экрана (игры) без SFAPI
 

Carrentine

Потрачен
569
462
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как можно получить разрешение экрана (игры) без SFAPI
C++:
/* Глобально в системе. */

POINT globalScreenResolution = { GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)) }

/* Установленное игрой. */

POINT gameScreenResolution = { *reinterpret_cast<unsigned int *>(0xC9C040), *reinterpret_cast<unsigned int *>(0xC9C044) }
 

testUser

Новичок
3
0
Приветствую.
Как, используя sampfuncs, при получении RPC_ScrGangZoneStopFlash прочесть новый цвет гангзоны (если она была захвачена)?
В Lua работает просто используя
Код:
local pool = ffi.cast('struct stGangzonePool*', sampGetGangzonePoolPtr())
local color = pool.pGangzone[id].dwColor
, а вот sampfuncs'е через
Код:
stGangzonePool* pool = SF->getSAMP()->getInfo()->pPools->pGangzone;
pool->pGangzone[id]->dwColor;
отображает старый цвет гангзоны.
 

Musaigen

shitposter
Проверенный
1,660
1,477
Приветствую.
Как, используя sampfuncs, при получении RPC_ScrGangZoneStopFlash прочесть новый цвет гангзоны (если она была захвачена)?
В Lua работает просто используя
Код:
local pool = ffi.cast('struct stGangzonePool*', sampGetGangzonePoolPtr())
local color = pool.pGangzone[id].dwColor
, а вот sampfuncs'е через
Код:
stGangzonePool* pool = SF->getSAMP()->getInfo()->pPools->pGangzone;
pool->pGangzone[id]->dwColor;
отображает старый цвет гангзоны.
Через хук.
 
  • Нравится
Реакции: bet.io