How to add more capture zones
#1

Hey, I'm using this tutorial on how to make capture zones but I don't know how to add more zones. I tried like this public
Код:
OnGameModeInit()
{

    tCP[CAPZONE] = TEAM_NONE;
    UnderAttack[CAPZONE] = 0;
    Zone[CAPZONE] = CreateDynamicZone(1675.78128, -2019.53125, 1812.5, -1867.1875, NEUTRAL_FLAG_COLOR);
    CP[CAPZONE] = CreateDynamicCP(1716.4755,	-1880.6313,	14.5662, 3, -1, -1, -1, 100.0);

    tCP[CAPZONE] = TEAM_NONE;
    UnderAttack[CAPZONE] = 0;
    Zone[CAPZONE] = CreateDynamicZone(1226.5625, 242.1875, 1324.21875, 351.5625, NEUTRAL_FLAG_COLOR);
    CP[CAPZONE] = CreateDynamicCP(1271.6301,	295.0983,	20.6563, 3, -1, -1, -1, 100.0);
I tried defining more CAPZONES like this
Код:
#define CAPZONE 0
#define CAPZONE 1
But with no luck. Can somebody explain me how to add more than 1 zone, please ?
Reply
#2

Quote:
Originally Posted by msvu
Посмотреть сообщение
Hey, I'm using this tutorial on how to make capture zones but I don't know how to add more zones. I tried like this public
Код:
OnGameModeInit()
{

    tCP[CAPZONE] = TEAM_NONE;
    UnderAttack[CAPZONE] = 0;
    Zone[CAPZONE] = CreateDynamicZone(1675.78128, -2019.53125, 1812.5, -1867.1875, NEUTRAL_FLAG_COLOR);
    CP[CAPZONE] = CreateDynamicCP(1716.4755,	-1880.6313,	14.5662, 3, -1, -1, -1, 100.0);

    tCP[CAPZONE] = TEAM_NONE;
    UnderAttack[CAPZONE] = 0;
    Zone[CAPZONE] = CreateDynamicZone(1226.5625, 242.1875, 1324.21875, 351.5625, NEUTRAL_FLAG_COLOR);
    CP[CAPZONE] = CreateDynamicCP(1271.6301,	295.0983,	20.6563, 3, -1, -1, -1, 100.0);
I tried defining more CAPZONES like this
Код:
#define CAPZONE 0
#define CAPZONE 1
But with no luck. Can somebody explain me how to add more than 1 zone, please ?
You can't define twice "CAPZONE", if you already defining more zones you can define something like:

Код:
#define ZONE_1 0
#define ZONE_2 1
I would rather define zones by names or even not defining at all!

Код:
#define ZONE_VINEWOOD	0
#define ZONE_GSF		1
#define ZONE_BALLAS		2
#define ZONE_CITYHALL	3
To make esier with defining use an enum

Код:
enum {
	ZONE_VINEWOOD,
	ZONE_GSF,
	ZONE_BALLAS,
	ZONE_CITYHALL
}
After that to create multiple zones it would look:

Код:
    tCP[ZONE_VINEWOOD] = TEAM_NONE;
    UnderAttack[ZONE_VINEWOOD] = 0;
    Zone[ZONE_VINEWOOD] = CreateDynamicZone(1675.78128, -2019.53125, 1812.5, -1867.1875, NEUTRAL_FLAG_COLOR);
    CP[ZONE_VINEWOOD] = CreateDynamicCP(1716.4755,	-1880.6313,	14.5662, 3, -1, -1, -1, 100.0);

    tCP[ZONE_GSF] = TEAM_NONE;
    UnderAttack[ZONE_GSF] = 0;
    Zone[ZONE_GSF] = CreateDynamicZone(1226.5625, 242.1875, 1324.21875, 351.5625, NEUTRAL_FLAG_COLOR);
    CP[ZONE_GSF] = CreateDynamicCP(1271.6301,	295.0983,	20.6563, 3, -1, -1, -1, 100.0);

    tCP[ZONE_BALLAS] = TEAM_NONE;
    UnderAttack[ZONE_BALLAS] = 0;
    Zone[ZONE_BALLAS] = CreateDynamicZone(1226.5625, 242.1875, 1324.21875, 351.5625, NEUTRAL_FLAG_COLOR);
    CP[ZONE_BALLAS] = CreateDynamicCP(1271.6301,	295.0983,	20.6563, 3, -1, -1, -1, 100.0);
    .
    .
    .
Reply
#3

And I will have to make stocks for every single zone ?

Like this
pawn Код:
stock ActiveCAPZONE0(playerid)
{
        if(UnderAttack[ZONE_0] == 0)
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
                UnderAttack[ZONE_0] = 1;
                timer[playerid][ZONE_0] = SetTimerEx("CAPZONETimer", 25000, false,"i",playerid);
                Captured[playerid][ZONE_0] = 0;
                SendClientMessage(playerid, COLOR_WHITE,"Stay in this checkpoint for 25 seconds to capture it");
                if(GetPlayerTeam(playerid) == TEAM_ALPHA)
                {
                  FlashDynamicZoneForAll(Zone[ZONE_0], ALPHA_FLAG_COLOR);
                }
                else if(GetPlayerTeam(playerid) == TEAM_BRAVO)
                {
                  FlashDynamicZoneForAll(Zone[ZONE_0], BRAVO_FLAG_COLOR);
                }

                //------Message-----
                if(tCP[ZONE_0] == TEAM_ALPHA)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is controlled by team Alpha");
                  SendClientMessageToAll(COLOR_RED,"Capture Zone is under attack");
                }
                else if(tCP[ZONE_0] == TEAM_BRAVO)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is controlled by team Bravo");
                  SendClientMessageToAll(COLOR_RED,"Capture Zone is under attack");
                }

                else if(tCP[ZONE_0] == TEAM_NONE)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is not controlled by any team");
                }
                //---------loop-------//
                for(new i = 0; i < MAX_PLAYERS; i ++)
                {
                   IsPlayerCapturing[i][ZONE_0] = 1;
                }
            }
            else return CaptureZoneMessage(playerid, 1);
        }
        else return CaptureZoneMessage(playerid, 2);
        return 1;
}
pawn Код:
stock ActiveCAPZONE1(playerid)
{
        if(UnderAttack[ZONE_1] == 0)
        {
            if(!IsPlayerInAnyVehicle(playerid))
            {
                UnderAttack[ZONE_1] = 1;
                timer[playerid][ZONE_1] = SetTimerEx("CAPZONETimer", 25000, false,"i",playerid);
                Captured[playerid][ZONE_1] = 0;
                SendClientMessage(playerid, COLOR_WHITE,"Stay in this checkpoint for 25 seconds to capture it");
                if(GetPlayerTeam(playerid) == TEAM_ALPHA)
                {
                  FlashDynamicZoneForAll(Zone[ZONE_1], ALPHA_FLAG_COLOR);
                }
                else if(GetPlayerTeam(playerid) == TEAM_BRAVO)
                {
                  FlashDynamicZoneForAll(Zone[ZONE_1], BRAVO_FLAG_COLOR);
                }

                //------Message-----
                if(tCP[ZONE_1] == TEAM_ALPHA)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is controlled by team Alpha");
                  SendClientMessageToAll(COLOR_RED,"Capture Zone is under attack");
                }
                else if(tCP[ZONE_1] == TEAM_BRAVO)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is controlled by team Bravo");
                  SendClientMessageToAll(COLOR_RED,"Capture Zone is under attack");
                }

                else if(tCP[ZONE_1] == TEAM_NONE)
                {
                  SendClientMessage(playerid, COLOR_WHITE,"This flag is not controlled by any team");
                }
                //---------loop-------//
                for(new i = 0; i < MAX_PLAYERS; i ++)
                {
                   IsPlayerCapturing[i][ZONE_1] = 1;
                }
            }
            else return CaptureZoneMessage(playerid, 1);
        }
        else return CaptureZoneMessage(playerid, 2);
        return 1;
}

Also, would it work correctly if I do this stock like this:
pawn Код:
stock CAPZONECaptured(playerid)
{

    Captured[playerid][ZONE_0] = 1;
    Captured[playerid][ZONE_1] = 1;
    UnderAttack[ZONE_0] = 0;
    UnderAttack[ZONE_1] = 0;
    KillTimer(timer[playerid][ZONE_0]);
    KillTimer(timer[playerid][ZONE_1]);
    CountVar[playerid][ZONE_0] = 25;
    CountVar[playerid][ZONE_1] = 25;
    GivePlayerScore(playerid, 5);
    SendClientMessage(playerid, COLOR_GREEN,"Congratulations! You have captured the area! You received +5 score");
    //==========================================================================
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
       IsPlayerCapturing[i][ZONE_0] = 0;
       if(GetPlayerTeam(i) == GetPlayerTeam(playerid))
       {
           SendClientMessage(i, COLOR_WHITE,"Your team has captured a flag! You received +1 score for it");
           GivePlayerScore(i, 1);
       }
    }
    tCP[ZONE_0] = GetPlayerTeam(playerid);
    StopFlashDynamicZoneForAll(Zone[ZONE_0]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
       IsPlayerCapturing[i][ZONE_1] = 0;
       if(GetPlayerTeam(i) == GetPlayerTeam(playerid))
       {
           SendClientMessage(i, COLOR_WHITE,"Your team has captured a flag! You received +1 score for it");
           GivePlayerScore(i, 1);
       }
    }
    //==========================================================================
    tCP[ZONE_1] = GetPlayerTeam(playerid);
    StopFlashDynamicZoneForAll(Zone[ZONE_1]);
    //==========================================================================
    if(tCP[ZONE_0] == TEAM_ALPHA)
    {
       GangZoneShowForAll(Zone[ZONE_0], TEAMCOLOR_ALPHA);
    }
    else if(tCP[ZONE_0] == TEAM_BRAVO)
    {
    GangZoneShowForAll(Zone[ZONE_0], TEAMCOLOR_BRAVO);
    }
    if(tCP[ZONE_1] == TEAM_ALPHA)
    {
       GangZoneShowForAll(Zone[ZONE_1], TEAMCOLOR_ALPHA);
    }
    else if(tCP[ZONE_1] == TEAM_BRAVO)
    {
    GangZoneShowForAll(Zone[ZONE_1], TEAMCOLOR_BRAVO);
    }
    //==========================================================================
    new str[128];
    format(str, sizeof(str),"%s has captured the capture zone!", GetName(playerid));
    SendClientMessageToAll(COLOR_ORANGE, str);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)