Auto-Repair won't stop!
#1

Ok, so I scripted an auto-repair using timers and It works, but the command to turn it off doesn't.

(The most of the code for this)

new repairtimer;

pawn Код:
CMD:godmode(playerid, params[])
{
    SetPlayerHealth(playerid,100000);
    SendClientMessage(playerid,-1,"Godmode: {0000FF}ON");
    SendClientMessage(playerid,COLOR_RED,"Your vehicle cannot be destroyed.");
    repairtimer = SetTimerEx("repairme", 500, false, "i", playerid);
    return 1;
}
CMD:godmodeoff(playerid, params[])
{
    SetPlayerHealth(playerid,100);
    SendClientMessage(playerid,-1,"Godmode: {FF0000}OFF");
    SendClientMessage(playerid,COLOR_RED,"Your vehicle can be destroyed.");
    KillTimer(repairtimer);
    return 1;
}

pawn Код:
forward repairme(playerid);
public repairme(playerid)
{
  if(IsPlayerInAnyVehicle(playerid))
  {
   new Float:health,vehicleid;
   vehicleid = GetPlayerVehicleID(playerid);
   GetVehicleHealth(vehicleid,health);
   if(health <1000)
   {
   RepairVehicle(vehicleid);
   repairtimer = SetTimerEx("repairme", 1000, false, "i", playerid);
   }
   repairtimer = SetTimerEx("repairme", 1000, false, "i", playerid);
  }
 }
I realize this may be poorly done, but I've not had much experience using timers.

Anyone know what I did wrong or maybe even a better way to handle this?
Reply
#2

try not to use timer or just Kill it by using KillTimer
Reply
#3

Very poorly done indeed!


Код:
new pAutoFix[MAX_PLAYERS];

// OnGameModeInit
SetTimer("autoRepair", 400, true);

CMD:godmode(playerid, params[])
{
    if(pAutoFix[playerid] == 0)
    {
    	SetPlayerHealth(playerid, 1000000);
    	SendClientMessage(playerid,-1,"Godmode: {0000FF}ON");
    	SendClientMessage(playerid,COLOR_RED,"Your vehicle cannot be destroyed.");
    	pAutoFix[playerid] = 1;
	}
 	else
 	{
 		SetPlayerHealth(playerid,100);
    	SendClientMessage(playerid,-1,"Godmode: {FF0000}OFF");
    	SendClientMessage(playerid,COLOR_RED,"Your vehicle can be destroyed.");
    	pAutoFix[playerid] = 0;
 	}
    return 1;
}

forward autoRepair()
public autoRepair()
{
	for(new ii = 0; ii < MAX_PLAYERS; ii++)
	{
		new vID = GetPlayerVehicleID(ii);
		if(vID != 0)
		{
			if(pAutoFix[ii] == 1) RepairVehicle(vID);
		}
   	}
	return true;
}
This should do it.
Reply
#4

Thanks for the help [Hunter] +rep'd
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)