Advertisement
Guest User

Untitled

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