SA-MP Forums Archive
Cars Never Explode?? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Cars Never Explode?? (/showthread.php?tid=341161)



Cars Never Explode?? - stuoyto - 09.05.2012

Hello samp forum,

I am trying to create a sysem tha prevents a car from exploding when its health is very low. What i have tried to do is create a function thats repeats every half-second and it is meant to get a vehicles damage and if the damage is below 300, set it back to 300 and disable the engine. However this doesnt work for me, i am not sure wether i am scripting it properly but here is the code.

Top of script:
Код:
forward vDamage_Update(playerid, vehicleid);
OnGameModeInit()
Код:
SetTimer("vDamage_Update", 500, 1);
Function at bottom of script:
Код:
public vDamage_Update(playerid, vehicleid)
{
    new engine, lights, alarm, doors, bonnet, boot, objective;
    new Float:vhealth;
    if(IsPlayerInVehicle(playerid, vehicleid))
    {
        GetPlayerVehicleID(playerid);
	if(GetVehicleHealth(vehicleid, vhealth) <300)
	{
	    SetVehicleHealth(vehicleid, 1000);
 	    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	    SetVehicleParamsEx(vehicleid, 0, 1, alarm, doors, bonnet, boot, objective);
        }
    }
}
I am hoping somebody can tell me why why system doesnt work and maybe help me get it working, I would really appreciate.


Stuoyto


Re: Cars Never Explode?? - kadaradam - 09.05.2012

I think,this should work:
pawn Код:
public vDamage_Update()
{
    for(new playerid; playerid < GetMaxPlayers(); playerid++)
    {
        new engine, lights, alarm, doors, bonnet, boot, objective;
        new Float:vhealth;
        if(IsPlayerInAnyVehicle(playerid))
        {
            GetVehicleHealth(GetPlayerVehicleID(playerid), vhealth);
            if(vhealth <300)
            {
                SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
                GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
                SetVehicleParamsEx(GetPlayerVehicleID(playerid), 0, 1, alarm, doors, bonnet, boot, objective);
            }
        }
    }
}



Re: Cars Never Explode?? - Joe Staff - 09.05.2012

You're going to have to create a parameter-less callback then run a loop every run.

pawn Код:
public OnGameModeInit()
{
    SetTimer("MyCallBack",500,1);
}
forward MyCallBack();
public MyCallBack()
{
    new Float:vhp;
    for(new vehicleid; vehicleid<MAX_VEHICLES;vehicleid++)
    {
        if(GetVehicleModel(vehicleid)==0)continue; //only returns 0 when vehicle is invalid (not spawned)
        GetVehicleHealth(vehicleid,vhp);
        if(vhp<300.0)SetVehicleHealth(vehicleid,300);
    }
}



Re: Cars Never Explode?? - stuoyto - 09.05.2012

Ok guys thank you very much i will go and test your methods


Re: Cars Never Explode?? - kadaradam - 09.05.2012

i've editted my post,because there was a mistake in there.


Re: Cars Never Explode?? - stuoyto - 09.05.2012

Thank you very much both of you, i have tested each of you scripts and they worked fine. Dont know how annoying it was for me trying to get that to work. You make it look so simple