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