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

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,919
6,624
Почему при каждом запуске консоли значение адреса всегда разное, а в 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,919
6,624
1. Как можно поворачивать игрока?
2. Как можно удобней записать 72 точки телепорта, содержащие 3 координаты каждая?
  1. Через матрицу и структуру(только Z)
  2. смотря как дальше использовать хочешь. CVector вполне удобно
 

Dark_Knight

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

NarutoUA

NarutoUA
BH Team
692
1,567
C++:
vector<int> vec = { 1, 2, 3, 4, 5 };
 
    std::reverse(vec.begin(), vec.end());
    for (auto &i : vec)
        cout << i << " ";
    std::reverse(vec.begin(), vec.end());
Но лучше не выдумывать хуйни и делать через
C++:
for (int j = vec.size(); j--; )
cout < vec[j];
 
  • Нравится
Реакции: Dark_Knight