· 7 years ago · Oct 25, 2018, 10:56 AM
1/*
2 X337 SIMPLE GANG SYSTEM
3 Required Plugins : sscanf, mysql R39-2
4*/
5#include <a_samp> // SA-MP Team
6#include <mysql> // BlueG
7#include <required/sscanf2> // Y-Less
8#include <YSI\y_iterate> // Y-Less
9#include <YSI\y_areas> // Y-Less
10#include <required/zcmd> // Zeex
11
12Escape(str[])
13{
14 new s[512];
15 mysql_real_escape_string(str, s);
16 return s;
17}
18/*
19 DATABASE CONNECTION
20 You must define database connection below and recompile this filterscript
21*/
22#define HOSTNAME "127.0.0.1"
23#define USERNAME "algemliam"
24#define PASSWORD "rbjcb1ztib"
25#define DATABASENAME "algemliam"
26/*
27 -------------------------------------------------------------------------
28*/
29
30
31#define AUTOSAVE 1 // Save Player, Gangs, Zones data automatically! (In - Minutes);
32#define MAX_ZONES 100 // Maximum Gang Zone
33#define MAX_GANGS 100 // Maximum Gang
34#define CAPTURE_TIME 60 // Capture Time
35#define LOCKED_MINUTES 30
36#define DIALOG_UNUSED 1337 // Dialog ID
37#define DEFAULT_ZONE_COLOR "000000AA" // Default hex colour for gang zone
38#define REQUIRED_SCORE 1000 // Required score to make a new gang
39#define MAX_GANG_MEMBER 32 // Maximum gang member
40#undef MAX_PLAYERS
41#define MAX_PLAYERS 100 // MAX_PLAYERS
42#define DIALOG_SAVEZONE DIALOG_UNUSED+1
43#define DIALOG_CREATEGANG DIALOG_UNUSED+2
44#define DIALOG_GANGTAG DIALOG_UNUSED+3
45#define DIALOG_GANGCOLOUR DIALOG_UNUSED+4
46#define DIALOG_HEXCOLOUR DIALOG_UNUSED+5
47#define DIALOG_CREATEGANG_CONFIRM DIALOG_UNUSED+6
48#define DIALOG_GCP DIALOG_UNUSED+7
49#define strcpy(%0,%1) \
50 strcat((%0[0] = '\0', %0), %1)
51#define GANG_MEMBER 1
52#define GANG_STAFF 2
53#define GANG_LEADER 3
54
55#define COLOR_RED 0xAA3333AA
56#define COLOR_WHITE 0xFFFFFFFF
57
58enum _gangzone
59{
60 ZoneID,
61 Float:ZoneMinPos[2],
62 Float:ZoneMaxPos[2],
63 ZoneOwner,
64 ZoneName[50],
65 ZoneHolder,
66 ZoneArea,
67 ZoneLocked,
68 bool:ZoneStatus,
69 ZoneTimer
70}
71enum _player
72{
73 PlayerID,
74 bool:CreatingZone,
75 PlayerText:TDZone[2],
76 PlayerGang,
77 PlayerStatus,
78 GangRequest,
79 PlayerText:CaptureTD[2]
80}
81enum _gang
82{
83 GangID,
84 GangColor[7],
85 GangName[30],
86 GangTag[4],
87 GangScore,
88 CurrentZone,
89 GangTimer
90}
91
92new Player[MAX_PLAYERS][_player],
93GangZone[MAX_ZONES][_gangzone],
94Gang[MAX_GANGS][_gang],
95Iterator:GangZones<MAX_ZONES>,
96Iterator:Gangs<MAX_GANGS>,
97Float:MinPos[MAX_PLAYERS][2],
98Float:MaxPos[MAX_PLAYERS][2],
99PlayerZone[MAX_PLAYERS],
100TempGangName[MAX_PLAYERS][30],
101TempGangTag[MAX_PLAYERS][4],
102TempGangColour[MAX_PLAYERS][7],
103MySQL:connection,
104AutoSaveTimer;
105
106stock bool:CheckGang(gangid)
107{
108 new t[56], query[128];
109 format(query, sizeof(query), "SELECT count(*) AS `total` FROM `member` WHERE `gang` = %d", Gang[gangid][GangID]);
110 mysql_query(query, -1, 0, connection);
111 mysql_store_result(connection);
112 if(mysql_num_rows(connection) > 0)
113 mysql_fetch_field("total", t, connection);
114 mysql_free_result(connection);
115 return (strval(t) >= MAX_GANG_MEMBER) ? false : true;
116}
117
118stock IsAlpha(const string[])
119{
120 for(new i = 0; i < strlen(string); i++)
121 {
122 if(string[i] == 45 || (string[i] >= 48 && string[i] <= 57) || (string[i] >= 65 && string[i] <= 90) || (string[i] >= 97 && string[i] <= 122))
123 continue;
124
125 return false;
126 }
127 return true;
128}
129
130stock HexToInt(string[]) // DracoBlue
131{
132 if (string[0] == 0) return 0;
133 new i, cur=1, res = 0;
134 for (i=strlen(string);i>0;i--) {
135 if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
136
137 cur=cur*16;
138 }
139 return res;
140}
141
142stock GetGangID(id)
143{
144 foreach(new i : Gangs)
145 if(Gang[i][GangID] == id)
146 return i;
147 return -1;
148}
149
150stock GetID(const name[])
151{
152 foreach(new i : Player)
153 {
154 if(!strcmp(name, Name(i)))
155 return i;
156 }
157 return -1;
158}
159
160SaveStats(playerid)
161{
162 new query[128], name[MAX_PLAYER_NAME], i = Player[playerid][PlayerGang];
163 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
164 if(Iter_Contains(Gangs, i) && i != -1)
165 format(query, sizeof(query), "UPDATE `member` SET `gang` = %d, `status` = %d, `name` = '%s' WHERE `id` = '%d'", Gang[i][GangID], Player[playerid][PlayerStatus], Escape(name), Player[playerid][PlayerID]);
166 else
167 format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `name` = '%s' WHERE `id` = %d", Escape(name), Player[playerid][PlayerID]);
168 mysql_query(query, -1, 0, connection);
169 return 1;
170}
171
172SaveGang(i)
173{
174 new query[128];
175 format(query, sizeof(query), "UPDATE `gang` SET `color` = '%s', `score` = %d WHERE `id` = '%d'", Escape(Gang[i][GangColor]), Gang[i][GangScore], Gang[i][GangID]);
176 mysql_query(query, -1, 0, connection);
177 return 1;
178}
179
180SaveZone(i)
181{
182 if(GangZone[i][ZoneOwner] != -1 && Iter_Contains(Gangs, GangZone[i][ZoneOwner]))
183 {
184 new query[128];
185 format(query, sizeof(query), "UPDATE `zone` SET `owner` = '%d' WHERE `id` = '%d'", Gang[GangZone[i][ZoneOwner]][GangID], GangZone[i][ZoneID]);
186 mysql_query(query, -1, 0, connection);
187 }
188 return 1;
189}
190
191LoadPlayerGang(playerid)
192{
193 Player[playerid][PlayerGang] = -1;
194 Player[playerid][PlayerStatus] = GANG_MEMBER;
195 Player[playerid][GangRequest] = -1;
196 new name[MAX_PLAYER_NAME], query[128];
197 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
198 format(query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%s'", Escape(name));
199 mysql_query(query, -1, 0, connection);
200 mysql_store_result(connection);
201 new count = mysql_num_rows(connection);
202 if(count > 0)
203 {
204 new xz[56], id;
205 mysql_fetch_field("gang", xz, connection);
206 id = strval(xz);
207 foreach(new i : Gangs)
208 {
209 if(Gang[i][GangID] == id)
210 {
211 Player[playerid][PlayerGang] = i;
212 break;
213 }
214 }
215 mysql_fetch_field("status", xz, connection);
216 Player[playerid][PlayerStatus] = strval(xz);
217 mysql_fetch_field("id", xz, connection);
218 Player[playerid][PlayerID] = strval(xz);
219 }
220 else
221 {
222 format(query, sizeof(query), "INSERT INTO `member`(`name`) VALUES ('%s')", Escape(name));
223 mysql_query(query, -1, 0, connection);
224 Player[playerid][PlayerID] = mysql_insert_id(connection);
225 }
226 mysql_free_result(connection);
227 return 1;
228}
229
230SendGangMessage(i, msg[])
231{
232 foreach(new p : Player)
233 {
234 if(i == Player[p][PlayerGang])
235 SendClientMessage(p, -1, msg);
236 }
237 return 1;
238}
239
240stock Name(playerid)
241{
242 new name[MAX_PLAYER_NAME];
243 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
244 return name;
245}
246
247public OnFilterScriptInit()
248{
249 SetTimer("LoadFS", 5000, 0);
250 return 1;
251}
252
253public OnFilterScriptExit()
254{
255 AutoSave();
256 foreach(new i : GangZones)
257 {
258 GangZoneDestroy(GangZone[i][ZoneHolder]);
259 Area_Delete(GangZone[i][ZoneArea]);
260 }
261 Iter_Clear(GangZones);
262 foreach(new i : Player)
263 {
264 PlayerTextDrawHide(i, Player[i][TDZone][0]);
265 PlayerTextDrawHide(i, Player[i][TDZone][1]);
266 }
267 KillTimer(AutoSaveTimer);
268 print("\n========= |LOADING!| =========");
269 print("=== |Gang System by Blade| ===");
270 print("=== |SUCCESSFULLY LOADED!| ===\n");
271 return 1;
272}
273
274COMMAND:creategang(playerid, params[])
275{
276 if(GetPlayerScore(playerid) >= REQUIRED_SCORE)
277 {
278 if(Player[playerid][PlayerGang] == -1)
279 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "Insert the gang name below :", "Submit", "Cancel");
280 else
281 SendClientMessage(playerid, COLOR_RED, "You are already in a gang!");
282 }
283 else
284 {
285 new string[128];
286 format(string, sizeof(string), "You need atleast %d score to create a gang!", REQUIRED_SCORE);
287 SendClientMessage(playerid, COLOR_RED, string);
288 }
289 return 1;
290}
291
292COMMAND:gangcolor(playerid, params[])
293{
294 new i = Player[playerid][PlayerGang];
295 if(i != -1)
296 {
297 new color[7];
298 if(sscanf(params, "h", color) || strlen(params) != 6)
299 SendClientMessage(playerid, COLOR_RED, "Invalid hex colour!");
300 else
301 {
302 new msg[56];
303 format(msg, sizeof(msg), "{%s}Your gang color has been changed!", params);
304 SendClientMessage(playerid, -1, msg);
305 format(Gang[i][GangColor], 7, "%s", params);
306 }
307 }
308 else
309 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
310 return 1;
311}
312
313COMMAND:changeleader(playerid, params[])
314{
315 if(Player[playerid][PlayerGang] != -1)
316 {
317 if(Player[playerid][PlayerStatus] == GANG_LEADER)
318 {
319 new id;
320 if(sscanf(params, "u", id))
321 {
322 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/changeleader' <playerid>");
323 }
324 else
325 {
326 if(IsPlayerConnected(id))
327 {
328 if(Player[playerid][PlayerGang] == Player[id][PlayerGang])
329 {
330 Player[playerid][PlayerStatus] = GANG_MEMBER;
331 Player[id][PlayerStatus] = GANG_LEADER;
332 new msg[56];
333 format(msg, sizeof(msg), "[HINT] You have promoted %s as new gang leader!", Name(id));
334 SendClientMessage(playerid, COLOR_WHITE, msg);
335 SendClientMessage(id, COLOR_WHITE, "[HINT] You have been promoted as new gang leader!");
336 SaveStats(id);
337 SaveStats(playerid);
338 }
339 else
340 SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
341 }
342 else
343 SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
344 }
345 }
346 else
347 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
348 }
349 else
350 SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
351 return 1;
352}
353
354COMMAND:territory(playerid, params[])
355{
356 new msg[512], p;
357 foreach(new i : GangZones)
358 {
359 p = GangZone[i][ZoneOwner];
360 if(p == -1)
361 format(msg, sizeof(msg), "%s{B7B7B7}%s (-)\n", msg, GangZone[i][ZoneName]);
362 else
363 format(msg, sizeof(msg), "%s{%s}%s (%s)\n", msg, Gang[p][GangColor], GangZone[i][ZoneName], Gang[p][GangName]);
364
365 }
366 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Territory", msg, "Close", "");
367 return 1;
368}
369
370COMMAND:gangmembers(playerid, params[])
371{
372 new i = Player[playerid][PlayerGang];
373 if(i != -1)
374 {
375 new query[600];
376 format(query, sizeof(query), "SELECT * FROM `member` WHERE `gang` = %d", Gang[i][GangID]);
377 mysql_query(query, -1, 0, connection);
378 mysql_store_result(connection);
379 format(query, sizeof(query), "{FFFFFF}");
380 new count = mysql_num_rows(connection);
381 if(count > 0)
382 {
383 new tempid, r = 1, row[1000];
384 new id,
385 n[56],
386 st,
387 g;
388 while(mysql_fetch_row(row, "|", connection))
389 {
390 sscanf(row, "p<|>ds[56]dd", id, n, st, g);
391 tempid = GetID(n);
392 format(query, sizeof(query), "%s%d. %s ", query, r, n);
393 if(IsPlayerConnected(tempid))
394 strcat(query, "{FE9A2E}(ONLINE) ");
395 else
396 strcat(query, "{FF0000}(OFFLINE) ");
397 if(st == GANG_LEADER)
398 strcat(query, "{58D3F7} (LEADER) ");
399 if(st == GANG_STAFF)
400 strcat(query, "{58D3F7} (STAFF) ");
401 strcat(query, "\n{FFFFFF}");
402 r++;
403 }
404 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang Members", query, "Close", "");
405 }
406 mysql_free_result(connection);
407 }
408 else
409 SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
410 return 1;
411}
412
413COMMAND:gcp(playerid, params[])
414{
415 new i = Player[playerid][PlayerGang];
416 if(i != -1)
417 {
418 if(Iter_Contains(Gangs, i))
419 {
420 new msg[256];
421 format(msg, sizeof(msg), "{FFFF00}Gang Name : {%s}%s {FFFFFF}", Gang[i][GangColor], Gang[i][GangName]);
422 format(msg, sizeof(msg), "%s\n{FFFF00}Gang Tag : [%s]", msg, Gang[i][GangTag]);
423 format(msg, sizeof(msg), "%s\n{FFFF00}Gang Score : %d", msg, Gang[i][GangScore]);
424 format(msg, sizeof(msg), "%s\n{B7B7B7}Gang Member", msg);
425 format(msg, sizeof(msg), "%s\n{B7B7B7}Territory", msg);
426 ShowPlayerDialog(playerid, DIALOG_GCP, DIALOG_STYLE_LIST, "Gang Control Panel", msg, "Chooose", "Cancel");
427 }
428 }
429 else
430 SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
431 return 1;
432}
433
434COMMAND:leavegang(playerid, params[])
435{
436 new i = Player[playerid][PlayerGang];
437 if(i != -1)
438 {
439 if(Player[playerid][PlayerStatus] != GANG_LEADER)
440 {
441 new msg[56];
442 format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s(%i) has left the gang!", Name(playerid), playerid);
443 SendGangMessage(Player[playerid][PlayerGang], msg);
444 Player[playerid][PlayerGang] = -1;
445 SaveStats(playerid);
446 }
447 else
448 SendClientMessage(playerid, COLOR_RED, "You cannot leave gang since you are Gang Leader!");
449 }
450 return 1;
451}
452
453COMMAND:disbandgang(playerid, params[])
454{
455 new i = Player[playerid][PlayerGang];
456 if(i != -1)
457 {
458 if(Player[playerid][PlayerStatus] == GANG_LEADER)
459 {
460 if(Gang[i][CurrentZone] == -1)
461 {
462 new query[256];
463 format(query, sizeof(query), "{FF0000}(Gang Chat) %s has disbanded the gang!", Name(playerid));
464 SendGangMessage(i, query);
465 format(query, sizeof(query), "DELETE FROM `gang` WHERE `id` = %d", Gang[i][GangID]);
466 mysql_query(query, -1, 0, connection);
467 foreach(new p : Player)
468 {
469 if(Player[p][PlayerGang] == i)
470 {
471 Player[p][PlayerGang] = -1;
472 Player[p][PlayerStatus] = GANG_MEMBER;
473 }
474 }
475 format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `gang` = %d", Gang[i][GangID]);
476 mysql_query(query, -1, 0, connection);
477 Iter_Remove(Gangs, i);
478 foreach(new p : GangZones)
479 {
480 if(GangZone[p][ZoneOwner] == i)
481 {
482 GangZone[p][ZoneOwner] = -1;
483 GangZoneShowForAll(GangZone[p][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
484 }
485 }
486 }
487 }
488 else
489 SendClientMessage(playerid, COLOR_RED, "You must be gang leader to use this command!!");
490 }
491 else
492 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
493 return 1;
494}
495
496COMMAND:topgang(playerid, params[])
497{
498 new query[128];
499 format(query, sizeof(query), "SELECT * FROM `gang` ORDER BY `score` DESC LIMIT 20");
500 mysql_query(query, -1, 0, connection);
501 mysql_store_result(connection);
502 new ganglist[1600], count = mysql_num_rows(connection), TempColor[7], TempName[30], ts[56];
503 if(count != 0)
504 {
505 new i = 1, row[1000];
506 new id, ta;
507 while(mysql_fetch_row(row, "|", connection))
508 {
509 sscanf(row, "p<|>ds[30]s[7]s[5]d", id, TempName, TempColor, ta, ts);
510 format(ganglist, sizeof(ganglist), "%s%d. {FFFFFF}%s {FFFFFF}- Score : %d\n", ganglist, i, TempName, ts);
511 i++;
512 }
513 format(ganglist, sizeof(ganglist), "%s\n* This top list updated every %d minutes", ganglist, AUTOSAVE);
514 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Top Gangs", ganglist, "Close", "");
515 }
516 else
517 SendClientMessage(playerid, COLOR_RED, "There is not any gang present right now!");
518 mysql_free_result(connection);
519 return 1;
520}
521
522COMMAND:gangrank(playerid, params[])
523{
524 new TempName[30];
525 if(sscanf(params, "s[30]", TempName))
526 {
527 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/gangrank' <gang name>");
528 }
529 else
530 {
531 new query[512];
532 format(query, sizeof(query), "SELECT `rank` FROM (SELECT `name`,`score`, @current := @current + 1 as `rank` from `gang`, (select @current := 0) r order by `score` desc) z WHERE `name` = '%s'", Escape(TempName));
533 mysql_query(query, -1, 0, connection);
534 mysql_store_result(connection);
535 if(mysql_num_rows(connection) != 0)
536 {
537 new msg[56];
538 mysql_fetch_field("rank", query, connection);
539 format(msg, sizeof(msg), "{FFFF00}%s - {FFFF00}Rank : %d", TempName, strval(query));
540 SendClientMessage(playerid, -1, msg);
541 }
542 else
543 SendClientMessage(playerid, COLOR_RED, "Error 404! Gang name not found!");
544 mysql_free_result(connection);
545 }
546 return 1;
547}
548
549COMMAND:promotestaff(playerid, params[])
550{
551 if(Player[playerid][PlayerStatus] == GANG_LEADER)
552 {
553 new id;
554 if(sscanf(params, "u", id))
555 {
556 SendClientMessage(playerid, COLOR_RED, "[SYNTAX] '/promotestaff' <playerid>");
557 }
558 else
559 {
560 if(IsPlayerConnected(id))
561 {
562 if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
563 {
564 if(id != playerid)
565 {
566 if(Player[id][PlayerStatus] != GANG_STAFF)
567 {
568 SendClientMessage(playerid, COLOR_WHITE, "[HINT] You have promoted %s to Gang Staff!");
569 SendClientMessage(id, COLOR_WHITE, "[HINT] You have been promoted to a Gang Staff!");
570 Player[id][PlayerStatus] = GANG_STAFF;
571 SaveStats(id);
572 }
573 else
574 SendClientMessage(playerid, COLOR_RED, "That player is already a gang staff!");
575 }
576 else
577 SendClientMessage(playerid, COLOR_RED, "You can't promote yourself!");
578 }
579 else
580 SendClientMessage(playerid, COLOR_RED, "That player isn't your gang member!");
581 }
582 else
583 SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
584 }
585 }
586 else
587 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
588 return 1;
589}
590
591COMMAND:demotestaff(playerid, params[])
592{
593 if(Player[playerid][PlayerStatus] == GANG_LEADER)
594 {
595 new id;
596 if(sscanf(params, "u", id))
597 {
598 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/demotestaff' <playerid>");
599 }
600 else
601 {
602 if(IsPlayerConnected(id))
603 {
604 if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
605 {
606 if(id != playerid)
607 {
608 if(Player[id][PlayerStatus] == GANG_STAFF)
609 {
610 SendClientMessage(playerid, COLOR_WHITE, "[HINT] You have demoted %s from gang staff!");
611 SendClientMessage(id, COLOR_WHITE, "[HINT] You have been demoted from gang staff!");
612 Player[id][PlayerStatus] = GANG_MEMBER;
613 SaveStats(id);
614 }
615 else
616 SendClientMessage(playerid, COLOR_RED, "That player isn't a gang staff!");
617 }
618 else
619 SendClientMessage(playerid, COLOR_RED, "You can't demote yourself!");
620 }
621 else
622 SendClientMessage(playerid, COLOR_RED, "That player isn't your gang member!");
623 }
624 else
625 SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
626 }
627 }
628 else
629 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!!");
630 return 1;
631}
632
633COMMAND:createzone(playerid, params[])
634{
635 if(IsPlayerAdmin(playerid))
636 {
637 if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
638 {
639 if(!Player[playerid][CreatingZone])
640 {
641 new Float:z;
642 Player[playerid][CreatingZone] = true;
643 new msg[128];
644 format(msg, sizeof(msg), "Gangzone Mode! Use arrow keys to make the zone bigger or less");
645 SendClientMessage(playerid, -1, msg);
646 format(msg, sizeof(msg), "Using ~k~~PED_FIREWEAPON~ + Arrow keys you minus the height or width.");
647 SendClientMessage(playerid, -1, msg);
648 format(msg, sizeof(msg), "Press ~k~~VEHICLE_ENTER_EXIT~ when you are done!");
649 SendClientMessage(playerid, -1, msg);
650 GetPlayerPos(playerid, MinPos[playerid][0], MinPos[playerid][1], z);
651 GetPlayerPos(playerid, MaxPos[playerid][0], MaxPos[playerid][1], z);
652 TogglePlayerControllable(playerid, false);
653 }
654 else
655 SendClientMessage(playerid, COLOR_RED, "You are already in create zone mode, /cancelzone to cancel");
656 }
657 else
658 SendClientMessage(playerid, COLOR_RED, "You must be onfoot to create gang zone");
659 }
660 else
661 SendClientMessage(playerid, COLOR_RED, "You don't have correct permissions to use this command!");
662 return 1;
663}
664
665COMMAND:ganginvite(playerid, params[])
666{
667 new p;
668 if(Player[playerid][PlayerStatus] >= 2 && Player[playerid][PlayerGang] != -1)
669 {
670 if(sscanf(params, "d", p))
671 {
672 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/ganginvite' <playerid>");
673 }
674 else
675 {
676 if(IsPlayerConnected(p))
677 {
678 if(Player[p][PlayerGang] == -1)
679 {
680 if(CheckGang(Player[playerid][PlayerGang]))
681 {
682 new msg[128];
683 format(msg, sizeof(msg), "{A7C4E4}%s want you to join %s gang! (/acceptgang)", Name(playerid), Gang[Player[playerid][PlayerGang]][GangName]);
684 SendClientMessage(p, COLOR_WHITE, msg);
685 format(msg, sizeof(msg), "[HINT] You have invited %s to join your gang!", Name(p));
686 SendClientMessage(playerid, COLOR_WHITE, msg);
687 Player[p][GangRequest] = Player[playerid][PlayerGang];
688 }
689 else
690 SendClientMessage(playerid, COLOR_RED, "You cannot invite anyone else since your gang is full!");
691 }
692 else
693 SendClientMessage(playerid, COLOR_RED, "That player already a gang member!");
694 }
695 else
696 SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
697 }
698 }
699 else
700 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader or gang staff to use this command!");
701 return 1;
702}
703
704COMMAND:acceptgang(playerid, params[])
705{
706 if(Player[playerid][PlayerGang] == -1)
707 {
708 if(Player[playerid][GangRequest] != -1)
709 {
710 if(Iter_Contains(Gangs, Player[playerid][GangRequest]))
711 {
712 if(CheckGang(Player[playerid][GangRequest]))
713 {
714 Player[playerid][PlayerGang] = Player[playerid][GangRequest];
715 Player[playerid][GangRequest] = -1;
716 Player[playerid][PlayerStatus] = GANG_MEMBER;
717 new msg[56];
718 format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has joined the gang!", Name(playerid));
719 SendGangMessage(Player[playerid][PlayerGang], msg);
720 SaveStats(playerid);
721 }
722 }
723 else
724 SendClientMessage(playerid, COLOR_RED, "ERROR 404: Invalid Session!");
725 }
726 }
727 else
728 SendClientMessage(playerid, COLOR_RED, "You are already member of another gang!");
729 return 1;
730}
731
732COMMAND:g(playerid, params[])
733{
734 if(!params[1])
735 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/g' <message>");
736 else
737 {
738
739 new i = Player[playerid][PlayerGang];
740 if(i != -1)
741 {
742 new msg[128];
743 format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s(%i): {FFFFFF}%s", Name(playerid), playerid, params);
744 SendGangMessage(Player[playerid][PlayerGang], msg);
745 }
746 else
747 SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
748 }
749 return 1;
750}
751
752COMMAND:capture(playerid, params[])
753{
754 if(Player[playerid][PlayerGang] != -1)
755 {
756 if(Gang[Player[playerid][PlayerGang]][CurrentZone] == -1)
757 {
758 new bool:found = false, i, total = 0, area = Area_GetPlayerAreas(playerid, 0);
759 foreach(i : GangZones)
760 {
761 if(area == GangZone[i][ZoneArea])
762 {
763 found = true;
764 break;
765 }
766 }
767 if(GetPlayerTeam(playerid) == 1 || GetPlayerTeam(playerid) == 2 || GetPlayerTeam(playerid) == 3 || GetPlayerTeam(playerid) == 4 || GetPlayerTeam(playerid) == 5 || GetPlayerTeam(playerid) == 6 || GetPlayerTeam(playerid) == 7)
768 {
769 return SendClientMessage(playerid, COLOR_RED, "You need to be a Civilian to capture zones!");
770 }
771 if(IsPlayerInAnyVehicle(playerid))
772 {
773 return SendClientMessage(playerid, COLOR_RED, "You cannot capture zones whilst in vehicle!");
774 }
775 if(found)
776 {
777 if(!GangZone[i][ZoneStatus])
778 {
779 if(GangZone[i][ZoneOwner] != Player[playerid][PlayerGang])
780 {
781 new tick = GetTickCount() - GangZone[i][ZoneLocked], msg[128];
782 if(tick > (60000 * LOCKED_MINUTES))
783 {
784 foreach(new p : Player)
785 {
786 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
787 {
788 if(Area_GetPlayerAreas(p, 0) == area)
789 total++;
790 }
791 }
792 if(total < 1)
793 {
794 SendClientMessage(playerid, COLOR_RED, "You need atleast 3 members to capture this zone!");
795 return 1;
796 }
797 format(msg, sizeof(msg), "Capturing ~g~%s", GangZone[i][ZoneName]);
798 foreach(new p : Player)
799 {
800 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
801 {
802 PlayerTextDrawSetString(p, Player[p][CaptureTD][0], msg);
803 PlayerTextDrawSetString(p, Player[p][CaptureTD][1], "-");
804 PlayerTextDrawShow(p, Player[p][CaptureTD][0]);
805 PlayerTextDrawShow(p, Player[p][CaptureTD][1]);
806 Gang[Player[playerid][PlayerGang]][GangTimer] = CAPTURE_TIME;
807 }
808 }
809 format(msg, sizeof(msg), "{A7C4E4}%s gang is trying to capture %s zone with %d gang members!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName], total);
810 SendClientMessageToAll(-1, msg);
811 GangZone[i][ZoneStatus] = true;
812 GangZone[i][ZoneTimer] = SetTimerEx("AttackZone", 1000, true, "dd", Player[playerid][PlayerGang], i);
813 Gang[Player[playerid][PlayerGang]][CurrentZone] = i;
814 GangZoneFlashForAll(GangZone[i][ZoneHolder], HexToInt("FF0000AA"));
815 if(GangZone[i][ZoneOwner] != -1)
816 {
817 format(msg, sizeof(msg), "{A7C4E4}[ALERT] %s gang is trying to capture your territory in %s!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName]);
818 SendGangMessage(GangZone[i][ZoneOwner], msg);
819 }
820 }
821 else
822 {
823 format(msg, sizeof(msg), "This Zone is locked, Please wait %.2f minute(s) to capture this zone!", floatdiv(60000 * LOCKED_MINUTES - tick, 60 * 1000));
824 SendClientMessage(playerid, COLOR_RED, msg);
825 }
826 }
827 else
828 SendClientMessage(playerid, COLOR_RED, "Your gang already owned this zone!");
829 }
830 else
831 SendClientMessage(playerid, COLOR_RED, "Someone is already trying to capture this zone!");
832 }
833 else
834 SendClientMessage(playerid, COLOR_RED, "You must be in gang zone to use this command!");
835 }
836 else
837 SendClientMessage(playerid, COLOR_RED, "Your gang already started a war, please wait!");
838 }
839 else
840 SendClientMessage(playerid, COLOR_RED, "You must be a gang member to use this command!");
841 return 1;
842}
843
844COMMAND:okickmember(playerid, params[])
845{
846 new TempName[MAX_PLAYER_NAME];
847 if(Player[playerid][PlayerStatus] == GANG_STAFF)
848 {
849 if(sscanf(params, "s[24]", TempName))
850 {
851 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/okickmember' <member name>");
852 }
853 else
854 {
855 new query[256], i = Player[playerid][PlayerGang];
856 format(query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%s'", Escape(TempName));
857 mysql_query(query, -1, 0, connection);
858 mysql_store_result(connection);
859 if(mysql_num_rows(connection) != 0)
860 {
861 mysql_fetch_field("gang", query, connection);
862 if(strval(query) == Gang[i][GangID])
863 {
864 mysql_fetch_field("id", query, connection);
865 if(strval(query) != Player[playerid][PlayerID])
866 {
867 mysql_fetch_field("status", query, connection);
868 if(strval(query) != GANG_LEADER)
869 {
870 format(query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `name` = '%s'", Escape(TempName));
871 mysql_query(query, -1, 0, connection);
872 format(query, sizeof(query), "{FF0000}(Gang Chat) %s has been kicked from gang!", TempName);
873 SendGangMessage(i, query);
874 new p = GetID(TempName);
875 if(IsPlayerConnected(p))
876 {
877 SendClientMessage(p, COLOR_WHITE, "[HINT] You have been kicked from gang!");
878 Player[p][PlayerGang] = -1;
879 Player[p][PlayerStatus] = GANG_MEMBER;
880 }
881 }
882 else
883 SendClientMessage(playerid, COLOR_RED, "You can't kick gang leader!");
884 }
885 else
886 SendClientMessage(playerid, COLOR_RED, "You can't kick yourself!");
887 }
888 else
889 SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
890 }
891 else
892 SendClientMessage(playerid, COLOR_RED, "ERROR 404: Name not found!");
893 mysql_free_result(connection);
894 }
895 else
896 {
897 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader or gang staff to use this command!");
898 }
899 }
900 return 1;
901}
902
903COMMAND:kickmember(playerid, params[])
904{
905 new p;
906 if(Player[playerid][PlayerStatus] != GANG_MEMBER && Player[playerid][PlayerGang] != -1)
907 {
908 if(sscanf(params, "d", p))
909 {
910 SendClientMessage(playerid, COLOR_WHITE, "[SYNTAX] '/kickmember' <playerid>");
911 }
912 else
913 {
914 if(IsPlayerConnected(p))
915 {
916 if(Player[playerid][PlayerGang] == Player[p][PlayerGang])
917 {
918 if(playerid != p)
919 {
920 if(Player[p][PlayerStatus] != GANG_LEADER)
921 {
922 new msg[56];
923 format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has been kicked from gang!", Name(p));
924 SendGangMessage(Player[playerid][PlayerGang], msg);
925 Player[p][PlayerGang] = -1;
926 Player[p][PlayerStatus] = GANG_MEMBER;
927 SaveStats(p);
928 }
929 else
930 SendClientMessage(playerid, COLOR_RED, "You can't kick gang leader!");
931 }
932 else
933 SendClientMessage(playerid, COLOR_RED, "You can't kick yourself!");
934 }
935 else
936 SendClientMessage(playerid, COLOR_RED, "That player isn't in your gang!");
937 }
938 else
939 SendClientMessage(playerid, COLOR_RED, "That player isn't connected!");
940 }
941 }
942 else
943 SendClientMessage(playerid, COLOR_RED, "You must be a gang leader to use this command!");
944 return 1;
945}
946
947public OnPlayerConnect(playerid)
948{
949 Player[playerid][CreatingZone] = false;
950 Player[playerid][TDZone][0] = CreatePlayerTextDraw(playerid, 320.000000, 376.666290, "ZONE NAME");
951 PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][0], 0.400000, 1.600000);
952 PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][0], 2);
953 PlayerTextDrawColor(playerid, Player[playerid][TDZone][0], -1);
954 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
955 PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][0], 1);
956 PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][0], 255);
957 PlayerTextDrawFont(playerid, Player[playerid][TDZone][0], 3);
958 PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][0], 1);
959 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
960
961 Player[playerid][TDZone][1] = CreatePlayerTextDraw(playerid, 318.000000, 391.599609, "Owned By : ~r~Unowned");
962 PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][1], 0.264999, 1.310666);
963 PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][1], 2);
964 PlayerTextDrawColor(playerid, Player[playerid][TDZone][1], -1);
965 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
966 PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][1], 0);
967 PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][1], 255);
968 PlayerTextDrawFont(playerid, Player[playerid][TDZone][1], 1);
969 PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][1], 1);
970 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
971
972 Player[playerid][CaptureTD][0] = CreatePlayerTextDraw(playerid, 633.000000, 358.000030, "");
973 PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][0], 0.323000, 1.357333);
974 PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][0], 3);
975 PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][0], -1);
976 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
977 PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][0], 0);
978 PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][0], 255);
979 PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][0], 1);
980 PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][0], 1);
981 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
982
983 Player[playerid][CaptureTD][1] = CreatePlayerTextDraw(playerid, 633.000000, 343.999938, "00:00");
984 PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][1], 0.400000, 1.600000);
985 PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][1], 3);
986 PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][1], -1);
987 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
988 PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][1], 1);
989 PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][1], 255);
990 PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][1], 3);
991 PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][1], 1);
992 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
993
994 LoadPlayerGang(playerid);
995 foreach(new i : GangZones)
996 {
997 if(GangZone[i][ZoneOwner] == -1)
998 GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
999 else
1000 {
1001 new colour[9];
1002 format(colour, 9, "%s50", Gang[GangZone[i][ZoneOwner]][GangColor]);
1003 GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(colour));
1004 }
1005 }
1006 return 1;
1007}
1008
1009public OnPlayerDisconnect(playerid, reason)
1010{
1011 new i = Player[playerid][PlayerGang], msg[56];
1012 SaveStats(playerid);
1013 if(Iter_Contains(Gangs, i) && i != -1)
1014 {
1015 new zone = Gang[i][CurrentZone], total = -1;
1016 if(zone != -1)
1017 {
1018 total = 0;
1019 foreach(new p : Player)
1020 {
1021 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1022 {
1023 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea])
1024 total++;
1025 }
1026 }
1027 }
1028 if(total == 0)
1029 {
1030 format(msg, sizeof(msg), "{A7C4E4}%s Gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1031 SendClientMessageToAll(COLOR_WHITE, msg);
1032 format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1033 SendClientMessageToAll(COLOR_WHITE, msg);
1034 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1035 GangZone[zone][ZoneLocked] = GetTickCount();
1036 GangZone[zone][ZoneStatus] = false;
1037 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1038 }
1039 format(msg, sizeof(msg), "{FF0000}(Gang Chat) %s has been logged out!", Name(playerid));
1040 SendGangMessage(i, msg);
1041 }
1042 return 1;
1043}
1044
1045public OnPlayerUpdate(playerid) //RyDer
1046{
1047 if(Player[playerid][CreatingZone])
1048 {
1049 new Keys, UpDown, LeftRight;
1050 GetPlayerKeys(playerid, Keys, UpDown, LeftRight);
1051 TogglePlayerControllable(playerid, false);
1052 if(LeftRight == KEY_LEFT)
1053 {
1054 MinPos[playerid][0] -= 8.0;
1055 GangZoneDestroy(PlayerZone[playerid]);
1056 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1057 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1058 }
1059 else if(LeftRight & KEY_LEFT && Keys & KEY_FIRE)
1060 {
1061 MinPos[playerid][0] += 8.0;
1062 GangZoneDestroy(PlayerZone[playerid]);
1063 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1064 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1065 }
1066 else if(LeftRight == KEY_RIGHT)
1067 {
1068 MaxPos[playerid][0] += 8.0;
1069 GangZoneDestroy(PlayerZone[playerid]);
1070 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1071 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1072 }
1073 else if(LeftRight & KEY_RIGHT && Keys & KEY_FIRE)
1074 {
1075 MaxPos[playerid][0] -= 8.0;
1076 GangZoneDestroy(PlayerZone[playerid]);
1077 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1078 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1079 }
1080 else if(UpDown == KEY_UP)
1081 {
1082 MaxPos[playerid][1] += 8.0;
1083 GangZoneDestroy(PlayerZone[playerid]);
1084 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1085 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1086 }
1087 else if(UpDown & KEY_UP && Keys & KEY_FIRE)
1088 {
1089 MaxPos[playerid][1] -= 8.0;
1090 GangZoneDestroy(PlayerZone[playerid]);
1091 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1092 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1093 }
1094 else if(UpDown == KEY_DOWN)
1095 {
1096 MinPos[playerid][1] -= 8.0;
1097 GangZoneDestroy(PlayerZone[playerid]);
1098 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1099 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1100 }
1101 else if(UpDown & KEY_DOWN && Keys & KEY_FIRE)
1102 {
1103 MinPos[playerid][1] += 8.0;
1104 GangZoneDestroy(PlayerZone[playerid]);
1105 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1106 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1107 }
1108 else if(Keys & KEY_SECONDARY_ATTACK)
1109 {
1110 TogglePlayerControllable(playerid, true);
1111 Player[playerid][CreatingZone] = false;
1112 ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "Gang System", "Input gang zone name below, press \"Delete\" to delete current zone", "Save", "Delete");
1113 }
1114 }
1115 return 1;
1116}
1117
1118public OnPlayerDeath(playerid, killerid, reason)
1119{
1120 if(Player[playerid][PlayerGang] != -1)
1121 {
1122 new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
1123 if(zone != -1)
1124 {
1125 total = 0;
1126 foreach(new p : Player)
1127 {
1128 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1129 {
1130 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea] && !IsPlayerInAnyVehicle(p))
1131 total++;
1132 }
1133 }
1134 }
1135 if(total == 0)
1136 {
1137 new msg[128];
1138 format(msg, sizeof(msg), "{A7C4E4}%s Gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1139 SendClientMessageToAll(-1, msg);
1140 format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1141 SendClientMessageToAll(-1, msg);
1142 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1143 GangZone[zone][ZoneLocked] = GetTickCount();
1144 GangZone[zone][ZoneStatus] = false;
1145 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1146 }
1147 }
1148 return 1;
1149}
1150
1151public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1152{
1153 switch(dialogid)
1154 {
1155 case DIALOG_SAVEZONE:
1156 {
1157 if(response)
1158 {
1159 if(strlen(inputtext) < 3 || strlen(inputtext) > 50)
1160 ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "Gang System", "{FF0000}Gang zone name must be between 3 - 50 characters! \nInput gang zone name below, press \"Delete\" to delete current zone", "Save", "Delete");
1161 else
1162 {
1163 new query[256];
1164 format(query, sizeof(query), "INSERT INTO `zone` (`minx`, `miny`, `maxx`, `maxy`, `name`) VALUES('%f', '%f', '%f', '%f', '%s')", MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1], Escape(inputtext));
1165 mysql_query(query, -1, 0, connection);
1166 mysql_store_result(connection);
1167 GangZoneDestroy(PlayerZone[playerid]);
1168 new i = Iter_Free(GangZones);
1169 GangZone[i][ZoneMinPos][0] = MinPos[playerid][0];
1170 GangZone[i][ZoneMinPos][1] = MinPos[playerid][1];
1171 GangZone[i][ZoneMaxPos][0] = MaxPos[playerid][0];
1172 GangZone[i][ZoneMaxPos][1] = MaxPos[playerid][1];
1173 GangZone[i][ZoneOwner] = -1;
1174 format(GangZone[i][ZoneName], 50, "%s", inputtext);
1175 GangZone[i][ZoneID] = mysql_insert_id(connection);
1176 GangZone[i][ZoneArea] = Area_AddBox(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1177 GangZone[i][ZoneHolder] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1178 GangZone[i][ZoneLocked] = 0;
1179 GangZone[i][ZoneStatus] = false;
1180 GangZoneShowForAll(GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
1181 mysql_free_result(connection);
1182 Iter_Add(GangZones, i);
1183 }
1184 }
1185 else
1186 GangZoneDestroy(PlayerZone[playerid]);
1187 }
1188 case DIALOG_CREATEGANG:
1189 {
1190 if(response)
1191 {
1192 if(strlen(inputtext) < 5 || strlen(inputtext) > 30)
1193 {
1194 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "{FF0000}Gang name must be between 5 - 30 characters! \nInsert the gang name below :", "Submit", "Cancel");
1195 }
1196 else if(!IsAlpha(inputtext))
1197 {
1198 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "Gang System - Gang Name", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang name below :", "Submit", "Cancel");
1199 }
1200 else
1201 {
1202 strcpy(TempGangName[playerid], inputtext);
1203 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "Insert the gang tag below :", "Submit", "Cancel");
1204 }
1205 }
1206 }
1207 case DIALOG_GANGTAG:
1208 {
1209 if(response)
1210 {
1211 if(strlen(inputtext) < 1 || strlen(inputtext) > 3)
1212 {
1213 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "{FF0000}Gang tag must be between 1 - 3 character! \nInsert the gang tag below :", "Submit", "Cancel");
1214 }
1215 else if(!IsAlpha(inputtext))
1216 {
1217 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang System - Gang Tag", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang tag below :", "Submit", "Cancel");
1218 }
1219 else
1220 {
1221 strcpy(TempGangTag[playerid], inputtext);
1222 ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Gang System - Gang Colour",
1223 "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
1224 }
1225 }
1226 }
1227 case DIALOG_GANGCOLOUR:
1228 {
1229 if(response)
1230 {
1231 switch(listitem)
1232 {
1233 case 0:
1234 strcpy(TempGangColour[playerid], "00FFFF");
1235 case 1:
1236 strcpy(TempGangColour[playerid], "000000");
1237 case 2:
1238 strcpy(TempGangColour[playerid], "0000FF");
1239 case 3:
1240 strcpy(TempGangColour[playerid], "A52A2A");
1241 case 4:
1242 strcpy(TempGangColour[playerid], "FF0000");
1243 case 5:
1244 {
1245 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "Enter hexadecimal colour below :", "Submit", "Back");
1246 }
1247 }
1248 if(listitem != 5)
1249 {
1250 new msg[128];
1251 format(msg, sizeof(msg), "Are you sure you want to make a gang? \
1252 \nGang Name : %s \
1253 \nGang Tag : [%s] \
1254 \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
1255 ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "Gang System - Create Gang", msg, "Sure", "Cancel");
1256 }
1257 }
1258 }
1259 case DIALOG_HEXCOLOUR:
1260 {
1261 if(response)
1262 {
1263 if(strlen(inputtext) != 6)
1264 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "{FF0000}Hex colour must be 6 character!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
1265 else
1266 {
1267 if(sscanf(inputtext, "h", TempGangColour[playerid]))
1268 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "Gang System - Hex Colour", "{FF0000}Invalid HEX colour!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
1269 else
1270 {
1271 new msg[128];
1272 format(msg, sizeof(msg), "Are you sure you want to make a gang? \
1273 \nGang Name : %s \
1274 \nGang Tag : [%s] \
1275 \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
1276 ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "Gang System - Create Gang", msg, "Sure", "Cancel");
1277 }
1278 }
1279 }
1280 else
1281 {
1282 ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Gang System - Gang Colour",
1283 "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
1284 }
1285 }
1286 case DIALOG_CREATEGANG_CONFIRM:
1287 {
1288 if(response)
1289 {
1290 new bool:found = false;
1291 foreach(new i : Gangs)
1292 {
1293 if(!strcmp(Gang[i][GangName], TempGangName[playerid], true))
1294 {
1295 found = true;
1296 SendClientMessage(playerid, COLOR_RED, "Gang Name is already taken!");
1297 break;
1298 }
1299 if(!strcmp(Gang[i][GangTag], TempGangTag[playerid], true))
1300 {
1301 found = true;
1302 SendClientMessage(playerid, COLOR_RED, "Gang Tag is already taken!");
1303 break;
1304 }
1305 }
1306 if(!found)
1307 {
1308 new query[256];
1309 format(query, sizeof(query), "INSERT INTO `gang` (`name`, `color`, `tag`) VALUES('%s', '%s', '%s')", Escape(TempGangName[playerid]), Escape(TempGangColour[playerid]), Escape(TempGangTag[playerid]));
1310 mysql_query(query, -1, 0, connection);
1311 mysql_store_result(connection);
1312 new i = Iter_Free(Gangs);
1313 Gang[i][GangColor][0] = EOS;
1314 strcat(Gang[i][GangColor][0], TempGangColour[playerid]);
1315 Gang[i][GangID] = mysql_insert_id(connection);
1316 Gang[i][GangName] = TempGangName[playerid];
1317 Gang[i][GangScore] = 0;
1318 Gang[i][GangTag] = TempGangTag[playerid];
1319 Gang[i][CurrentZone] = -1;
1320 Player[playerid][PlayerGang] = i;
1321 Player[playerid][PlayerStatus] = GANG_LEADER;
1322 Iter_Add(Gangs, i);
1323 format(query, sizeof(query), "{%s}[%s]%s {A7C4E4}Gang has been created!", TempGangColour[playerid], TempGangTag[playerid], TempGangName[playerid]);
1324 SendClientMessageToAll(-1, query);
1325 mysql_free_result(connection);
1326 SaveStats(playerid);
1327 }
1328 }
1329 }
1330 case DIALOG_GCP:
1331 {
1332 if(response)
1333 {
1334 switch(listitem)
1335 {
1336 case 3:
1337 cmd_gangmembers(playerid, "");
1338 case 4:
1339 cmd_territory(playerid, "");
1340 }
1341 }
1342 }
1343 }
1344 return 1;
1345}
1346
1347public OnPlayerEnterArea(playerid, areaid)
1348{
1349 foreach(new i : GangZones)
1350 {
1351 if(areaid == GangZone[i][ZoneArea])
1352 {
1353 PlayerTextDrawSetString(playerid, Player[playerid][TDZone][0], GangZone[i][ZoneName]);
1354 new msg[128];
1355 if(GangZone[i][ZoneOwner] == -1)
1356 format(msg, sizeof(msg), "Owned by : ~r~Unowned");
1357 else
1358 format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[GangZone[i][ZoneOwner]][GangName]);
1359 PlayerTextDrawSetString(playerid, Player[playerid][TDZone][1], msg);
1360 PlayerTextDrawShow(playerid, Player[playerid][TDZone][0]);
1361 PlayerTextDrawShow(playerid, Player[playerid][TDZone][1]);
1362 return 1;
1363 }
1364 }
1365 return 1;
1366}
1367
1368public OnPlayerLeaveArea(playerid, areaid)
1369{
1370 PlayerTextDrawHide(playerid, Player[playerid][TDZone][0]);
1371 PlayerTextDrawHide(playerid, Player[playerid][TDZone][1]);
1372 if(Player[playerid][PlayerGang] != -1)
1373 {
1374 new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
1375 if(zone != -1)
1376 {
1377 total = 0;
1378 foreach(new p : Player)
1379 {
1380 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1381 {
1382 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea] && !IsPlayerInAnyVehicle(p))
1383 total++;
1384 }
1385 }
1386 }
1387 if(total == 0)
1388 {
1389 new msg[128];
1390 format(msg, sizeof(msg), "{A7C4E4}%s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1391 SendClientMessageToAll(-1, msg);
1392 format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1393 SendClientMessageToAll(-1, msg);
1394 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1395 GangZone[zone][ZoneLocked] = GetTickCount();
1396 GangZone[zone][ZoneStatus] = false;
1397 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1398 }
1399 }
1400 return 1;
1401}
1402
1403forward AttackZone(gangid, zoneid);
1404public AttackZone(gangid, zoneid)
1405{
1406 if(Gang[gangid][CurrentZone] == zoneid && Iter_Contains(Gangs, gangid))
1407 {
1408 Gang[gangid][GangTimer]--;
1409 if(Gang[gangid][GangTimer] > 0)
1410 {
1411 new minutes = Gang[gangid][GangTimer] / 60, seconds = Gang[gangid][GangTimer] % 60, msg[10];
1412 format(msg, sizeof(msg), "%02d:%02d", minutes, seconds);
1413 foreach(new p : Player)
1414 {
1415 if(Player[p][PlayerGang] == gangid)
1416 PlayerTextDrawSetString(p, Player[p][CaptureTD][1], msg);
1417 }
1418 }
1419 else
1420 {
1421 KillTimer(GangZone[zoneid][ZoneTimer]);
1422 new msg[128];
1423 format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[gangid][GangName]);
1424 foreach(new p : Player)
1425 {
1426 if(Player[p][PlayerGang] == gangid)
1427 {
1428 PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
1429 PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
1430 }
1431 if(Area_GetPlayerAreas(p, 0) == GangZone[zoneid][ZoneArea])
1432 PlayerTextDrawSetString(p, Player[p][TDZone][1], msg);
1433
1434 }
1435 GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
1436 new colour[9];
1437 format(colour, 9, "%s50", Gang[gangid][GangColor]);
1438 GangZoneShowForAll(GangZone[zoneid][ZoneHolder], HexToInt(colour));
1439 GangZone[zoneid][ZoneOwner] = gangid;
1440 format(msg, sizeof(msg), "{A7C4E4} %s Gang succesfully captured %s zone!", Gang[gangid][GangName], GangZone[zoneid][ZoneName]);
1441 SendClientMessageToAll(-1, msg);
1442 format(msg, sizeof(msg), "{A7C4E4} %s zone will be locked for %d minutes!", GangZone[zoneid][ZoneName], LOCKED_MINUTES);
1443 SendClientMessageToAll(-1, msg);
1444 Gang[gangid][CurrentZone] = -1;
1445 GangZone[zoneid][ZoneLocked] = GetTickCount();
1446 GangZone[zoneid][ZoneStatus] = false;
1447 Gang[gangid][GangScore]+=5;
1448 }
1449 }
1450 else
1451 {
1452 foreach(new p : Player)
1453 {
1454 if(Player[p][PlayerGang] == gangid)
1455 {
1456 PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
1457 PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
1458 }
1459 }
1460 KillTimer(GangZone[zoneid][ZoneTimer]);
1461 GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
1462 }
1463 return 1;
1464}
1465
1466forward AutoSave();
1467public AutoSave()
1468{
1469 foreach(new i : Player)
1470 SaveStats(i);
1471 foreach(new i : Gangs)
1472 SaveGang(i);
1473 foreach(new i : GangZones)
1474 SaveZone(i);
1475 return 1;
1476}
1477
1478COMMAND:gangcmds(playerid, params[])
1479{
1480 new msg[512];
1481 strcat(msg, "{FFFF00}/creategang /gangcolor /changeleader /territory /gangmembers \n");
1482 strcat(msg, "{ffff00}/gcp /leavegang /disbandgang /topgang /gangrank /promotestaff \n");
1483 strcat(msg, "{FFFF00}/demotestaff /createzone /ganginvite /acceptgang /g /capture \n");
1484 strcat(msg, "{FFFF00}/okickmember /kickmember\n");
1485 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang System - Commands", msg, "Close", "");
1486}
1487
1488forward LoadFS();
1489public LoadFS()
1490{
1491 print("/n================= | Blade Gaming Gang System! | =================");
1492 connection = mysql_init(LOG_ALL);
1493 if(!mysql_connect(HOSTNAME, USERNAME, PASSWORD, DATABASENAME, connection, 1))
1494 {
1495 print("\n================= | WARNING | =================");
1496 print("==== | Failed to connect to MySQL Database | ====");
1497 print("================= | WARNING | =================\n");
1498 SendRconCommand("exit");
1499 }
1500 else
1501 {
1502 print("\n================= | Blade Gaming Gang System! | =================");
1503 print("============== | Successfully Connected to MySQL | ==============\n");
1504 mysql_query("SELECT * FROM `zone`", -1, 0, connection);
1505 mysql_store_result(connection);
1506 new count = mysql_num_rows(connection), time = GetTickCount(), i, baris[1000];
1507 new id,
1508 Float:mix,
1509 Float:miy,
1510 Float:maxx,
1511 Float:may,
1512 own,
1513 nam[128]
1514 ;
1515 while(mysql_fetch_row(baris, "|", connection))
1516 {
1517 sscanf(baris, "p<|>dffffds[128]", id, mix, miy, maxx, may, own, nam);
1518 i = Iter_Free(GangZones);
1519 GangZone[i][ZoneMinPos][0] = mix;
1520 GangZone[i][ZoneMinPos][1] = miy;
1521 GangZone[i][ZoneMaxPos][0] = maxx;
1522 GangZone[i][ZoneMaxPos][1] = may;
1523 GangZone[i][ZoneOwner] = GetGangID(own);
1524 GangZone[i][ZoneID] = id;
1525 format(GangZone[i][ZoneName], 50, "%s", nam);
1526 GangZone[i][ZoneArea] = Area_AddBox(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
1527 GangZone[i][ZoneHolder] = GangZoneCreate(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
1528 GangZone[i][ZoneLocked] = 0;
1529 GangZone[i][ZoneStatus] = false;
1530 Iter_Add(GangZones, i);
1531 }
1532 mysql_free_result(connection);
1533 printf("\n================= | Blade Gaming Gang System | =================");
1534 printf("========== | %d Zone(s) Succesfully Loaded (%d ms)! | ==========\n", count, (GetTickCount() - time));
1535 mysql_query("SELECT * FROM `gang`", -1, 0, connection);
1536 mysql_store_result(connection);
1537 count = mysql_num_rows(connection), time = GetTickCount();
1538 new col[7],
1539 ta[5],
1540 sc;
1541
1542 while(mysql_fetch_row(baris, "|", connection))
1543 {
1544 sscanf(baris, "p<|>ds[128]s[7]s[5]d", id, nam, col, ta, sc);
1545 i = Iter_Free(Gangs);
1546 Gang[i][GangID] = id;
1547 Gang[i][GangScore] = sc;
1548 Gang[i][CurrentZone] = -1;
1549 format(Gang[i][GangName], 30, "%s", nam);
1550 format(Gang[i][GangColor], 7, "%s", col);
1551 format(Gang[i][GangTag], 4, "%s", ta);
1552 Iter_Add(Gangs, i);
1553 }
1554 printf("\n================== | Blade Gaming Gang System | ==================");
1555 printf("=========== | %d Gang(s) Succesfully Loaded (%d ms)! | ===========\n", count, (GetTickCount() - time));
1556 foreach(new p : Player)
1557 {
1558 CallLocalFunction("OnPlayerConnect", "d", p);
1559 }
1560 AutoSaveTimer = SetTimer("AutoSave", AUTOSAVE * 60000, true);
1561 mysql_free_result(connection);
1562 }
1563 return 1;
1564}
1565
1566/* SQL DUMP <X-Gang.sql>
1567-- phpMyAdmin SQL Dump
1568-- version 4.2.7.1
1569-- http://www.phpmyadmin.net
1570-- --------------------------------------------------------
1571
1572--
1573-- Table structure for table `gang`
1574--
1575
1576CREATE TABLE IF NOT EXISTS `gang` (
1577`id` int(10) NOT NULL,
1578 `name` varchar(30) NOT NULL,
1579 `color` varchar(6) NOT NULL,
1580 `tag` varchar(3) NOT NULL,
1581 `score` int(10) NOT NULL DEFAULT '0'
1582) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1583
1584-- --------------------------------------------------------
1585
1586--
1587-- Table structure for table `member`
1588--
1589
1590CREATE TABLE IF NOT EXISTS `member` (
1591`id` int(10) NOT NULL,
1592 `name` varchar(30) NOT NULL,
1593 `status` int(1) NOT NULL DEFAULT '1',
1594 `gang` int(10) NOT NULL DEFAULT '-1'
1595) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1596
1597-- --------------------------------------------------------
1598
1599--
1600-- Table structure for table `zone`
1601--
1602
1603CREATE TABLE IF NOT EXISTS `zone` (
1604`id` int(10) NOT NULL,
1605 `minx` varchar(10) NOT NULL,
1606 `miny` varchar(10) NOT NULL,
1607 `maxx` varchar(10) NOT NULL,
1608 `maxy` varchar(10) NOT NULL,
1609 `owner` int(10) NOT NULL DEFAULT '-1',
1610 `name` varchar(50) NOT NULL DEFAULT 'Undefined Zone'
1611) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1612
1613--
1614-- Indexes for dumped tables
1615--
1616
1617--
1618-- Indexes for table `gang`
1619--
1620ALTER TABLE `gang`
1621 ADD PRIMARY KEY (`id`);
1622
1623--
1624-- Indexes for table `member`
1625--
1626ALTER TABLE `member`
1627 ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
1628
1629--
1630-- Indexes for table `zone`
1631--
1632ALTER TABLE `zone`
1633 ADD PRIMARY KEY (`id`);
1634
1635--
1636-- AUTO_INCREMENT for dumped tables
1637--
1638
1639--
1640-- AUTO_INCREMENT for table `gang`
1641--
1642ALTER TABLE `gang`
1643MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1644--
1645-- AUTO_INCREMENT for table `member`
1646--
1647ALTER TABLE `member`
1648MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1649--
1650-- AUTO_INCREMENT for table `zone`
1651--
1652ALTER TABLE `zone`
1653MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1654-- ------------------------------------------------
1655
1656*/
1657
1658public OnPlayerStateChange(playerid, newstate, oldstate)
1659{
1660 if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
1661 {
1662 new i = Player[playerid][PlayerGang],
1663 z;
1664 if(i != -1)
1665 {
1666 z = Gang[i][CurrentZone];
1667 if(z != -1 && Area_GetPlayerAreas(playerid, 0) == GangZone[z][ZoneArea])
1668 {
1669 SendClientMessage(playerid, COLOR_RED, "Sorry, entering vehicle whilst capturing gang zone is not allowed!");
1670 PlayerTextDrawHide(playerid, Player[playerid][TDZone][0]);
1671 PlayerTextDrawHide(playerid, Player[playerid][TDZone][1]);
1672 new total = 0;
1673 foreach(new p : Player)
1674 {
1675 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1676 {
1677 if(Area_GetPlayerAreas(p, 0) == GangZone[z][ZoneArea] && !IsPlayerInAnyVehicle(p))
1678 total++;
1679 }
1680 }
1681 if(total == 0)
1682 {
1683 new msg[128];
1684 format(msg, sizeof(msg), "{a7C4E4}%s gang failed to capture %s zone!", Gang[i][GangName], GangZone[z][ZoneName]);
1685 SendClientMessageToAll(-1, msg);
1686 format(msg, sizeof(msg), "{A7C4E4}%s zone will be locked for %d minutes!", GangZone[z][ZoneName], LOCKED_MINUTES);
1687 SendClientMessageToAll(-1, msg);
1688 Gang[i][CurrentZone] = -1;
1689 GangZone[z][ZoneLocked] = GetTickCount();
1690 GangZone[z][ZoneStatus] = false;
1691 GangZoneStopFlashForAll(GangZone[z][ZoneHolder]);
1692 }
1693 }
1694 }
1695 }
1696 return 1;
1697}