Guest User

Untitled

a guest
Aug 31st, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 63.63 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. /*Credits to Dracoblue*/
  270. stock 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.  
  284. public 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.  
  347. main( ) { }
  348.  
  349. public 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. }
  356. public OnVehicleSpawn(vehicleid)
  357. {
  358. return 1;
  359. }
  360. public OnPlayerSpawn(playerid)
  361. {
  362. return 1;
  363. }
  364. public OnVehicleDeath(vehicleid, killerid)
  365. {
  366. return 1;
  367. }
  368.  
  369. public OnPlayerText(playerid, text[])
  370. {
  371. return 1;
  372. }
  373.  
  374. public 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.  
  384. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  385. {
  386. return 1;
  387. }
  388.  
  389. public OnPlayerExitVehicle(playerid, vehicleid)
  390. {
  391. return 1;
  392. }
  393. public OnPlayerStateChange(playerid, newstate, oldstate)
  394. {
  395. return 1;
  396. }
  397.  
  398. public OnPlayerEnterCheckpoint(playerid)
  399. {
  400. return 1;
  401. }
  402.  
  403. public OnPlayerLeaveCheckpoint(playerid)
  404. {
  405. return 1;
  406. }
  407.  
  408. public OnPlayerEnterRaceCheckpoint(playerid)
  409. {
  410. return 1;
  411. }
  412.  
  413. public OnPlayerLeaveRaceCheckpoint(playerid)
  414. {
  415. return 1;
  416. }
  417.  
  418. public OnRconCommand(cmd[])
  419. {
  420. return 1;
  421. }
  422.  
  423. public OnPlayerRequestSpawn(playerid)
  424. {
  425. return 1;
  426. }
  427.  
  428. public OnObjectMoved(objectid)
  429. {
  430. return 1;
  431. }
  432.  
  433. public OnPlayerObjectMoved(playerid, objectid)
  434. {
  435. return 1;
  436. }
  437.  
  438. public OnPlayerPickUpPickup(playerid, pickupid)
  439. {
  440. return 1;
  441. }
  442.  
  443. public OnVehicleMod(playerid, vehicleid, componentid)
  444. {
  445. return 1;
  446. }
  447.  
  448. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  449. {
  450. return 1;
  451. }
  452.  
  453. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  454. {
  455. return 1;
  456. }
  457.  
  458. public OnPlayerSelectedMenuRow(playerid, row)
  459. {
  460. return 1;
  461. }
  462.  
  463. public OnPlayerExitedMenu(playerid)
  464. {
  465. return 1;
  466. }
  467.  
  468. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  469. {
  470. return 1;
  471. }
  472.  
  473. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  474. {
  475. return 1;
  476. }
  477.  
  478. public OnRconLoginAttempt(ip[], password[], success)
  479. {
  480. return 1;
  481. }
  482.  
  483. public OnPlayerStreamIn(playerid, forplayerid)
  484. {
  485. return 1;
  486. }
  487.  
  488. public OnPlayerStreamOut(playerid, forplayerid)
  489. {
  490. return 1;
  491. }
  492.  
  493. public OnVehicleStreamIn(vehicleid, forplayerid)
  494. {
  495. return 1;
  496. }
  497.  
  498. public OnVehicleStreamOut(vehicleid, forplayerid)
  499. {
  500. return 1;
  501. }
  502. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  503. {
  504. return 1;
  505. }
  506. public 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.  
  525. COMMAND: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.  
  543. COMMAND: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.  
  564. COMMAND: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.  
  605. COMMAND: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.  
  620. COMMAND: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.  
  656. COMMAND: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.  
  677. COMMAND: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.  
  696. COMMAND: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.  
  739. COMMAND: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.  
  761. COMMAND: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.  
  785. COMMAND: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.  
  827. COMMAND: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.  
  869. COMMAND: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.  
  901. COMMAND: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.  
  940. COMMAND: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.  
  967. COMMAND: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.  
  981. COMMAND: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.  
  1054. COMMAND: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.  
  1101. COMMAND: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. }
  1145. COMMAND: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. }
  1152. COMMAND: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. }
  1161. COMMAND: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. }
  1170. COMMAND: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. }
  1177. COMMAND: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. }
  1184. COMMAND: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. }
  1191. COMMAND: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. }
  1198. COMMAND: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. }
  1205. COMMAND: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. }
  1212. COMMAND: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. }
  1219. COMMAND: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. }
  1226. COMMAND: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. }
  1235. COMMAND: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. }
  1242. COMMAND: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. }
  1250. COMMAND: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.  
  1257. public 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.  
  1341. public 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.  
  1384. public 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.  
  1457. public 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.  
  1492. public 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.  
  1725. public 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.  
  1746. public 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.  
  1781. forward AttackZone(gangid, zoneid);
  1782. public 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.  
  1844. forward AutoSave();
  1845. public 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.  
  1856. COMMAND: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.  
  1877. CREATE 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.  
  1891. CREATE 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.  
  1904. CREATE 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. --
  1921. ALTER TABLE `gang`
  1922. ADD PRIMARY KEY (`id`);
  1923.  
  1924. --
  1925. -- Indexes for table `member`
  1926. --
  1927. ALTER TABLE `member`
  1928. ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `name` (`name`);
  1929.  
  1930. --
  1931. -- Indexes for table `zone`
  1932. --
  1933. ALTER 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. --
  1943. ALTER TABLE `gang`
  1944. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1945. --
  1946. -- AUTO_INCREMENT for table `member`
  1947. --
  1948. ALTER TABLE `member`
  1949. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1950. --
  1951. -- AUTO_INCREMENT for table `zone`
  1952. --
  1953. ALTER TABLE `zone`
  1954. MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
  1955. -- ------------------------------------------------
  1956. */
Add Comment
Please, Sign In to add comment