#include <windows.h>
#include <process.h>
#include <TlHelp32.h>
DWORD CPed = 0xB6F5F0;
DWORD CPedStatus = 0x530;
DWORD ProcID;
DWORD p1;
HANDLE hProcess;
unsigned int CurrentVehiclePointer = 0xBA18FC;
int Model = 0;
int Status = 0;
int type;
unsigned long temp;
int bike[3] = { 481, 509, 510 };
int moto[11] = { 448, 461, 462, 463, 468, 471, 521, 522, 523, 581, 586 };
using namespace std;
DWORD GetProcId(const char* procname)
{
PROCESSENTRY32 pe;
HANDLE hSnap;
pe.dwSize = sizeof(PROCESSENTRY32);
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(hSnap, &pe)) {
do {
if (strcmp(pe.szExeFile, procname) == 0)
break;
} while (Process32Next(hSnap, &pe));
}
return pe.th32ProcessID;
}
void SetGameKeyState(BYTE key, BYTE state)
{
p1 = 0xB73458 + key;
memset((void*)p1, state, 1);
};
bool isKeyDown(int key)
{
SHORT keyState = GetKeyState(key);
return (keyState & 0x8000);
}
void GTAfunc_showStyledText(const char *text, int time, int style)
{
((void(__cdecl *) (const char *text, int time, int style)) (0x0069F2B0)) (text, time, style);
}
int CurrentPedStatus()
{
ProcID = GetProcId("gta_sa.exe");
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
ReadProcessMemory(hProcess, reinterpret_cast<LPVOID>(CPed), &temp, sizeof(temp), 0);
CPedStatus = temp + 0x530;
ReadProcessMemory(hProcess, reinterpret_cast<LPVOID>(CPedStatus), &Status, sizeof(temp), 0);
return Status;
}
bool IsCharInAnyCar()
{
Status = CurrentPedStatus();
if (Status == 50)
{
return true;
}
else
{
return false;
}
}
bool IsCharOnFoot()
{
Status = CurrentPedStatus();
if (Status == 1)
{
return true;
}
else
{
return false;
}
}
int CurrentVehicleModelType()
{
unsigned int CurrentVehiclePointer = *(unsigned int*)0xBA18FC;
unsigned short model = *(unsigned short*)(CurrentVehiclePointer + 34);
if (IsCharInAnyCar())
{
for (int counter = 0; counter < 3; counter++)
{
if (model == bike[counter])
{
return 1;
}
}
for (int counter = 0; counter < 11; counter++)
{
if (model == moto[counter])
{
return 2;
}
}
} else {
return 0;
}
}
static struct _Keys
{
bool bPressed;
DWORD dwStartTime;
}kPressingKeys[256];
BOOL State_Key(int Key, DWORD dwTimeOut)
{
if (HIWORD(GetKeyState(Key)))
{
if (!kPressingKeys[Key].bPressed || (kPressingKeys[Key].dwStartTime && (kPressingKeys[Key].dwStartTime + dwTimeOut) <= GetTickCount()))
{
kPressingKeys[Key].bPressed = TRUE;
if (dwTimeOut > NULL)
kPressingKeys[Key].dwStartTime = GetTickCount();
return TRUE;
}
}
else
kPressingKeys[Key].bPressed = FALSE;
return FALSE;
}