- enum eZone (!!!!!!!!!!!!!!ALL THIS IS CREting zones until the line!!!!!!!!!!!!!)
- {
- Float:zMinX,
- Float:zMinY,
- Float:zMaxX,
- Float:zMaxY,
- zTeam
- }
- new ZoneInfo[][eZone] = {
- {2337.9004,-1808.8383,2590.2043,-1610.3673,TEAM_GROVE},
- {2084.7,-1808.8383,2337.9004,-1610.3673,TEAM_BALLAS},
- {2590.2043,-1808.8383,2842.3,-1610.3673,TEAM_VAGOS}
- };
- new ZoneID[sizeof(ZoneInfo)];
- for(new i=0; i < sizeof(ZoneInfo); i++)
- {
- ZoneID[i] = GangZoneCreate(ZoneInfo[i][zMinX], ZoneInfo[i][zMinY], ZoneInfo[i][zMaxX], ZoneInfo[i][zMaxY]);
- }
- for(new i=0; i < sizeof(ZoneInfo); i++)
- {
- GangZoneShowForPlayer(playerid, ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam]));
- }
- stock GetTeamZoneColor(teamid)
- {
- switch(teamid)
- {
- case TEAM_GROVE: return 0x00FF0088;
- case TEAM_BALLAS: return 0xFF00FF88;
- case TEAM_VAGOS: return 0xFFFF0088;
- }
- return -1;
- }
- ---------------------------------------------------------------------------------------------------
- new ZoneAttacker[sizeof(ZoneInfo)] = {-1, ...};
- new ZoneAttackTime[sizeof(ZoneInfo)];
- for(new i=0; i < sizeof(ZoneInfo); i++)
- {
- GangZoneShowForPlayer(playerid, ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam]));
- if(ZoneAttacker[i] != -1) GangZoneFlashForPlayer(playerid, ZoneID[i], GetTeamZoneColor(ZoneAttacker[i]));
- }
- new Teams[] = {
- (ur teams here)
- };
- stock IsPlayerInZone(playerid, zoneid)
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- return (x > ZoneInfo[zoneid][zMinX] && x < ZoneInfo[zoneid][zMaxX] && y > ZoneInfo[zoneid][zMinY] && y < ZoneInfo[zoneid][zMaxY]);
- }
- stock GetPlayersInZone(zoneid, teamid)
- {
- new count;
- for(new i=0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i) && GetPlayerTeam(i) == teamid && IsPlayerInZone(i, zoneid))
- {
- count++;
- }
- }
- return count;
- }
- SetTimer("ZoneTimer", 1000, true);
- 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;
- }
- }
- 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]));
- }
- }
- }
- }
- }
- ((ATTACKING ZONE 2 )) ANYTHING LIKE THIS DONT ADD TO THE CODE -.-
- #define TAKEOVER_TIME 120 // how many seconds needed to take over the zone
- #define MIN_DEATHS_TO_START_WAR 3 // how many team members must be killed in a zone to start a war
- SetTimer("ZoneTimer", 1000, true);
- 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]) >= 1) // there must be at least 1 attacker left
- {
- 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;
- }
- }
- }
- }
- if(IsPlayerConnected(killerid) && GetPlayerTeam(playerid) != GetPlayerTeam(killerid)) // not a suicide or team kill
- {
- new zoneid = GetPlayerZone(playerid);
- if(zoneid != -1 && ZoneInfo[zoneid][zTeam] == GetPlayerTeam(playerid)) // zone member has been killed in the zone
- {
- ZoneDeaths[zoneid]++;
- if(ZoneDeaths[zoneid] == MIN_DEATHS_TO_START_WAR)
- {
- ZoneDeaths[zoneid] = 0;
- ZoneAttacker[zoneid] = GetPlayerTeam(killerid);
- ZoneAttackTime[zoneid] = 0;
- GangZoneFlashForAll(ZoneID[zoneid], GetTeamZoneColor(ZoneAttacker[zoneid]));
- }
- }
- }
- new ZoneDeaths[sizeof(ZoneInfo)];
- stock GetPlayerZone(playerid)
- {
- for(new i=0; i < sizeof(ZoneInfo); i++)
- {
- if(IsPlayerInZone(playerid, i))
- {
- return i;
- }
- }
- return -1;
- }
- ((done but thts the attacking zones just add the teams names and all the coords