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

pretlant

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

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

SR_team

like pancake
BH Team
4,762
6,440
Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через 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,514
981
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)
1) Как найти оффсеты на самп-античит (который фризит)? Мне нужно для КРМП, но оффсеты я желаю найти сам, хочу получить лишь пошаговый алгоритм действий (это тебе не хп или координаты искать, не от чего оттолкнуться).
2) Я сделал хук функции [посл. введённая команда], но там есть несколько багов. Помогите, плиз (всё описал в посту): клик
3) Как на чистом С++ заспавнить машину? Тоже интересно узнать, желательно опять таки, не скидывать функцию из собейта, а расписать пошаговый алгоритм (хотя бы примерный), чтобы я смог повторить его в других играх (не только самп).

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

Vintik

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

SR_team

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

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

Vintik

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

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

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

Vintik

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

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
605
868
как можно получить разрешение экрана (игры) без SFAPI
 

Carrentine

Потрачен
569
460
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как можно получить разрешение экрана (игры) без 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

abobusnik
Проверенный
1,597
1,356
Приветствую.
Как, используя 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