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

QGate

Новичок
78
0
Как взять строку из чата и проверить ее на наличие ключевого слова? Для SF надо.
 

Vasiliy77

Известный
22
1
Почему при каждом запуске консоли значение адреса всегда разное, а в Cheat Engine оно не меняется? Код прилагаю ниже.

C++:
DWORD offsets[] = { 0x6FCF3 };// смещение
DWORD addressdllsamp = (DWORD)getModuleHandleRemote(PID, "samp.dll");// адрес samp.dll
DWORD ippointer1 = mem->ReadPointer(addressdllsamp, offsets, 1);
printf("Address samp.dll [2]: 0x%x \n=====================\n", addressdllsamp);
printf("[2] Adress: 0x%x / value = %d\n", ippointer1, mem->Read(ippointer1, 16));// ВОТ ТУТ value = всегда разное число
C++:
HMODULE AC::getModuleHandleRemote(DWORD processId, const char* moduleName)
{
    HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId);
    if (snap == INVALID_HANDLE_VALUE) return NULL;
    MODULEENTRY32 moduleEntry;
    moduleEntry.dwSize = sizeof(moduleEntry);
    bool found = Module32First(snap, &moduleEntry) == TRUE;
    while (found)
    {
        if (strcmp(moduleEntry.szModule, moduleName) == 0) return CloseHandle(snap), moduleEntry.hModule;
        found = Module32Next(snap, &moduleEntry) == TRUE;
    }
    CloseHandle(snap);
    return NULL;
}
C++:
DWORD AC::ReadPointer(DWORD base, DWORD* offsets, int count)
{
    for (int i = 0; i < count - 1; i++)
    {
        base = Read(base + offsets[i], 4).toUINT32();
    }
    return base + offsets[count - 1];
}
 

QGate

Новичок
78
0
1. Как можно поворачивать игрока?
2. Как можно удобней записать 72 точки телепорта, содержащие 3 координаты каждая?
 

SR_team

like pancake
BH Team
4,720
6,368
Почему при каждом запуске консоли значение адреса всегда разное, а в Cheat Engine оно не меняется? Код прилагаю ниже.

C++:
DWORD offsets[] = { 0x6FCF3 };// смещение
DWORD addressdllsamp = (DWORD)getModuleHandleRemote(PID, "samp.dll");// адрес samp.dll
DWORD ippointer1 = mem->ReadPointer(addressdllsamp, offsets, 1);
printf("Address samp.dll [2]: 0x%x \n=====================\n", addressdllsamp);
printf("[2] Adress: 0x%x / value = %d\n", ippointer1, mem->Read(ippointer1, 16));// ВОТ ТУТ value = всегда разное число
C++:
HMODULE AC::getModuleHandleRemote(DWORD processId, const char* moduleName)
{
    HANDLE snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, processId);
    if (snap == INVALID_HANDLE_VALUE) return NULL;
    MODULEENTRY32 moduleEntry;
    moduleEntry.dwSize = sizeof(moduleEntry);
    bool found = Module32First(snap, &moduleEntry) == TRUE;
    while (found)
    {
        if (strcmp(moduleEntry.szModule, moduleName) == 0) return CloseHandle(snap), moduleEntry.hModule;
        found = Module32Next(snap, &moduleEntry) == TRUE;
    }
    CloseHandle(snap);
    return NULL;
}
C++:
DWORD AC::ReadPointer(DWORD base, DWORD* offsets, int count)
{
    for (int i = 0; i < count - 1; i++)
    {
        base = Read(base + offsets[i], 4).toUINT32();
    }
    return base + offsets[count - 1];
}
потому что CE использует оффсеты от начала модуля (например samp.dll + 1337)
 
  • Нравится
Реакции: Vasiliy77

SR_team

like pancake
BH Team
4,720
6,368
1. Как можно поворачивать игрока?
2. Как можно удобней записать 72 точки телепорта, содержащие 3 координаты каждая?
  1. Через матрицу и структуру(только Z)
  2. смотря как дальше использовать хочешь. CVector вполне удобно
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
std::vector <std::string> vector;
vector.push_back("Хуй");
vector.push_back("Пизда");
vector.push_back("скоровода");
for(auto &it : vector)
{
SF->log(it.c_str());
}
 
  • Нравится
Реакции: BlackKnigga