CPed +0x46C = [dword] Проверка игрока:как узнать что я плаваю
- 0 = в воздухе/воде
- 1 = в машине
- 2 = входит в интерьер
- 3 = пешком
- 18 = истекает кровью
CPed +0x46C = [dword] Проверка игрока:как узнать что я плаваю
как узнать что я плаваю
1 - какой проблемойИзучаю тут с++, столкнулся с проблемой обычного калькулятора
C++:int main() { int num1, num2, num3; cin >> num1; cout << "\n"; cin >> num2; num3 = sum1 + sum2; cout << "\n" << num1 << " + " << num2 " = " num3; return 0; }
int main() {
int num1, num2, sum;
int simb;
cin >> num1;
cin >> simb;
cin >> num2;
sum = num1 << simb << num2;
cout << "\n" << num1 << simb << num2 << " = " << sum;
cin.get();
return 0;
}
bool CALLBACK incRPC(stRakNetHookParams* p)
{
if (bDistUp)
{
if (p->packetId == RPC_ScrCreate3DTextLabel)
{
float dist;
p->bitStream->SetReadOffset(144);
p->bitStream->Read(dist);
p->bitStream->ResetReadPointer();
if (dist == 5.0)
{
p->bitStream->SetWriteOffset(144);
dist = 15.0;
p->bitStream->Write(dist);
p->bitStream->ResetWritePointer();
}
}
}
return true;
}
bool CALLBACK rpchook(stRakNetHookParams* p)
{
if (p->packetId == RPC_ScrCreate3DTextLabel)
{
p->bitStream->SetWriteOffset(144);
p->bitStream->Write((float)15.0);
}
return true;
}
RPC_151 = RPC_ScrDestroyPickupsif (params->packetId == 151) 151 incoming rpc, можно его полное название?
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <memory.h>
#include <memory>
DWORD GetProcId(const char* procName)
{
DWORD procId = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(procEntry);
if (Process32First(hSnap, &procEntry))
{
do
{
if (!strcmp(procEntry.szExeFile, procName))
{
procId = procEntry.th32ProcessID;
break;
}
} while (Process32Next(hSnap, &procEntry));
}
}
CloseHandle(hSnap);
return procId;
}
uintptr_t GetModuleBaseAddress(DWORD procId, const char* modName)
{
uintptr_t modBaseAddr = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
if (hSnap != INVALID_HANDLE_VALUE)
{
MODULEENTRY32 modEntry;
modEntry.dwSize = sizeof(modEntry);
if (Module32First(hSnap, &modEntry))
{
do
{
if (!strcmp(modEntry.szModule, modName))
{
modBaseAddr = (uintptr_t)modEntry.modBaseAddr;
break;
}
} while (Module32Next(hSnap, &modEntry));
}
}
CloseHandle(hSnap);
return modBaseAddr;
}
uintptr_t moduleBase = GetModuleBaseAddress(GetProcId("gta_sa.exe"), "samp.dll");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetProcId("gta_sa.exe"));
HDC hdc = GetDC(FindWindowA(NULL, "GTA:SA:MP"));
template<typename T> T RPM(SIZE_T address) {
T buffer;
ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);
return buffer;
}
dbghelp и gdi32 в линкере подключиОшибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)
Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел
Memory.h:#include <Windows.h> #include <TlHelp32.h> #include <iostream> #include <memory.h> #include <memory> DWORD GetProcId(const char* procName) { DWORD procId = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap != INVALID_HANDLE_VALUE) { PROCESSENTRY32 procEntry; procEntry.dwSize = sizeof(procEntry); if (Process32First(hSnap, &procEntry)) { do { if (!strcmp(procEntry.szExeFile, procName)) { procId = procEntry.th32ProcessID; break; } } while (Process32Next(hSnap, &procEntry)); } } CloseHandle(hSnap); return procId; } uintptr_t GetModuleBaseAddress(DWORD procId, const char* modName) { uintptr_t modBaseAddr = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId); if (hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32 modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32First(hSnap, &modEntry)) { do { if (!strcmp(modEntry.szModule, modName)) { modBaseAddr = (uintptr_t)modEntry.modBaseAddr; break; } } while (Module32Next(hSnap, &modEntry)); } } CloseHandle(hSnap); return modBaseAddr; } uintptr_t moduleBase = GetModuleBaseAddress(GetProcId("gta_sa.exe"), "samp.dll"); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetProcId("gta_sa.exe")); HDC hdc = GetDC(FindWindowA(NULL, "GTA:SA:MP")); template<typename T> T RPM(SIZE_T address) { T buffer; ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL); return buffer; }
#pragma comment(lib, "User32.lib")