SA-MP Forums Archive
[Help] Zone Time Detection [+Rep] - 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: [Help] Zone Time Detection [+Rep] (/showthread.php?tid=559126)



[Help] Zone Time Detection [+Rep] - Arxalan - 21.01.2015

Hello , i made gang zones from a tutorial but now i want some changes. There is a zonetimer callback which check if the player is in zone so the turf starts automatically .But i want to make a function that if the zone was attacked (completely and owned by the attacker) before 60 seconds i mean if last zone attack time is greater than 60 seconds so this code execute
PHP код:
GivePlayerCash(playerid200); 
Otherwise if the last attack was under 60 seconds so he don't get the money . Following is my callback.
PHP код:
forward ZoneTimer(); 
public 
ZoneTimer() 

    for(new 
i=0sizeof(ZoneInfo); i++) // loop all zones 
    

        if(
ZoneAttacker[i] != -1// zone is being attacked 
        

            if(
GetPlayersInZone(iZoneAttacker[i]) >= MIN_MEMBERS_TO_START_WAR// team has enough members in the zone 
            

                
ZoneAttackTime[i]++; 
                if(
ZoneAttackTime[i] == TAKEOVER_TIME// zone has been under attack for enough time and attackers take over the zone 
                

                    
GangZoneStopFlashForAll(ZoneID[i]); 
                    
ZoneInfo[i][zTeam] = ZoneAttacker[i]; 
                    
GangZoneShowForAll(ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam])); // update the zone color for new team 
                    
ZoneAttacker[i] = -1
                } 
            } 
            else 
// attackers failed to take over the zone 
            

                
GangZoneStopFlashForAll(ZoneID[i]); 
                
ZoneAttacker[i] = -1
            } 
        } 
        else 
// check if somebody is attacking 
        

            for(new 
t=0sizeof(Teams); t++) // loop all teams 
            

                if(
Teams[t] != ZoneInfo[i][zTeam] && GetPlayersInZone(iTeams[t]) >= MIN_MEMBERS_TO_START_WAR// if there are enough enemies in the zone 
                

                    
ZoneAttacker[i] = Teams[t]; 
                    
ZoneAttackTime[i] = 0
                    
GangZoneFlashForAll(ZoneID[i], GetTeamZoneColor(ZoneAttacker[i])); 
                } 
            } 
        } 
    } 
}  
________ 



Re: [Help] Zone Time Detection [+Rep] - semara123 - 21.01.2015

try this not tested for me but hope this works
Edit: little fault sorry
Код:
forward ZoneTimer(); 
public ZoneTimer() 
{ 
    for(new i=0; i < sizeof(ZoneInfo); i++) // loop all zones 
    { 
        if(ZoneAttacker[i] != -1) // zone is being attacked 
        { 
            if(GetPlayersInZone(i, ZoneAttacker[i]) >= MIN_MEMBERS_TO_START_WAR) // team has enough members in the zone 
            { 
                ZoneAttackTime[i]++; 
                if(ZoneAttackTime[i] <= TAKEOVER_TIME) // zone has been under attack for enough time and attackers take over the zone 
                { 
                    GangZoneStopFlashForAll(ZoneID[i]); 
                    ZoneInfo[i][zTeam] = ZoneAttacker[i]; 
                    GangZoneShowForAll(ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam])); // update the zone color for new team 
                    ZoneAttacker[i] = -1; 
                } 
            if(ZoneAttackTime[i] >= TAKEOVER_TIME) // zone has been under attack for enough time and attackers take over the zone 
                { 
                    GangZoneStopFlashForAll(ZoneID[i]); 
                    ZoneInfo[i][zTeam] = ZoneAttacker[i]; 
                    GangZoneShowForAll(ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam])); // update zone color team
                    GivePlayerCash(playerid, 200); 
                    ZoneAttacker[i] = -1; 
                }  
              } 
            else // attackers failed to take over the zone 
            { 
                GangZoneStopFlashForAll(ZoneID[i]); 
                ZoneAttacker[i] = -1; 
            } 
        } 
        else // check if somebody is attacking 
        { 
            for(new t=0; t < sizeof(Teams); t++) // loop all teams 
            { 
                if(Teams[t] != ZoneInfo[i][zTeam] && GetPlayersInZone(i, Teams[t]) >= MIN_MEMBERS_TO_START_WAR) // if there are enough enemies in the zone 
                { 
                    ZoneAttacker[i] = Teams[t]; 
                    ZoneAttackTime[i] = 0; 
                    GangZoneFlashForAll(ZoneID[i], GetTeamZoneColor(ZoneAttacker[i])); 
                } 
            } 
        } 
    } 
}
hope this works
im sorry if that code doesnt work


Re: [Help] Zone Time Detection [+Rep] - Arxalan - 21.01.2015

Clearly proofs from this.
PHP код:
                ZoneAttackTime[i]++; 
                if(
ZoneAttackTime[i] <== TAKEOVER_TIME// zone has been under attack for enough time and attackers take over the zone 
                

                    
GangZoneStopFlashForAll(ZoneID[i]); 
                    
ZoneInfo[i][zTeam] = ZoneAttacker[i]; 
                    
GangZoneShowForAll(ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam])); // update the zone color for new team 
                    
ZoneAttacker[i] = -1
                } 
            if(
ZoneAttackTime[i] == TAKEOVER_TIME// zone has been under attack for enough time and attackers take over the zone 
                

                    
GangZoneStopFlashForAll(ZoneID[i]); 
                    
ZoneInfo[i][zTeam] = ZoneAttacker[i]; 
                    
GangZoneShowForAll(ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam])); // update the zone color for new team 
                    
ZoneAttacker[i] = -1
                } 
It won't work.