· 10 years ago · Aug 31, 2016, 01:08 PM
1
2#include <a_samp> // SA-MP Team
3#include <a_mysql> // BlueG
4#include <sscanf2> // Y-Less
5#include <YSI\y_iterate> // Y-Less
6#include <YSI\y_areas> // Y-Less
7#include <zcmd> // Zeex
8#include <YSI\y_ini>
9#include "../gamemodes/USF_MAPS.pwn"
10
11
12/*
13 DATABASE CONNECTION
14 You must define database connection below and recompile this filterscript
15*/
16#define HOSTNAME "localhost"
17#define USERNAME "root"
18#define PASSWORD ""
19#define DATABASENAME "lscnr"
20/*
21 -------------------------------------------------------------------------
22*/
23
24
25#define AUTOSAVE 30 // Save Player, Gangs, Zones data automatically! (In - Minutes);
26#define MAX_ZONES 100 // Maximum Gang Zone
27#define MAX_GANGS 100 // Maximum Gang
28#define CAPTURE_TIME 60 // Capture Time
29#define LOCKED_MINUTES 10
30#define DIALOG_UNUSED 1337 // Dialog ID
31#define DEFAULT_ZONE_COLOR "000000AA" // Default hex colour for gang zone
32#define REQUIRED_SCORE 9999999 // Required score to make a new gang
33#define MAX_GANG_MEMBER 8 // Maximum gang member
34#undef MAX_PLAYERS
35 #define MAX_PLAYERS 50 // MAX_PLAYERS
36#define DIALOG_SAVEZONE DIALOG_UNUSED+1
37#define DIALOG_CREATEGANG DIALOG_UNUSED+2
38#define DIALOG_GANGTAG DIALOG_UNUSED+3
39#define DIALOG_GANGCOLOUR DIALOG_UNUSED+4
40#define DIALOG_HEXCOLOUR DIALOG_UNUSED+5
41#define DIALOG_CREATEGANG_CONFIRM DIALOG_UNUSED+6
42#define DIALOG_GCP DIALOG_UNUSED+7
43#define strcpy(%0,%1) \
44 strcat((%0[0] = '\0', %0), %1)
45#define GANG_MEMBER 1
46#define GANG_STAFF 2
47#define GANG_LEADER 3
48// registration system
49#define DIALOG_REGISTER 1
50#define DIALOG_LOGIN 2
51#define DIALOG_SUCCESS_1 3
52#define DIALOG_SUCCESS_2 4
53
54#define PATH "/KAccountes/User/%s.ini"
55#define COL_WHITE "{FFFFFF}"
56#define COL_RED "{F81414}"
57#define COL_GREEN "{00FF22}"
58#define COL_LIGHTBLUE "{00CED1}"
59
60enum _gangzone
61{
62 ZoneID,
63 Float:ZoneMinPos[2],
64 Float:ZoneMaxPos[2],
65 ZoneOwner,
66 ZoneName[50],
67 ZoneHolder,
68 ZoneArea,
69 ZoneLocked,
70 bool:ZoneStatus,
71 ZoneTimer
72}
73enum _player
74{
75 PlayerID,
76 bool:CreatingZone,
77 PlayerText:TDZone[2],
78 PlayerGang,
79 PlayerStatus,
80 GangRequest,
81 PlayerText:CaptureTD[2]
82}
83enum _gang
84{
85 GangID,
86 GangColor[7],
87 GangName[30],
88 GangTag[4],
89 GangScore,
90 CurrentZone,
91 GangTimer
92}
93
94new Player[MAX_PLAYERS][_player],
95GangZone[MAX_ZONES][_gangzone],
96Gang[MAX_GANGS][_gang],
97Iterator:GangZones<MAX_ZONES>,
98Iterator:Gangs<MAX_GANGS>,
99Float:MinPos[MAX_PLAYERS][2],
100Float:MaxPos[MAX_PLAYERS][2],
101PlayerZone[MAX_PLAYERS],
102TempGangName[MAX_PLAYERS][30],
103TempGangTag[MAX_PLAYERS][4],
104TempGangColour[MAX_PLAYERS][7],
105connection,
106AutoSaveTimer;
107
108stock bool:CheckGang(gangid)
109{
110 new total = 0, query[128];
111 mysql_format(connection, query, sizeof(query), "SELECT count(*) AS `total` FROM `member` WHERE `gang` = %d", Gang[gangid][GangID]);
112 mysql_query(connection, query, true);
113 total = (cache_num_rows() > 0) ? cache_get_field_content_int(0, "total") : 0;
114 return (total >= MAX_GANG_MEMBER) ? false : true;
115}
116
117stock IsAlpha(const string[])
118{
119 for(new i = 0; i < strlen(string); i++)
120 {
121 if(string[i] == 45 || (string[i] >= 48 && string[i] <= 57) || (string[i] >= 65 && string[i] <= 90) || (string[i] >= 97 && string[i] <= 122))
122 continue;
123
124 return false;
125 }
126 return true;
127}
128
129stock HexToInt(string[]) // DracoBlue
130{
131 if (string[0] == 0) return 0;
132 new i, cur=1, res = 0;
133 for (i=strlen(string);i>0;i--) {
134 if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
135
136 cur=cur*16;
137 }
138 return res;
139}
140
141stock GetGangID(id)
142{
143 foreach(new i : Gangs)
144 if(Gang[i][GangID] == id)
145 return i;
146 return -1;
147}
148
149stock GetID(const name[])
150{
151 foreach(new i : Player)
152 {
153 if(!strcmp(name, Name(i)))
154 return i;
155 }
156 return -1;
157}
158
159SaveStats(playerid)
160{
161 new query[128], name[MAX_PLAYER_NAME], i = Player[playerid][PlayerGang];
162 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
163 if(Iter_Contains(Gangs, i) && i != -1)
164 mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = %d, `status` = %d, `name` = '%e' WHERE `id` = '%d'", Gang[i][GangID], Player[playerid][PlayerStatus], name, Player[playerid][PlayerID]);
165 else
166 mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `name` = '%e' WHERE `id` = %d", name, Player[playerid][PlayerID]);
167 mysql_query(connection, query, false);
168 return 1;
169}
170
171SaveGang(i)
172{
173 new query[128];
174 mysql_format(connection, query, sizeof(query), "UPDATE `gang` SET `color` = '%e', `score` = %d WHERE `id` = '%d'", Gang[i][GangColor], Gang[i][GangScore], Gang[i][GangID]);
175 mysql_query(connection, query, false);
176 return 1;
177}
178
179SaveZone(i)
180{
181 if(GangZone[i][ZoneOwner] != -1 && Iter_Contains(Gangs, GangZone[i][ZoneOwner]))
182 {
183 new query[128];
184 mysql_format(connection, query, sizeof(query), "UPDATE `zone` SET `owner` = '%d' WHERE `id` = '%d'", Gang[GangZone[i][ZoneOwner]][GangID], GangZone[i][ZoneID]);
185 mysql_query(connection, query, false);
186 }
187 return 1;
188}
189
190LoadPlayerGang(playerid)
191{
192 Player[playerid][PlayerGang] = -1;
193 Player[playerid][PlayerStatus] = GANG_MEMBER;
194 Player[playerid][GangRequest] = -1;
195 new name[MAX_PLAYER_NAME], query[128];
196 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
197 mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%e'", name);
198 mysql_query(connection, query, true);
199 new count = cache_num_rows();
200 if(count > 0)
201 {
202 new id = cache_get_field_content_int(0, "gang");
203 foreach(new i : Gangs)
204 {
205 if(Gang[i][GangID] == id)
206 {
207 Player[playerid][PlayerGang] = i;
208 break;
209 }
210 }
211 Player[playerid][PlayerStatus] = cache_get_field_content_int(0, "status");
212 Player[playerid][PlayerID] = cache_get_field_content_int(0, "id");
213 }
214 else
215 {
216 mysql_format(connection, query, sizeof(query), "INSERT INTO `member`(`name`) VALUES ('%e')", name);
217 mysql_query(connection, query, true);
218 Player[playerid][PlayerID] = cache_insert_id();
219 }
220 return 1;
221}
222
223SendGangMessage(i, msg[])
224{
225 foreach(new p : Player)
226 {
227 if(i == Player[p][PlayerGang])
228 SendClientMessage(p, -1, msg);
229 }
230 return 1;
231}
232
233stock Name(playerid)
234{
235 new name[MAX_PLAYER_NAME];
236 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
237 return name;
238}
239//
240enum pInfo
241{
242 pPass,
243 pCash,
244 pAdmin,
245 pKills,
246 pDeaths
247}
248new PlayerInfo[MAX_PLAYERS][pInfo];
249
250forward LoadUser_data(playerid,name[],value[]);
251public LoadUser_data(playerid,name[],value[])
252{
253 INI_Int("Password",PlayerInfo[playerid][pPass]);
254 INI_Int("Cash",PlayerInfo[playerid][pCash]);
255 INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
256 INI_Int("Kills",PlayerInfo[playerid][pKills]);
257 INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
258 return 1;
259}
260
261stock UserPath(playerid)
262{
263 new string[128],playername[MAX_PLAYER_NAME];
264 GetPlayerName(playerid,playername,sizeof(playername));
265 format(string,sizeof(string),PATH,playername);
266 return string;
267}
268
269#define IsPlayerLevel(%0,%1);\
270 if(PlayerInfo[%1][pAdmin] < %0) {\
271 new LevelString[128];\
272 format(LevelString, sizeof LevelString,"ERROR: You need to be administrator level %d to use this command!",%0);\
273 SendClientMessage(%1, -1, LevelString);\
274 return 1;\
275 }
276
277/*Credits to Dracoblue*/
278stock udb_hash(buf[]) {
279 new length=strlen(buf);
280 new s1 = 1;
281 new s2 = 0;
282 new n;
283 for (n=0; n<length; n++)
284 {
285 s1 = (s1 + buf[n]) % 65521;
286 s2 = (s2 + s1) % 65521;
287 }
288 return (s2 << 16) + s1;
289}
290
291
292public OnFilterScriptInit()
293{
294 print("\n\n\n========================================================");
295 print("|| X-Gang System by X337 ||");
296 connection = mysql_connect(HOSTNAME, USERNAME, DATABASENAME, PASSWORD);
297 if(mysql_errno(connection) != 0)
298 {
299 print("\n++++++++++++++++++ WARNING ++++++++++++++++++++++\n");
300 print("X-Gang System Filterscript failed to connect to database !\n");
301 print("++++++++++++++++++ WARNING ++++++++++++++++++++++\n");
302 SendRconCommand("unloadfs X-Gang");
303 }
304 else
305 {
306 mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
307 print("|| Succesfully connected to database ! ||");
308 mysql_query(connection, "SELECT * FROM `zone`", true);
309 new count = cache_num_rows(), TempString[56], time = GetTickCount(), i;
310 for(new z = 0; z < count; z++)
311 {
312 i = Iter_Free(GangZones);
313 GangZone[i][ZoneMinPos][0] = cache_get_field_content_float(z, "minx");
314 GangZone[i][ZoneMinPos][1] = cache_get_field_content_float(z, "miny");
315 GangZone[i][ZoneMaxPos][0] = cache_get_field_content_float(z, "maxx");
316 GangZone[i][ZoneMaxPos][1] = cache_get_field_content_float(z, "maxy");
317 GangZone[i][ZoneOwner] = GetGangID(cache_get_field_content_int(z, "owner"));
318 GangZone[i][ZoneID] = cache_get_field_content_int(z, "id");
319 cache_get_field_content(z, "name", TempString);
320 format(GangZone[i][ZoneName], 50, "%s", TempString);
321 GangZone[i][ZoneArea] = Area_AddBox(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
322 GangZone[i][ZoneHolder] = GangZoneCreate(GangZone[i][ZoneMinPos][0], GangZone[i][ZoneMinPos][1], GangZone[i][ZoneMaxPos][0], GangZone[i][ZoneMaxPos][1]);
323 GangZone[i][ZoneLocked] = 0;
324 GangZone[i][ZoneStatus] = false;
325 Iter_Add(GangZones, i);
326 }
327 printf("|| %d Zone(s) Succesfully Loaded!!! (%d ms) ||", count, (GetTickCount() - time));
328 mysql_query(connection, "SELECT * FROM `gang`", true);
329 count = cache_num_rows(), time = GetTickCount();
330 for(new z = 0; z < count; z++)
331 {
332 i = Iter_Free(Gangs);
333 Gang[i][GangID] = cache_get_field_content_int(z, "id");
334 Gang[i][GangScore] = cache_get_field_content_int(z, "score");
335 Gang[i][CurrentZone] = -1;
336 cache_get_field_content(z, "name", TempString);
337 format(Gang[i][GangName], 30, "%s", TempString);
338 cache_get_field_content(z, "color", TempString);
339 format(Gang[i][GangColor], 7, "%s", TempString);
340 cache_get_field_content(z, "tag", TempString);
341 format(Gang[i][GangTag], 4, "%s", TempString);
342 Iter_Add(Gangs, i);
343 }
344 printf("|| %d Gang(s) Succesfully Loaded!!! (%d ms) ||", count, (GetTickCount() - time));
345 print("========================================================");
346 foreach(new p : Player)
347 {
348 CallLocalFunction("OnPlayerConnect", "d", p);
349 }
350 AutoSaveTimer = SetTimer("AutoSave", AUTOSAVE * 60000, true);
351 }
352 return 1;
353}
354
355main( ) { }
356
357public OnPlayerRequestClass(playerid, classid)
358{
359 SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
360 SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
361 SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
362 return 1;
363}
364public OnVehicleSpawn(vehicleid)
365{
366 return 1;
367}
368public OnPlayerSpawn(playerid)
369{
370 return 1;
371}
372public OnVehicleDeath(vehicleid, killerid)
373{
374 return 1;
375}
376
377public OnPlayerText(playerid, text[])
378{
379 return 1;
380}
381
382public OnPlayerCommandText(playerid, cmdtext[])
383{
384 if (strcmp("/mycommand", cmdtext, true, 10) == 0)
385 {
386 // Do something here
387 return 1;
388 }
389 return 0;
390}
391
392public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
393{
394 return 1;
395}
396
397public OnPlayerExitVehicle(playerid, vehicleid)
398{
399 return 1;
400}
401public OnPlayerStateChange(playerid, newstate, oldstate)
402{
403 return 1;
404}
405
406public OnPlayerEnterCheckpoint(playerid)
407{
408 return 1;
409}
410
411public OnPlayerLeaveCheckpoint(playerid)
412{
413 return 1;
414}
415
416public OnPlayerEnterRaceCheckpoint(playerid)
417{
418 return 1;
419}
420
421public OnPlayerLeaveRaceCheckpoint(playerid)
422{
423 return 1;
424}
425
426public OnRconCommand(cmd[])
427{
428 return 1;
429}
430
431public OnPlayerRequestSpawn(playerid)
432{
433 return 1;
434}
435
436public OnObjectMoved(objectid)
437{
438 return 1;
439}
440
441public OnPlayerObjectMoved(playerid, objectid)
442{
443 return 1;
444}
445
446public OnPlayerPickUpPickup(playerid, pickupid)
447{
448 return 1;
449}
450
451public OnVehicleMod(playerid, vehicleid, componentid)
452{
453 return 1;
454}
455
456public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
457{
458 return 1;
459}
460
461public OnVehicleRespray(playerid, vehicleid, color1, color2)
462{
463 return 1;
464}
465
466public OnPlayerSelectedMenuRow(playerid, row)
467{
468 return 1;
469}
470
471public OnPlayerExitedMenu(playerid)
472{
473 return 1;
474}
475
476public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
477{
478 return 1;
479}
480
481public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
482{
483 return 1;
484}
485
486public OnRconLoginAttempt(ip[], password[], success)
487{
488 return 1;
489}
490
491public OnPlayerStreamIn(playerid, forplayerid)
492{
493 return 1;
494}
495
496public OnPlayerStreamOut(playerid, forplayerid)
497{
498 return 1;
499}
500
501public OnVehicleStreamIn(vehicleid, forplayerid)
502{
503 return 1;
504}
505
506public OnVehicleStreamOut(vehicleid, forplayerid)
507{
508 return 1;
509}
510public OnPlayerClickPlayer(playerid, clickedplayerid, source)
511{
512 return 1;
513}
514public OnFilterScriptExit()
515{
516 AutoSave();
517 foreach(new i : GangZones)
518 {
519 GangZoneDestroy(GangZone[i][ZoneHolder]);
520 Area_Delete(GangZone[i][ZoneArea]);
521 }
522 Iter_Clear(GangZones);
523 foreach(new i : Player)
524 {
525 PlayerTextDrawHide(i, Player[i][TDZone][0]);
526 PlayerTextDrawHide(i, Player[i][TDZone][1]);
527 }
528 KillTimer(AutoSaveTimer);
529 print("X-Gang System Filterscript unloaded!\n");
530 return 1;
531}
532
533COMMAND:creategang(playerid, params[])
534{
535 if(GetPlayerScore(playerid) >= REQUIRED_SCORE)
536 {
537 if(Player[playerid][PlayerGang] == -1)
538 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Name", "Insert the gang name below :", "Submit", "Cancel");
539 else
540 SendClientMessage(playerid, -1, "{FF0000}You already in gang!");
541 }
542 else
543 {
544 new string[128];
545 format(string, sizeof(string), "{FF0000}You need %d score to create a gang!", REQUIRED_SCORE);
546 SendClientMessage(playerid, -1, string);
547 }
548 return 1;
549}
550
551COMMAND:gangcolor(playerid, params[])
552{
553 new i = Player[playerid][PlayerGang];
554 if(i != -1)
555 {
556 new color[7];
557 if(sscanf(params, "h", color) || strlen(params) != 6)
558 SendClientMessage(playerid, -1, "{FF0000}Invalid hex color!");
559 else
560 {
561 new msg[56];
562 format(msg, sizeof(msg), "{%s}Your gang color has been changed!", params);
563 SendClientMessage(playerid, -1, msg);
564 format(Gang[i][GangColor], 7, "%s", params);
565 }
566 }
567 else
568 SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader to use this command!");
569 return 1;
570}
571
572COMMAND:changeleader(playerid, params[])
573{
574 if(Player[playerid][PlayerGang] != -1)
575 {
576 if(Player[playerid][PlayerStatus] == GANG_LEADER)
577 {
578 new id;
579 if(sscanf(params, "u", id))
580 {
581 SendClientMessage(playerid, -1, "{FF0000}Usage : /changeleader <playerid>");
582 }
583 else
584 {
585 if(IsPlayerConnected(id))
586 {
587 if(Player[playerid][PlayerGang] == Player[id][PlayerGang])
588 {
589 Player[playerid][PlayerStatus] = GANG_MEMBER;
590 Player[id][PlayerStatus] = GANG_LEADER;
591 new msg[56];
592 format(msg, sizeof(msg), "{FF0000}Succesfully promoted %s as new gang leader!", Name(id));
593 SendClientMessage(playerid, -1, msg);
594 SendClientMessage(id, -1, "{FF0000}You have been promoted as new gang leader!");
595 SaveStats(id);
596 SaveStats(playerid);
597 }
598 else
599 SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!");
600 }
601 else
602 SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!");
603 }
604 }
605 else
606 SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader to use this command!");
607 }
608 else
609 SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!");
610 return 1;
611}
612
613COMMAND:territory(playerid, params[])
614{
615 new msg[512], p;
616 foreach(new i : GangZones)
617 {
618 p = GangZone[i][ZoneOwner];
619 if(p == -1)
620 format(msg, sizeof(msg), "%s{B7B7B7}%s (-)\n", msg, GangZone[i][ZoneName]);
621 else
622 format(msg, sizeof(msg), "%s{%s}%s (%s)\n", msg, Gang[p][GangColor], GangZone[i][ZoneName], Gang[p][GangName]);
623 }
624 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Territory", msg, "Close", "");
625 return 1;
626}
627
628COMMAND:gangmembers(playerid, params[])
629{
630 new i = Player[playerid][PlayerGang];
631 if(i != -1)
632 {
633 new query[256];
634 mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `gang` = %d", Gang[i][GangID]);
635 mysql_query(connection, query, true);
636 format(query, sizeof(query), "{FFFFFF}");
637 new count = cache_num_rows();
638 if(count > 0)
639 {
640 new TempString[MAX_PLAYER_NAME], tempid;
641 for(new r = 0; r < count; r++)
642 {
643 cache_get_field_content(r, "name", TempString);
644 tempid = GetID(TempString);
645 format(query, sizeof(query), "%s%d. %s ", query, (r+1), TempString);
646 if(IsPlayerConnected(tempid))
647 strcat(query, "{FE9A2E}(ONLINE) ");
648 else
649 strcat(query, "{FF0000}(OFFLINE) ");
650 if(cache_get_field_content_int(r, "status") == GANG_LEADER)
651 strcat(query, "{58D3F7} (LEADER) ");
652 if(cache_get_field_content_int(r, "status") == GANG_STAFF)
653 strcat(query, "{58D3F7} (STAFF) ");
654 strcat(query, "\n{FFFFFF}");
655 }
656 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Gang Members", query, "Close", "");
657 }
658 }
659 else
660 SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!");
661 return 1;
662}
663
664COMMAND:gcp(playerid, params[])
665{
666 new i = Player[playerid][PlayerGang];
667 if(i != -1)
668 {
669 if(Iter_Contains(Gangs, i))
670 {
671 new msg[256];
672 format(msg, sizeof(msg), "{FFFFFF}Gang Name : {%s}%s {FFFFFF}", Gang[i][GangColor], Gang[i][GangName]);
673 format(msg, sizeof(msg), "%s\nGang Tag : [%s]", msg, Gang[i][GangTag]);
674 format(msg, sizeof(msg), "%s\nGang Score : %d", msg, Gang[i][GangScore]);
675 format(msg, sizeof(msg), "%s\n{B7B7B7}Gang Member", msg);
676 format(msg, sizeof(msg), "%s\n{B7B7B7}Territory", msg);
677 ShowPlayerDialog(playerid, DIALOG_GCP, DIALOG_STYLE_LIST, "Gang Control Panel", msg, "Chooose", "Cancel");
678 }
679 }
680 else
681 SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!");
682 return 1;
683}
684
685COMMAND:leavegang(playerid, params[])
686{
687 new i = Player[playerid][PlayerGang];
688 if(i != -1)
689 {
690 if(Player[playerid][PlayerStatus] != GANG_LEADER)
691 {
692 new msg[56];
693 format(msg, sizeof(msg), "{FF0000}%s left the gang!", Name(playerid));
694 SendGangMessage(Player[playerid][PlayerGang], msg);
695 Player[playerid][PlayerGang] = -1;
696 SaveStats(playerid);
697 }
698 else
699 SendClientMessage(playerid, -1, "{FF0000}Gang leader can't use this command!");
700 }
701 return 1;
702}
703
704COMMAND:disbandgang(playerid, params[])
705{
706 new i = Player[playerid][PlayerGang];
707 if(i != -1)
708 {
709 if(Player[playerid][PlayerStatus] == GANG_LEADER)
710 {
711 if(Gang[i][CurrentZone] == -1)
712 {
713 new query[256];
714 format(query, sizeof(query), "{FF0000}%s has disbanded the gang!", Name(playerid));
715 SendGangMessage(i, query);
716 mysql_format(connection, query, sizeof(query), "DELETE FROM `gang` WHERE `id` = %d", Gang[i][GangID]);
717 mysql_query(connection, query, false);
718 foreach(new p : Player)
719 {
720 if(Player[p][PlayerGang] == i)
721 {
722 Player[p][PlayerGang] = -1;
723 Player[p][PlayerStatus] = GANG_MEMBER;
724 }
725 }
726 mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `gang` = %d", Gang[i][GangID]);
727 mysql_query(connection, query, false);
728 Iter_Remove(Gangs, i);
729 foreach(new p : GangZones)
730 {
731 if(GangZone[p][ZoneOwner] == i)
732 {
733 GangZone[p][ZoneOwner] = -1;
734 GangZoneShowForAll(GangZone[p][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
735 }
736 }
737 }
738 }
739 else
740 SendClientMessage(playerid, -1, "{FF0000}You must be gang leader to use this command!!");
741 }
742 else
743 SendClientMessage(playerid, -1, "{FF0000}You must be gang leader to use this command!!");
744 return 1;
745}
746
747COMMAND:topgang(playerid, params[])
748{
749 new query[128];
750 mysql_format(connection, query, sizeof(query), "SELECT * FROM `gang` ORDER BY `score` DESC LIMIT 20");
751 mysql_query(connection, query, true);
752 new ganglist[512], count = cache_num_rows(), TempColor[7], TempName[30];
753 if(count != 0)
754 {
755 for(new i = 0; i < count; i++)
756 {
757 cache_get_field_content(i, "color", TempColor);
758 cache_get_field_content(i, "name", TempName);
759 format(ganglist, sizeof(ganglist), "%s%d. {%s}%s {FFFFFF}- Score : %d\n", ganglist, (i+1), TempColor, TempName, cache_get_field_content_int(i, "score"));
760 }
761 format(ganglist, sizeof(ganglist), "%s\n* This top list updated every %d minutes", ganglist, AUTOSAVE);
762 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Top Gangs", ganglist, "Close", "");
763 }
764 else
765 SendClientMessage(playerid, -1, "{FF0000}There's no gangs present!");
766 return 1;
767}
768
769COMMAND:gangrank(playerid, params[])
770{
771 new TempName[30];
772 if(sscanf(params, "s[30]", TempName))
773 {
774 SendClientMessage(playerid, -1, "{FF0000}Usage : /gangrank <gang name>");
775 }
776 else
777 {
778 new query[512];
779 mysql_format(connection, 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` = '%e'", TempName);
780 mysql_query(connection, query, true);
781 if(cache_num_rows() != 0)
782 {
783 new msg[56];
784 format(msg, sizeof(msg), "{FF0000}%s - {FFFF00}Rank : %d", TempName, cache_get_field_content_int(0, "rank"));
785 SendClientMessage(playerid, -1, msg);
786 }
787 else
788 SendClientMessage(playerid, -1, "404! Gang name not found!");
789 }
790 return 1;
791}
792
793COMMAND:promotestaff(playerid, params[])
794{
795 if(Player[playerid][PlayerStatus] == GANG_LEADER)
796 {
797 new id;
798 if(sscanf(params, "u", id))
799 {
800 SendClientMessage(playerid, -1, "{FF0000}Usage : /promotestaff <playerid>");
801 }
802 else
803 {
804 if(IsPlayerConnected(id))
805 {
806 if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
807 {
808 if(id != playerid)
809 {
810 if(Player[id][PlayerStatus] != GANG_STAFF)
811 {
812 SendClientMessage(playerid, -1, "{FF0000}Succesfully promoted a gang staff!");
813 SendClientMessage(id, -1, "{FF0000}You have been promoted as a gang staff!");
814 Player[id][PlayerStatus] = GANG_STAFF;
815 SaveStats(id);
816 }
817 else
818 SendClientMessage(playerid, -1, "{FF0000}That player already a gang staff!");
819 }
820 else
821 SendClientMessage(playerid, -1, "{FF0000}You can't promote yourself!");
822 }
823 else
824 SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!");
825 }
826 else
827 SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!");
828 }
829 }
830 else
831 SendClientMessage(playerid, -1, "{FF0000}You must be gang leader to use this command!!");
832 return 1;
833}
834
835COMMAND:demotestaff(playerid, params[])
836{
837 if(Player[playerid][PlayerStatus] == GANG_LEADER)
838 {
839 new id;
840 if(sscanf(params, "u", id))
841 {
842 SendClientMessage(playerid, -1, "{FF0000}Usage : /demotestaff <playerid>");
843 }
844 else
845 {
846 if(IsPlayerConnected(id))
847 {
848 if(Player[id][PlayerGang] == Player[playerid][PlayerGang])
849 {
850 if(id != playerid)
851 {
852 if(Player[id][PlayerStatus] == GANG_STAFF)
853 {
854 SendClientMessage(playerid, -1, "{FF0000}Succesfully promoted a gang staff!");
855 SendClientMessage(id, -1, "{FF0000}You have been demoted from gang staff!");
856 Player[id][PlayerStatus] = GANG_MEMBER;
857 SaveStats(id);
858 }
859 else
860 SendClientMessage(playerid, -1, "{FF0000}That player isn't a gang staff!");
861 }
862 else
863 SendClientMessage(playerid, -1, "{FF0000}You can't demote yourself!");
864 }
865 else
866 SendClientMessage(playerid, -1, "{FF0000}That player isn't your gang member!");
867 }
868 else
869 SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!");
870 }
871 }
872 else
873 SendClientMessage(playerid, -1, "{FF0000}You must be gang leader to use this command!!");
874 return 1;
875}
876
877COMMAND:createzone(playerid, params[])
878{
879 if(IsPlayerAdmin(playerid))
880 {
881 if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
882 {
883 if(!Player[playerid][CreatingZone])
884 {
885 new Float:z;
886 Player[playerid][CreatingZone] = true;
887 new msg[128];
888 format(msg, sizeof(msg), "Gangzone Mode! Use arrow keys to make the zone bigger or less");
889 SendClientMessage(playerid, -1, msg);
890 format(msg, sizeof(msg), "Using ~k~~PED_FIREWEAPON~ + Arrow keys you minus the height or width.");
891 SendClientMessage(playerid, -1, msg);
892 format(msg, sizeof(msg), "Press ~k~~VEHICLE_ENTER_EXIT~ when you are done!");
893 SendClientMessage(playerid, -1, msg);
894 GetPlayerPos(playerid, MinPos[playerid][0], MinPos[playerid][1], z);
895 GetPlayerPos(playerid, MaxPos[playerid][0], MaxPos[playerid][1], z);
896 TogglePlayerControllable(playerid, false);
897 }
898 else
899 SendClientMessage(playerid, -1, "You already in create zone mode, /cancelzone to cancel");
900 }
901 else
902 SendClientMessage(playerid, -1, "You must be onfoot to create gang zone");
903 }
904 else
905 SendClientMessage(playerid, -1, "{FF0000}You must be RCON admin to use this command!");
906 return 1;
907}
908
909COMMAND:ganginvite(playerid, params[])
910{
911 new p;
912 if(Player[playerid][PlayerStatus] == GANG_LEADER && Player[playerid][PlayerGang] != -1)
913 {
914 if(sscanf(params, "d", p))
915 {
916 SendClientMessage(playerid, -1, "{FF0000}Usage : /ganginvite <playerid>");
917 }
918 else
919 {
920 if(IsPlayerConnected(p))
921 {
922 if(Player[p][PlayerGang] == -1)
923 {
924 if(CheckGang(Player[playerid][PlayerGang]))
925 {
926 new msg[128];
927 format(msg, sizeof(msg), "%s want you to join %s gang! (/acceptgang)", Name(playerid), Gang[Player[playerid][PlayerGang]][GangName]);
928 SendClientMessage(p, -1, msg);
929 format(msg, sizeof(msg), "You have invited %s to join your gang!", Name(p));
930 SendClientMessage(playerid, -1, msg);
931 Player[p][GangRequest] = Player[playerid][PlayerGang];
932 }
933 else
934 SendClientMessage(playerid, -1, "{FF0000}Your gang member is full!");
935 }
936 else
937 SendClientMessage(playerid, -1, "{FF0000}That player already a gang member!");
938 }
939 else
940 SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!");
941 }
942 }
943 else
944 SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader to use this command!");
945 return 1;
946}
947
948COMMAND:acceptgang(playerid, params[])
949{
950 if(Player[playerid][PlayerGang] == -1)
951 {
952 if(Player[playerid][GangRequest] != -1)
953 {
954 if(Iter_Contains(Gangs, Player[playerid][GangRequest]))
955 {
956 if(CheckGang(Player[playerid][GangRequest]))
957 {
958 Player[playerid][PlayerGang] = Player[playerid][GangRequest];
959 Player[playerid][GangRequest] = -1;
960 Player[playerid][PlayerStatus] = GANG_MEMBER;
961 new msg[56];
962 format(msg, sizeof(msg), "%s has joined the gang!", Name(playerid));
963 SendGangMessage(Player[playerid][PlayerGang], msg);
964 }
965 }
966 else
967 SendClientMessage(playerid, -1, "{FF0000}Invalid Session!");
968 }
969 }
970 else
971 SendClientMessage(playerid, -1, "{FF0000}You already inside a gang!");
972 return 1;
973}
974
975COMMAND:g(playerid, params[])
976{
977 new i = Player[playerid][PlayerGang];
978 if(i != -1)
979 {
980 new msg[128];
981 format(msg, sizeof(msg), "{%s}* %s(%d) {FFFFFF}: %s", Gang[i][GangColor], Name(playerid), playerid, params);
982 SendGangMessage(Player[playerid][PlayerGang], msg);
983 }
984 else
985 SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!");
986 return 1;
987}
988
989COMMAND:capture(playerid, params[])
990{
991 if(Player[playerid][PlayerGang] != -1)
992 {
993 if(Gang[Player[playerid][PlayerGang]][CurrentZone] == -1)
994 {
995 new bool:found = false, i, total = 0, area = Area_GetPlayerAreas(playerid, 0);
996 foreach(i : GangZones)
997 {
998 if(area == GangZone[i][ZoneArea])
999 {
1000 found = true;
1001 break;
1002 }
1003 }
1004 if(found)
1005 {
1006 if(!GangZone[i][ZoneStatus])
1007 {
1008 if(GangZone[i][ZoneOwner] != Player[playerid][PlayerGang])
1009 {
1010 new tick = GetTickCount() - GangZone[i][ZoneLocked], msg[128];
1011 if(tick > (60000 * LOCKED_MINUTES))
1012 {
1013 format(msg, sizeof(msg), "Capturing ~g~%s", GangZone[i][ZoneName]);
1014 foreach(new p : Player)
1015 {
1016 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1017 {
1018 if(Area_GetPlayerAreas(p, 0) == area)
1019 total++;
1020 PlayerTextDrawSetString(p, Player[p][CaptureTD][0], msg);
1021 PlayerTextDrawSetString(p, Player[p][CaptureTD][1], "-");
1022 PlayerTextDrawShow(p, Player[p][CaptureTD][0]);
1023 PlayerTextDrawShow(p, Player[p][CaptureTD][1]);
1024 Gang[Player[playerid][PlayerGang]][GangTimer] = CAPTURE_TIME;
1025 }
1026 }
1027 format(msg, sizeof(msg), "{FE9A2E}** %s gang trying to capture %s zone with %d gang member!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName], total);
1028 SendClientMessageToAll(-1, msg);
1029 GangZone[i][ZoneStatus] = true;
1030 GangZone[i][ZoneTimer] = SetTimerEx("AttackZone", 1000, true, "dd", Player[playerid][PlayerGang], i);
1031 Gang[Player[playerid][PlayerGang]][CurrentZone] = i;
1032 GangZoneFlashForAll(GangZone[i][ZoneHolder], HexToInt("FF0000AA"));
1033 if(GangZone[i][ZoneOwner] != -1)
1034 {
1035 format(msg, sizeof(msg), "{FF0000}* ALERT!!! %s gang trying to capture your territory in %s", Gang[Player[playerid][PlayerGang]][GangName], GangZone[i][ZoneName]);
1036 SendGangMessage(GangZone[i][ZoneOwner], msg);
1037 }
1038 }
1039 else
1040 {
1041 format(msg, sizeof(msg), "{FF0000}This Zone is locked, please wait %.2f minute(s) to capture!", floatdiv(60000 * LOCKED_MINUTES - tick, 60 * 1000));
1042 SendClientMessage(playerid, -1, msg);
1043 }
1044 }
1045 else
1046 SendClientMessage(playerid, -1, "{FF0000}Your gang already owned this zone!");
1047 }
1048 else
1049 SendClientMessage(playerid, -1, "{FF0000}Someone is trying to capture this zone!");
1050 }
1051 else
1052 SendClientMessage(playerid, -1, "{FF0000}You must be in gang zone to use this command!");
1053 }
1054 else
1055 SendClientMessage(playerid, -1, "{FF0000}Your gang already started a war, please wait!");
1056 }
1057 else
1058 SendClientMessage(playerid, -1, "{FF0000}You must be a gang member to use this command!");
1059 return 1;
1060}
1061
1062COMMAND:okickmember(playerid, params[])
1063{
1064 new TempName[MAX_PLAYER_NAME];
1065 if(sscanf(params, "s[24]", TempName))
1066 {
1067 SendClientMessage(playerid, -1, "{FF0000}Usage : /okickmember <member name>");
1068 }
1069 else
1070 {
1071 new query[256], i = Player[playerid][PlayerGang];
1072 mysql_format(connection, query, sizeof(query), "SELECT * FROM `member` WHERE `name` = '%e'", TempName);
1073 mysql_query(connection, query, true);
1074 if(cache_num_rows() != 0)
1075 {
1076 if(cache_get_field_content_int(0, "gang") == Gang[i][GangID])
1077 {
1078 if(cache_get_field_content_int(0, "id") != Player[playerid][PlayerID])
1079 {
1080 if(cache_get_field_content_int(0, "status") != GANG_LEADER)
1081 {
1082 mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `name` = '%e'", TempName);
1083 mysql_query(connection, query, false);
1084 format(query, sizeof(query), "{FF0000}%s has been kicked from gang!", TempName);
1085 SendGangMessage(i, query);
1086 new p = GetID(TempName);
1087 if(IsPlayerConnected(p))
1088 {
1089 SendClientMessage(p, -1, "{FF0000}You have been kicked from gang!");
1090 Player[p][PlayerGang] = -1;
1091 Player[p][PlayerStatus] = GANG_MEMBER;
1092 }
1093 }
1094 else
1095 SendClientMessage(playerid, -1, "{FF0000}You can't kick gang leader!");
1096 }
1097 else
1098 SendClientMessage(playerid, -1, "{FF0000}You can't kick yourself!");
1099 }
1100 else
1101 SendClientMessage(playerid, -1, "{FF0000}That player isn't in your gang!");
1102 }
1103 else
1104 SendClientMessage(playerid, -1, "{FF0000}404! Name not found!");
1105 }
1106 return 1;
1107}
1108
1109COMMAND:kickmember(playerid, params[])
1110{
1111 new p;
1112 if(Player[playerid][PlayerStatus] != GANG_MEMBER && Player[playerid][PlayerGang] != -1)
1113 {
1114 if(sscanf(params, "d", p))
1115 {
1116 SendClientMessage(playerid, -1, "{FF0000}Usage : /kickmember <playerid>");
1117 }
1118 else
1119 {
1120 if(IsPlayerConnected(p))
1121 {
1122 if(Player[playerid][PlayerGang] == Player[p][PlayerGang])
1123 {
1124 if(playerid != p)
1125 {
1126 if(Player[p][PlayerStatus] != GANG_LEADER)
1127 {
1128 new msg[56], query[256];
1129 format(msg, sizeof(msg), "{FF0000}%s has been kicked from gang!", Name(p));
1130 SendGangMessage(Player[playerid][PlayerGang], msg);
1131 Player[p][PlayerGang] = -1;
1132 Player[p][PlayerStatus] = GANG_MEMBER;
1133 mysql_format(connection, query, sizeof(query), "UPDATE `member` SET `gang` = -1, `status` = 1 WHERE `id` = '%d'", Player[p][PlayerID]);
1134 mysql_query(connection, query, false);
1135 }
1136 else
1137 SendClientMessage(playerid, -1, "{FF0000}You can't kick gang leader!");
1138 }
1139 else
1140 SendClientMessage(playerid, -1, "{FF0000}You can't kick yourself!");
1141 }
1142 else
1143 SendClientMessage(playerid, -1, "{FF0000}That player isn't in your gang!");
1144 }
1145 else
1146 SendClientMessage(playerid, -1, "{FF0000}That player isn't connected!");
1147 }
1148 }
1149 else
1150 SendClientMessage(playerid, -1, "{FF0000}You must be a gang leader to use this command!");
1151 return 1;
1152}
1153COMMAND:usfpark(playerid, params[])
1154{
1155 SetPlayerPos(playerid, 153.4494,3129.6067,7.3936);
1156 GameTextForPlayer(playerid, "usf park", 10, 1);
1157 SendClientMessage(playerid, -1, "{FF0000}Welcome to usf park!");
1158 return 1;
1159}
1160COMMAND:lva(playerid, params[])
1161{
1162 SetPlayerPos(playerid, 1567.5363,1446.2544,14.1199);
1163 new vehicleid = GetPlayerVehicleID(playerid);
1164 SetVehiclePos(vehicleid, 0, 0, 3);
1165 GameTextForPlayer(playerid, "Las Venturas airport", 10, 1);
1166 SendClientMessage(playerid, -1, "{FF0000}Welcome to Las Venturas airport!");
1167 return 1;
1168}
1169COMMAND:lsa(playerid, params[])
1170{
1171 SetPlayerPos(playerid, 1947.3173,-2310.9167,17.7081);
1172 new vehicleid = GetPlayerVehicleID(playerid);
1173 SetVehiclePos(vehicleid, 0, 0, 3);
1174 GameTextForPlayer(playerid, "Los Santos airport", 10, 1);
1175 SendClientMessage(playerid, -1, "{FF0000}Welcome to Los Santos airport!");
1176 return 1;
1177}
1178COMMAND:chiliad(playerid, params[])
1179{
1180 SetPlayerPos(playerid, -2329.7288,-1668.1965,489.5206);
1181 GameTextForPlayer(playerid, "chiliad", 10, 1);
1182 SendClientMessage(playerid, -1, "{FF0000}Welcome to chiliad!");
1183 return 1;
1184}
1185COMMAND:infernus2(playerid, params[])
1186{
1187 SetPlayerPos(playerid, 2546.3120,-2587.3867,448.0542);
1188 GameTextForPlayer(playerid, "infernus2", 10, 1);
1189 SendClientMessage(playerid, -1, "{FF0000}Welcome to infernus2!");
1190 return 1;
1191}
1192COMMAND:infernus(playerid, params[])
1193{
1194 SetPlayerPos(playerid, 460.1000061,-4547.6000977,13.3999996);
1195 GameTextForPlayer(playerid, "infernus", 10, 1);
1196 SendClientMessage(playerid, -1, "{FF0000}Welcome to infernus!");
1197 return 1;
1198}
1199COMMAND:skydive(playerid, params[])
1200{
1201 SetPlayerPos(playerid, -5.79980469,7534.39941406,3041.60009766);
1202 GameTextForPlayer(playerid, "skydive", 10, 1);
1203 SendClientMessage(playerid, -1, "{FF0000}Welcome to skydive challange!");
1204 return 1;
1205}
1206COMMAND:skydive2(playerid, params[])
1207{
1208 SetPlayerPos(playerid, 1867.1786,-146.1077,2465.8916);
1209 GameTextForPlayer(playerid, "skydive2", 10, 1);
1210 SendClientMessage(playerid, -1, "{FF0000}Welcome to skydive2 challange!");
1211 return 1;
1212}
1213COMMAND:skydive3(playerid, params[])
1214{
1215 SetPlayerPos(playerid,1563.59,-1299,1803.9);
1216 GameTextForPlayer(playerid, "skydive3", 10, 1);
1217 SendClientMessage(playerid, -1, "{FF0000}Welcome to skydive3 challange!");
1218 return 1;
1219}
1220COMMAND:infernus3(playerid, params[])
1221{
1222 SetPlayerPos(playerid,3362.1589355469,-2069.42578125,46.729736328125);
1223 GameTextForPlayer(playerid, "infernus3", 10, 1);
1224 SendClientMessage(playerid, -1, "{FF0000}Welcome to infernus3 challange!");
1225 return 1;
1226}
1227COMMAND:aairport(playerid, params[])
1228{
1229 SetPlayerPos(playerid,207.3723,-4152.2036,4.7871);
1230 GameTextForPlayer(playerid, "admin airport", 10, 1);
1231 SendClientMessage(playerid, -1, "{FF0000}Welcome to admin airport!");
1232 return 1;
1233}
1234COMMAND:aa(playerid, params[])
1235{
1236 SetPlayerPos(playerid,403.8438,2530.6050,19.4936);
1237 new vehicleid = GetPlayerVehicleID(playerid);
1238 SetVehiclePos(vehicleid, 0, 0, 3);
1239 GameTextForPlayer(playerid, "aboned airport", 10, 1);
1240 SendClientMessage(playerid, -1, "{FF0000}Welcome to aboned airport!");
1241 return 1;
1242}
1243COMMAND:waterpark(playerid, params[]) // or CMD:mycommand(playerid, params[])
1244{
1245 SetPlayerPos(playerid,-2528.8240,1859.4666,2.4337);
1246 GameTextForPlayer(playerid, "waterpark", 10, 1);
1247 SendClientMessage(playerid, -1, "{FF0000}Welcome to water park!");
1248 return 1;
1249}
1250COMMAND:disco(playerid, params[]) // or CMD:mycommand(playerid, params[])
1251{
1252 SetPlayerPos(playerid, 1781.1716, 5.5758, 180.8459);
1253 SetPlayerInterior(playerid , 0);
1254 GameTextForPlayer(playerid, "disco part", 10, 1);
1255 SendClientMessage(playerid, -1, "{FF0000}Welcome to disco party!");
1256 return 1;
1257}
1258COMMAND:tele(playerid, params[]) // or CMD:mycommand(playerid, params[])
1259{
1260 ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, ""COL_WHITE"Teleport Menu", ""COL_LIGHTBLUE" /Usfpark /lva /lsa \n"COL_RED"/chiliad /infernus /infernus2 /infernus3 \n"COL_LIGHTBLUE"/skydive /skydive2 /skydive3 \n"COL_RED"/aairport /aa /waterpark / disco ", "ok", "Cancel");
1261 SendClientMessage(playerid, -1, "{FF0000} /cmd for playerCommand!");
1262 return 1;
1263}
1264
1265public OnPlayerConnect(playerid)
1266{
1267 Player[playerid][CreatingZone] = false;
1268 Player[playerid][TDZone][0] = CreatePlayerTextDraw(playerid, 320.000000, 376.666290, "ZONE NAME");
1269 PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][0], 0.400000, 1.600000);
1270 PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][0], 2);
1271 PlayerTextDrawColor(playerid, Player[playerid][TDZone][0], -1);
1272 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
1273 PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][0], 1);
1274 PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][0], 255);
1275 PlayerTextDrawFont(playerid, Player[playerid][TDZone][0], 3);
1276 PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][0], 1);
1277 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][0], 0);
1278
1279 Player[playerid][TDZone][1] = CreatePlayerTextDraw(playerid, 318.000000, 391.599609, "Owned By : ~r~Unowned");
1280 PlayerTextDrawLetterSize(playerid, Player[playerid][TDZone][1], 0.264999, 1.310666);
1281 PlayerTextDrawAlignment(playerid, Player[playerid][TDZone][1], 2);
1282 PlayerTextDrawColor(playerid, Player[playerid][TDZone][1], -1);
1283 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
1284 PlayerTextDrawSetOutline(playerid, Player[playerid][TDZone][1], 0);
1285 PlayerTextDrawBackgroundColor(playerid, Player[playerid][TDZone][1], 255);
1286 PlayerTextDrawFont(playerid, Player[playerid][TDZone][1], 1);
1287 PlayerTextDrawSetProportional(playerid, Player[playerid][TDZone][1], 1);
1288 PlayerTextDrawSetShadow(playerid, Player[playerid][TDZone][1], 1);
1289
1290 Player[playerid][CaptureTD][0] = CreatePlayerTextDraw(playerid, 633.000000, 358.000030, "");
1291 PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][0], 0.323000, 1.357333);
1292 PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][0], 3);
1293 PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][0], -1);
1294 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
1295 PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][0], 0);
1296 PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][0], 255);
1297 PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][0], 1);
1298 PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][0], 1);
1299 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][0], 1);
1300
1301 Player[playerid][CaptureTD][1] = CreatePlayerTextDraw(playerid, 633.000000, 343.999938, "00:00");
1302 PlayerTextDrawLetterSize(playerid, Player[playerid][CaptureTD][1], 0.400000, 1.600000);
1303 PlayerTextDrawAlignment(playerid, Player[playerid][CaptureTD][1], 3);
1304 PlayerTextDrawColor(playerid, Player[playerid][CaptureTD][1], -1);
1305 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
1306 PlayerTextDrawSetOutline(playerid, Player[playerid][CaptureTD][1], 1);
1307 PlayerTextDrawBackgroundColor(playerid, Player[playerid][CaptureTD][1], 255);
1308 PlayerTextDrawFont(playerid, Player[playerid][CaptureTD][1], 3);
1309 PlayerTextDrawSetProportional(playerid, Player[playerid][CaptureTD][1], 1);
1310 PlayerTextDrawSetShadow(playerid, Player[playerid][CaptureTD][1], 0);
1311
1312 RemoveBuildingForPlayer(playerid, 6456, 397.5391, -1848.4922, 12.1484, 0.25);
1313 RemoveBuildingForPlayer(playerid, 1278, 1099.2656, 1323.3359, 23.9375, 0.25);
1314 RemoveBuildingForPlayer(playerid, 625, 408.8594, -1803.4922, 7.5859, 0.25);
1315 RemoveBuildingForPlayer(playerid, 1215, 384.4297, -1874.0313, 7.3750, 0.25);
1316 RemoveBuildingForPlayer(playerid, 1215, 384.4297, -1855.5234, 7.3750, 0.25);
1317 RemoveBuildingForPlayer(playerid, 1215, 384.4297, -1837.9766, 7.3750, 0.25);
1318 RemoveBuildingForPlayer(playerid, 1368, 381.7969, -1834.9219, 7.4766, 0.25);
1319 RemoveBuildingForPlayer(playerid, 1371, 387.1328, -1831.4453, 7.5938, 0.25);
1320 RemoveBuildingForPlayer(playerid, 6457, 385.0859, -1823.6484, 10.2813, 0.25);
1321 RemoveBuildingForPlayer(playerid, 1368, 381.7969, -1809.3594, 7.4766, 0.25);
1322 RemoveBuildingForPlayer(playerid, 6288, 397.5391, -1848.4922, 12.1484, 0.25);
1323 RemoveBuildingForPlayer(playerid, 1500, 387.5625, -1817.0859, 6.8203, 0.25);
1324
1325 if(fexist(UserPath(playerid)))
1326 {
1327 INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
1328 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_RED"Login",""COL_WHITE"Type your password below to login.\n"COL_LIGHTBLUE"Visit our forum www.usfserver.net\n"COL_GREEN"thank you for playing with us","Login","Quit");
1329 }
1330 else
1331 {
1332 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_RED"Registering...",""COL_WHITE"Type your password below to register a new account.\n"COL_LIGHTBLUE"Visit Our Forum www.usfserver.net\n"COL_GREEN"Thank you for registeration","Register","Quit");
1333 }
1334 LoadPlayerGang(playerid);
1335 foreach(new i : GangZones)
1336 {
1337 if(GangZone[i][ZoneOwner] == -1)
1338 GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
1339 else
1340 {
1341 new colour[9];
1342 format(colour, 9, "%s50", Gang[GangZone[i][ZoneOwner]][GangColor]);
1343 GangZoneShowForPlayer(playerid, GangZone[i][ZoneHolder], HexToInt(colour));
1344 }
1345 }
1346 return 1;
1347}
1348
1349public OnPlayerDisconnect(playerid, reason)
1350{
1351 new i = Player[playerid][PlayerGang], msg[56];
1352 SaveStats(playerid);
1353 if(Iter_Contains(Gangs, i) && i != -1)
1354 {
1355 new zone = Gang[i][CurrentZone], total = -1;
1356 if(zone != -1)
1357 {
1358 total = 0;
1359 foreach(new p : Player)
1360 {
1361 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1362 {
1363 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea])
1364 total++;
1365 }
1366 }
1367 }
1368 if(total == 0)
1369 {
1370 format(msg, sizeof(msg), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1371 SendClientMessageToAll(-1, msg);
1372 format(msg, sizeof(msg), "{FF0000}** %s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1373 SendClientMessageToAll(-1, msg);
1374 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1375 GangZone[zone][ZoneLocked] = GetTickCount();
1376 GangZone[zone][ZoneStatus] = false;
1377 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1378 }
1379 format(msg, sizeof(msg), "%s has been logged out!", Name(playerid));
1380 SendGangMessage(i, msg);
1381 }
1382 new INI:File = INI_Open(UserPath(playerid));
1383 INI_SetTag(File,"data");
1384 INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
1385 INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
1386 INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
1387 INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
1388 INI_Close(File);
1389 return 1;
1390}
1391
1392public OnPlayerUpdate(playerid) //RyDer
1393{
1394 if(Player[playerid][CreatingZone])
1395 {
1396 new Keys, UpDown, LeftRight;
1397 GetPlayerKeys(playerid, Keys, UpDown, LeftRight);
1398 TogglePlayerControllable(playerid, false);
1399 if(LeftRight == KEY_LEFT)
1400 {
1401 MinPos[playerid][0] -= 8.0;
1402 GangZoneDestroy(PlayerZone[playerid]);
1403 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1404 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1405 }
1406 else if(LeftRight & KEY_LEFT && Keys & KEY_FIRE)
1407 {
1408 MinPos[playerid][0] += 8.0;
1409 GangZoneDestroy(PlayerZone[playerid]);
1410 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1411 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1412 }
1413 else if(LeftRight == KEY_RIGHT)
1414 {
1415 MaxPos[playerid][0] += 8.0;
1416 GangZoneDestroy(PlayerZone[playerid]);
1417 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1418 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1419 }
1420 else if(LeftRight & KEY_RIGHT && Keys & KEY_FIRE)
1421 {
1422 MaxPos[playerid][0] -= 8.0;
1423 GangZoneDestroy(PlayerZone[playerid]);
1424 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1425 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1426 }
1427 else if(UpDown == KEY_UP)
1428 {
1429 MaxPos[playerid][1] += 8.0;
1430 GangZoneDestroy(PlayerZone[playerid]);
1431 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1432 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1433 }
1434 else if(UpDown & KEY_UP && Keys & KEY_FIRE)
1435 {
1436 MaxPos[playerid][1] -= 8.0;
1437 GangZoneDestroy(PlayerZone[playerid]);
1438 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1439 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1440 }
1441 else if(UpDown == KEY_DOWN)
1442 {
1443 MinPos[playerid][1] -= 8.0;
1444 GangZoneDestroy(PlayerZone[playerid]);
1445 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1446 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1447 }
1448 else if(UpDown & KEY_DOWN && Keys & KEY_FIRE)
1449 {
1450 MinPos[playerid][1] += 8.0;
1451 GangZoneDestroy(PlayerZone[playerid]);
1452 PlayerZone[playerid] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1453 GangZoneShowForPlayer(playerid, PlayerZone[playerid], HexToInt("000000FF"));
1454 }
1455 else if(Keys & KEY_SECONDARY_ATTACK)
1456 {
1457 TogglePlayerControllable(playerid, true);
1458 Player[playerid][CreatingZone] = false;
1459 ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "X337 Gang System", "Input gang zone name below, press \"Delete\" to delete current zone", "Save", "Delete");
1460 }
1461 }
1462 return 1;
1463}
1464
1465public OnPlayerDeath(playerid, killerid, reason)
1466{
1467 if(Player[playerid][PlayerGang] != -1)
1468 {
1469 new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
1470 if(zone != -1)
1471 {
1472 total = 0;
1473 foreach(new p : Player)
1474 {
1475 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1476 {
1477 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea])
1478 total++;
1479 }
1480 }
1481 }
1482 if(total == 0)
1483 {
1484 new msg[128];
1485 format(msg, sizeof(msg), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1486 SendClientMessageToAll(-1, msg);
1487 format(msg, sizeof(msg), "{FF0000}** %s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1488 SendClientMessageToAll(-1, msg);
1489 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1490 GangZone[zone][ZoneLocked] = GetTickCount();
1491 GangZone[zone][ZoneStatus] = false;
1492 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1493 }
1494 PlayerInfo[killerid][pKills]++;
1495 PlayerInfo[playerid][pDeaths]++;
1496 }
1497 return 1;
1498}
1499
1500public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1501{
1502 switch( dialogid )
1503 {
1504 case DIALOG_REGISTER:
1505 {
1506 if (!response) return Kick(playerid);
1507 if(response)
1508 {
1509 if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_RED"Registeration",""COL_WHITE"You have entered an invalid password.\n"COL_LIGHTBLUE"Type your password below to register a new account./n"COL_RED"have any problem Visit www.ufserver.com","Register","Quit");
1510 new INI:File = INI_Open(UserPath(playerid));
1511 INI_SetTag(File,"data");
1512 INI_WriteInt(File,"Password",udb_hash(inputtext));
1513 INI_WriteInt(File,"Cash",0);
1514 INI_WriteInt(File,"Admin",0);
1515 INI_WriteInt(File,"Kills",0);
1516 INI_WriteInt(File,"Deaths",0);
1517 INI_Close(File);
1518
1519 SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
1520 SpawnPlayer(playerid);
1521 ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Thank you for registration\n"COL_RED"Visit our forum www.usfserver.net!\nRULES-\nRead /rules /cmd / help /as\n Have any problem visit www.usfserver.net\n thank you reading Have Fun !","Ok","");
1522 }
1523 }
1524
1525 case DIALOG_LOGIN:
1526 {
1527 if ( !response ) return Kick ( playerid );
1528 if( response )
1529 {
1530 if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
1531 {
1532 INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
1533 GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
1534 ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"You are Successfully logged in !",""COL_GREEN"You have successfully logged in!\n Have Fun\n"COL_RED"Any problem report us at www.usfserver.com","Ok","");
1535 }
1536 else
1537 {
1538 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_RED"Login",""COL_WHITE"You have entered an incorrect password.\nType your password below to login.\n"COL_RED"Have any problem report us at www.usfserver.net","Login","Quit");
1539 }
1540 return 1;
1541 }
1542 }
1543 }
1544 switch(dialogid)
1545 {
1546 case DIALOG_SAVEZONE:
1547 {
1548 if(response)
1549 {
1550 if(strlen(inputtext) < 3 || strlen(inputtext) > 50)
1551 ShowPlayerDialog(playerid, DIALOG_SAVEZONE, DIALOG_STYLE_INPUT, "X337 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");
1552 else
1553 {
1554 new query[256];
1555 mysql_format(connection, query, sizeof(query), "INSERT INTO `zone` (`minx`, `miny`, `maxx`, `maxy`, `name`) VALUES('%f', '%f', '%f', '%f', '%e')", MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1], inputtext);
1556 mysql_query(connection, query, true);
1557 GangZoneDestroy(PlayerZone[playerid]);
1558 new i = Iter_Free(GangZones);
1559 GangZone[i][ZoneMinPos][0] = MinPos[playerid][0];
1560 GangZone[i][ZoneMinPos][1] = MinPos[playerid][1];
1561 GangZone[i][ZoneMaxPos][0] = MaxPos[playerid][0];
1562 GangZone[i][ZoneMaxPos][1] = MaxPos[playerid][1];
1563 GangZone[i][ZoneOwner] = -1;
1564 format(GangZone[i][ZoneName], 50, "%s", inputtext);
1565 GangZone[i][ZoneID] = cache_insert_id();
1566 GangZone[i][ZoneArea] = Area_AddBox(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1567 GangZone[i][ZoneHolder] = GangZoneCreate(MinPos[playerid][0], MinPos[playerid][1], MaxPos[playerid][0], MaxPos[playerid][1]);
1568 GangZone[i][ZoneLocked] = 0;
1569 GangZone[i][ZoneStatus] = false;
1570 GangZoneShowForAll(GangZone[i][ZoneHolder], HexToInt(DEFAULT_ZONE_COLOR));
1571 Iter_Add(GangZones, i);
1572 }
1573 }
1574 else
1575 GangZoneDestroy(PlayerZone[playerid]);
1576 }
1577 case DIALOG_CREATEGANG:
1578 {
1579 if(response)
1580 {
1581 if(strlen(inputtext) < 5 || strlen(inputtext) > 30)
1582 {
1583 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Name", "{FF0000}Gang name must be between 5 - 30 characters! \nInsert the gang name below :", "Submit", "Cancel");
1584 }
1585 else if(!IsAlpha(inputtext))
1586 {
1587 ShowPlayerDialog(playerid, DIALOG_CREATEGANG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Name", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang name below :", "Submit", "Cancel");
1588 }
1589 else
1590 {
1591 strcpy(TempGangName[playerid], inputtext);
1592 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Tag", "Insert the gang tag below :", "Submit", "Cancel");
1593 }
1594 }
1595 }
1596 case DIALOG_GANGTAG:
1597 {
1598 if(response)
1599 {
1600 if(strlen(inputtext) < 1 || strlen(inputtext) > 3)
1601 {
1602 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Tag", "{FF0000}Gang tag must be between 1 - 3 character! \nInsert the gang tag below :", "Submit", "Cancel");
1603 }
1604 else if(!IsAlpha(inputtext))
1605 {
1606 ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "X337 Gang System - Gang Tag", "{FF0000}Please insert only a-z,A-Z,0-9 character! \nInsert the gang tag below :", "Submit", "Cancel");
1607 }
1608 else
1609 {
1610 strcpy(TempGangTag[playerid], inputtext);
1611 ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "X337 Gang System - Gang Colour",
1612 "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
1613 }
1614 }
1615 }
1616 case DIALOG_GANGCOLOUR:
1617 {
1618 if(response)
1619 {
1620 switch(listitem)
1621 {
1622 case 0:
1623 strcpy(TempGangColour[playerid], "00FFFF");
1624 case 1:
1625 strcpy(TempGangColour[playerid], "000000");
1626 case 2:
1627 strcpy(TempGangColour[playerid], "0000FF");
1628 case 3:
1629 strcpy(TempGangColour[playerid], "A52A2A");
1630 case 4:
1631 strcpy(TempGangColour[playerid], "FF0000");
1632 case 5:
1633 {
1634 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "X337 Gang System - Hex Colour", "Enter hexadecimal colour below :", "Submit", "Back");
1635 }
1636 }
1637 if(listitem != 5)
1638 {
1639 new msg[128];
1640 format(msg, sizeof(msg), "Are you sure you want to make a gang? \
1641 \nGang Name : %s \
1642 \nGang Tag : [%s] \
1643 \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
1644 ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "X337 Gang System - Create Gang", msg, "Sure", "Cancel");
1645 }
1646 }
1647 }
1648 case DIALOG_HEXCOLOUR:
1649 {
1650 if(response)
1651 {
1652 if(strlen(inputtext) != 6)
1653 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "X337 Gang System - Hex Colour", "{FF0000}Hex colour must be 6 character!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
1654 else
1655 {
1656 if(sscanf(inputtext, "h", TempGangColour[playerid]))
1657 ShowPlayerDialog(playerid, DIALOG_HEXCOLOUR, DIALOG_STYLE_INPUT, "X337 Gang System - Hex Colour", "{FF0000}Invalid HEX colour!\n{FFFFFF}Enter hexadecimal colour below :", "Submit", "Back");
1658 else
1659 {
1660 new msg[128];
1661 format(msg, sizeof(msg), "Are you sure you want to make a gang? \
1662 \nGang Name : %s \
1663 \nGang Tag : [%s] \
1664 \nGang Colour : {%s}%s", TempGangName[playerid], TempGangTag[playerid], TempGangColour[playerid], TempGangColour[playerid]);
1665 ShowPlayerDialog(playerid, DIALOG_CREATEGANG_CONFIRM, DIALOG_STYLE_MSGBOX, "X337 Gang System - Create Gang", msg, "Sure", "Cancel");
1666 }
1667 }
1668 }
1669 else
1670 {
1671 ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "X337 Gang System - Gang Colour",
1672 "{00FFFF}Aqua \n{000000}Black \n{0000FF}Blue \n{A52A2A}Brown \n{FF0000}Red \n{FFFFFF}Use HEX Colour", "Choose", "Cancel");
1673 }
1674 }
1675 case DIALOG_CREATEGANG_CONFIRM:
1676 {
1677 if(response)
1678 {
1679 new bool:found = false;
1680 foreach(new i : Gangs)
1681 {
1682 if(!strcmp(Gang[i][GangName], TempGangName[playerid], true))
1683 {
1684 found = true;
1685 SendClientMessage(playerid, -1, "{FF0000}Gang name already used!");
1686 break;
1687 }
1688 if(!strcmp(Gang[i][GangTag], TempGangTag[playerid], true))
1689 {
1690 found = true;
1691 SendClientMessage(playerid, -1, "{FF0000}Gang tag already used!");
1692 break;
1693 }
1694 }
1695 if(!found)
1696 {
1697 new query[256];
1698 mysql_format(connection, query, sizeof(query), "INSERT INTO `gang` (`name`, `color`, `tag`) VALUES('%e', '%e', '%e')", TempGangName[playerid], TempGangColour[playerid], TempGangTag[playerid]);
1699 mysql_query(connection, query, true);
1700 new i = Iter_Free(Gangs);
1701 strcpy(Gang[i][GangColor], TempGangColour[playerid]);
1702 Gang[i][GangID] = cache_insert_id();
1703 Gang[i][GangName] = TempGangName[playerid];
1704 Gang[i][GangScore] = 0;
1705 Gang[i][GangTag] = TempGangTag[playerid];
1706 Gang[i][CurrentZone] = -1;
1707 Player[playerid][PlayerGang] = i;
1708 Player[playerid][PlayerStatus] = GANG_LEADER;
1709 Iter_Add(Gangs, i);
1710 format(query, sizeof(query), "{%s}[%s]%s {FFFFFF}gang has been created!", TempGangColour[playerid], TempGangTag[playerid], TempGangName[playerid]);
1711 SendClientMessageToAll(-1, query);
1712 SaveStats(playerid);
1713 }
1714 }
1715 }
1716 case DIALOG_GCP:
1717 {
1718 if(response)
1719 {
1720 switch(listitem)
1721 {
1722 case 3:
1723 cmd_gangmembers(playerid, "");
1724 case 4:
1725 cmd_territory(playerid, "");
1726 }
1727 }
1728 }
1729 }
1730 return 1;
1731}
1732
1733public OnPlayerEnterArea(playerid, areaid)
1734{
1735 foreach(new i : GangZones)
1736 {
1737 if(areaid == GangZone[i][ZoneArea])
1738 {
1739 PlayerTextDrawSetString(playerid, Player[playerid][TDZone][0], GangZone[i][ZoneName]);
1740 new msg[128];
1741 if(GangZone[i][ZoneOwner] == -1)
1742 format(msg, sizeof(msg), "Owned by : ~r~Unowned");
1743 else
1744 format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[GangZone[i][ZoneOwner]][GangName]);
1745 PlayerTextDrawSetString(playerid, Player[playerid][TDZone][1], msg);
1746 PlayerTextDrawShow(playerid, Player[playerid][TDZone][0]);
1747 PlayerTextDrawShow(playerid, Player[playerid][TDZone][1]);
1748 return 1;
1749 }
1750 }
1751 return 1;
1752}
1753
1754public OnPlayerLeaveArea(playerid, areaid)
1755{
1756 PlayerTextDrawHide(playerid, Player[playerid][TDZone][0]);
1757 PlayerTextDrawHide(playerid, Player[playerid][TDZone][1]);
1758 if(Player[playerid][PlayerGang] != -1)
1759 {
1760 new zone = Gang[Player[playerid][PlayerGang]][CurrentZone], total = -1;
1761 if(zone != -1)
1762 {
1763 total = 0;
1764 foreach(new p : Player)
1765 {
1766 if(Player[p][PlayerGang] == Player[playerid][PlayerGang])
1767 {
1768 if(Area_GetPlayerAreas(p, 0) == GangZone[zone][ZoneArea])
1769 total++;
1770 }
1771 }
1772 }
1773 if(total == 0)
1774 {
1775 new msg[128];
1776 format(msg, sizeof(msg), "{FF0000}** %s gang failed to capture %s zone!", Gang[Player[playerid][PlayerGang]][GangName], GangZone[zone][ZoneName]);
1777 SendClientMessageToAll(-1, msg);
1778 format(msg, sizeof(msg), "{FF0000}** %s zone will be locked for %d minutes!", GangZone[zone][ZoneName], LOCKED_MINUTES);
1779 SendClientMessageToAll(-1, msg);
1780 Gang[Player[playerid][PlayerGang]][CurrentZone] = -1;
1781 GangZone[zone][ZoneLocked] = GetTickCount();
1782 GangZone[zone][ZoneStatus] = false;
1783 GangZoneStopFlashForAll(GangZone[zone][ZoneHolder]);
1784 }
1785 }
1786 return 1;
1787}
1788
1789forward AttackZone(gangid, zoneid);
1790public AttackZone(gangid, zoneid)
1791{
1792 if(Gang[gangid][CurrentZone] == zoneid && Iter_Contains(Gangs, gangid))
1793 {
1794 Gang[gangid][GangTimer]--;
1795 if(Gang[gangid][GangTimer] > 0)
1796 {
1797 new minutes = Gang[gangid][GangTimer] / 60, seconds = Gang[gangid][GangTimer] % 60, msg[10];
1798 format(msg, sizeof(msg), "%02d:%02d", minutes, seconds);
1799 foreach(new p : Player)
1800 {
1801 if(Player[p][PlayerGang] == gangid)
1802 PlayerTextDrawSetString(p, Player[p][CaptureTD][1], msg);
1803 }
1804 }
1805 else
1806 {
1807 KillTimer(GangZone[zoneid][ZoneTimer]);
1808 new msg[128];
1809 format(msg, sizeof(msg), "Owned by : ~r~%s", Gang[gangid][GangName]);
1810 foreach(new p : Player)
1811 {
1812 if(Player[p][PlayerGang] == gangid)
1813 {
1814 PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
1815 PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
1816 }
1817 if(Area_GetPlayerAreas(p, 0) == GangZone[zoneid][ZoneArea])
1818 PlayerTextDrawSetString(p, Player[p][TDZone][1], msg);
1819
1820 }
1821 GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
1822 new colour[9];
1823 format(colour, 9, "%s50", Gang[gangid][GangColor]);
1824 GangZoneShowForAll(GangZone[zoneid][ZoneHolder], HexToInt(colour));
1825 GangZone[zoneid][ZoneOwner] = gangid;
1826 format(msg, sizeof(msg), "{FF0000}** %s gang succesfully captured %s zone!", Gang[gangid][GangName], GangZone[zoneid][ZoneName]);
1827 SendClientMessageToAll(-1, msg);
1828 format(msg, sizeof(msg), "{FF0000}** %s zone will be locked for %d minutes!", GangZone[zoneid][ZoneName], LOCKED_MINUTES);
1829 SendClientMessageToAll(-1, msg);
1830 Gang[gangid][CurrentZone] = -1;
1831 GangZone[zoneid][ZoneLocked] = GetTickCount();
1832 GangZone[zoneid][ZoneStatus] = false;
1833 Gang[gangid][GangScore]+=5;
1834 }
1835 }
1836 else
1837 {
1838 foreach(new p : Player)
1839 {
1840 if(Player[p][PlayerGang] == gangid)
1841 {
1842 PlayerTextDrawHide(p, Player[p][CaptureTD][0]);
1843 PlayerTextDrawHide(p, Player[p][CaptureTD][1]);
1844 }
1845 }
1846 KillTimer(GangZone[zoneid][ZoneTimer]);
1847 GangZoneStopFlashForAll(GangZone[zoneid][ZoneHolder]);
1848 }
1849 return 1;
1850}
1851
1852forward AutoSave();
1853public AutoSave()
1854{
1855 foreach(new i : Player)
1856 SaveStats(i);
1857 foreach(new i : Gangs)
1858 SaveGang(i);
1859 foreach(new i : GangZones)
1860 SaveZone(i);
1861 return 1;
1862}
1863
1864COMMAND:gangcmds(playerid, params[])
1865{
1866 new msg[512];
1867 strcat(msg, "/creategang /gangcolor /changeleader /territory /gangmembers \n");
1868 strcat(msg, "/gcp /leavegang /disbandgang /topgang /gangrank /promotestaff \n");
1869 strcat(msg, "/demotestaff /createzone /ganginvite /acceptgang /g /capture \n");
1870 strcat(msg, "/okickmember /kickmember\n");
1871 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "X337 Gang System - Commands", msg, "Close", "");
1872}
1873
1874/*
1875 SQL DUMP <X-Gang.sql>
1876-- phpMyAdmin SQL Dump
1877-- version 4.2.7.1
1878-- http://www.phpmyadmin.net
1879-- --------------------------------------------------------
1880
1881--
1882-- Table structure for table `gang`
1883--
1884
1885CREATE TABLE IF NOT EXISTS `gang` (
1886`id` int(10) NOT NULL,
1887 `name` varchar(30) NOT NULL,
1888 `color` varchar(6) NOT NULL,
1889 `tag` varchar(3) NOT NULL,
1890 `score` int(10) NOT NULL DEFAULT '0'
1891) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1892
1893-- --------------------------------------------------------
1894
1895--
1896-- Table structure for table `member`
1897--
1898
1899CREATE TABLE IF NOT EXISTS `member` (
1900`id` int(10) NOT NULL,
1901 `name` varchar(30) NOT NULL,
1902 `status` int(1) NOT NULL DEFAULT '1',
1903 `gang` int(10) NOT NULL DEFAULT '-1'
1904) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1905
1906-- --------------------------------------------------------
1907
1908--
1909-- Table structure for table `zone`
1910--
1911
1912CREATE TABLE IF NOT EXISTS `zone` (
1913`id` int(10) NOT NULL,
1914 `minx` varchar(10) NOT NULL,
1915 `miny` varchar(10) NOT NULL,
1916 `maxx` varchar(10) NOT NULL,
1917 `maxy` varchar(10) NOT NULL,
1918 `owner` int(10) NOT NULL DEFAULT '-1',
1919 `name` varchar(50) NOT NULL DEFAULT 'Undefined Zone'
1920) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
1921
1922--
1923-- Indexes for dumped tables
1924--
1925
1926--
1927-- Indexes for table `gang`
1928--
1929ALTER TABLE `gang`
1930 ADD PRIMARY KEY (`id`);
1931
1932--
1933-- Indexes for table `member`
1934--
1935ALTER TABLE `member`
1936 ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
1937
1938--
1939-- Indexes for table `zone`
1940--
1941ALTER TABLE `zone`
1942 ADD PRIMARY KEY (`id`);
1943
1944--
1945-- AUTO_INCREMENT for dumped tables
1946--
1947
1948--
1949-- AUTO_INCREMENT for table `gang`
1950--
1951ALTER TABLE `gang`
1952MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1953--
1954-- AUTO_INCREMENT for table `member`
1955--
1956ALTER TABLE `member`
1957MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1958--
1959-- AUTO_INCREMENT for table `zone`
1960--
1961ALTER TABLE `zone`
1962MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
1963-- ------------------------------------------------
1964*/