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