GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Jim Toretto - 2014. augusztus 07. - 14:15:02

Cím: Jármû sérülése
Írta: Jim Toretto - 2014. augusztus 07. - 14:15:02
Sziasztok!
Egy olyan scriptre lenne szükségem ami megakádolyozza azt hogy a jármû felrobbanjon ha már pl 100%-ba sérûlt és a helyett hogy felrobbanna csak kezelhetetlenné válna a jármû. Tehát csak leállna a motor és nem lehetne vele elindulni.
Ha jól tudom van erre egy megoldás de sajnos nem jöttem rá hogy mi.
Valaki tudna nekem egy ilyen scriptet készíteni/küldeni?
Elõre is köszönöm! :)
Cím: Jármû sérülése
Írta: BackUP - 2014. augusztus 07. - 16:14:48
Nem tud 100%-ba rongálódni csak ha felrobbant tudomásom szerint. Hogyha a jármû élete 250HP alá esik akkor kezd el égni. Megoldás: ellenõrzöd egy timerrel a kocsi HPját, ami ha 250 alatt van, 250-re állítod. Amikor indítod a kocsit akkor pedig, hogyha 250HP, vagy akörül van akkor nem engeded elindítani.
Cím: Jármû sérülése
Írta: Jim Toretto - 2014. augusztus 07. - 16:24:17
Uha :O
Nem igazán értem :D
Nem tudnád sriptileg elküldeni ?
Cím: Jármû sérülése
Írta: BackUP - 2014. augusztus 07. - 16:44:25
Í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. :)
Cím: Jármû sérülése
Írta: Jim Toretto - 2014. augusztus 07. - 17:11:33
Áhá jó lesz egy így :D De most akkor hogyan tudnám ilyenkor leállítani a kocsi motorját és nem engedni beindítani ?
Cím: Jármû sérülése
Írta: BackUP - 2014. augusztus 07. - 17:23:47
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.
                }
        }
}
Cím: Jármû sérülése
Írta: Jim Toretto - 2014. augusztus 07. - 18:13:55
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);
Cím: Jármû sérülése
Írta: BackUP - 2014. augusztus 07. - 19:44:25
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\').
Cím: Jármû sérülése
Írta: Jim Toretto - 2014. augusztus 07. - 19:50:56
Tökéletesen mûködik köszönöm szépen! :)