Jump to content

Question

Posted

Salutare, am si eu comanda :

if(strcmp(cmd, "/startwar", true) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
          if(wtimer[playerid] < 1)
         { }
         else
           {
               SendClientMessage(playerid, COLOR_GREY, "Trebuie sa astepti 12 ore la fiecare war!");
               return 1;
           }
         if(PlayerInfo[playerid][pLeader] == 5 || PlayerInfo[playerid][pLeader] == 6 || PlayerInfo[playerid][pLeader] == 12)
           {
               provoked = 1;
            new x_nr[256];
            x_nr = strtok(cmdtext, idx);
            if(!strlen(x_nr))
            {
                  SendClientMessage(playerid, COLOR_WHITE, "Tasteaza: /startwar list , /startwar [locul]");
                  return 1;
              }
              if(strcmp(x_nr,"list",true) == 0)
               {
               SendClientMessage(playerid, COLOR_YELLOW, "_________Lista Locuri_________");
               SendClientMessage(playerid, COLOR_GRAD1, "1:GS/LS 2: BS/LS  3: Madd Dog House 4: Banca");
                return 1;
              }
               else if(strcmp(x_nr,"1",true) == 0)
               {
                SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {8B5A2B}Guneo-{DBDB70}Carleone{D3D3D3}-{66CD00}Barzini {00FA9A}au declarat WAR , zona: {FFFFFF}GS/LS");
                return 1;
            }
             else if(strcmp(x_nr,"2",true) == 0)
             {
                SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {8B5A2B}Guneo-{DBDB70}Carleone{D3D3D3}-{66CD00}Barzini {00FA9A}au declarat WAR , zona: {FFFFFF}BS/LS");
                return 1;
            }
            else if(strcmp(x_nr,"3",true) == 0)
             {
                   SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {8B5A2B}Guneo-{DBDB70}Carleone{D3D3D3}-{66CD00}Barzini {00FA9A}au declarat WAR , zona: {FFFFFF}Madd Dog House");
                    return 1;
            }
            else if(strcmp(x_nr,"4",true) == 0)
             {
                   SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {8B5A2B}Guneo-{DBDB70}Carleone{D3D3D3}-{66CD00}Barzini {00FA9A}au declarat WAR , zona: {FFFFFF}Banca");
                    return 1;
            }
         }
         else if(PlayerInfo[playerid][pLeader] == 13 || PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pLeader] == 15)
         {
             provoked = 1;
               new x_nr[256];
            x_nr = strtok(cmdtext, idx);
            if(!strlen(x_nr))
            {
               SendClientMessage(playerid, COLOR_WHITE, "Tasteaza: /startwar list , /startwar [locul]");
               return 1;
             }
             if(strcmp(x_nr,"list",true) == 0)
              {
               SendClientMessage(playerid, COLOR_YELLOW, "_________Lista Locuri_________");
               SendClientMessage(playerid, COLOR_GRAD1, "1: GS/LS 2: BS/LS 3: Madd Dog House 4: Banca");
                 return 1;
             }
               else if(strcmp(x_nr,"1",true) == 0)
               {
                    SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {EE2C2C}Tattagalia{D3D3D3}-{97FFFF}Paterno{D3D3D3}-{CD3278}Stracci {00FA9A}au declarat WAR , zona: {FFFFFF}GS/LS");
                    return 1;
            }
             else if(strcmp(x_nr,"2",true) == 0)
                {
                   SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {EE2C2C}Tattagalia{D3D3D3}-{97FFFF}Paterno{D3D3D3}-{CD3278}Stracci {00FA9A}au declarat WAR , zona: {FFFFFF}BS/LS");
                   return 1;
            }
            else if(strcmp(x_nr,"3",true) == 0)
             {
                   SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {EE2C2C}Tattagalia{D3D3D3}-{97FFFF}Paterno{D3D3D3}-{CD3278}Stracci {00FA9A}au declarat WAR , zona: {FFFFFF}Madd Dog House");
                    return 1;
            }
            else if(strcmp(x_nr,"4",true) == 0)
             {
                   SendClientMessageToAll(COLOR_GREEN, "{00FA9A}[WAR]: {EE2C2C}Tattagalia{D3D3D3}-{97FFFF}Paterno{D3D3D3}-{CD3278}Stracci {00FA9A}au declarat WAR , zona: {FFFFFF}Banca");
                    return 1;
            }
         }
         else
         {
              SendClientMessage(playerid, COLOR_GRAD2, "Tu nu esti leader in Mafie!");
              return 1;
            }
           wtimer[playerid] = 3000000;
      }
      return 1;
   }

if(strcmp(cmd, "/acceptwar", true) == 0)
 {
        if(IsPlayerConnected(playerid))
        {
        if (provoked == 1)
        {
            if (PlayerInfo[playerid][pLeader] == 5 || PlayerInfo[playerid][pLeader] == 6 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pLeader] == 13 || PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pLeader] == 15)
         {
           new hour,minuite;
           gettime(hour,minuite);
           FixHour(hour);
           SetTimer("wartime", 1800000, false);
           SendClientMessageToAll(COLOR_WHITE, "{6EF83C}|____War Started____|");
           format(string, sizeof(string), "{006633}Guneo - {CC9933}Carleone - {663300}Barzini {660099}Tattagalia - {99FFFF}Paterno - {990033}Stracci");
           SendClientMessageToAll(COLOR_WHITE,string);
           SendClientMessageToAll(COLOR_WHITE, "Premiul: {F81414}50.000 {33AA33}$ {F81414}5000 {33AA33}Mats {F81414}200 {33AA33}Drugs");
           format(string, sizeof(string), "War inceput la ora: {F81414}%d: %d", hour, minuite);
           SendClientMessageToAll(COLOR_WHITE,string);
           SendClientMessageToAll(COLOR_WHITE, "Va rugam evitati acea zona!");
           SendClientMessageToAll(COLOR_WHITE, "{6EF83C}|____War Started____|");
           provoked = 0;
            }
            }
            else
            {
              SendClientMessage(playerid, COLOR_GREY, "Tu nu esti leader in Mafie.");
            }
            }
      return 1;
 }
Dar nu functioneaza... Tot scriptul:
#define TAKEOVER_TIME 600 // how many seconds needed to take over the zone
#define MIN_DEATHS_TO_START_WAR 2 // how many team members must be killed in a zone to start a war

#define TEAM_GROVE 1
#define TEAM_BALLAS 2

enum eZone
{
    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},
    {1429.3770,-1732.4554,1529.1932,-1592.1989,TEAM_GROVE}
};

new ZoneAttacker[sizeof(ZoneInfo)] = {-1, ...};
new ZoneAttackTime[sizeof(ZoneInfo)];
new ZoneDeaths[sizeof(ZoneInfo)];


new ZoneID[sizeof(ZoneInfo)];
OnPlayerDeath
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]));
        }
    }
}
OnPlayerSpawn
for(new i=0; i < sizeof(ZoneInfo); i++)
{
    GangZoneShowForPlayer(playerid, ZoneID[i], GetTeamZoneColor(ZoneInfo[i][zTeam]));
}

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]));
}
OnGameModeInIt
for(new i=0; i < sizeof(ZoneInfo); i++)
{
    ZoneID[i] = GangZoneCreate(ZoneInfo[i][zMinX], ZoneInfo[i][zMinY], ZoneInfo[i][zMaxX], ZoneInfo[i][zMaxY]);
}

SetTimer("ZoneTimer", 1000, true);
Si stock-urile
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 GetTeamZoneColor(teamid)
{
    switch(teamid)
    {
        case TEAM_GROVE: return 0x00FF0088;
        case TEAM_BALLAS: return 0xFF00FF88;
    }
    return -1;
}

stock GetPlayerZone(playerid)
{
    for(new i=0; i < sizeof(ZoneInfo); i++)
    {
        if(IsPlayerInTurf(playerid, i))
        {
            return i;
        }
    }
    return -1;
}


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;
}


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]) >= 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;
            }
        }
    }
}

1 answer to this question

Recommended Posts

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.