Jump to content

Question

Posted (edited)

Eu folosesc acest sistem de zonă capturabile în cazul în care aveți nevoie de 30 de secunde pentru a captura fiecare zonă.  pot face astfel încât să pot configura timpul fiecare zonă va fi capturat. ?

de exemplu:

 

{"Military Shelter", {-153.3433,2213.3953,-99.2894,2319.2996}, {-126.7931,2257.9844,28.1627}, 6, 30} //30 seconds
{"Military Home", {-153.3433,2213.3953,-99.2894,2319.2996}, {-126.7931,2257.9844,28.1627}, 6, 15}, //15 seconds.

 

codul complet, vă rugăm să help.

 

Fiecare zonă durează 30 de secunde și vreau ca eu pot posta timp pentru fiecare, ca un exemplu de mai sus

 

#define CAPTURE_TIME 30
enum E_CAPTURE_ZONE
{
    E_CAPTURE_ZONE_NAME[64],
    Float:E_CAPTURE_ZONE_GANGZONE_OFFSET[4],
    Float:E_CAPTURE_ZONE_CP_OFFSET[3],
    E_CAPTURE_ZONE_OWNER,
    E_CAPTURE_ZONE_ATTACKER,
    E_CAPTURE_ZONE_COUNTDOWN,
    E_CAPTURE_ZONE_GANGZONE,
    E_CAPTURE_ZONE_CP,
    E_CAPTURE_ZONE_AREA,
    E_CAPTURE_ZONE_TIMER,
    E_CAPTURE_ZONE_PLAYERS_IN_ZONE,
    Text3D:E_CAPTURE_ZONE_LABEL
};
new captureZone[][E_CAPTURE_ZONE] =
{
    {"Military Shelter", {-153.3433,2213.3953,-99.2894,2319.2996}, {-126.7931,2257.9844,28.1627}, 6},
    {"LV BaySide", {236.328125,2892.578125,292.96875,2943.359375}, {260.0900,2889.5242,11.1854}, 6},
    {"Army Area91", {-617.1875,2531.25,-455.078125,2658.203125}, {-587.0584, 2586.8396, 53.5156}, 6},
    {"Army Petrol", {609.375,1652.34375,714.84375,1767.578125}, {669.5813,1725.7399,7.1875}, 6},
    {"Oil Factory", {95.703125,1339.84375,287.109375,1484.375}, {174.7896,1414.7444,10.5859}, 6},
    {"Oil Station", {529.296875,1205.078125,636.71875,1267.578125}, {634.4808, 1262.0211, 11.7188}, 6},
    {"Big Quarry", {439.453125,748.046875,863.28125,992.1875}, {621.5228,834.4896,-42.9609}, 6},
    {"Desert House", {-357.421875,1707.03125,-253.90625,1835.9375}, {-314.8433,1773.9176,43.6406}, 6},
    {"Big Ear Construction", {-437.5,1513.671875,-244.140625,1636.71875}, {-335.1765,1545.2960,75.5625}, 6},
    {"Sawmill", {678.9210, 1953.2191, 729.9295, 2001.2029}, {706.7179,1966.7109,5.5314}, 6},
    {"AmmuNation", {-351.5625,811.5234375, -284.1796875,884.765625}, {-330.2491,828.6450,14.2422}, 6},
    {"Cluckin Bell", {-1230.46875,1789.0625, -1175.78125,1839.84375},{-1212.40698, 1831.70020, 41.23455}, 6},
    {"Airport", {1230.46875,1142.578125, 1640.625,1798.828125}, {1594.7188,1448.2372,10.8286}, 6},
    {"Jay's Diner", {-1964.84375,2328.125, -1906.25,2402.34375}, {-1940.30542, 2380.05981, 48.99673}, 6},
    {"Nuclear Ship", {78.2477, 434.0849, 326.4969, 510.8952}, {269.2845,471.1271,15.2919}, 6},
    {"The Bridge", {436.5769,335.3214, 604.3247, 608.7048 }, {496.1524,506.4798,18.9220}, 6},
    {"Desert Point", {-675.2361,2335.1946,-646.9362,2406.5635}, {-642.8853,2360.3411,158.7717}, 6},
    {"Pirates Zone", {3068.3669, -2012.0554, 3006.0303, -2188.4277}, {3031.7722,-2105.9031,4.5294}, 6},
    {"Glen Park", {1862.2369, -1146.1490, 2056.5239, -1250.5487}, {1940.5801, -1199.4304, 22.3094}, 6},
    {"Drug Depot", {1016.9769, 2062.9336, 1110.0688, 2166.0183}, {1073.0277, 2104.1851, 10.8203}, 6},
    {"Gas Station", {1577.7716, 2183.3899, 1616.6106, 2242.5139}, {1600.5934, 2220.5210, 11.0625}, 6},
	{"Snake Farm", {-65.2373, 2311.1003, 10.0603, 2393.9177}, {-12.4123,2332.7690,24.1406}, 6, 0}
};
for (new i; i < sizeof captureZone; i++)
    {
        captureZone[i][E_CAPTURE_ZONE_ATTACKER] = INVALID_PLAYER_ID;
        captureZone[i][E_CAPTURE_ZONE_COUNTDOWN] = 0;
        captureZone[i][E_CAPTURE_ZONE_GANGZONE] = GangZoneCreate(captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][0], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][1], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][2], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][3]);
        captureZone[i][E_CAPTURE_ZONE_CP] = CreateDynamicCP(captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][0], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][1], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][2], 3.0);
        captureZone[i][E_CAPTURE_ZONE_AREA] = CreateDynamicRectangle(captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][0], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][1], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][2], captureZone[i][E_CAPTURE_ZONE_GANGZONE_OFFSET][3]);

        captureZone[i][E_CAPTURE_ZONE_CP] = CreateDynamicMapIcon(captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][0], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][1], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][2], 19, -1, -1, -1, -1, 9999.0, MAPICON_LOCAL);

        format(string, sizeof(string), ""COL_WHITE"%s"COL_YELLOW"(%i)", captureZone[i][E_CAPTURE_ZONE_NAME], i);
		captureZone[i][E_CAPTURE_ZONE_LABEL] = CreateDynamic3DTextLabel(string, TEAM[ captureZone[i][E_CAPTURE_ZONE_OWNER] ][E_TEAM_COLOR], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][0], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][1], captureZone[i][E_CAPTURE_ZONE_CP_OFFSET][2], 35.0, _, _, 0, 0);
		captureZone[i][E_CAPTURE_ZONE_TIMER] = SetTimerEx("OnCaptureZoneUpdate", 1000, true, "i", i);
    }




public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
	for (new i; i < sizeof captureZone; i++)
    {
        if (checkpointid == captureZone[i][E_CAPTURE_ZONE_CP])
        {
            if (IsPlayerInAnyVehicle(playerid))
            {
                SendClientMessage(playerid, COLOR_TOMATO, "* You cannot capture a zone in a vehicle.");
                return 1;
            }
            if(AdminDuty[playerid] == 1)
			{
			    SendClientMessage(playerid, COLOR_TOMATO, "No way! You can't capture zone while on duty!");
                return 1;
	   		}
	   		if(GetPlayerTeam(playerid) == captureZone[i][E_CAPTURE_ZONE_OWNER])
			{
   				SCM(playerid, COLOR_ORANGE_RED, "* This zone is controlled by your team.");
				break;
			}
            if (captureZone[i][E_CAPTURE_ZONE_ATTACKER] == INVALID_PLAYER_ID)
            {
                if ((GetPlayerTeam(playerid) >= 0 && GetPlayerTeam(playerid) < sizeof TEAM) && TEAM[GetPlayerTeam(playerid)][E_TEAM_VALID] && GetPlayerTeam(playerid) != captureZone[i][E_CAPTURE_ZONE_OWNER])
                {
					
                    captureZone[i][E_CAPTURE_ZONE_ATTACKER] = playerid;
                    captureZone[i][E_CAPTURE_ZONE_PLAYERS_IN_ZONE] = 1;
                    captureZone[i][E_CAPTURE_ZONE_COUNTDOWN] = 0;
                    KillTimer(captureZone[i][E_CAPTURE_ZONE_TIMER]);
                    captureZone[i][E_CAPTURE_ZONE_TIMER] = SetTimerEx("OnCaptureZoneUpdate", 1000, true, "i", i);

                    GangZoneFlashForAll(captureZone[i][E_CAPTURE_ZONE_GANGZONE], ALPHA(TEAM[GetPlayerTeam(playerid)][E_TEAM_COLOR], 100));

                    SCM(playerid, COLOR_ORANGE_RED, "Stay in the checkpoint to for "#CAPTURE_TIME" seconds to capture the zone.");

                    new string[150];
                    format(string, sizeof string, "[ZONE] "COL_WHITE"Someone is trying to capture "OLIVE_GREEN"%s "COL_WHITE"for team "DARK_RED"%s !", captureZone[i][E_CAPTURE_ZONE_NAME], TEAM[GetPlayerTeam(playerid)][E_TEAM_NAME]);
                    SendClientMessageToAll(COLOR_DARK_RED, string);
				}
                else return 1;
            }
            else if (GetPlayerTeam(playerid) == GetPlayerTeam(captureZone[i][E_CAPTURE_ZONE_ATTACKER]))
            {
                captureZone[i][E_CAPTURE_ZONE_PLAYERS_IN_ZONE]++;

                SCM(playerid, COLOR_GREEN, "* Stay in the checkpoint to assist your teammate in capturing the area.");
            }
            PlayerTextDrawShow(playerid, capturePlayerTextDraw[playerid]);
            PlayerTextDrawShow(playerid, capturePlayerPreview[playerid]);
            ShowPlayerProgressBar(playerid, capturePlayerBar[playerid]);
            return 1;
        }
    }
	return 1;
}

 

forward OnCaptureZoneUpdate(zoneid);
public OnCaptureZoneUpdate(zoneid)
{
    captureZone[zoneid][E_CAPTURE_ZONE_COUNTDOWN] += captureZone[zoneid][E_CAPTURE_ZONE_PLAYERS_IN_ZONE];

    new string[150];
    format(string, sizeof string, "Capturing %i...", CAPTURE_TIME - captureZone[zoneid][E_CAPTURE_ZONE_COUNTDOWN]);

    for (new i, j = GetPlayerPoolSize(); i <= j; i++)
    {
         if (IsPlayerInDynamicCP(i, captureZone[zoneid][E_CAPTURE_ZONE_CP]) &&
             !IsPlayerInAnyVehicle(i) &&
             GetPlayerTeam(i) == GetPlayerTeam(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]))
         {
             PlayerTextDrawSetString(i, capturePlayerTextDraw[i], string);
             SetPlayerProgressBarValue(i, capturePlayerBar[i], captureZone[zoneid][E_CAPTURE_ZONE_COUNTDOWN]);
         }
    }
    if (captureZone[zoneid][E_CAPTURE_ZONE_COUNTDOWN] > CAPTURE_TIME)
    {
        GetPlayerName(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER], string, MAX_PLAYER_NAME);
        format(string, sizeof string, "* Good job soldier. You assisted %s to capture "LIGHT_GREEN"%s. +$500", string, captureZone[zoneid][E_CAPTURE_ZONE_NAME]);

        for (new i, j = GetPlayerPoolSize(); i <= j; i++)
        {
             if (IsPlayerInDynamicCP(i, captureZone[zoneid][E_CAPTURE_ZONE_CP]) &&
                 !IsPlayerInAnyVehicle(i) &&
                 GetPlayerTeam(i) == GetPlayerTeam(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]))
             {
                PlayerTextDrawHide(i, capturePlayerTextDraw[i]);
                PlayerTextDrawHide(i, capturePlayerPreview[i]);
                HidePlayerProgressBar(i, capturePlayerBar[i]);

                if (i != captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER])
                {
                    SendClientMessage(i, COLOR_GREEN, string);
                    GivePlayerCash(i, 500);
                }
			 }
			 if(GetPlayerTeam(i) == GetPlayerTeam(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]))
   			 {
				format(string, sizeof(string), "** You recieved +2 score from the captured zone by your team.");
                SCM(i, COLOR_LIGHTBLUE, string);

                SetPlayerScore(i, PInfo[i][Score] += 2);
			 }
             if(GetPlayerTeam(i) == captureZone[zoneid][E_CAPTURE_ZONE_OWNER])
             {
				format(string, sizeof(string), "** You recieved -2 score, your team lost the zone.");
                SCM(i, COLOR_LIGHTBLUE, string);

                SetPlayerScore(i, PInfo[i][Score] -= 2);
             }
        }
        SetPlayerScore(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER], GetPlayerScore(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]) + 5);

        GivePlayerCash(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER], 4500);
        format(string, sizeof string, "[ZONE] You successfully captured "COL_ORANGE"%s. "COL_WHITE"+5 Score +$4500", captureZone[zoneid][E_CAPTURE_ZONE_NAME]);
        SendClientMessage(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER], COLOR_GREEN, string);

        PInfo[captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]][ZonesCaptured]++;

        format(string, sizeof string, ""COL_ORANGE"(!) %s team have captured '%s' .", TEAM[GetPlayerTeam(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER])][E_TEAM_NAME], captureZone[zoneid][E_CAPTURE_ZONE_NAME]);
        SCMToAll(-1, string);

        new text[150];
        format(text, sizeof(text), ""COL_WHITE"%s"COL_YELLOW"(%i)", captureZone[zoneid][E_CAPTURE_ZONE_NAME], zoneid);
		UpdateDynamic3DTextLabelText(captureZone[zoneid][E_CAPTURE_ZONE_LABEL], TEAM[captureZone[zoneid][E_CAPTURE_ZONE_OWNER]][E_TEAM_COLOR], text);

        captureZone[zoneid][E_CAPTURE_ZONE_OWNER] = GetPlayerTeam(captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER]);
        captureZone[zoneid][E_CAPTURE_ZONE_ATTACKER] = INVALID_PLAYER_ID;
        KillTimer(captureZone[zoneid][E_CAPTURE_ZONE_TIMER]);
        GangZoneStopFlashForAll(captureZone[zoneid][E_CAPTURE_ZONE_GANGZONE]);
        GangZoneShowForAll(captureZone[zoneid][E_CAPTURE_ZONE_GANGZONE], ALPHA(TEAM[captureZone[zoneid][E_CAPTURE_ZONE_OWNER]][E_TEAM_COLOR], 100));
    }
    return 1;
}

 

Edited by Avast_
Edit

Youtube: Click

4 answers to this question

Recommended Posts

  • 0
Posted

Cred ca ai gresit topicul, nu prea inteleg ce

Citat

"codul complet, vă rugăm să help."

 

Ares4  =(

 

 

  • 0
Posted

Vreau să pot stabili câte secunde vor fi capturate fiecare zonă, nu toată lumea în 30 de secunde.

Youtube: Click

  • 0
Posted

Hint: 

#define CAPTURE_TIME 30 put in 

enum E_CAPTURE_ZONE

and make E_CAPTURE_ZONE_TIME

  • 0
Posted
La 12.03.2019 la 19:52, Kiran a spus:

Cred ca ai gresit topicul, nu prea inteleg ce

 

nu cred ca e roman baiatul

Citat

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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.