Így oldanám meg - legalábbis így próbálkoznék elsõnek -:
OnGameModeInit() alá:
SetTimer(\"JarmuHP\",2500,true);
majd a mód aljába/tetejébe, esetleg egy szabad helyre:
forward JarmuHP();
public JarmuHP()
{
new hp; // ebbe tároljuk az értékünket.
for(new i; i < MAX_VEHICLES; i++) // létrehozunk egy ciklust, ami annyiszor fut le még i kisebb mint \'MAX_VEHICLES\'.
{
GetVehicleHealth(i, hp); // lekérjük a jelenleg soron levõ jármû életét
if(hp < 250) // és ha az kisebb mint 250..
{
SetVehicleHealth(i, 250); // akkor átállítjuk neki 250re.
}
}
}
nem teszteltem, jónak kell lennie. Ha nem jó akkor szólj. :)
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
Ez leállítja, ezt így tudod a ciklusba használni:
forward JarmuHP();
public JarmuHP()
{
new hp; // ebbe tároljuk az értékünket.
new engine, lights, alarm, doors, bonnet, boot, objective; // jármû adatai
for(new i; i < MAX_VEHICLES; i++) // létrehozunk egy ciklust, ami annyiszor fut le még i kisebb mint \'MAX_VEHICLES\'.
{
GetVehicleHealth(i, hp); // lekérjük a jelenleg soron levõ jármû életét
if(hp < 250) // és ha az kisebb mint 250..
{
SetVehicleHealth(i, 250); // akkor átállítjuk neki 250re.
GetVehicleParamsEx(i, engine, lights, alarm, doors, bonnet, boot, objective); // lekérjük, hogy be van e indítva, ajtók zárva stb...
SetVehicleParamsEx(i, 0, lights, alarm, doors, bonnet, boot, objective); // leállítjuk a kocsit.
}
}
}
Kezd már összeállni a dolog :D
De még annyi lenne hogy ugye a motor leáll ha totálkáros a kocsi. Viszont beindítani azok ellenére is betudom . Hogyan lehetne a motor indítását úgy megcsinálni hogy lekérdezze azt hogy totálkáros-e a kocsi? És ha az akkor ne engedje beindítani ?
Motor indítási script:
new vehicleid = GetPlayerVehicleID(playerid);
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if(engine == 0 && Benzin[vehicleid] <= 0)
{
ShowErrorDialog(playerid, \"Kifogyott az üzemanyag!\");
return 1;
}
if(engine == 1) { engine = 0; lights = 0; }
else { engine = 1; lights = 1; }
SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
Ugyanúgy, lekéred a HPját és ha 250(vagy kevesebb) akkor nem engeded beindítani.
Vagy a könyebbik megoldás lehet az is, hogy amikor a ciklusban lekéri nem \'if(hp < 250)\', hanem \'if(hp <= 250)\'
így 2.5 másodpercenként -vagy hamarabb- le fog fulladni a motor. Bár ez pazarló, de nem vészes. (Azért pazarló mert minden lefutásnál igaz lesz ha totálkáros = mindig lefut a leállítás, HP állítás).
ha le akarod kérni az életét a parancsod tetejébe tedd ezt:
new hp;
new vehid = GetPlayerVehicleID(playerid);
GetVehicleHealth(vehid, hp);
if(hp <= 250) return SendClientMessage(playerid, -1, \"Nem indíthatod be!\"); // mivel ott a \'return\' ezért innentõl nem fut tovább a parancs, ha igaz az állításunk(\'hp kisebb, vagy egyellõ mint 250\').