Unatkoztam :D
A forráskód lefordításához C++ szükséges.
A scriptet én írtam a GTA Wiki alapján, kivéve az alapot, ami megnyitja a folyamatot, mert azzal nemvolt kedvem sz*rakodni :D
További információkat/memóriacímeket itt érhetsz el:
http://www.gtamodding.com/index.php?title=Memory_Addresses_%28SA%29
Ha átnézted, akkor rájössz, hogy pl. a SetPlayerAmmo()-t milyen nehéz megcsinálni, vagy az UpdateVehicleDamageStatus()-t.
#include <iostream>
#include <windows.h>
#include <conio.h>
float
g_FloatValue = 0;
// SetVehicleMass(float fMass)
#define SetVehicleMass(fMass) \\
g_FloatValue = fMass; \\
WriteProcessMemory(process, (LPVOID)(CVehicle + 140), &g_FloatValue, sizeof(g_FloatValue), 0)
// SetVehicleTurnMass(float fTurnMass)
#define SetVehicleTurnMass(fTurnMass) \\
g_FloatValue = fTurnMass; \\
WriteProcessMemory(process, (LPVOID)(CVehicle + 144), &g_FloatValue, sizeof(g_FloatValue), 0)
// SetVehicleWheelSize(float fWheelSize)
#define SetVehicleWheelSize(fWheelSize) \\
g_FloatValue = fWheelSize; \\
WriteProcessMemory(process, (LPVOID)(CVehicle + 1112), &g_FloatValue, sizeof(g_FloatValue), 0)
int main()
{
DWORD WindowProcessID;
HWND WindowHandle = FindWindow(NULL, L\"GTA:SA:MP\");
if(WindowHandle == NULL)
{
printf(\"Nincs nyitva az ablak ( GTA:SA:MP )!\");
return 1;
}
GetWindowThreadProcessId(WindowHandle, &WindowProcessID);
HANDLE process = OpenProcess(STANDARD_RIGHTS_REQUIRED | PROCESS_ALL_ACCESS | SYNCHRONIZE | 0xFFF, FALSE, WindowProcessID);
while(1) // Végtelen ciklus, hogy ne álljon le.
{
if(GetAsyncKeyState(VK_NUMPAD9)) // Ha NUM 9-et nyomsz, ezt változtasd meg, ha nem tetszik..
{
int
CVehiclePointer1; // Jármûre való mutató, ha nagyobb, mint 0, ( > 0 ), akkor kocsiaban van. Ellentétben gyalog
ReadProcessMemory(process, (LPCVOID)0xBA18FC, &CVehiclePointer1, sizeof(CVehiclePointer1), 0);
printf(\"CVehiclePointer1 = 0x%x\\n\", CVehiclePointer1);
if(CVehiclePointer1 != NULL)
{
DWORD
CVehicle; // Mutató a CVehicle pool-ra. Ha ez 0, akkor szintén nincs kocsiban.
ReadProcessMemory(process, (LPCVOID)0xB6F980, &CVehicle, sizeof(CVehicle), 0); // Kiolvassuk a CVehicle pool értékét, és megkapjuk mennyi. Ez az \"alap\" címe a jelenlegi kocsinak. Minden kocsinak más.
// Ehhez kell hozzáadni egy megadott értéket, ami a wikin kintvan és még azt kiolvasni vagy átírni a memóriában.
if(CVehicle != NULL) // Mutató a CVehicle pool-ra. Ha ez 0, akkor szintén nincs kocsiban.
{
printf(\"CVehicle = 0x%x\\n\", CVehicle); //
// Ide írhatod a fent definált funkciókat. Csak a JELENLEGI kocsira vonatkozik, amiben ülsz!
SetVehicleMass(6500.0);
SetVehicleTurnMass(6500.0);
SetVehicleWheelSize(3.5);
}
}
else // Ha gyalok van, akk csinálunk vmi szart..
{
// ReadProcessMemory(process, (LPCVOID)0xB6F5F0, &CPlayer, sizeof(CPlayer), 0); // Kiolvassuk a címet, és megkapjuk a CPlayer alap címet. Ezzel lehet manipulálni :D
}
}
}
getch();
}
Szedd le a scriptet, meg is van kommentolva, hogy hogyan kell használni.

Átállítottam a kerék méretét :D
Megpróbálom elkezdeni a c++-t.
Valaki el tudná mondani,hogy hogy kell ezt mûködõképes pluginná alakítani?
Létrehozok egy projectet.Kiválasztom a c++-os cuccot,elnevezem, mögé írom,hogy .cpp.Beillesztem a kódot.De ezt írja a samp:
[14:13:23] Plugin does not conform to architecture.
[14:13:23] Failed.