SA-MP Forums Archive
Setting a Timer for damages - 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: Setting a Timer for damages (/showthread.php?tid=635776)



Setting a Timer for damages - aoky - 13.06.2017

I want to add a timer to this code here, so he can't take damage for 3 seconds, after the timer is done he can take damage.
This is on the OnPlayerDamage function.
PHP код:
else if(Character[playerid][BrutalM] == 1)
        {
            
//Timer here for 3 seconds
            
GetPlayerPos(playeridDPos2[playerid][0], DPos2[playerid][1], DPos2[playerid][2]);
            
Delete3DTextLabel(label[playerid]);
            
label2[playerid] = Create3DTextLabel("(( THIS PLAYER IS NOW DEAD ))"COLOR_REDDPos2[playerid][0], DPos2[playerid][1], DPos2[playerid][2], 10.00);
            
Attach3DTextLabelToPlayer(label2[playerid], playerid000.7);
            
Character[playerid][Dead] = 1;
            
Character[playerid][BrutalM] = 0;
            
SCM(playeridCOLOR_YELLOW">> You are now dead. You can use /respawnme after 60 seconds to respawn.");
            
Character[playerid][CanSpawn] = 0;
            
KillTimer(DeathT);
            
RespawnT 60;
            
RespawnEx SetTimer("RespawnTimer"999true);
            
RTimer SetTimerEx("RespawnTimer2"60000false"i"playerid);
        } 



Re: Setting a Timer for damages - renatog - 13.06.2017

Create a variable to check if player can be damaged. Example:
PHP код:
new bool:canBeDamaged[MAX_PLAYERS] = {truetruetrue, ...};
(...)
public 
OnPlayerDamage(...)
{
    if(!
canBeDamaged[playerid]) //if can't be damage, return 0 and stop damage process
        
return 0;
(...)
        else if(
Character[playerid][BrutalM] == 1
        { 
            
canBeDamaged[playerid] = false//can't be damaged
            //Timer here for 3 seconds 
            
GetPlayerPos(playeridDPos2[playerid][0], DPos2[playerid][1], DPos2[playerid][2]); 
            
Delete3DTextLabel(label[playerid]); 
            
label2[playerid] = Create3DTextLabel("(( THIS PLAYER IS NOW DEAD ))"COLOR_REDDPos2[playerid][0], DPos2[playerid][1], DPos2[playerid][2], 10.00); 
            
Attach3DTextLabelToPlayer(label2[playerid], playerid000.7); 
            
Character[playerid][Dead] = 1
            
Character[playerid][BrutalM] = 0
            
SCM(playeridCOLOR_YELLOW">> You are now dead. You can use /respawnme after 60 seconds to respawn."); 
            
Character[playerid][CanSpawn] = 0
            
KillTimer(DeathT); 
            
RespawnT 60
            
RespawnEx SetTimer("RespawnTimer"999true); 
            
RTimer SetTimerEx("RespawnTimer2"60000false"i"playerid); 
            
SetTimerEx("RemoveInvulnerability"3000false"i"playerid); //3 seconds timer
        
}
}  
(...)
forward...
public 
RemoveInvulnerability(playerid)
{
canBeDamaged[playerid] = true//player can be damaged