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

Vintik

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

SR_team

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

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

Vintik

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

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

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

Vintik

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

Receiver

🥩 Передай meat, всё в скип, я в темпе
Проверенный
595
807
как можно получить разрешение экрана (игры) без 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,585
1,309
Приветствую.
Как, используя 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

loganhackerdff

Известный
868
518
как отправлять http запросы? желательно просто в консольном приложении с++
 

Romelo

dev.
Проверенный
540
624
как отправлять http запросы? желательно просто в консольном приложении с++
Держи простенький класс, думаю на первое время тебе его хватит.
Каким образом?

C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params) {
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrGangZoneCreate) {
        WORD wGangZoneID;
        float minmax[4];
        DWORD color;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(wGangZoneID);
        params->bitStream->Read(minmax);
        params->bitStream->Read(color);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "GangZoneCreate: %d / %0.2f, %0.2f, %0.2f, %0.2f / %d", wGangZoneID, minmax[0], minmax[1], minmax[2], minmax[3], color);
    }
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrGangZoneDestroy) {
        WORD wGangZoneID;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(wGangZoneID);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "GangZoneDestroy: %d", wGangZoneID);
    }
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrGangZoneFlash) {
        WORD wGangZoneID;
        DWORD color;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(wGangZoneID);
        params->bitStream->Read(color);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "GangZoneFlash: %d / %d", wGangZoneID, color);
    }
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrGangZoneStopFlash) {
        WORD wGangZoneID;
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(wGangZoneID);
        SF->getSAMP()->getChat()->AddChatMessage(-1, "GangZoneStopFlash: %d", wGangZoneID);
    }
    return true;
}

//Init, Register hook RPC's
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
 
Последнее редактирование: