Advertisement
jlalt

eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeew

Aug 31st, 2016
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 63.92 KB | None | 0 0
  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.  
  60. enum _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. }
  73. enum _player
  74. {
  75.     PlayerID,
  76.     bool:CreatingZone,
  77.     PlayerText:TDZone[2],
  78.     PlayerGang,
  79.     PlayerStatus,
  80.     GangRequest,
  81.     PlayerText:CaptureTD[2]
  82. }
  83. enum _gang
  84. {
  85.     GangID,
  86.     GangColor[7],
  87.     GangName[30],
  88.     GangTag[4],
  89.     GangScore,
  90.     CurrentZone,
  91.     GangTimer
  92. }
  93.  
  94. new Player[MAX_PLAYERS][_player],
  95. GangZone[MAX_ZONES][_gangzone],
  96. Gang[MAX_GANGS][_gang],
  97. Iterator:GangZones<MAX_ZONES>,
  98. Iterator:Gangs<MAX_GANGS>,
  99. Float:MinPos[MAX_PLAYERS][2],
  100. Float:MaxPos[MAX_PLAYERS][2],
  101. PlayerZone[MAX_PLAYERS],
  102. TempGangName[MAX_PLAYERS][30],
  103. TempGangTag[MAX_PLAYERS][4],
  104. TempGangColour[MAX_PLAYERS][7],
  105. connection,
  106. AutoSaveTimer;
  107.  
  108. stock 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.  
  117. stock 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.  
  129. stock 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.  
  141. stock GetGangID(id)
  142. {
  143.     foreach(new i : Gangs)
  144.         if(Gang[i][GangID] == id)
  145.             return i;
  146.     return -1;
  147. }
  148.  
  149. stock 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.  
  159. SaveStats(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.  
  171. SaveGang(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.  
  179. SaveZone(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.  
  190. LoadPlayerGang(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.  
  223. SendGangMessage(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.  
  233. stock Name(playerid)
  234. {
  235.     new name[MAX_PLAYER_NAME];
  236.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  237.     return name;
  238. }
  239. //
  240. enum pInfo
  241. {
  242.     pPass,
  243.     pCash,
  244.     pAdmin,
  245.     pKills,
  246.     pDeaths
  247. }
  248. new PlayerInfo[MAX_PLAYERS][pInfo];
  249.  
  250. forward LoadUser_data(playerid,name[],value[]);
  251. public 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.  
  261. stock 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*/
  278. stock 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.  
  292. public 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.  
  355. main( ) { }
  356.  
  357. public 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. }
  364. public OnVehicleSpawn(vehicleid)
  365. {
  366.     return 1;
  367. }
  368. public OnPlayerSpawn(playerid)
  369. {
  370.     return 1;
  371. }
  372. public OnVehicleDeath(vehicleid, killerid)
  373. {
  374.     return 1;
  375. }
  376.  
  377. public OnPlayerText(playerid, text[])
  378. {
  379.     return 1;
  380. }
  381.  
  382. public 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.  
  392. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  393. {
  394.     return 1;
  395. }
  396.  
  397. public OnPlayerExitVehicle(playerid, vehicleid)
  398. {
  399.     return 1;
  400. }
  401. public OnPlayerStateChange(playerid, newstate, oldstate)
  402. {
  403.     return 1;
  404. }
  405.  
  406. public OnPlayerEnterCheckpoint(playerid)
  407. {
  408.     return 1;
  409. }
  410.  
  411. public OnPlayerLeaveCheckpoint(playerid)
  412. {
  413.     return 1;
  414. }
  415.  
  416. public OnPlayerEnterRaceCheckpoint(playerid)
  417. {
  418.     return 1;
  419. }
  420.  
  421. public OnPlayerLeaveRaceCheckpoint(playerid)
  422. {
  423.     return 1;
  424. }
  425.  
  426. public OnRconCommand(cmd[])
  427. {
  428.     return 1;
  429. }
  430.  
  431. public OnPlayerRequestSpawn(playerid)
  432. {
  433.     return 1;
  434. }
  435.  
  436. public OnObjectMoved(objectid)
  437. {
  438.     return 1;
  439. }
  440.  
  441. public OnPlayerObjectMoved(playerid, objectid)
  442. {
  443.     return 1;
  444. }
  445.  
  446. public OnPlayerPickUpPickup(playerid, pickupid)
  447. {
  448.     return 1;
  449. }
  450.  
  451. public OnVehicleMod(playerid, vehicleid, componentid)
  452. {
  453.     return 1;
  454. }
  455.  
  456. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  457. {
  458.     return 1;
  459. }
  460.  
  461. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  462. {
  463.     return 1;
  464. }
  465.  
  466. public OnPlayerSelectedMenuRow(playerid, row)
  467. {
  468.     return 1;
  469. }
  470.  
  471. public OnPlayerExitedMenu(playerid)
  472. {
  473.     return 1;
  474. }
  475.  
  476. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  477. {
  478.     return 1;
  479. }
  480.  
  481. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  482. {
  483.     return 1;
  484. }
  485.  
  486. public OnRconLoginAttempt(ip[], password[], success)
  487. {
  488.     return 1;
  489. }
  490.  
  491. public OnPlayerStreamIn(playerid, forplayerid)
  492. {
  493.     return 1;
  494. }
  495.  
  496. public OnPlayerStreamOut(playerid, forplayerid)
  497. {
  498.     return 1;
  499. }
  500.  
  501. public OnVehicleStreamIn(vehicleid, forplayerid)
  502. {
  503.     return 1;
  504. }
  505.  
  506. public OnVehicleStreamOut(vehicleid, forplayerid)
  507. {
  508.     return 1;
  509. }
  510. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  511. {
  512.     return 1;
  513. }
  514. public 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.  
  533. COMMAND: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.  
  551. COMMAND: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.  
  572. COMMAND: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.  
  613. COMMAND: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.  
  628. COMMAND: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.  
  664. COMMAND: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.  
  685. COMMAND: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.  
  704. COMMAND: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.  
  747. COMMAND: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.  
  769. COMMAND: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.  
  793. COMMAND: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.  
  835. COMMAND: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.  
  877. COMMAND: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.  
  909. COMMAND: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.  
  948. COMMAND: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.  
  975. COMMAND: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.  
  989. COMMAND: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.  
  1062. COMMAND: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.  
  1109. COMMAND: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. }
  1153. COMMAND: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. }
  1160. COMMAND: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. }
  1169. COMMAND: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. }
  1178. COMMAND: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. }
  1185. COMMAND: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. }
  1192. COMMAND: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. }
  1199. COMMAND: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. }
  1206. COMMAND: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. }
  1213. COMMAND: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. }
  1220. COMMAND: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. }
  1227. COMMAND: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. }
  1234. COMMAND: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. }
  1243. COMMAND: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. }
  1250. COMMAND: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. }
  1258. COMMAND: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.  
  1265. public 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.  
  1349. public 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.  
  1392. public 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.  
  1465. public 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.  
  1500. public 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.  
  1733. public 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.  
  1754. public 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.  
  1789. forward AttackZone(gangid, zoneid);
  1790. public 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.  
  1852. forward AutoSave();
  1853. public 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.  
  1864. COMMAND: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.  
  1885. CREATE 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.  
  1899. CREATE 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.  
  1912. CREATE 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. --
  1929. ALTER TABLE `gang`
  1930.  ADD PRIMARY KEY (`id`);
  1931.  
  1932. --
  1933. -- Indexes for table `member`
  1934. --
  1935. ALTER TABLE `member`
  1936.  ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
  1937.  
  1938. --
  1939. -- Indexes for table `zone`
  1940. --
  1941. ALTER 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. --
  1951. ALTER TABLE `gang`
  1952. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1953. --
  1954. -- AUTO_INCREMENT for table `member`
  1955. --
  1956. ALTER TABLE `member`
  1957. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1958. --
  1959. -- AUTO_INCREMENT for table `zone`
  1960. --
  1961. ALTER TABLE `zone`
  1962. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1963. -- ------------------------------------------------
  1964. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement