Advertisement
Guest User

NexAdmin by Ne[X]oR

a guest
Jun 27th, 2016
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 114.96 KB | None | 0 0
  1. // Official Nex Admin System
  2. // Made by Ne[X]oR
  3. #define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <a_mysql>
  7. #include <zcmd>
  8. #include <sscanf2>
  9. #include <foreach>
  10. #include <fixes2>
  11.  
  12. //----------------------------- Password Hashing
  13. native WP_Hash(_buffer[], len, const str[]);
  14. // ---------------------------- MySQL Defines
  15. #define mysql_host "localhost" // Change this
  16. #define mysql_user "root" // Change this
  17. #define mysql_pass "" // Change this
  18. #define mysql_db "nadmin" // Change this
  19. static mysql;
  20. //----------------------------- Some Colors
  21. #define COLOR_WHITE 0xFFFFFFFF
  22. #define COLOR_RED 0xFF0606FF
  23. #define COLOR_REPORT 0xFFFF91FF
  24. //----------------------------- Admin Enumerator
  25. enum pInfo
  26. {
  27. aLogged,
  28. aLevel,
  29. aIP[16],
  30. aPass[256],
  31. aALogin
  32. }
  33. new aInfo[MAX_PLAYERS][pInfo];
  34. //----------------------------- Admin Variables
  35. new AdminChat[MAX_PLAYERS];
  36. new ACPerm[MAX_PLAYERS];
  37. new Float:aMark[MAX_PLAYERS][3];
  38. new aInt[MAX_PLAYERS];
  39. new aVW[MAX_PLAYERS];
  40. new Specing[MAX_PLAYERS];
  41. new bool:Fly[MAX_PLAYERS];
  42. //----------------------------- Server Variables
  43. new ChatLock = 0;
  44. new AdminLock = 0;
  45. #define MAX_CUSTOM_VEHICLES 100
  46. new cVeh[MAX_CUSTOM_VEHICLES];
  47. //----------------------------- Player Variables
  48. new Muted[MAX_PLAYERS];
  49. new MuteTimer[MAX_PLAYERS];
  50. new Jailed[MAX_PLAYERS];
  51. new JTimer[MAX_PLAYERS];
  52. new CPerm[MAX_PLAYERS];
  53. new Reported[MAX_PLAYERS];
  54. new ReportTimer[MAX_PLAYERS];
  55. new RMute[MAX_PLAYERS];
  56. new RMuteTimer[MAX_PLAYERS];
  57. new Spec[MAX_PLAYERS];
  58. new Warns[MAX_PLAYERS];
  59. new Freeze[MAX_PLAYERS];
  60. //----------------------------- Jail Coordinations
  61. new Float:CellPos[][4] =
  62. {
  63. {264.3172,81.9794,1001.0391},
  64. {264.5367,86.5032,1001.0391}
  65. };
  66. //----------------------------- Dialog Defines
  67. #define DIALOG_PASSWORD 0
  68. #define DIALOG_SERVER_NAME 1
  69. #define DIALOG_SERVER_PASS 2
  70. #define DIALOG_SERVER_PANEL 3
  71. #define DIALOG_SERVER_MODE 4
  72. #define DIALOG_SERVER_ECHO 5
  73. #define DIALOG_SERVER_GMTEXT 6
  74. #define DIALOG_SERVER_MAP 7
  75. #define DIALOG_SERVER_SAY 8
  76. #define DIALOG_SERVER_GRAVITY 9
  77. #define DIALOG_SERVER_WEB 10
  78. #define DIALOG_SERVER_LOADFS 11
  79. #define DIALOG_SERVER_UNLOADFS 12
  80. #define DIALOG_SERVER_RELOADFS 13
  81. #define DIALOG_SERVER_RCONPASS 14
  82. #define DIALOG_SERVER_LANG 15
  83. #define DIALOG_SERVER_EXEC 16
  84. //-----------------------------
  85. public OnFilterScriptInit()
  86. {
  87. print("\n--------------------------------------");
  88. print(" Nex's Admin System has been loaded.");
  89. print("--------------------------------------\n");
  90. // Mysql connection
  91. mysql = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
  92. mysql_log(LOG_ALL);
  93. if(mysql_errno(mysql) != 0) print("NexAdmin: Could not connect to MySQL database.");
  94. else print("NexAdmin: MySQL connection is stable.");
  95. // Table creation
  96. mysql_tquery(mysql, "CREATE TABLE IF NOT EXISTS `Admins` ( "\
  97. "`Username` varchar(24) NOT NULL," \
  98. "`AdminLevel` int(1) NOT NULL," \
  99. "`IP` varchar(16) NOT NULL," \
  100. "`APassword` varchar(256) NOT NULL," \
  101. "`ALogin` int(1) NOT NULL," \
  102. " PRIMARY KEY (`Username`)" \
  103. ") ENGINE = InnoDB DEFAULT CHARSET = latin1");
  104. foreach(new i : Player)
  105. {
  106. if(IsPlayerConnected(i))
  107. {
  108. new query[128];
  109. mysql_format(mysql, query, sizeof(query), "SELECT * FROM `Admins` WHERE `Username`='%e' LIMIT 1", RPN(i));
  110. mysql_tquery(mysql, query, "AdminCheck", "i", i);
  111. }
  112. }
  113. if(!fexist("bans.cfg"))
  114. {
  115. new File:file = fopen("bans.cfg");
  116. fclose(file);
  117. }
  118. return 1;
  119. }
  120.  
  121. public OnFilterScriptExit()
  122. {
  123. mysql_close(mysql);
  124. return 1;
  125. }
  126.  
  127. public OnPlayerConnect(playerid)
  128. {
  129. SendClientMessage(playerid, COLOR_WHITE, "Nex Admin System has been loaded on this server.");
  130. new File:file = fopen("bans.cfg", io_readwrite), buf[128];
  131. new date[3], banreason[128], banmsg[3][24], string[248];
  132. while(fread(file, buf))
  133. {
  134. if(strfind(buf, RPN(playerid), false) != -1 && strfind(buf, RPIP(playerid), false) != -1)
  135. {
  136. sscanf(buf, "p<|>s[24]s[16]s[24]s[128]iii", banmsg[0], banmsg[1], banmsg[2], banreason, date[0], date[1], date[2]);
  137. if(!strcmp(banmsg[0], RPN(playerid), false, strlen(RPN(playerid))) && !strcmp(banmsg[0], RPN(playerid), false, strlen(RPN(playerid))))
  138. {
  139. SendClientMessage(playerid, COLOR_RED, "----------- Ban Information -----------");
  140. format(string, sizeof(string), "{42EB00}The username {FF0000}%s {42EB00}(IP Address: {FF0000}%s{42EB00}) is banned from this server.", banmsg[0], banmsg[1]);
  141. SendClientMessage(playerid, COLOR_WHITE, string);
  142. format(string, sizeof(string), "{42EB00}You have been banned by {FF0000}%s {42EB00}for {FF0000}%s.", banmsg[2], banreason);
  143. SendClientMessage(playerid, COLOR_WHITE, string);
  144. format(string ,sizeof(string), "{42EB00}The date of banning is {FF0000}%i{42EB00}/{FF0000}%i{42EB00}/{FF0000}%i", date[0], date[1], date[2]);
  145. SendClientMessage(playerid, COLOR_WHITE, string);
  146. SendClientMessage(playerid, COLOR_WHITE, "{42EB00}If you feel that you have been banned wrongly, contact an Administrator.");
  147. SendClientMessage(playerid, COLOR_RED, "--------------------------------------------");
  148. SetTimerEx("DelayedKick", 100, 0, "i", playerid);
  149. fclose(file);
  150. return 1;
  151. }
  152. }
  153. else if(strfind(buf, RPN(playerid), false) != -1)
  154. {
  155. sscanf(buf, "p<|>s[24]s[24]s[128]iii", banmsg[0], banmsg[1], banreason, date[0], date[1], date[2]);
  156. if(!strcmp(banmsg[0], RPN(playerid), false, strlen(banmsg[0])) && !strcmp(banmsg[0], RPN(playerid), false, strlen(RPN(playerid))))
  157. {
  158. SendClientMessage(playerid, COLOR_RED, "----------- Ban Information -----------");
  159. format(string, sizeof(string), "{42EB00}The username {FF0000}%s {42EB00}is banned from this server.", banmsg[0]);
  160. SendClientMessage(playerid, COLOR_WHITE, string);
  161. format(string, sizeof(string), "{42EB00}You have been banned by {FF0000}%s {42EB00}for {FF0000}%s.", banmsg[1], banreason);
  162. SendClientMessage(playerid, COLOR_WHITE, string);
  163. format(string ,sizeof(string), "{42EB00}The date of banning is {FF0000}%i{42EB00}/{FF0000}%i{42EB00}/{FF0000}%i", date[0], date[1], date[2]);
  164. SendClientMessage(playerid, COLOR_WHITE, string);
  165. SendClientMessage(playerid, COLOR_WHITE, "{42EB00}If you feel that you have been banned wrongly, contact an Administrator.");
  166. SendClientMessage(playerid, COLOR_RED, "--------------------------------------------");
  167. getdate(date[2], date[1], date[0]);
  168. format(string, sizeof(string), "%s|The Server|Ban Evasion(%s)|%i|%i|%i\r\n", RPIP(playerid), RPN(playerid), date[0], date[1], date[2]);
  169. fclose(file);
  170. file = fopen("bans.cfg", io_append);
  171. fwrite(file, string);
  172. fclose(file);
  173. SetTimerEx("DelayedKick", 100, 0, "i", playerid);
  174. return 1;
  175. }
  176. }
  177. else if(strfind(buf, RPIP(playerid), false) != -1)
  178. {
  179. sscanf(buf, "p<|>s[16]s[24]s[128]iii", banmsg[0], banmsg[1], banreason, date[0], date[1], date[2]);
  180. SendClientMessage(playerid, COLOR_RED, "----------- Ban Information -----------");
  181. format(string, sizeof(string), "{42EB00}The IP Address {FF0000}%s {42EB00}is banned from this server.", banmsg[0]);
  182. SendClientMessage(playerid, COLOR_WHITE, string);
  183. format(string, sizeof(string), "{42EB00}You have been banned by {FF0000}%s {42EB00}for {FF0000}%s.", banmsg[1], banreason);
  184. SendClientMessage(playerid, COLOR_WHITE, string);
  185. format(string ,sizeof(string), "{42EB00}The date of banning is {FF0000}%i{42EB00}/{FF0000}%i{42EB00}/{FF0000}%i", date[0], date[1], date[2]);
  186. SendClientMessage(playerid, COLOR_WHITE, string);
  187. SendClientMessage(playerid, COLOR_WHITE, "{42EB00}If you feel that you have been banned wrongly, contact an Administrator.");
  188. SendClientMessage(playerid, COLOR_RED, "--------------------------------------------");
  189. getdate(date[2], date[1], date[0]);
  190. format(string, sizeof(string), "%s|The Server|Ban Evasion(%s)|%i|%i|%i\r\n", RPN(playerid), RPIP(playerid), date[0], date[1], date[2]);
  191. fclose(file);
  192. file = fopen("bans.cfg", io_append);
  193. fwrite(file, string);
  194. fclose(file);
  195. SetTimerEx("DelayedKick", 100, 0, "i", playerid);
  196. return 1;
  197. }
  198. }
  199. Spec[playerid] = -1;
  200. aInfo[playerid][aLogged] = 0;
  201. new query[128];
  202. mysql_format(mysql, query, sizeof(query), "SELECT * FROM `Admins` WHERE `Username`='%e' LIMIT 1", RPN(playerid));
  203. mysql_tquery(mysql, query, "AdminCheck", "i", playerid);
  204. return 1;
  205. }
  206.  
  207. forward AdminCheck(playerid);
  208. public AdminCheck(playerid)
  209. {
  210. new rows, fields, string[128];
  211. cache_get_data(rows, fields, mysql);
  212. if(rows)
  213. {
  214. cache_get_field_content(0, "APassword", aInfo[playerid][aPass], mysql, 256);
  215. cache_get_field_content(0, "IP", aInfo[playerid][aIP], mysql, 16);
  216. aInfo[playerid][aLevel] = cache_get_field_content_int(0, "AdminLevel");
  217. aInfo[playerid][aALogin] = cache_get_field_content_int(0, "ALogin");
  218. AdminChat[playerid] = 1;
  219. Specing[playerid] = -1;
  220. if(aInfo[playerid][aALogin] && !strcmp(aInfo[playerid][aIP], RPIP(playerid), true) && strlen(aInfo[playerid][aPass]))
  221. {
  222. format(string, sizeof(string), " You have been automatically logged in as %d level Administrator.", aInfo[playerid][aLevel]);
  223. SendClientMessage(playerid, COLOR_RED, string);
  224. aInfo[playerid][aLogged] = 1;
  225. AdminChat[playerid] = 1;
  226. Specing[playerid] = -1;
  227. new log[128];
  228. format(log, sizeof(log), " %s (%s) has been automatically logged into his admin account.", RPN(playerid), RPIP(playerid));
  229. Log("logs/alogin.log", log);
  230. return 1;
  231. }
  232. else if(strcmp(aInfo[playerid][aIP], RPIP(playerid), true))
  233. {
  234. new query[248];
  235. mysql_format(mysql, query, sizeof(query), "UPDATE `Admins` SET `IP`='%e' WHERE `Username`='%e' LIMIT 1", RPIP(playerid), RPN(playerid));
  236. mysql_tquery(mysql, query);
  237. }
  238. if(!strlen(aInfo[playerid][aPass])) SendClientMessage(playerid, COLOR_RED, " You are registered as an Administrator, Please setup your password using /AdmPass.");
  239. else SendClientMessage(playerid, COLOR_RED, " You are registered as an Administrator, Please login to receieve Admin powers using: /ALogin");
  240. }
  241. return 1;
  242. }
  243.  
  244. public OnPlayerDisconnect(playerid, reason)
  245. {
  246. if(aInfo[playerid][aLevel])
  247. {
  248. new query[500], string[128];
  249. mysql_format(mysql, query, sizeof(query), "UPDATE `Admins` SET `AdminLevel`='%d', `APassword`='%s', `ALogin`='%d' WHERE `Username`='%e' LIMIT 1",
  250. aInfo[playerid][aLevel], aInfo[playerid][aPass], aInfo[playerid][aALogin], RPN(playerid));
  251. mysql_tquery(mysql, query);
  252. format(string, sizeof(string), " Administrator %s has disconnected from the server.", RPN(playerid));
  253. SendAMessage(1, string);
  254. }
  255. ClearAdmin(playerid);
  256. ClearPlayer(playerid);
  257. return 1;
  258. }
  259.  
  260. // Stocks
  261. stock RPIP(playerid)
  262. {
  263. new ip[16];
  264. GetPlayerIp(playerid, ip, sizeof(ip));
  265. return ip;
  266. }
  267.  
  268. stock IsIP(ip[])
  269. {
  270. new dots = 0, nums = 0, other = 0;
  271. for(new i = 0; i < strlen(ip); i++)
  272. {
  273. switch(ip[i])
  274. {
  275. case '.':
  276. {
  277. dots++;
  278. }
  279. case '0'..'9':
  280. {
  281. nums++;
  282. }
  283. default:
  284. {
  285. other++;
  286. }
  287. }
  288. }
  289. if(dots != 3 || nums > 12 || other != 0 || nums < 4) return 0;
  290. else return 1;
  291. }
  292.  
  293. stock RPN(playerid)
  294. {
  295. new name[24];
  296. GetPlayerName(playerid, name, 24);
  297. return name;
  298. }
  299.  
  300. stock RPIDFN(playername[])
  301. {
  302. for(new i = 0; i <= MAX_PLAYERS; i++)
  303. {
  304. if(IsPlayerConnected(i))
  305. {
  306. new playername2[MAX_PLAYER_NAME];
  307. GetPlayerName(i, playername2, sizeof(playername2));
  308. if(strcmp(playername2, playername, true, strlen(playername)) == 0)
  309. {
  310. return i;
  311. }
  312. }
  313. }
  314. return INVALID_PLAYER_ID;
  315. }
  316.  
  317. stock IsAuth(playerid, alevel)
  318. {
  319. if(aInfo[playerid][aLogged] && aInfo[playerid][aLevel] >= alevel) return 1;
  320. else return 0;
  321. }
  322.  
  323. stock NoAuth(playerid)
  324. {
  325. SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to use this command.");
  326. return 1;
  327. }
  328.  
  329. stock SendAMessage(alevel, string[])
  330. {
  331. foreach(new i : Player)
  332. {
  333. if(aInfo[i][aLevel] >= alevel && AdminChat[i]) SendClientMessage(i, COLOR_RED, string);
  334. }
  335. return 1;
  336. }
  337.  
  338. stock RPARN(playerid)
  339. {
  340. new name[32];
  341. if(IsPlayerAdmin(playerid)) format(name, sizeof(name), "RCON Admin");
  342. switch(aInfo[playerid][aLevel])
  343. {
  344. case 1: format(name, sizeof(name), "Junior Admin");
  345. case 2: format(name, sizeof(name), "General Admin");
  346. case 3: format(name, sizeof(name), "Senior Admin");
  347. case 4: format(name, sizeof(name), "Head Admin");
  348. case 5: format(name, sizeof(name), "Elite Admin");
  349. case 6: format(name, sizeof(name), "Server Owner");
  350. case 7: format(name, sizeof(name), "Server Scripter");
  351. }
  352. return name;
  353. }
  354.  
  355. stock Log(sz_fileName[], sz_input[]) {
  356.  
  357. new sz_logEntry[156], i_dateTime[2][3], File: fileHandle = fopen(sz_fileName, io_append);
  358. gettime(i_dateTime[0][0], i_dateTime[0][1], i_dateTime[0][2]);
  359. getdate(i_dateTime[1][0], i_dateTime[1][1], i_dateTime[1][2]);
  360. format(sz_logEntry, sizeof(sz_logEntry), "[%i/%i/%i - %i:%i:%i] %s\r\n", i_dateTime[1][0], i_dateTime[1][1], i_dateTime[1][2], i_dateTime[0][0], i_dateTime[0][1], i_dateTime[0][2], sz_input);
  361. fwrite(fileHandle, sz_logEntry);
  362. return fclose(fileHandle);
  363. }
  364.  
  365. stock RIPID(IP[])
  366. {
  367. foreach(new i: Player)
  368. {
  369. if(!strcmp(RPIP(i), IP, false)) return i;
  370. }
  371. return -1;
  372. }
  373.  
  374. stock ClearAdmin(playerid)
  375. {
  376. if(Muted[playerid]) KillTimer(MuteTimer[playerid]);
  377. aInfo[playerid][aLevel] = aInfo[playerid][aALogin] = AdminChat[playerid] = aVW[playerid] = aInt[playerid] = 0;
  378. aMark[playerid][0] = aMark[playerid][1] = aMark[playerid][2] = 0;
  379. format(aInfo[playerid][aIP], 16, "");
  380. format(aInfo[playerid][aPass], 256, "");
  381. Specing[playerid] = -1;
  382. Fly[playerid] = false;
  383. }
  384.  
  385. stock ClearPlayer(playerid)
  386. {
  387. if(Muted[playerid]) KillTimer(MuteTimer[playerid]);
  388. Muted[playerid] = 0;
  389. if(Reported[playerid]) KillTimer(ReportTimer[playerid]);
  390. Reported[playerid] = 0;
  391. if(RMute[playerid]) KillTimer(RMuteTimer[playerid]);
  392. RMute[playerid] = 0;
  393. Spec[playerid] = -1;
  394. Warns[playerid] = 0;
  395. }
  396.  
  397. stock fdeleteline(filename[], line)
  398. {
  399. new count, string[256], File:file, File:temp;
  400.  
  401. file= fopen(filename, io_read);
  402. temp = fopen("tmpfile.tmp", io_write);
  403.  
  404. while (fread(file, string))
  405. if (++count != line)
  406. fwrite(temp, string);
  407.  
  408. fclose(file);
  409. fclose(temp);
  410.  
  411. file= fopen(filename, io_write);
  412. temp = fopen("tmpfile.tmp", io_read);
  413.  
  414. while (fread(temp, string))
  415. fwrite(file, string);
  416.  
  417. fclose(file);
  418. fclose(temp);
  419. fremove("tmpfile.tmp");
  420. }
  421.  
  422. stock IsBike(vehicleid)
  423. {
  424. new model = GetVehicleModel(vehicleid);
  425. if(model == 448 || model == 461 || model == 462 || model == 463 || model == 468 || model == 471 || model == 481 || model == 509 || model == 510 || model == 521 || model == 522 || model == 523 || model == 581 || model == 586) return 1;
  426. else return 0;
  427. }
  428.  
  429. stock IsPlane(vehicleid)
  430. {
  431. new model = GetVehicleModel(vehicleid);
  432. if(model == 460 || model == 476 || model == 511 || model == 512 || model == 513 || model == 519 || model == 520 || model == 553 || model == 577 || model == 592 || model == 593) return 1;
  433. else if(model == 417 || model == 425 || model == 447 || model == 469 || model == 487 || model == 488 || model == 497 || model == 548 || model == 563) return 1;
  434. else return 0;
  435. }
  436.  
  437. stock IsVehicleEmpty(vehicleid)
  438. {
  439. foreach(new i : Player)
  440. {
  441. if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == vehicleid) return 0;
  442. }
  443. return 1;
  444. }
  445. // ------------------------------------------------
  446. public OnRconLoginAttempt(ip[], password[], success)
  447. {
  448. new string[248], log[248];
  449. if(success)
  450. {
  451. if(RIPID(ip) > -1) format(string, sizeof(string), "Attention: %s has logged in as RCON Administrator.", RPN(RIPID(ip)));
  452. else format(string, sizeof(string), "Attention: IP Address %s has logged in as an RCON Administrator.", ip);
  453. }
  454. else
  455. {
  456. if(RIPID(ip) > -1) format(string, sizeof(string), "Warning: %s has failed to login to the RCON.", RPN(RIPID(ip)));
  457. else format(string, sizeof(string), "Warning: IP Address %s has failed to login to the RCON.", ip);
  458. }
  459. SendAMessage(1, string);
  460. format(log, sizeof(log), "IP Address %s has attempted to login to the RCON, Success: %d.", ip, success);
  461. Log("logs/rcon.log", log);
  462. return 1;
  463. }
  464. // --------------------------------------------------
  465. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  466. {
  467. printf("[CMD] [%s]: %s", RPN(playerid), cmdtext);
  468. return 1;
  469. }
  470.  
  471. // -------------------------- OnPlayerCommandText
  472. CMD:ahelp(playerid) return cmd_ah(playerid);
  473.  
  474. CMD:ah(playerid)
  475. {
  476. if(!aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to use this command.");
  477. SendClientMessage(playerid, COLOR_RED, "Level 1: /a /togadmin /kick /ban /gethere /goto /admpass /alogin /alogout /setskin");
  478. SendClientMessage(playerid, COLOR_RED, "Level 1: /spec /autologin /(un)mute /getveh /gotoveh /asay /kill /jetpack /cc");
  479. if(aInfo[playerid][aLevel] > 1) SendClientMessage(playerid, COLOR_RED, "Level 2: /gotoloc /mark /rmute /jail /release /fine /pfine /vehnitro /vehhyd /slap /freeze /wanted");
  480. if(aInfo[playerid][aLevel] > 1) SendClientMessage(playerid, COLOR_RED, "Level 2: /vehcolor /vehpj /disarm /givemoney /setscore /fly /setint /setvw /sethp /setarmor");
  481. if(aInfo[playerid][aLevel] > 2) SendClientMessage(playerid, COLOR_RED, "Level 3: /ptp /gotopos /banip /banaccount /unban /unbanip /veh /destroyveh /jetpackall");
  482. if(aInfo[playerid][aLevel] > 2) SendClientMessage(playerid, COLOR_RED, "Level 3: /respawnveh /(un)warn /givegun /setmoney /check(ip) /slapall /blow /setwanted");
  483. if(aInfo[playerid][aLevel] > 3) SendClientMessage(playerid, COLOR_RED, "Level 4: /lockchat /allowchat /kickall /getall /givegunall /disarmall /(un)freezeall");
  484. if(aInfo[playerid][aLevel] > 3) SendClientMessage(playerid, COLOR_RED, "Level 4: /givemoneyall /setmoneyall /setname /setarmorall /sethpall");
  485. if(aInfo[playerid][aLevel] > 4) SendClientMessage(playerid, COLOR_RED, "Level 5: /lockadmin /allowadmin /fakechat /killall /setweather /settime /blowall");
  486. if(aInfo[playerid][aLevel] > 5) SendClientMessage(playerid, COLOR_RED, "Level 6: /makeadmin /deleteadmin /recoverpass /clearbans");
  487. if(aInfo[playerid][aLevel] > 6) SendClientMessage(playerid, COLOR_RED, "Level 7: /serverpanel");
  488. return 1;
  489. }
  490. // Admin Management commands
  491. CMD:makeadmin(playerid, params[])
  492. {
  493. if(!IsAuth(playerid, 6) && !IsPlayerAdmin(playerid)) return NoAuth(playerid);
  494. new playerb, level;
  495. if(sscanf(params, "ui", playerb, level)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /makeadmin [playerid] [level]");
  496. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  497. if(level < 0 || level > 7) return SendClientMessage(playerid, COLOR_WHITE, "Admin levels are between 0 to 7.");
  498. if(aInfo[playerb][aLevel] == level) return SendClientMessage(playerid, COLOR_WHITE, "This player already has that Admin level.");
  499. new string[128], query[200];
  500. format(string, sizeof(string), "AdmCmd: %s %s has set %s's Admin Level to %d.", RPARN(playerid), RPN(playerid), RPN(playerb), level);
  501. SendAMessage(1, string);
  502. Log("logs/makeadmin.log", string);
  503. if(!aInfo[playerb][aLevel])
  504. {
  505. mysql_format(mysql, query, sizeof(query), "INSERT INTO `Admins` (`Username`, `ALogin`, `APassword`, `AdminLevel`, `IP`) VALUES ('%e', '0', '', '%d', '%s')", RPN(playerb), level, RPIP(playerb));
  506. mysql_tquery(mysql, query);
  507. format(string, sizeof(string), "Congratulations, You have been promoted to level %d Admin by %s %s.", level, RPARN(playerid), RPN(playerid));
  508. SendClientMessage(playerb, COLOR_RED, string);
  509. SendClientMessage(playerb, COLOR_RED, "Please set your private admin password using /AdmPass, You cannot receieve your powers until then.");
  510. AdminChat[playerid] = 1;
  511. }
  512. aInfo[playerb][aLevel] = level;
  513. aInfo[playerb][aALogin] = 0;
  514. if(!aInfo[playerb][aLevel])
  515. {
  516. mysql_format(mysql, query, sizeof(query), "DELETE FROM `Admins` WHERE `Username`='%e'", RPN(playerid));
  517. mysql_tquery(mysql, query);
  518. format(string, sizeof(string), "You have been removed from the Administration team by %s %s.", RPARN(playerid), RPN(playerid));
  519. SendClientMessage(playerb, COLOR_RED, string);
  520. ClearAdmin(playerid);
  521. }
  522. return 1;
  523. }
  524.  
  525. CMD:deleteadmin(playerid, param[])
  526. {
  527. if(!IsAuth(playerid, 6) && !IsPlayerAdmin(playerid)) return NoAuth(playerid);
  528. if(sscanf(param, "s[24]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /deleteadmin [Username]");
  529. if(!strcmp(RPN(playerid), param, false)) return SendClientMessage(playerid, COLOR_WHITE, "You cannot delete your own admin account, just use /makeadmin.");
  530. if(RPIDFN(param) != INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE, "This player is connected, use /makeadmin instead.");
  531. new string[248], query[248], Cache:result;
  532. mysql_format(mysql, query, sizeof(query), "SELECT `AdminLevel` from `Admins` WHERE `Username`='%e' LIMIT 1", param);
  533. result = mysql_query(mysql, query);
  534. if(cache_get_row_count(mysql))
  535. {
  536. new admin = cache_get_row_int(0, 0, mysql);
  537. if(admin > aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You cannot delete higher level Administrators.");
  538. format(string, sizeof(string), "%s %s has deleted %s's Admin account from the Admin system.", RPARN(playerid), RPN(playerid), param);
  539. SendAMessage(1, string);
  540. Log("logs/makeadmin.log", string);
  541. mysql_format(mysql, query, sizeof(query), "DELETE FROM `Admins` WHERE `Username`='%e'", param);
  542. mysql_tquery(mysql, query);
  543.  
  544. }
  545. else SendClientMessage(playerid, COLOR_WHITE, "Username not found in the system.");
  546. cache_delete(result);
  547. return 1;
  548. }
  549.  
  550. CMD:recoverpass(playerid, param[])
  551. {
  552. if(!IsAuth(playerid, 6)) return NoAuth(playerid);
  553. new playerb;
  554. if(sscanf(param, "u]", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /recoverpass [playerid]");
  555. if(!IsPlayerConnected(playerb) || (playerb == playerid && !IsPlayerAdmin(playerid))) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  556. if(strlen(aInfo[playerb][aPass]) < 4) return SendClientMessage(playerid, COLOR_WHITE, "The Administrator's password is already reseted.");
  557. new string[128];
  558. format(aInfo[playerb][aPass], 256, "");
  559. format(string, sizeof(string), "%s %s has recovered %s's Admin Password.", RPARN(playerid), RPN(playerid), RPN(playerb));
  560. SendAMessage(1, string);
  561. format(string, sizeof(string), "%s %s (%s) has reseted %s's Admin Password.", RPARN(playerid), RPN(playerid), RPIP(playerid), RPN(playerb));
  562. Log("logs/admpass.log", string);
  563. return 1;
  564. }
  565.  
  566. CMD:admpass(playerid)
  567. {
  568. if(!aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to use this command.");
  569. if(strlen(aInfo[playerid][aPass]) > 4 && !aInfo[playerid][aLogged]) return SendClientMessage(playerid, COLOR_WHITE, "You must be logged in to change your password, If you can't access it, talk to a Server Owner.");
  570. ShowPlayerDialog(playerid, DIALOG_PASSWORD, 1, "Admin Password", "Please type your new Admin Password", "Change", "Cancel");
  571. return 1;
  572. }
  573.  
  574. CMD:alogin(playerid, param[])
  575. {
  576. if(!aInfo[playerid][aLevel]) return NoAuth(playerid);
  577. if(!aInfo[playerid][aPass]) return SendClientMessage(playerid, COLOR_WHITE, "You need to set your password before logging in, type /AdmPass.");
  578. if(aInfo[playerid][aLogged]) return SendClientMessage(playerid, COLOR_WHITE, "You are already logged into your Admin account.");
  579. new pw[256];
  580. if(sscanf(param, "s[128]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ALogin [Password]");
  581. WP_Hash(pw, 256, param);
  582. new string[128], log[128];
  583. if(!strcmp(pw, aInfo[playerid][aPass], false))
  584. {
  585. format(string, sizeof(string), "You have logged in as %s.", RPARN(playerid));
  586. SendClientMessage(playerid, COLOR_RED, string);
  587. aInfo[playerid][aLogged] = 1;
  588. AdminChat[playerid] = 1;
  589. Specing[playerid] = -1;
  590. format(log, sizeof(log), "%s (%s) has successfully logged into their admin account.", RPN(playerid), RPIP(playerid));
  591. Log("logs/alogin.log", log);
  592. format(string, sizeof(string), "Attention: %s %s has logged into his admin account.", RPARN(playerid), RPN(playerid));
  593. SendAMessage(1, string);
  594. }
  595. else
  596. {
  597. format(string, sizeof(string), "Warning: %s has entered a wrong admin password.", RPN(playerid));
  598. SendAMessage(1, string);
  599. format(log, sizeof(log), "%s (%s) has failed to login into their admin account.", RPN(playerid), RPIP(playerid));
  600. Log("logs/alogin.log", log);
  601. }
  602. return 1;
  603. }
  604.  
  605. CMD:alogout(playerid)
  606. {
  607. if(!aInfo[playerid][aLevel]) return NoAuth(playerid);
  608. if(!aInfo[playerid][aLogged]) return SendClientMessage(playerid, COLOR_WHITE, "You are already logged out from your Admin account.");
  609. new string[128];
  610. format(string, sizeof(string), "%s %s has logged out from his Admin account.", RPARN(playerid), RPN(playerid));
  611. SendAMessage(1, string);
  612. Log("logs/alogin.log", string);
  613. aInfo[playerid][aLogged] = 0;
  614. return 1;
  615. }
  616.  
  617. CMD:autologin(playerid, param[])
  618. {
  619. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  620. if(aInfo[playerid][aALogin])
  621. {
  622. aInfo[playerid][aALogin] = 0;
  623. SendClientMessage(playerid, COLOR_RED, "You have disabled the Admin Auto-login.");
  624. }
  625. else
  626. {
  627. aInfo[playerid][aALogin] = 1;
  628. SendClientMessage(playerid, COLOR_RED, "You have enabled the Admin Auto-login.");
  629. }
  630. return 1;
  631. }
  632.  
  633. CMD:admins(playerid)
  634. {
  635. new string[128];
  636. SendClientMessage(playerid, COLOR_REPORT, " ------ Online Administrators ------ ");
  637. foreach(new i : Player)
  638. {
  639. if(aInfo[i][aLevel])
  640. {
  641. if(aInfo[i][aLogged]) format(string, sizeof(string), "%s %s - ID %d - [ON DUTY]", RPARN(i), RPN(i), i);
  642. else format(string, sizeof(string), "%s %s - ID %d - [OFF DUTY]", RPARN(i), RPN(i), i);
  643. SendClientMessage(playerid, COLOR_RED, string);
  644. }
  645. }
  646. return 1;
  647. }
  648. // Teleportation related commands
  649. CMD:goto(playerid, param[])
  650. {
  651. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  652. new playerb;
  653. if(sscanf(param, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /goto [playerid]");
  654. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  655. new Float:X, Float:Y, Float:Z, string[80];
  656. GetPlayerPos(playerb, X, Y, Z);
  657. SetPlayerPos(playerid, X + 1, Y, Z);
  658. format(string, sizeof(string), "You have teleported to %s.", RPN(playerb));
  659. SendClientMessage(playerid, COLOR_RED, string);
  660. format(string, sizeof(string), "Administrator %s has teleported to you.", RPN(playerid));
  661. SendClientMessage(playerb, COLOR_RED, string);
  662. return 1;
  663. }
  664.  
  665. CMD:gethere(playerid, param[])
  666. {
  667. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  668. new playerb;
  669. if(sscanf(param, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gethere [playerid]");
  670. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  671. new Float:X, Float:Y, Float:Z, string[80];
  672. GetPlayerPos(playerid, X, Y, Z);
  673. SetPlayerPos(playerb, X, Y, Z);
  674. format(string, sizeof(string), "Administrator %s has teleported you to him.", RPN(playerid));
  675. SendClientMessage(playerb, COLOR_RED, string);
  676. format(string, sizeof(string), "You have teleported %s to you.", RPN(playerb));
  677. SendClientMessage(playerid, COLOR_RED, string);
  678. return 1;
  679. }
  680.  
  681. CMD:setint(playerid, param[])
  682. {
  683. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  684. new playerb, int;
  685. if(sscanf(param, "ui", playerb, int)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setint [playerid] [Interior]");
  686. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  687. if(int < 0) return SendClientMessage(playerid, COLOR_WHITE, "Interior can't be negative.");
  688. if(IsPlayerInAnyVehicle(playerb)) LinkVehicleToInterior(GetPlayerVehicleID(playerb), int);
  689. SetPlayerInterior(playerid, int);
  690. new string[60];
  691. format(string, sizeof(string), "You have set %s's interior to %d.", RPN(playerb), int);
  692. SendClientMessage(playerid, COLOR_RED, string);
  693. format(string, sizeof(string), "%s has your interior to %d.", RPN(playerid), int);
  694. SendClientMessage(playerb, COLOR_RED, string);
  695. return 1;
  696. }
  697.  
  698. CMD:setvw(playerid, param[])
  699. {
  700. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  701. new playerb, vw;
  702. if(sscanf(param, "ui", playerb, vw)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setvw [playerid] [Virtual World]");
  703. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  704. if(vw < 0) return SendClientMessage(playerid, COLOR_WHITE, "Virtual Worlds can't be negative.");
  705. if(IsPlayerInAnyVehicle(playerb)) SetVehicleVirtualWorld(GetPlayerVehicleID(playerb), vw);
  706. SetPlayerVirtualWorld(playerid, vw);
  707. new string[60];
  708. format(string, sizeof(string), "You have set %s's virtual world to %d.", RPN(playerb), vw);
  709. SendClientMessage(playerid, COLOR_RED, string);
  710. format(string, sizeof(string), "%s has your virtual world to %d.", RPN(playerid), vw);
  711. SendClientMessage(playerb, COLOR_RED, string);
  712. return 1;
  713. }
  714.  
  715. CMD:getall(playerid)
  716. {
  717. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  718. new Float:x, Float:y, Float:z;
  719. GetPlayerPos(playerid, x, y, z);
  720. foreach(new i : Player)
  721. {
  722. if(GetPlayerState(i) == 8 && i != playerid) SetPlayerPos(i, x+i, y, z);
  723. }
  724. new string[128];
  725. format(string, sizeof(string), "AdmCmd: %s %s has teleported everyone to him.", RPARN(playerid), RPN(playerid));
  726. SendClientMessageToAll(COLOR_RED, string);
  727. return 1;
  728. }
  729.  
  730. CMD:ptp(playerid, params[])
  731. {
  732. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  733. new playerb, playerc;
  734. if(sscanf(params, "uu", playerb, playerc)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ptp [playerid] [targetid]");
  735. if(!IsPlayerConnected(playerb) || !IsPlayerConnected(playerc)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid IDs.");
  736. if(playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Use /goto instead.");
  737. if(playerc == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Use /gethere instead.");
  738. new Float:X, Float:Y, Float:Z, string[128];
  739. GetPlayerPos(playerc, X, Y ,Z);
  740. SetPlayerPos(playerb, X, Y, Z);
  741. format(string, sizeof(string), "You have teleported %s to %s.", RPN(playerb), RPN(playerc));
  742. SendClientMessage(playerid, COLOR_RED, string);
  743. format(string, sizeof(string), "Administrator %s has teleported you to %s.", RPN(playerid), RPN(playerc));
  744. SendClientMessage(playerb, COLOR_RED, string);
  745. format(string, sizeof(string), "Administrator %s has teleported %s to you.", RPN(playerid), RPN(playerb));
  746. SendClientMessage(playerc, COLOR_RED, string);
  747. return 1;
  748. }
  749.  
  750. CMD:gotopos(playerid, params[])
  751. {
  752. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  753. new Float:X, Float:Y, Float:Z, int;
  754. if(sscanf(params, "fffi", X, Y, Z, int)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gotopos [X] [Y] [Z] [Interior]");
  755. SetPlayerPos(playerid, X, Y, Z);
  756. SetPlayerInterior(playerid, int);
  757. SendClientMessage(playerid, COLOR_RED, "You have been teleported to chosen coordinations.");
  758. return 1;
  759. }
  760.  
  761. CMD:mark(playerid)
  762. {
  763. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  764. aVW[playerid] = GetPlayerVirtualWorld(playerid);
  765. aInt[playerid] = GetPlayerInterior(playerid);
  766. GetPlayerPos(playerid, aMark[playerid][0], aMark[playerid][1], aMark[playerid][2]);
  767. SendClientMessage(playerid, COLOR_WHITE, "You have marked a poistion, type /gotoloc mark to teleport to the position.");
  768. return 1;
  769. }
  770.  
  771. CMD:gotoloc(playerid, param[])
  772. {
  773. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  774. if(sscanf(param, "s[32]", param))
  775. {
  776. SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gotoloc [Location]");
  777. SendClientMessage(playerid, COLOR_RED, "LOCATIONS: mark | ls | warehouse1 | warehouse2 | lsair | lvair | sfair");
  778. SendClientMessage(playerid, COLOR_RED, "LOCATIONS: sf | lv | tower | saints | tune1 | tune2 | tune3 | area51");
  779. return 1;
  780. }
  781. if(!strcmp(param, "ls", true))
  782. {
  783. SetPlayerInterior(playerid, 0);
  784. SetPlayerVirtualWorld(playerid, 0);
  785. SetPlayerPos(playerid,1515.2551,-1666.3148,14.0469);
  786. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Los Santos.");
  787. return 1;
  788. }
  789. else if(!strcmp(param, "lv", true))
  790. {
  791. SetPlayerInterior(playerid, 0);
  792. SetPlayerVirtualWorld(playerid, 0);
  793. SetPlayerPos(playerid,1699.2,1435.1, 10.7);
  794. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Las Venturas.");
  795. return 1;
  796. }
  797. else if(!strcmp(param, "sf", true))
  798. {
  799. SetPlayerInterior(playerid, 0);
  800. SetPlayerVirtualWorld(playerid, 0);
  801. SetPlayerPos(playerid,-1417.0,-295.8,14.1);
  802. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to San Fierro.");
  803. return 1;
  804. }
  805. else if(!strcmp(param, "gym", true))
  806. {
  807. SetPlayerInterior(playerid, 0);
  808. SetPlayerVirtualWorld(playerid, 0);
  809. SetPlayerPos(playerid,2224.8137,-1723.4457,13.5625);
  810. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to the Gym.");
  811. return 1;
  812. }
  813. else if(!strcmp(param,"area51",true))
  814. {
  815. SetPlayerInterior(playerid, 0);
  816. SetPlayerVirtualWorld(playerid, 0);
  817. SetPlayerPos(playerid,202.1886,1881.4122,17.2199);
  818. SendClientMessage(playerid, COLOR_WHITE, " You have been teleported to Area 51.");
  819. return 1;
  820. }
  821. else if(!strcmp(param, "tower", true))
  822. {
  823. SetPlayerInterior(playerid, 0);
  824. SetPlayerVirtualWorld(playerid, 0);
  825. SetPlayerPos(playerid,1543.9886,-1353.7587,329.4735);
  826. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to the Star Tower.");
  827. return 1;
  828. }
  829. else if(!strcmp(param, "saints", true))
  830. {
  831. SetPlayerInterior(playerid, 0);
  832. SetPlayerVirtualWorld(playerid, 0);
  833. SetPlayerPos(playerid,1188.8627,-1330.2386,13.5606);
  834. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to All Saints Hospital.");
  835. return 1;
  836. }
  837. else if(!strcmp(param, "tune1", true))
  838. {
  839. SetPlayerInterior(playerid, 0);
  840. SetPlayerVirtualWorld(playerid, 0);
  841. SetPlayerPos(playerid,2644.9026,-2005.4315,13.3828);
  842. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to the Lowrider Tuning Shop.");
  843. return 1;
  844. }
  845. else if(!strcmp(param, "tune2", true))
  846. {
  847. SetPlayerInterior(playerid, 0);
  848. SetPlayerVirtualWorld(playerid, 0);
  849. SetPlayerPos(playerid,1025.1035,-1039.0695,31.5661);
  850. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Los Santos Tuning Shop.");
  851. return 1;
  852. }
  853. else if(!strcmp(param, "tune3", true))
  854. {
  855. SetPlayerInterior(playerid, 0);
  856. SetPlayerVirtualWorld(playerid, 0);
  857. SetPlayerPos(playerid,-2702.4583,217.1397,4.1797);
  858. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to San Fierro Tuning Shop.");
  859. return 1;
  860. }
  861. else if(!strcmp(param, "warehouse1", true))
  862. {
  863. SetPlayerInterior(playerid, 18);
  864. SetPlayerVirtualWorld(playerid, 0);
  865. SetPlayerPos(playerid, 1295.4827, -3.2839, 1001.0273);
  866. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Warehouse number 1.");
  867. return 1;
  868. }
  869. else if(!strcmp(param, "warehouse2", true))
  870. {
  871. SetPlayerInterior(playerid, 1);
  872. SetPlayerVirtualWorld(playerid, 0);
  873. SetPlayerPos(playerid, 1403.9862, -4.2830, 1000.9119);
  874. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Warehouse number 2.");
  875. return 1;
  876. }
  877. else if(!strcmp(param, "lvair", true))
  878. {
  879. SetPlayerInterior(playerid, 0);
  880. SetPlayerVirtualWorld(playerid, 0);
  881. SetPlayerPos(playerid, 1710.6571, 1606.2566, 10.0079);
  882. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Las Venturas Airport.");
  883. return 1;
  884. }
  885. else if(!strcmp(param, "sfair", true))
  886. {
  887. SetPlayerInterior(playerid, 0);
  888. SetPlayerVirtualWorld(playerid, 0);
  889. SetPlayerPos(playerid, -1542.4409, -427.0865, 5.8583);
  890. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to San Fierro Airport.");
  891. return 1;
  892. }
  893. else if(!strcmp(param, "lsair", true))
  894. {
  895. SetPlayerInterior(playerid, 0);
  896. SetPlayerVirtualWorld(playerid, 0);
  897. SetPlayerPos(playerid, 1962.2931, -2189.9172, 13.5469);
  898. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to Los Santos Airport.");
  899. return 1;
  900. }
  901. else if(!strcmp(param, "mark", true))
  902. {
  903. if(!aMark[playerid][0] && !aMark[playerid][1] && !aMark[playerid][2]) return SendClientMessage(playerid, COLOR_WHITE, " You have to mark a position before teleporting.");
  904. SetPlayerInterior(playerid, aInt[playerid]);
  905. SetPlayerVirtualWorld(playerid, aVW[playerid]);
  906. SetPlayerPos(playerid, aMark[playerid][0], aMark[playerid][1], aMark[playerid][2]);
  907. SendClientMessage(playerid, COLOR_WHITE, " You have teleported to your marked position.");
  908. return 1;
  909. }
  910. return 1;
  911. }
  912. // Chat related commands
  913. CMD:a(playerid, param[])
  914. {
  915. if(!aInfo[playerid][aLevel]) return NoAuth(playerid);
  916. if(sscanf(param, "s[128]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /a [Text]");
  917. new string[180];
  918. if(!AdminLock || (ACPerm[playerid] || aInfo[playerid][aLevel] > 4))
  919. {
  920. format(string, sizeof(string), "%s %s: %s", RPARN(playerid), RPN(playerid), param);
  921. SendAMessage(1, string);
  922. Log("logs/achat.log", string);
  923. return 1;
  924. }
  925. else return SendClientMessage(playerid, COLOR_WHITE, "The Admin Chat is locked now.");
  926. }
  927.  
  928. CMD:togadmin(playerid)
  929. {
  930. if(!aInfo[playerid][aLevel]) return NoAuth(playerid);
  931. if(AdminChat[playerid])
  932. {
  933. AdminChat[playerid] = 0;
  934. SendClientMessage(playerid, COLOR_RED, "You have toggled OFF the Admin Chat.");
  935. }
  936. else
  937. {
  938. AdminChat[playerid] = 1;
  939. SendClientMessage(playerid, COLOR_RED, "You have toggled ON the Admin Chat.");
  940. }
  941. return 1;
  942. }
  943.  
  944. CMD:fakechat(playerid, params[])
  945. {
  946. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  947. new playerb;
  948. if(sscanf(params, "us[128]", params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /fakechat [playerid] [text]");
  949. if(!IsPlayerConnected(playerb) || playerid == playerb) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  950. SendPlayerMessageToAll(playerb, params);
  951. new log[128];
  952. format(log, sizeof(log), "%s sent a fake message from %s: %s", RPN(playerid), RPN(playerb), params);
  953. Log("logs/fakechat.log", log);
  954. return 1;
  955. }
  956.  
  957. CMD:asay(playerid, param[])
  958. {
  959. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  960. if(sscanf(param, "s[128]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /asay [Text]");
  961. new string[128];
  962. format(string, sizeof(string), "%s %s says: %s", RPARN(playerid), RPN(playerid), param);
  963. SendClientMessageToAll(COLOR_RED, string);
  964. return 1;
  965. }
  966.  
  967. CMD:cc(playerid)
  968. {
  969. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  970. new string[80];
  971. foreach(new i : Player)
  972. {
  973. if(!aInfo[i][aLevel])
  974. {
  975. for(new j = 0; j<25; j++) SendClientMessage(i, -1, "");
  976. }
  977. }
  978. format(string, sizeof(string), "%s %s has cleared the chat.", RPARN(playerid), RPN(playerid));
  979. SendClientMessageToAll(COLOR_RED, string);
  980. return 1;
  981. }
  982.  
  983. CMD:mute(playerid, params[])
  984. {
  985. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  986. new playerb, time;
  987. if(sscanf(params, "uds[128]", playerb, time, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mute [playerid] [minutes] [reason]");
  988. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  989. if(aInfo[playerb][aLevel] > aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You cannot mute higher level Administrators.");
  990. if(!time) return SendClientMessage(playerid, COLOR_WHITE, "Time should be higher than 0.");
  991. Muted[playerb] = 1;
  992. MuteTimer[playerb] = SetTimerEx("Mute", time * 60000, false, "i", playerb);
  993. new string[128];
  994. format(string, sizeof(string), "AdmCmd: %s %s has muted %s for %d minutes, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), time, params);
  995. SendClientMessageToAll(COLOR_RED, string);
  996. Log("logs/mute.log", string);
  997. return 1;
  998. }
  999.  
  1000. CMD:unmute(playerid, param[])
  1001. {
  1002. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1003. new playerb;
  1004. if(sscanf(param, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unmute [playerid]");
  1005. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1006. if(!Muted[playerb]) return SendClientMessage(playerid, COLOR_WHITE, "This player is not muted.");
  1007. Muted[playerb] = 0;
  1008. KillTimer(MuteTimer[playerb]);
  1009. new string[80];
  1010. format(string, sizeof(string), "You have been unmuted by %s %s.", RPARN(playerid), RPN(playerid));
  1011. SendClientMessage(playerb, COLOR_RED, string);
  1012. format(string, sizeof(string), "AdmCmd: %s %s has unmuted %s.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1013. SendAMessage(1, string);
  1014. Log("logs/mute.log", string);
  1015. return 1;
  1016. }
  1017.  
  1018. CMD:lockchat(playerid)
  1019. {
  1020. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1021. if(!ChatLock)
  1022. {
  1023. ChatLock = 1;
  1024. new string[80];
  1025. format(string, sizeof(string), "%s %s has locked the chat.", RPARN(playerid), RPN(playerid));
  1026. SendClientMessageToAll(COLOR_RED, string);
  1027. Log("logs/chat.log", string);
  1028. return 1;
  1029. }
  1030. else
  1031. {
  1032. ChatLock = 0;
  1033. new string[80];
  1034. format(string, sizeof(string), "%s %s has unlocked the chat.", RPARN(playerid), RPN(playerid));
  1035. SendClientMessageToAll(COLOR_RED, string);
  1036. Log("logs/chat.log", string);
  1037. return 1;
  1038. }
  1039. }
  1040.  
  1041. CMD:allowchat(playerid, param[])
  1042. {
  1043. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1044. if(!ChatLock) return SendClientMessage(playerid, COLOR_WHITE, "The chat is not locked.");
  1045. new playerb;
  1046. if(sscanf(param, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /allowchat [playerid]");
  1047. if(!IsPlayerConnected(playerid) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1048. if(aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "Admins have chat permission by default.");
  1049. if(!CPerm[playerb])
  1050. {
  1051. CPerm[playerb] = 1;
  1052. new string[80];
  1053. format(string, sizeof(string), "%s %s has allowed %s to chat.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1054. SendClientMessageToAll(COLOR_RED, string);
  1055. Log("logs/chat.log", string);
  1056. return 1;
  1057. }
  1058. else
  1059. {
  1060. CPerm[playerb] = 0;
  1061. new string[128];
  1062. format(string, sizeof(string), "%s %s has revoked %s's permission to chat.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1063. SendClientMessageToAll(COLOR_RED, string);
  1064. Log("logs/chat.log", string);
  1065. return 1;
  1066. }
  1067. }
  1068.  
  1069. CMD:lockadmin(playerid)
  1070. {
  1071. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  1072. if(!AdminLock)
  1073. {
  1074. AdminLock = 1;
  1075. new string[80];
  1076. format(string, sizeof(string), "%s %s has locked the Admin Chat.", RPARN(playerid), RPN(playerid));
  1077. SendAMessage(1, string);
  1078. Log("logs/achat.log", string);
  1079. return 1;
  1080. }
  1081. else
  1082. {
  1083. AdminLock = 0;
  1084. new string[80];
  1085. format(string, sizeof(string), "%s %s has unlocked the Admin Chat.", RPARN(playerid), RPN(playerid));
  1086. SendAMessage(1, string);
  1087. Log("logs/achat.log", string);
  1088. return 1;
  1089. }
  1090. }
  1091.  
  1092. CMD:allowadmin(playerid, param[])
  1093. {
  1094. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  1095. if(!AdminLock) return SendClientMessage(playerid, COLOR_WHITE, "The Admin Chat is not locked.");
  1096. new playerb;
  1097. if(sscanf(param, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /allowadmin [playerid]");
  1098. if(!IsPlayerConnected(playerid) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1099. if(aInfo[playerb][aLevel] > 4) return SendClientMessage(playerid, COLOR_WHITE, "This player has an Admin Chat permission by default.");
  1100. if(!ACPerm[playerb])
  1101. {
  1102. ACPerm[playerb] = 1;
  1103. new string[100];
  1104. format(string, sizeof(string), "%s %s has allowed %s to chat in the Admin Chat.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1105. SendAMessage(1, string);
  1106. Log("logs/achat.log", string);
  1107. return 1;
  1108. }
  1109. else
  1110. {
  1111. ACPerm[playerb] = 0;
  1112. new string[128];
  1113. format(string, sizeof(string), "%s %s has revoked %s's permission to chat in the Admin Chat.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1114. SendAMessage(1, string);
  1115. Log("logs/achat.log", string);
  1116. return 1;
  1117. }
  1118. }
  1119.  
  1120. CMD:report(playerid, param[])
  1121. {
  1122. if(aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "Administrators cannot report.");
  1123. if(RMute[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "You are currently muted from sending reports.");
  1124. if(Reported[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "You have to wait 20 seconds between reports.");
  1125. if(sscanf(param, "s[128]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /report [Text]");
  1126. Reported[playerid] = 1;
  1127. ReportTimer[playerid] = SetTimerEx("Report", 20000, false, "i", playerid);
  1128. new string[200];
  1129. format(string, sizeof(string), "Report from %s: %s.", RPN(playerid), param);
  1130. SendAMessage(1, string);
  1131. Log("logs/reports.log", string);
  1132. SendClientMessage(playerid, COLOR_REPORT, "You have sent a report to the admins, an admin will handle it as soon as possible.");
  1133. return 1;
  1134. }
  1135.  
  1136. CMD:rmute(playerid, params[])
  1137. {
  1138. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1139. new playerb, time;
  1140. if(sscanf(params, "uis[80]", playerb, time, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /rmute [playerid] [minutes] [reason]");
  1141. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1142. if(aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You cannot mute Administrators from reporting.");
  1143. if(!time) return SendClientMessage(playerid, COLOR_WHITE, "Time should be higher than 0.");
  1144. RMute[playerb] = 1;
  1145. RMuteTimer[playerb] = SetTimerEx("RMuted", time * 60000, false, "i", playerb);
  1146. new string[600];
  1147. format(string, sizeof(string), "%s %s has muted you from sending reports for %d minutes, Reason: %s", RPARN(playerid), RPN(playerid), time, params);
  1148. SendClientMessage(playerb, COLOR_REPORT, string);
  1149. format(string, sizeof(string), "%s %s has muted %s from sending reports for %d minutes, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), time, params);
  1150. SendAMessage(1, string);
  1151. Log("logs/mute.log", string);
  1152. return 1;
  1153. }
  1154. // Player punishment related commands
  1155. CMD:slap(playerid, params[])
  1156. {
  1157. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1158. new playerb;
  1159. if(sscanf(params, "us[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /slap [playerid] [reason]");
  1160. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1161. if(aInfo[playerid][aLevel] < aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't slap higher level Administrators.");
  1162. new Float:x, Float:y, Float:z;
  1163. GetPlayerPos(playerb, x, y, z);
  1164. SetPlayerPos(playerb, x, y, z+10);
  1165. new string[128];
  1166. format(string, sizeof(string), "%s %s has slapped %s for: %s", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1167. SendClientMessageToAll(COLOR_RED, string);
  1168. Log("logs/slap.log", string);
  1169. return 1;
  1170. }
  1171.  
  1172. CMD:slapall(playerid, params[])
  1173. {
  1174. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1175. if(sscanf(params, "s[128]", params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /slapall [reason]");
  1176. new Float:x, Float:y, Float:z;
  1177. foreach(new i : Player)
  1178. {
  1179. if(IsPlayerConnected(i) && i != playerid)
  1180. {
  1181. GetPlayerPos(i, x, y, z);
  1182. SetPlayerPos(i, x, y, z+10);
  1183. }
  1184. }
  1185. new string[128];
  1186. format(string, sizeof(string), "%s %s has slapped everyone for: %s", RPARN(playerid), RPN(playerid), params);
  1187. SendClientMessageToAll(COLOR_RED, string);
  1188. Log("logs/slapall.log", string);
  1189. return 1;
  1190. }
  1191.  
  1192. CMD:blow(playerid, params[])
  1193. {
  1194. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1195. new playerb;
  1196. if(sscanf(params, "us[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /blow [playerid] [reason]");
  1197. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1198. if(aInfo[playerid][aLevel] < aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't blow higher level Administrators.");
  1199. new Float:x, Float:y, Float:z;
  1200. GetPlayerPos(playerid, x, y, z);
  1201. CreateExplosion(x, y, z, 0, 10);
  1202. new string[128];
  1203. format(string, sizeof(string), "%s %s has blwon you for: %s", RPARN(playerid), RPN(playerid), params);
  1204. SendClientMessage(playerb, COLOR_RED, string);
  1205. format(string, sizeof(string), "%s %s has blown %s for: %s.", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1206. SendAMessage(1, string);
  1207. Log("logs/blow.log", string);
  1208. return 1;
  1209. }
  1210.  
  1211. CMD:blowall(playerid, params[])
  1212. {
  1213. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1214. if(sscanf(params, "s[128]", params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /blowall [reason]");
  1215. new Float:x, Float:y, Float:z;
  1216. foreach(new i : Player)
  1217. {
  1218. if(IsPlayerConnected(i) && i != playerid)
  1219. {
  1220. GetPlayerPos(i, x, y, z);
  1221. CreateExplosion(x, y, z, 0, 10);
  1222. }
  1223. }
  1224. new string[128];
  1225. format(string, sizeof(string), "%s %s has blown everyone up for: %s", RPARN(playerid), RPN(playerid), params);
  1226. SendClientMessageToAll(COLOR_RED, string);
  1227. Log("logs/blow.log", string);
  1228. return 1;
  1229. }
  1230.  
  1231. CMD:kick(playerid, params[])
  1232. {
  1233. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1234. new playerb;
  1235. if(sscanf(params, "us[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [playerid] [reason]");
  1236. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1237. if(aInfo[playerb][aLevel] > aInfo[playerid][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't kick higher level Administrators.");
  1238. new string[248];
  1239. format(string, sizeof(string), "%s %s has kicked %s out of the server, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1240. SendClientMessageToAll(COLOR_RED, string);
  1241. SetTimerEx("DelayedKick", 100, 0, "i", playerb);
  1242. Log("logs/kicks.log", string);
  1243. return 1;
  1244. }
  1245.  
  1246. CMD:kickall(playerid, param[])
  1247. {
  1248. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1249. if(sscanf(param, "s[80]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kickall [reason]");
  1250. new string[128];
  1251. format(string, sizeof(string), "AdmCmd: %s %s has kicked everyone out of the server, Reason: %s", RPARN(playerid), RPN(playerid), param);
  1252. foreach(new i : Player)
  1253. {
  1254. if(i != playerid)
  1255. {
  1256. SendClientMessage(i, COLOR_RED, string);
  1257. SetTimerEx("DelayedKick", 100, 0, "i", i);
  1258. }
  1259. }
  1260. return 1;
  1261. }
  1262.  
  1263. CMD:kill(playerid, params[])
  1264. {
  1265. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1266. new playerb;
  1267. if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kill [playerid]");
  1268. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1269. SetPlayerHealth(playerb, 0.00);
  1270. new string[80];
  1271. format(string, sizeof(string), "%s %s has killed you.", RPARN(playerid), RPN(playerid));
  1272. SendClientMessage(playerb, COLOR_RED, string);
  1273. format(string, sizeof(string), "%s %s has killed %s.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1274. SendAMessage(1, string);
  1275. Log("logs/kill.log", string);
  1276. return 1;
  1277. }
  1278.  
  1279. CMD:killall(playerid, params[])
  1280. {
  1281. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  1282. foreach(new i : Player)
  1283. {
  1284. if(IsPlayerConnected(i)) SetPlayerHealth(i, 0.00);
  1285. }
  1286. new string[80];
  1287. format(string, sizeof(string), "%s %s has killed everyone.", RPARN(playerid), RPN(playerid));
  1288. SendClientMessageToAll(COLOR_RED, string);
  1289. Log("logs/kill.log", string);
  1290. return 1;
  1291. }
  1292.  
  1293. CMD:jail(playerid, params[])
  1294. {
  1295. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1296. new playerb, time;
  1297. if(sscanf(params, "uds[128]", playerb, time, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /jail [playerid] [minutes] [reason]");
  1298. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1299. if(aInfo[playerid][aLevel] < aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't jail higher level Administrators.");
  1300. if(!time) return SendClientMessage(playerid, COLOR_WHITE, "Time should be higher than 0.");
  1301. new string[248], rc;
  1302. format(string, sizeof(string), "%s %s has jailed %s for %d minutes, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), time, params);
  1303. SendClientMessageToAll(COLOR_RED, string);
  1304. rc = random(sizeof(CellPos));
  1305. SetPlayerInterior(playerb, 6);
  1306. SetPlayerPos(playerb, CellPos[rc][0], CellPos[rc][1], CellPos[rc][2]);
  1307. SetPlayerVirtualWorld(playerb, playerid);
  1308. Jailed[playerb] = 1;
  1309. JTimer[playerb] = SetTimerEx("Jail", time * 60000, 0, "i", playerb);
  1310. Log("logs/jails.log", string);
  1311. return 1;
  1312. }
  1313.  
  1314. CMD:release(playerid, params[])
  1315. {
  1316. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1317. new playerb;
  1318. if(sscanf(params, "us[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /release [playerid] [reason]");
  1319. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1320. if(!Jailed[playerb]) return SendClientMessage(playerid, COLOR_WHITE, "This player is not prisoned.");
  1321. SetPlayerInterior(playerb, 0);
  1322. SetPlayerVirtualWorld(playerb, 0);
  1323. SetPlayerPos(playerb, 1515.2551, -1666.3148, 14.0469);
  1324. new string[248];
  1325. format(string, sizeof(string), "%s %s has released %s from the prison, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1326. SendClientMessageToAll(COLOR_RED, string);
  1327. Log("logs/jails.log", string);
  1328. return 1;
  1329. }
  1330.  
  1331. CMD:ban(playerid, params[])
  1332. {
  1333. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1334. new playerb;
  1335. if(sscanf(params, "us[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ban [playerid] [reason]");
  1336. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1337. if(aInfo[playerb][aLevel] && aInfo[playerid][aLevel] < 5) return SendClientMessage(playerid, COLOR_WHITE, "Only Elite Administrators or above are allowed to ban Administrators.");
  1338. if(aInfo[playerid][aLevel] < aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't ban higher level Administrators.");
  1339. new string[248], File:file = fopen("bans.cfg", io_append);
  1340. format(string, sizeof(string), "%s %s has banned %s from the server, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1341. SendClientMessageToAll(COLOR_RED, string);
  1342. Log("logs/bans.log", string);
  1343. new date[3];
  1344. getdate(date[0], date[1], date[2]);
  1345. format(string, sizeof(string), "%s|%s|%s|%s|%i|%i|%i\r\n", RPN(playerb), RPIP(playerb), RPN(playerid), params, date[2], date[1], date[0]);
  1346. fwrite(file, string);
  1347. fclose(file);
  1348. SetTimerEx("DelayedKick", 100, 0, "i", playerb);
  1349. return 1;
  1350. }
  1351.  
  1352. CMD:banaccount(playerid, params[])
  1353. {
  1354. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1355. new name[MAX_PLAYER_NAME];
  1356. if(sscanf(params, "s[24]s[128]", name, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /banaccount [Username] [Reason]");
  1357. new File:file = fopen("bans.cfg", io_read), buf[128];
  1358. while(fread(file, buf, sizeof(buf))) if(strfind(buf, name, false) != -1) return SendClientMessage(playerid, COLOR_WHITE, "This username is already banned.");
  1359. fclose(file);
  1360. new Cache:result, query[128];
  1361. mysql_format(mysql, query, sizeof(query), "SELECT `AdminLevel`, `IP` from `Admins` WHERE `Username`='%e'", name);
  1362. result = mysql_query(mysql, query);
  1363. if(cache_get_row_count(mysql))
  1364. {
  1365. new adminlevel, aip[16], string[400];
  1366. adminlevel = cache_get_row_int(0, 0, mysql);
  1367. cache_get_row(0, 1, aip, mysql, 16);
  1368. if(aInfo[playerid][aLevel] < 5) SendClientMessage(playerid, COLOR_WHITE, "This username is registered to an Administrator, You have to be Elite Admin or above to ban him.");
  1369. else if(adminlevel > aInfo[playerid][aLevel])
  1370. {
  1371. format(string ,sizeof(string), "This username is registered as %d level Administrator, you can't ban him.", adminlevel);
  1372. SendClientMessage(playerid, COLOR_WHITE, string);
  1373. }
  1374. else
  1375. {
  1376. format(string, sizeof(string), "%s %s has banned %s, Reason: %s", RPARN(playerid), RPN(playerid), name, params);
  1377. SendAMessage(1, string);
  1378. Log("logs/bans.log", string);
  1379. file = fopen("bans.cfg", io_append);
  1380. new date[3];
  1381. getdate(date[0], date[1], date[2]);
  1382. format(string, sizeof(string), "%s|%s|%s|%i|%i|%i\r\n", name, RPN(playerid), params, date[2], date[1], date[0]);
  1383. fwrite(file, string);
  1384. fclose(file);
  1385. }
  1386. cache_delete(result);
  1387. return 1;
  1388. }
  1389. else
  1390. {
  1391. new string[248];
  1392. format(string, sizeof(string), "%s %s has banned %s, Reason: %s", RPARN(playerid), RPN(playerid), name, params);
  1393. SendAMessage(1, string);
  1394. Log("logs/bans.log", string);
  1395. file = fopen("bans.cfg", io_append);
  1396. new date[3];
  1397. getdate(date[0], date[1], date[2]);
  1398. format(string, sizeof(string), "%s|%s|%s|%i|%i|%i\r\n", name, RPN(playerid), params, date[2], date[1], date[0]);
  1399. fwrite(file, string);
  1400. fclose(file);
  1401. cache_delete(result);
  1402. return 1;
  1403. }
  1404. }
  1405.  
  1406. CMD:banip(playerid, params[])
  1407. {
  1408. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1409. new ip[16];
  1410. if(sscanf(params, "s[16]s[128]", ip, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /banip [IP] [reason]");
  1411. if(!IsIP(ip)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid IP Address.");
  1412. if(RIPID(ip) != -1)
  1413. {
  1414. new string[248];
  1415. format(string, sizeof(string), "This IP is connected to the server using the name %s (ID: %d), use /ban instead.", RPN(RIPID(ip)), RIPID(ip));
  1416. SendClientMessage(playerid, COLOR_WHITE, string);
  1417. return 1;
  1418. }
  1419. new File:file = fopen("bans.cfg", io_read), buf[128];
  1420. while(fread(file, buf, sizeof(buf))) if(strfind(buf, ip, false) != -1) return SendClientMessage(playerid, COLOR_WHITE, "This IP Address is already banned.");
  1421. fclose(file);
  1422. new Cache:result, query[128];
  1423. mysql_format(mysql, query, sizeof(query), "SELECT `AdminLevel`, `Username` from `Admins` WHERE `IP`='%e'", ip);
  1424. result = mysql_query(mysql, query);
  1425. if(cache_get_row_count(mysql))
  1426. {
  1427. new adminlevel, aname[MAX_PLAYER_NAME], string[400];
  1428. adminlevel = cache_get_row_int(0, 0, mysql);
  1429. cache_get_row(0, 1, aname, mysql, sizeof(aname));
  1430. if(aInfo[playerid][aLevel] < 5) SendClientMessage(playerid, COLOR_WHITE, "This IP is registered to an Administrator, You have to be Elite Admin or above to ban him.");
  1431. else if(adminlevel > aInfo[playerid][aLevel])
  1432. {
  1433. format(string ,sizeof(string), "This IP is registered to %s, who is a %d level Administrator, you can't ban him.", aname, adminlevel);
  1434. SendClientMessage(playerid, COLOR_WHITE, string);
  1435. }
  1436. else
  1437. {
  1438. format(string, sizeof(string), "%s %s has banned IP Address %s (Registered to %s), Reason: %s", RPARN(playerid), RPN(playerid), ip, aname, params);
  1439. SendAMessage(1, string);
  1440. Log("logs/bans.log", string);
  1441. file = fopen("bans.cfg", io_append);
  1442. new date[3];
  1443. getdate(date[0], date[1], date[2]);
  1444. format(string, sizeof(string), "%s|%s|%s|%i|%i|%i\r\n", ip, RPN(playerid), params, date[2], date[1], date[0]);
  1445. fwrite(file, string);
  1446. fclose(file);
  1447. }
  1448. cache_delete(result);
  1449. return 1;
  1450. }
  1451. else
  1452. {
  1453. new string[248], date[3];
  1454. format(string, sizeof(string), "%s %s has banned IP Address %s, Reason: %s", RPARN(playerid), RPN(playerid), ip, params);
  1455. SendAMessage(1, string);
  1456. Log("logs/bans.log", string);
  1457. file = fopen("bans.cfg", io_append);
  1458. getdate(date[0], date[1], date[2]);
  1459. format(string, sizeof(string), "%s|%s|%s|%i|%i|%i\r\n", ip, RPN(playerid), params, date[2], date[1], date[0]);
  1460. fwrite(file, string);
  1461. fclose(file);
  1462. cache_delete(result);
  1463. return 1;
  1464. }
  1465. }
  1466.  
  1467. CMD:unban(playerid, param[])
  1468. {
  1469. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1470. if(sscanf(param, "s[24]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unban [Username]");
  1471. new File:file = fopen("bans.cfg", io_read), buf[128], idx = 1;
  1472. while(fread(file, buf))
  1473. {
  1474. if(strfind(buf, param, false) != -1)
  1475. {
  1476. new string[128];
  1477. format(string, sizeof(string), "%s %s has unbanned %s from the server.", RPARN(playerid), RPN(playerid), param);
  1478. SendAMessage(1, string);
  1479. Log("logs/unban.log", string);
  1480. fdeleteline("bans.cfg", idx);
  1481. fclose(file);
  1482. return 1;
  1483. }
  1484. else idx++;
  1485. }
  1486. fclose(file);
  1487. return SendClientMessage(playerid, COLOR_WHITE, "Username is not banned.");
  1488. }
  1489.  
  1490. CMD:unbanip(playerid, param[])
  1491. {
  1492. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1493. if(sscanf(param, "s[16]", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unbanip [IP]");
  1494. if(!IsIP(param)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid IP Address.");
  1495. new File:file = fopen("bans.cfg", io_read), idx = 1, buf[128];
  1496. while(fread(file, buf))
  1497. {
  1498. if(strfind(buf, param, true) != -1)
  1499. {
  1500. new string[128];
  1501. format(string, sizeof(string), "%s %s has unbanned %s from the server.", RPARN(playerid), RPN(playerid), param);
  1502. SendAMessage(1, string);
  1503. Log("logs/unban.log", string);
  1504. fdeleteline("bans.cfg", idx);
  1505. fclose(file);
  1506. return 1;
  1507. }
  1508. idx++;
  1509. }
  1510. fclose(file);
  1511. return SendClientMessage(playerid, COLOR_WHITE, "IP Address is not banned.");
  1512. }
  1513.  
  1514. CMD:clearbans(playerid)
  1515. {
  1516. if(!IsAuth(playerid, 6)) return NoAuth(playerid);
  1517. new File:file = fopen("bans.cfg", io_write);
  1518. fclose(file);
  1519. file = fopen("bans.cfg");
  1520. fclose(file);
  1521. new string[128];
  1522. format(string, sizeof(string), "AdmCmd: %s %s has cleared the ban list, therefore, everyone has been unbanned.", RPARN(playerid), RPN(playerid));
  1523. Log("unban.log", string);
  1524. SendAMessage(1, string);
  1525. return 1;
  1526. }
  1527.  
  1528. CMD:fine(playerid, params[])
  1529. {
  1530. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1531. new playerb, fine;
  1532. if(sscanf(params, "uis[128]", playerb, fine, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /fine [playerid] [amount] [reason]");
  1533. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1534. if(fine < 1) return SendClientMessage(playerid, COLOR_WHITE, "Fine amount has to be higher than 0.");
  1535. GivePlayerMoney(playerid, -fine);
  1536. new string[128];
  1537. format(string, sizeof(string), "%s %s has fined %s for $%i, Reason: %s", RPARN(playerid), RPN(playerid), RPN(playerb), fine, params);
  1538. SendClientMessageToAll(COLOR_RED, string);
  1539. Log("logs/fine.log", string);
  1540. return 1;
  1541. }
  1542.  
  1543. CMD:pfine(playerid, params[])
  1544. {
  1545. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1546. new playerb, fine;
  1547. if(sscanf(params, "uis[128]", playerb, fine, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /pfine [playerid] [percentage] [reason]");
  1548. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1549. if(fine < 1) return SendClientMessage(playerid, COLOR_WHITE, "Fine percentage has to be higher than 0.");
  1550. new money = (GetPlayerMoney(playerid) * fine) / 100;
  1551. GivePlayerMoney(playerid, -money);
  1552. new string[128];
  1553. format(string, sizeof(string), "%s %s has fined %i percent off %s's money, Reason: %s", RPARN(playerid), RPN(playerid), fine, RPN(playerb), params);
  1554. SendClientMessageToAll(COLOR_RED, string);
  1555. Log("logs/fine.log", string);
  1556. return 1;
  1557. }
  1558.  
  1559. CMD:warn(playerid, params[])
  1560. {
  1561. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1562. new playerb;
  1563. if(sscanf(params, "is[128]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /warn [playerid] [reason]");
  1564. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1565. if(aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "Administrators cannot be warned.");
  1566. if(Warns[playerb] == 2)
  1567. {
  1568. new string[128];
  1569. format(string, sizeof(string), "AdmCmd: %s %s has banned %s, Reason: %s (3 Warns)", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  1570. SendClientMessageToAll(COLOR_RED, string);
  1571. Log("logs/warns.log", string);
  1572. Log("logs/bans.log", string);
  1573. new date[3];
  1574. getdate(date[0], date[1], date[2]);
  1575. format(params, 128, "%s (3 Warns)", params);
  1576. format(string, sizeof(string), "%s|%s|%s|%s|%i|%i|%i\r\n", RPN(playerb), RPIP(playerb), RPN(playerid), params, date[2], date[1], date[0]);
  1577. new File:file = fopen("bans.cfg", io_append);
  1578. fwrite(file, string);
  1579. fclose(file);
  1580. SetTimerEx("DelayedKick", 100, 0, "i", playerb);
  1581. }
  1582. else
  1583. {
  1584. new string[128];
  1585. Warns[playerb]++;
  1586. format(string, sizeof(string), "%s %s has warned %s, Reason: %s. (%d Warns)", RPARN(playerid), RPN(playerid), RPN(playerb), Warns[playerb]);
  1587. SendClientMessageToAll(COLOR_RED, string);
  1588. Log("logs/warns.log", string);
  1589. return 1;
  1590. }
  1591. return 1;
  1592. }
  1593.  
  1594. CMD:unwarn(playerid, params[])
  1595. {
  1596. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1597. new playerb, warns;
  1598. if(sscanf(params, "iis[128]", playerb, warns, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unwarn [playerid] [amount] [reason]");
  1599. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1600. if(!Warns[playerb]) return SendClientMessage(playerid, COLOR_WHITE, "This player is not warned at all.");
  1601. if(!warns) return SendClientMessage(playerid, COLOR_WHITE, "Amount of warns has to be higher than 0.");
  1602. if(Warns[playerb] - warns < 0) return SendClientMessage(playerid, COLOR_WHITE, "Invalid amount.");
  1603. Warns[playerb] -= warns;
  1604. new string[128];
  1605. format(string, sizeof(string), "%s %s has deleted %d warns off %s, Reason: %s.", RPN(playerid), RPN(playerid), warns, RPN(playerb), params);
  1606. SendClientMessageToAll(COLOR_RED, string);
  1607. return 1;
  1608. }
  1609. // Vehicle related commands
  1610. CMD:getveh(playerid, params[])
  1611. {
  1612. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1613. new vehicleid;
  1614. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /getveh [vehicleid]");
  1615. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1616. new Float:x, Float:y, Float:z;
  1617. GetPlayerPos(playerid, x, y, z);
  1618. LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
  1619. SetVehiclePos(vehicleid, x+1.0, y, z);
  1620. SendClientMessage(playerid, COLOR_RED, "You have teleported the requested vehicle to you.");
  1621. return 1;
  1622. }
  1623.  
  1624. CMD:gotoveh(playerid, params[])
  1625. {
  1626. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1627. new vehicleid;
  1628. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gotoveh [vehicleid]");
  1629. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1630. new Float:x, Float:y, Float:z;
  1631. GetVehiclePos(vehicleid, x, y, z);
  1632. SetPlayerPos(playerid, x+1.0, y, z);
  1633. SendClientMessage(playerid, COLOR_RED, "You have teleported to the requested vehicle.");
  1634. return 1;
  1635. }
  1636.  
  1637. CMD:vehnitro(playerid, params[])
  1638. {
  1639. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1640. new vehicleid;
  1641. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /vehnitro [vehicleid]");
  1642. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1643. if(IsBike(vehicleid) || IsPlane(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "You cannot add NOS to this type of vehicle.");
  1644. new component = GetVehicleComponentInSlot(vehicleid, 5);
  1645. if(component != 1010)
  1646. {
  1647. AddVehicleComponent(vehicleid, 1010);
  1648. SendClientMessage(playerid, COLOR_RED, "You have added a 10x NOS canister to the requested vehicle.");
  1649. return 1;
  1650. }
  1651. else
  1652. {
  1653. RemoveVehicleComponent(vehicleid, 1010);
  1654. SendClientMessage(playerid, COLOR_RED, "You have removed the NOS canister from the requested vehicle.");
  1655. return 1;
  1656. }
  1657. }
  1658.  
  1659. CMD:vehhyd(playerid, params[])
  1660. {
  1661. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1662. new vehicleid;
  1663. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /vehhyd [vehicleid]");
  1664. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1665. if(IsBike(vehicleid) || IsPlane(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "You cannot add Hydraulics to this type of vehicle.");
  1666. new component = GetVehicleComponentInSlot(vehicleid, 9);
  1667. if(component != 1087)
  1668. {
  1669. AddVehicleComponent(vehicleid, 1087);
  1670. SendClientMessage(playerid, COLOR_RED, "You have added Hydraulics to the requested vehicle.");
  1671. return 1;
  1672. }
  1673. else
  1674. {
  1675. RemoveVehicleComponent(vehicleid, 1087);
  1676. SendClientMessage(playerid, COLOR_RED, "You have removed the Hydraulics from the requested vehicle.");
  1677. return 1;
  1678. }
  1679. }
  1680.  
  1681. CMD:vehcolor(playerid, params[])
  1682. {
  1683. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1684. new vehicleid, color1, color2;
  1685. if(sscanf(params, "iii", vehicleid, color1, color2)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /vehcolor [vehicleid] [color] [color]");
  1686. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1687. if(color1 < 0 || color1 > 255 || color2 < 0 || color2 > 255) return SendClientMessage(playerid, COLOR_WHITE, "Vehicle colors are between 0 to 255.");
  1688. ChangeVehicleColor(vehicleid, color1, color2);
  1689. SendClientMessage(playerid, COLOR_RED, "You have changed the color of the requested vehicle.");
  1690. return 1;
  1691. }
  1692.  
  1693. CMD:vehpj(playerid, params[])
  1694. {
  1695. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1696. new vehicleid, pj;
  1697. if(sscanf(params, "ii", vehicleid, pj))
  1698. {
  1699. SendClientMessage(playerid, COLOR_WHITE, "USAGE: /vehpj [vehicleid] [paintjob]");
  1700. SendClientMessage(playerid, COLOR_WHITE, "To remove a paintjob, type 3 under paintjob.");
  1701. return 1;
  1702. }
  1703. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1704. if(IsBike(vehicleid) || IsPlane(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "You cannot add a paintjob to this type of vehicle.");
  1705. new model = GetVehicleModel(vehicleid);
  1706. if(model != 483 && model != 534 && model != 535 && model != 536 && model != 558 && model != 559 && model != 560 && model != 561 && model != 562 && model != 565 && model != 567 && model != 575 && model != 576) return SendClientMessage(playerid, COLOR_WHITE, "You cannot add a paintjob to this type of vehicle.");
  1707. if(pj < 0 || pj > 3) return SendClientMessage(playerid, COLOR_WHITE, "Invalid paintjob ID.");
  1708. ChangeVehiclePaintjob(vehicleid, pj);
  1709. SendClientMessage(playerid, COLOR_RED, "You have changed the paintjob of the requested vehicle.");
  1710. return 1;
  1711. }
  1712.  
  1713. CMD:respawnveh(playerid, params[])
  1714. {
  1715. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1716. if(!strcmp(params, "all", true))
  1717. {
  1718. for(new i = 0, j = GetVehiclePoolSize() + 1; i < j; i++)
  1719. {
  1720. if(IsVehicleEmpty(i)) SetVehicleToRespawn(i);
  1721. }
  1722. new string[128];
  1723. format(string, sizeof(string), "%s %s has respawned the unused vehicles.", RPARN(playerid), RPN(playerid));
  1724. SendClientMessageToAll(COLOR_RED, string);
  1725. Log("logs/respawnall.log", string);
  1726. return 1;
  1727. }
  1728. else
  1729. {
  1730. new vehicleid = strval(params);
  1731. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /respawnveh [vehicleid/all]");
  1732. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1733. if(!IsVehicleEmpty(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "The vehicle you entered is not empty.");
  1734. SetVehicleToRespawn(vehicleid);
  1735. SendClientMessage(playerid, COLOR_RED, "You have respawned the requested vehicle.");
  1736. return 1;
  1737. }
  1738. }
  1739.  
  1740. CMD:veh(playerid, params[])
  1741. {
  1742. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1743. new model, color1, color2;
  1744. if(sscanf(params, "iii", model, color1, color2)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /veh [modelid] [color] [color]");
  1745. if(model < 400 || model > 611) return SendClientMessage(playerid, COLOR_WHITE, "Vehicle models are between 400 to 611.");
  1746. if(color1 < 0 || color2 < 0 || color1 > 255 || color2 > 255) return SendClientMessage(playerid, COLOR_WHITE, "Vehicle colors are between 0 to 255.");
  1747. new Float:x, Float:y, Float:z, Float:a;
  1748. GetPlayerPos(playerid, x, y, z);
  1749. GetPlayerFacingAngle(playerid, a);
  1750. for(new i=0; i<MAX_CUSTOM_VEHICLES; i++)
  1751. {
  1752. if(!cVeh[i])
  1753. {
  1754. cVeh[i] = CreateVehicle(model, x, y, z, a, color1, color2, -1);
  1755. new string[128];
  1756. format(string, sizeof(string), "AdmWarn: %s %s has spawned vehicle ID %d using model %d", RPARN(playerid), RPN(playerid), cVeh[i], model);
  1757. SendAMessage(1, string);
  1758. return 1;
  1759. }
  1760. }
  1761. return SendClientMessage(playerid, COLOR_WHITE, "You have reached the max amount of created vehicles.");
  1762. }
  1763.  
  1764. CMD:destroyveh(playerid, params[])
  1765. {
  1766. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1767. if(!strcmp(params, "all", true))
  1768. {
  1769. for(new i = 0; i<MAX_CUSTOM_VEHICLES; i++)
  1770. {
  1771. if(cVeh[i]) DestroyVehicle(cVeh[i]);
  1772. }
  1773. new string[128];
  1774. format(string, sizeof(string), "AdmCmd: %s %s has destroyed all the created vehicles.", RPARN(playerid), RPN(playerid));
  1775. SendAMessage(1, string);
  1776. return 1;
  1777. }
  1778. else
  1779. {
  1780. new vehicleid;
  1781. if(sscanf(params, "i", vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /destroyveh [vehicleid/all]");
  1782. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid vehicle ID.");
  1783. for(new i = 0; i<MAX_CUSTOM_VEHICLES; i++)
  1784. {
  1785. if(cVeh[i] == vehicleid)
  1786. {
  1787. DestroyVehicle(vehicleid);
  1788. SendClientMessage(playerid, COLOR_RED, "You have destroyed the requested vehicle.");
  1789. return 1;
  1790. }
  1791. }
  1792. return SendClientMessage(playerid, COLOR_WHITE, "The requested vehicle was not created by an Administrator, and is unable to be destroyed.");
  1793. }
  1794. }
  1795. //Spectation related commands
  1796. CMD:spec(playerid, params[])
  1797. {
  1798. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1799. if(!strcmp(params, "off", true))
  1800. {
  1801. if(Specing[playerid] == -1) return SendClientMessage(playerid, COLOR_WHITE, "You are not spectating anyone.");
  1802. TogglePlayerSpectating(playerid, 0);
  1803. SendClientMessage(playerid, COLOR_RED, "You have stopped spectating.");
  1804. Spec[Specing[playerid]] = -1;
  1805. Specing[playerid] = -1;
  1806.  
  1807. return 1;
  1808. }
  1809. else
  1810. {
  1811. new playerb;
  1812. if(sscanf(params, "i", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /spec [playerid/off]");
  1813. if(!IsPlayerConnected(playerb) || playerb == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1814. if(GetPlayerState(playerb) == 9) return SendClientMessage(playerid, COLOR_WHITE, "This player is currently in Spectating mode.");
  1815. TogglePlayerSpectating(playerid, 1);
  1816. if(IsPlayerInAnyVehicle(playerb)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(playerb));
  1817. else PlayerSpectatePlayer(playerid, playerb);
  1818. new string[128];
  1819. format(string, sizeof(string), "AdmCmd: %s %s has started to spectate %s.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1820. SendAMessage(1, string);
  1821. Log("logs/spec.log", string);
  1822. Spec[playerb] = playerid;
  1823. Specing[playerid] = playerb;
  1824. return 1;
  1825. }
  1826. }
  1827. // Weaponary related commands
  1828. CMD:disarm(playerid, param[])
  1829. {
  1830. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1831. new playerb;
  1832. if(sscanf(param, "u", param)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /disarm [playerid]");
  1833. if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1834. ResetPlayerWeapons(playerb);
  1835. new string[80];
  1836. format(string, sizeof(string), "%s %s has reseted your weapons.", RPARN(playerid), RPN(playerid));
  1837. SendClientMessage(playerb, COLOR_RED, string);
  1838. format(string, sizeof(string), "%s %s has reseted %s's weapons.", RPARN(playerid), RPN(playerid), RPN(playerb));
  1839. SendAMessage(1, string);
  1840. Log("logs/disarm.log", string);
  1841. return 1;
  1842. }
  1843.  
  1844. CMD:givegun(playerid, params[])
  1845. {
  1846. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1847. new playerb, gun, ammo;
  1848. if(sscanf(params, "uii", playerb, gun, ammo))
  1849. {
  1850. SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givegun [playerid] [weaponid] [ammo]");
  1851. SendClientMessage(playerid, COLOR_REPORT, "_______________________________________");
  1852. SendClientMessage(playerid, COLOR_WHITE, "1: Brass Knuckles 2: Golf Club 3: Nite Stick 4: Knife 5: Baseball Bat 6: Shovel 7: Pool Cue 8: Katana 9: Chainsaw");
  1853. SendClientMessage(playerid, COLOR_WHITE, "10: Purple Dildo 11: Small White Vibrator 12: Large White Vibrator 13: Silver Vibrator 14: Flowers 15: Cane 16: Frag Grenade");
  1854. SendClientMessage(playerid, COLOR_WHITE, "17: Tear Gas 18: Molotov Cocktail 19: Vehicle Missile 20: Hydra Flare 21: Jetpack 22: 9mm 23: Silenced 9mm 24: Desert Eagle 25: Shotgun");
  1855. SendClientMessage(playerid, COLOR_WHITE, "26: Sawnoff Shotgun 27: SPAS-12 28: Micro SMG (Mac 10) 29: SMG (MP5) 30: AK-47 31: M4 32: Tec9 33: Rifle");
  1856. SendClientMessage(playerid, COLOR_WHITE, "34: Sniper Rifle 35: Rocket Launcher 36: HS Rocket Launcher 37: Flamethrower 38: Minigun 39: Satchel Charge");
  1857. SendClientMessage(playerid, COLOR_WHITE, "40: Detonator 41: Spraycan 42: Fire Extinguisher 43: Camera 44: Nightvision Goggles 45: Infared Goggles 46: Parachute");
  1858. SendClientMessage(playerid, COLOR_REPORT, "_______________________________________");
  1859. return 1;
  1860. }
  1861. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1862. if(gun < 1 || gun > 46) return SendClientMessage(playerid, COLOR_WHITE, "Invalid weapon ID.");
  1863. if(!ammo) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ammo amount.");
  1864. GivePlayerWeapon(playerb, gun, ammo);
  1865. new string[80];
  1866. format(string, sizeof(string), "%s %s has given you weapon ID %d with %d bullets.", RPARN(playerid), RPN(playerid), gun, ammo);
  1867. SendClientMessage(playerb, COLOR_RED, string);
  1868. format(string, sizeof(string), "AdmCmd: %s %s has given %s weapon ID %d with %d bullets.", RPARN(playerid), RPN(playerid), RPN(playerb), gun, ammo);
  1869. SendAMessage(1, string);
  1870. Log("logs/givegun.log", string);
  1871. return 1;
  1872. }
  1873.  
  1874. CMD:givegunall(playerid, params[])
  1875. {
  1876. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1877. new gun, ammo;
  1878. if(sscanf(params, "ii", gun, ammo))
  1879. {
  1880. SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givegunall [weaponid] [ammo]");
  1881. SendClientMessage(playerid, COLOR_REPORT, "_______________________________________");
  1882. SendClientMessage(playerid, COLOR_WHITE, "1: Brass Knuckles 2: Golf Club 3: Nite Stick 4: Knife 5: Baseball Bat 6: Shovel 7: Pool Cue 8: Katana 9: Chainsaw");
  1883. SendClientMessage(playerid, COLOR_WHITE, "10: Purple Dildo 11: Small White Vibrator 12: Large White Vibrator 13: Silver Vibrator 14: Flowers 15: Cane 16: Frag Grenade");
  1884. SendClientMessage(playerid, COLOR_WHITE, "17: Tear Gas 18: Molotov Cocktail 19: Vehicle Missile 20: Hydra Flare 21: Jetpack 22: 9mm 23: Silenced 9mm 24: Desert Eagle 25: Shotgun");
  1885. SendClientMessage(playerid, COLOR_WHITE, "26: Sawnoff Shotgun 27: SPAS-12 28: Micro SMG (Mac 10) 29: SMG (MP5) 30: AK-47 31: M4 32: Tec9 33: Rifle");
  1886. SendClientMessage(playerid, COLOR_WHITE, "34: Sniper Rifle 35: Rocket Launcher 36: HS Rocket Launcher 37: Flamethrower 38: Minigun 39: Satchel Charge");
  1887. SendClientMessage(playerid, COLOR_WHITE, "40: Detonator 41: Spraycan 42: Fire Extinguisher 43: Camera 44: Nightvision Goggles 45: Infared Goggles 46: Parachute");
  1888. SendClientMessage(playerid, COLOR_REPORT, "_______________________________________");
  1889. return 1;
  1890. }
  1891. if(gun < 1 || gun > 46) return SendClientMessage(playerid, COLOR_WHITE, "Invalid weapon ID.");
  1892. if(!ammo) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ammo amount.");
  1893. foreach(new i : Player)
  1894. {
  1895. if(IsPlayerConnected(i)) GivePlayerWeapon(i, gun, ammo);
  1896. }
  1897. new string[80];
  1898. format(string, sizeof(string), "AdmCmd: %s %s has given everyone weapon ID %d with %d bullets.", RPARN(playerid), RPN(playerid), gun, ammo);
  1899. SendClientMessageToAll(COLOR_RED, string);
  1900. Log("logs/givegun.log", string);
  1901. return 1;
  1902. }
  1903.  
  1904. CMD:disarmall(playerid)
  1905. {
  1906. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1907. foreach(new i : Player)
  1908. {
  1909. if(IsPlayerConnected(i)) ResetPlayerWeapons(i);
  1910. }
  1911. new string[80];
  1912. format(string, sizeof(string), "AdmCmd: %s %s has disarmed everyone.", RPARN(playerid), RPN(playerid));
  1913. SendClientMessageToAll(COLOR_RED, string);
  1914. return 1;
  1915. }
  1916.  
  1917. CMD:jetpack(playerid, params[])
  1918. {
  1919. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  1920. new playerb;
  1921. if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /jetpack [playerid]");
  1922. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1923. SetPlayerSpecialAction(playerb, 2);
  1924. new string[128];
  1925. format(string, sizeof(string), "%s %s has given you a jetpack.", RPARN(playerid), RPN(playerid));
  1926. SendClientMessage(playerb, COLOR_RED, string);
  1927. format(string, sizeof(string), "You have given %s a jetpack.", RPN(playerb));
  1928. SendClientMessage(playerid, COLOR_RED, string);
  1929. return 1;
  1930. }
  1931.  
  1932. CMD:jetpackall(playerid)
  1933. {
  1934. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1935. foreach(new i : Player)
  1936. {
  1937. if(IsPlayerConnected(i)) SetPlayerSpecialAction(i, 2);
  1938. }
  1939. new string[128];
  1940. format(string, sizeof(string), "%s %s has given everyone a jetpack.", RPARN(playerid), RPN(playerid));
  1941. SendClientMessageToAll(COLOR_RED, string);
  1942. return 1;
  1943. }
  1944. // Money related commands
  1945. CMD:givemoney(playerid, params[])
  1946. {
  1947. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  1948. new playerb, money;
  1949. if(sscanf(params, "ui", playerb, money)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givemoney [playerid] [amount]");
  1950. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1951. if(!money) return SendClientMessage(playerid, COLOR_WHITE, "Money amount can't be 0.");
  1952. GivePlayerMoney(playerid, money);
  1953. new string[80];
  1954. format(string, sizeof(string), "AdmCmd: %s %s has given %s $%d", RPARN(playerid), RPN(playerid), RPN(playerb), money);
  1955. SendAMessage(1, string);
  1956. Log("givemoney.log", string);
  1957. format(string, sizeof(string), "AdmCmd: %s %s has given you $%d", RPARN(playerid), RPN(playerid), money);
  1958. SendClientMessage(playerb, COLOR_RED, string);
  1959. return 1;
  1960. }
  1961.  
  1962. CMD:setmoney(playerid, params[])
  1963. {
  1964. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  1965. new playerb, money;
  1966. if(sscanf(params, "ui", playerb, money)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setmoney [playerid] [amount]");
  1967. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  1968. GivePlayerMoney(playerb, -GetPlayerMoney(playerid));
  1969. GivePlayerMoney(playerb, money);
  1970. new string[80];
  1971. format(string, sizeof(string), "%s %s has set your money to $%d.", RPARN(playerid), RPN(playerid), money);
  1972. SendClientMessage(playerb, COLOR_RED, string);
  1973. format(string, sizeof(string), "AdmCmd: %s %s has set %s's money to $%d.", RPARN(playerid), RPN(playerid), RPN(playerb), money);
  1974. SendAMessage(1, string);
  1975. Log("logs/setmoney.log", string);
  1976. return 1;
  1977. }
  1978.  
  1979. CMD:givemoneyall(playerid, params[])
  1980. {
  1981. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1982. new money;
  1983. if(sscanf(params, "i", money)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givemoneyall [amount]");
  1984. if(!money) return SendClientMessage(playerid, COLOR_WHITE, "Money amount has to be higher than 0.");
  1985. foreach(new i : Player)
  1986. {
  1987. if(IsPlayerConnected(i)) GivePlayerMoney(i, money);
  1988. }
  1989. new string[80];
  1990. format(string, sizeof(string), "AdmCmd: %s %s has given everyone $%d.", RPARN(playerid), RPN(playerid), money);
  1991. SendClientMessageToAll(COLOR_RED, string);
  1992. Log("logs/givemoney.log", string);
  1993. return 1;
  1994. }
  1995.  
  1996. CMD:setmoneyall(playerid, params[])
  1997. {
  1998. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  1999. new money;
  2000. if(sscanf(params, "i", money)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setmoneyall [amount]");
  2001. foreach(new i : Player)
  2002. {
  2003. if(IsPlayerConnected(i))
  2004. {
  2005. GivePlayerMoney(i, -GetPlayerMoney(i));
  2006. GivePlayerMoney(i, money);
  2007. }
  2008. }
  2009. new string[80];
  2010. format(string, sizeof(string), "AdmCmd: %s %s has set everyone's money to $%d.", RPARN(playerid), RPN(playerid), money);
  2011. SendClientMessageToAll(COLOR_RED, string);
  2012. Log("logs/givemoney.log", string);
  2013. return 1;
  2014. }
  2015. // Score related commands
  2016. CMD:setscore(playerid, params[])
  2017. {
  2018. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2019. new playerb, score;
  2020. if(sscanf(params, "ui", playerb, score)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setscore [playerid] [score]");
  2021. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2022. if(score < 0) return SendClientMessage(playerid, COLOR_WHITE, "Score can't be negative.");
  2023. SetPlayerScore(playerb, score);
  2024. new string[80];
  2025. format(string, sizeof(string), "AdmCmd: %s %s has set %s's score to %d.", RPARN(playerid), RPN(playerid), RPN(playerb), score);
  2026. SendAMessage(1, string);
  2027. Log("logs/setscore.log", string);
  2028. format(string, sizeof(string), "%s %s has set your score to %d.", RPARN(playerid), RPN(playerid), score);
  2029. SendClientMessage(playerb, COLOR_RED, string);
  2030. return 1;
  2031. }
  2032. // Statistics related commands
  2033. CMD:check(playerid, params[])
  2034. {
  2035. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  2036. new playerb;
  2037. if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /check [playerid]");
  2038. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2039. new string[128], Float:hp, Float:ap;
  2040. format(string, sizeof(string), "%s's Statistics:", RPN(playerb));
  2041. SendClientMessage(playerid, COLOR_REPORT, string);
  2042. GetPlayerHealth(playerb, hp);
  2043. GetPlayerArmour(playerid, ap);
  2044. format(string, sizeof(string), "Health: {FF0000}%f, {FFFFFF}Armor: {FF0000}%f, {FFFFFF}Ping: {FF0000}%d, {FFFFFF}Admin Level: {FF0000}%d", hp, ap, GetPlayerPing(playerb), aInfo[playerb][aLevel]);
  2045. SendClientMessage(playerid, COLOR_WHITE, string);
  2046. format(string, sizeof(string), "Money: {FF0000}%d, {FFFFFF}Score: {FF0000}%d, {FFFFFF}Current vehicle ID: {FF0000}%d, {FFFFFF}Current vehicle model: {FF0000}%d", GetPlayerMoney(playerb), GetPlayerScore(playerb), GetPlayerVehicleID(playerb), GetVehicleModel(GetPlayerVehicleID(playerb)));
  2047. SendClientMessage(playerid, COLOR_WHITE, string);
  2048. new weapons[13][2];
  2049. for (new i = 0; i < 13; i++)
  2050. {
  2051. GetPlayerWeaponData(playerb, i, weapons[i][0], weapons[i][1]);
  2052. }
  2053. SendClientMessage(playerid, COLOR_REPORT, "Weapon information:");
  2054. format(string, sizeof(string), "Slot 1: %d (Ammo: %d), Slot 2: %d (Ammo: %d), Slot 3: %d (Ammo: %d), Slot 4: %d (Ammo: %d), Slot 5: %d (Ammo: %d), Slot 6: %d (Ammo: %d)", weapons[0][0], weapons[0][1], weapons[1][0], weapons[1][1], weapons[2][0], weapons[2][1], weapons[3][0], weapons[3][1], weapons[4][0], weapons[4][1], weapons[5][0], weapons[5][1]);
  2055. SendClientMessage(playerid, COLOR_RED, string);
  2056. format(string, sizeof(string), "Slot 7: %d (Ammo: %d), Slot 8: %d (Ammo: %d), Slot 9: %d (Ammo: %d), Slot 10: %d (Ammo: %d), Slot 11: %d (Ammo: %d), Slot 12: %d (Ammo: %d), Slot 13: %d (Ammo: %d)", weapons[6][0], weapons[6][1], weapons[7][0], weapons[7][1], weapons[8][0], weapons[8][1], weapons[9][0], weapons[9][1], weapons[10][0], weapons[10][1], weapons[11][0], weapons[11][1], weapons[12][0], weapons[12][1]);
  2057. SendClientMessage(playerid, COLOR_RED, string);
  2058. return 1;
  2059. }
  2060.  
  2061. CMD:setname(playerid, params[])
  2062. {
  2063. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  2064. new playerb;
  2065. if(sscanf(params, "us[24]", playerb, params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setname [playerid] [name]");
  2066. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2067. if(strlen(params) > 24) return SendClientMessage(playerid, COLOR_WHITE, "Player name can't be higher than 24 characters.");
  2068. new string[80];
  2069. format(string, sizeof(string), "AdmCmd: %s %s has set %s's name to %s.", RPARN(playerid), RPN(playerid), RPN(playerb), params);
  2070. SendAMessage(1, string);
  2071. Log("logs/setname.log", string);
  2072. format(string, sizeof(string), "%s %s has set your name to %s.", RPARN(playerid), RPN(playerid), params);
  2073. SendClientMessage(playerb, COLOR_RED, string);
  2074. if(aInfo[playerb][aLevel])
  2075. {
  2076. new query[128];
  2077. mysql_format(mysql, query, sizeof(query), "UPDATE `Admins` SET `Username`='%e' WHERE `Username`='%e' LIMIT 1", params, RPN(playerb));
  2078. mysql_tquery(mysql, query);
  2079. }
  2080. SetPlayerName(playerb, params);
  2081. return 1;
  2082. }
  2083.  
  2084. CMD:checkip(playerid, params[])
  2085. {
  2086. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  2087. new playerb;
  2088. if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /checkip [playerid]");
  2089. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2090. if(aInfo[playerid][aLevel] < aInfo[playerb][aLevel]) return SendClientMessage(playerid, COLOR_WHITE, "You can't view the IP Address of a higher level Administrator.");
  2091. new string[128];
  2092. format(string, sizeof(string), "%s's {FFFFFF}IP Address: {FF0000}%s", RPN(playerb), RPIP(playerb));
  2093. SendClientMessage(playerid, COLOR_RED, string);
  2094. return 1;
  2095. }
  2096.  
  2097. CMD:setcolor(playerid, params[])
  2098. {
  2099. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  2100. new playerb, color;
  2101. if(sscanf(params, "ux", playerb, color))
  2102. {
  2103. SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setcolor [playerid] [color]");
  2104. SendClientMessage(playerid, COLOR_WHITE, "Note: Colors has to be in Hex code.");
  2105. }
  2106. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2107. SetPlayerColor(playerb, color);
  2108. new string[128];
  2109. format(string, sizeof(string), "%s %s has changed your color to the color of this message.", RPARN(playerid), RPN(playerid));
  2110. SendClientMessage(playerb, color, string);
  2111. format(string, sizeof(string), "You have changed %s's color to the color of this message.", RPN(playerb));
  2112. SendClientMessage(playerid, color, string);
  2113. return 1;
  2114. }
  2115.  
  2116. CMD:wanted(playerid)
  2117. {
  2118. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2119. SendClientMessage(playerid, COLOR_RED, "----------- Wanted List ----------");
  2120. new string[128];
  2121. foreach(new i : Player)
  2122. {
  2123. if(GetPlayerWantedLevel(i))
  2124. {
  2125. format(string, sizeof(string), "Name: %s | ID: %d | Wanted Level: %d |", RPN(i), i, GetPlayerWantedLevel(i));
  2126. SendClientMessage(playerid, COLOR_RED, string);
  2127. }
  2128. }
  2129. SendClientMessage(playerid, COLOR_RED, "----------------------------------");
  2130. return 1;
  2131. }
  2132.  
  2133. CMD:setwanted(playerid, params[])
  2134. {
  2135. if(!IsAuth(playerid, 3)) return NoAuth(playerid);
  2136. new playerb, level;
  2137. if(sscanf(params, "ui", playerb, level)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setwanted [playerid] [level]");
  2138. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2139. if(level < 0 || level > 6) return SendClientMessage(playerid, COLOR_WHITE, "Wanted levels are between 0 to 6");
  2140. if(GetPlayerWantedLevel(playerb) == level) return SendClientMessage(playerid, COLOR_WHITE, "This player already has this wanted level.");
  2141. new string[80];
  2142. SetPlayerWantedLevel(playerb, level);
  2143. format(string, sizeof(string), "%s %s has set your wanted level to %d.", RPARN(playerid), RPN(playerid), level);
  2144. SendClientMessage(playerb, COLOR_REPORT, string);
  2145. format(string, sizeof(string), "%s %s has set %s's wanted level to %d.", RPARN(playerid), RPN(playerid), RPN(playerb), level);
  2146. SendAMessage(1, string);
  2147. Log("logs/wanted.log", string);
  2148. return 1;
  2149. }
  2150.  
  2151. CMD:setskin(playerid, params[])
  2152. {
  2153. if(!IsAuth(playerid, 1)) return NoAuth(playerid);
  2154. new playerb, skin;
  2155. if(sscanf(params, "ui", playerb, skin)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setskin [playerid] [skin]");
  2156. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2157. if(skin < 0 || skin > 311) return SendClientMessage(playerid, COLOR_WHITE, "Skins are between 0 to 311");
  2158. if(GetPlayerSkin(playerb) == skin) return SendClientMessage(playerid, COLOR_WHITE, "This player already has this skin.");
  2159. new string[80];
  2160. SetPlayerSkin(playerb, skin);
  2161. format(string, sizeof(string), "%s %s has set your skin to %d.", RPARN(playerid), RPN(playerid), skin);
  2162. SendClientMessage(playerb, COLOR_RED, string);
  2163. format(string, sizeof(string), "You have set %s's skin to %d.", RPN(playerb), skin);
  2164. SendClientMessage(playerid, COLOR_RED, string);
  2165. return 1;
  2166. }
  2167. // Freeze related commands
  2168. CMD:freeze(playerid, params[])
  2169. {
  2170. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2171. new playerb;
  2172. if(sscanf(params, "u", playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /freeze [playerid]");
  2173. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: Invalid ID.");
  2174. new string[80];
  2175. if(!Freeze[playerid])
  2176. {
  2177. Freeze[playerid] = 1;
  2178. TogglePlayerControllable(playerb, 0);
  2179. format(string, sizeof(string), "%s %s has froze you.", RPARN(playerid), RPN(playerid));
  2180. SendClientMessage(playerb, COLOR_RED, string);
  2181. format(string, sizeof(string), "%s %s has froze %s.", RPARN(playerid), RPN(playerid), RPN(playerb));
  2182. SendAMessage(1, string);
  2183. Log("logs/freeze.log", string);
  2184. return 1;
  2185. }
  2186. else
  2187. {
  2188. Freeze[playerid] = 0;
  2189. TogglePlayerControllable(playerb, 1);
  2190. format(string, sizeof(string), "%s %s has unfroze you.", RPARN(playerid), RPN(playerid));
  2191. SendClientMessage(playerb, COLOR_RED, string);
  2192. format(string, sizeof(string), "%s %s has unfroze %s.", RPARN(playerid), RPN(playerid), RPN(playerb));
  2193. SendAMessage(1, string);
  2194. Log("logs/freeze.log", string);
  2195. return 1;
  2196. }
  2197. }
  2198.  
  2199. CMD:freezeall(playerid)
  2200. {
  2201. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  2202. foreach(new i : Player)
  2203. {
  2204. if(IsPlayerConnected(i) && i != playerid)
  2205. {
  2206. TogglePlayerControllable(i, 0);
  2207. Freeze[i] = 1;
  2208. }
  2209. }
  2210. new string[80];
  2211. format(string, sizeof(string), "%s %s has froze everyone.", RPARN(playerid), RPN(playerid));
  2212. SendClientMessageToAll(COLOR_RED, string);
  2213. Log("logs/freezeall.log", string);
  2214. return 1;
  2215. }
  2216.  
  2217. CMD:unfreezeall(playerid)
  2218. {
  2219. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  2220. foreach(new i : Player)
  2221. {
  2222. if(IsPlayerConnected(i) && i != playerid)
  2223. {
  2224. TogglePlayerControllable(i, 1);
  2225. Freeze[i] = 0;
  2226. }
  2227. }
  2228. new string[80];
  2229. format(string, sizeof(string), "%s %s has unfroze everyone.", RPARN(playerid), RPN(playerid));
  2230. SendClientMessageToAll(COLOR_RED, string);
  2231. Log("logs/freezeall.log", string);
  2232. return 1;
  2233. }
  2234. // Administrators Fly related commands
  2235. CMD:fly(playerid)
  2236. {
  2237. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2238. new Float:x, Float:y, Float:z;
  2239. if(Fly[playerid] == false)
  2240. {
  2241. GetPlayerPos(playerid, x, y, z);
  2242. SetPlayerPos(playerid, x, y, z+5);
  2243. SetPlayerArmour(playerid, 1000000000.0);
  2244. SetPlayerHealth(playerid, 1000000000.0);
  2245. SetTimerEx("AdminFly", 100, 0, "d", playerid);
  2246. Fly[playerid] = true;
  2247. return 1;
  2248. }
  2249. else
  2250. {
  2251. GetPlayerPos(playerid, x, y, z);
  2252. SetPlayerPos(playerid, x, y, z+0.5);
  2253. ClearAnimations(playerid);
  2254. SetPlayerArmour(playerid, 100.0);
  2255. SetPlayerHealth(playerid, 100.0);
  2256. Fly[playerid] = false;
  2257. return 1;
  2258. }
  2259. }
  2260. // Health and Armor related commands
  2261. CMD:sethp(playerid, params[])
  2262. {
  2263. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2264. new playerb, Float:hp;
  2265. if(sscanf(params, "uf", playerb, hp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sethp [playerid] [health]");
  2266. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2267. if(hp < 0) return SendClientMessage(playerid, COLOR_WHITE, "Health can't be negative.");
  2268. SetPlayerHealth(playerb, hp);
  2269. new string[80];
  2270. format(string, sizeof(string), "%s %s has set your HP to %f.", RPARN(playerid), RPN(playerid), hp);
  2271. SendClientMessage(playerb, COLOR_RED, string);
  2272. format(string, sizeof(string), "%s %s has set %s's HP to %f.", RPARN(playerid), RPN(playerid), RPN(playerb), hp);
  2273. SendAMessage(1, string);
  2274. Log("logs/sethp.log", string);
  2275. return 1;
  2276. }
  2277.  
  2278. CMD:setarmor(playerid, params[])
  2279. {
  2280. if(!IsAuth(playerid, 2)) return NoAuth(playerid);
  2281. new playerb, Float:ap;
  2282. if(sscanf(params, "uf", playerb, ap)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setarmor [playerid] [armor]");
  2283. if(!IsPlayerConnected(playerb)) return SendClientMessage(playerid, COLOR_WHITE, "Invalid ID.");
  2284. if(ap < 0) return SendClientMessage(playerid, COLOR_WHITE, "Armor can't be negative.");
  2285. SetPlayerArmour(playerb, ap);
  2286. new string[80];
  2287. format(string, sizeof(string), "%s %s has set your Armor to %f.", RPARN(playerid), RPN(playerid), ap);
  2288. SendClientMessage(playerb, COLOR_RED, string);
  2289. format(string, sizeof(string), "%s %s has set %s's Armor to %f.", RPARN(playerid), RPN(playerid), RPN(playerb), ap);
  2290. SendAMessage(1, string);
  2291. Log("logs/setarmor.log", string);
  2292. return 1;
  2293. }
  2294.  
  2295. CMD:sethpall(playerid, params[])
  2296. {
  2297. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  2298. new Float:hp;
  2299. if(sscanf(params, "f", hp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sethpall [health]");
  2300. if(hp < 0) return SendClientMessage(playerid, COLOR_WHITE, "Health can't be negative.");
  2301. foreach(new i : Player)
  2302. {
  2303. if(IsPlayerConnected(i)) SetPlayerHealth(i, hp);
  2304. }
  2305. new string[80];
  2306. format(string, sizeof(string), "%s %s has set everyone's HP to %f.", RPARN(playerid), RPN(playerid), hp);
  2307. SendClientMessageToAll(COLOR_RED, string);
  2308. Log("logs/sethp.log", string);
  2309. return 1;
  2310. }
  2311.  
  2312. CMD:setarmorall(playerid, params[])
  2313. {
  2314. if(!IsAuth(playerid, 4)) return NoAuth(playerid);
  2315. new Float:ap;
  2316. if(sscanf(params, "f", ap)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setarmorall [armor]");
  2317. if(ap < 0) return SendClientMessage(playerid, COLOR_WHITE, "Armor can't be negative.");
  2318. foreach(new i : Player)
  2319. {
  2320. if(IsPlayerConnected(i)) SetPlayerArmour(i, ap);
  2321. }
  2322. new string[80];
  2323. format(string, sizeof(string), "%s %s has set everyone's Armour to %f.", RPARN(playerid), RPN(playerid), ap);
  2324. SendClientMessageToAll(COLOR_RED, string);
  2325. Log("logs/setarmor.log", string);
  2326. return 1;
  2327. }
  2328. // Server related commands
  2329. CMD:setweather(playerid, params[])
  2330. {
  2331. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  2332. new weather;
  2333. if(sscanf(params, "i", weather)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setweather [weather]");
  2334. if(weather < 0 || weather > 20) return SendClientMessage(playerid, COLOR_WHITE, "Invalid weather ID.");
  2335. SetWeather(weather);
  2336. new string[80];
  2337. format(string, sizeof(string), "%s %s has changed the world's weather to %d.", RPARN(playerid), RPN(playerid), weather);
  2338. SendClientMessageToAll(COLOR_RED, string);
  2339. return 1;
  2340. }
  2341.  
  2342. CMD:settime(playerid, params[])
  2343. {
  2344. if(!IsAuth(playerid, 5)) return NoAuth(playerid);
  2345. new time;
  2346. if(sscanf(params, "i", time)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /settime [hour]");
  2347. if(time < 0 || time > 23) return SendClientMessage(playerid, COLOR_WHITE, "Hour should be between 0 to 23.");
  2348. SetWorldTime(time);
  2349. new string[80];
  2350. format(string, sizeof(string), "%s %s has changed the world's hour to %d.", RPARN(playerid), RPN(playerid), time);
  2351. SendClientMessageToAll(COLOR_RED, string);
  2352. return 1;
  2353. }
  2354.  
  2355. CMD:serverpanel(playerid)
  2356. {
  2357. if(!IsAuth(playerid, 7)) return NoAuth(playerid);
  2358. SendClientMessage(playerid, COLOR_RED, "Be aware, if you don't know how to use a command, better don't use it.");
  2359. ShowPlayerDialog(playerid, DIALOG_SERVER_PANEL, 2, "Server RCON Panel", "Echo a message\nServer Hostname\nRCON Say\nServer Gamemode Text\nExecute a file\nServer Map Name\nServer GMX\n\
  2360. Change Server Gamemode\nClose the server\nServer Gravity\nLoad a Filterscript\nUnload a Filterscript\nReload a Filterscript\nServer Password\nRemove Password\nRCON Password\nServer Language", "Choose", "Close");
  2361. return 1;
  2362. }
  2363. //---------------------------------------
  2364. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  2365. {
  2366. switch(dialogid)
  2367. {
  2368. case DIALOG_PASSWORD:
  2369. {
  2370. if(response)
  2371. {
  2372. if(strlen(inputtext) < 4 || strlen(inputtext) > 128) return SendClientMessage(playerid, COLOR_WHITE, "Admin Password should be between 4 to 128 characters.");
  2373. WP_Hash(aInfo[playerid][aPass], 256, inputtext);
  2374. new log[80];
  2375. if(aInfo[playerid][aLogged]) SendClientMessage(playerid, COLOR_WHITE, "You have changed your Admin Password.");
  2376. else SendClientMessage(playerid, COLOR_WHITE, "You have changed your Admin Password, You may now login using /ALogin to receive admin powers.");
  2377. format(log, sizeof(log), "%s (%s) has changed his admin password.", RPN(playerid), RPIP(playerid));
  2378. Log("logs/admpass.log", log);
  2379. }
  2380. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the Admin Password setup dialog.");
  2381. }
  2382. case DIALOG_SERVER_PANEL:
  2383. {
  2384. if(response)
  2385. {
  2386. switch(listitem)
  2387. {
  2388. case 0: ShowPlayerDialog(playerid, DIALOG_SERVER_ECHO, DIALOG_STYLE_INPUT, "RCON Echo", "Please type the message you want to send to the console", "Send", "Close");
  2389. case 1: ShowPlayerDialog(playerid, DIALOG_SERVER_NAME, DIALOG_STYLE_INPUT, "RCON Hostname", "Enter the new server name", "Change", "Close");
  2390. case 2: ShowPlayerDialog(playerid, DIALOG_SERVER_SAY, DIALOG_STYLE_INPUT, "RCON Say", "Type the message", "Send", "Close");
  2391. case 3: ShowPlayerDialog(playerid, DIALOG_SERVER_GMTEXT, DIALOG_STYLE_INPUT, "RCON GameMode Text", "Type in the new GameMode text", "Change", "Close");
  2392. case 4: ShowPlayerDialog(playerid, DIALOG_SERVER_EXEC, DIALOG_STYLE_INPUT, "RCON CFG File execution", "Type in the file name (Use this with care)", "Execute", "Close");
  2393. case 5: ShowPlayerDialog(playerid, DIALOG_SERVER_MAP, DIALOG_STYLE_INPUT, "RCON Map Name", "Enter the new map name", "Change", "Close");
  2394. case 6: SendRconCommand("gmx");
  2395. case 7: ShowPlayerDialog(playerid, DIALOG_SERVER_MODE, DIALOG_STYLE_INPUT, "RCON GameMode Switch", "Enter the new gamemode name (Make sure the AMX file exist in your GM folder)", "Change", "Close");
  2396. case 8: SendRconCommand("exit");
  2397. case 9: ShowPlayerDialog(playerid, DIALOG_SERVER_GRAVITY, DIALOG_STYLE_INPUT, "RCON Gravity", "Enter the new gravity (Use this with care)", "Change", "Close");
  2398. case 10: ShowPlayerDialog(playerid, DIALOG_SERVER_LOADFS, DIALOG_STYLE_INPUT, "RCON Load FS", "Enter the filterscript you want to load", "Load", "Close");
  2399. case 11: ShowPlayerDialog(playerid, DIALOG_SERVER_UNLOADFS, DIALOG_STYLE_INPUT, "RCON Unload FS", "Enter the filterscript you want to unload", "Unload", "Close");
  2400. case 12: ShowPlayerDialog(playerid, DIALOG_SERVER_RELOADFS, DIALOG_STYLE_INPUT, "RCON Reload FS", "Enter the filterscript you want to reload", "Reload", "Close");
  2401. case 13: ShowPlayerDialog(playerid, DIALOG_SERVER_PASS, DIALOG_STYLE_INPUT, "Server Password", "Enter the new server password", "Set", "Close");
  2402. case 14: SendRconCommand("password 0");
  2403. case 15: ShowPlayerDialog(playerid, DIALOG_SERVER_RCONPASS, DIALOG_STYLE_INPUT, "RCON Password", "Enter the new RCON password", "Change", "Close");
  2404. case 16: ShowPlayerDialog(playerid, DIALOG_SERVER_LANG, DIALOG_STYLE_INPUT, "RCON Language", "Enter the new server language", "Change", "Close");
  2405. }
  2406. }
  2407. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2408. }
  2409. case DIALOG_SERVER_ECHO:
  2410. {
  2411. if(response)
  2412. {
  2413. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Message must contain atleast one character.");
  2414. new cmd[128];
  2415. format(cmd, sizeof(cmd), "echo %s", inputtext);
  2416. SendRconCommand(cmd);
  2417. format(cmd, sizeof(cmd), "%s %s has sent a console message: %s", RPARN(playerid), RPN(playerid), inputtext);
  2418. Log("logs/echo.log", cmd);
  2419. SendClientMessage(playerid, COLOR_RED, "You have sent a message to the server console.");
  2420. }
  2421. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2422. }
  2423. case DIALOG_SERVER_NAME:
  2424. {
  2425. if(response)
  2426. {
  2427. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Hostname must contain atleast one character.");
  2428. new cmd[128];
  2429. format(cmd, sizeof(cmd), "hostname %s", inputtext);
  2430. SendRconCommand(cmd);
  2431. format(cmd, sizeof(cmd), "%s %s has changed the server name to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2432. Log("logs/hostname.log", cmd);
  2433. SendClientMessage(playerid, COLOR_RED, "You have changed the server hostname.");
  2434. }
  2435. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2436. }
  2437. case DIALOG_SERVER_SAY:
  2438. {
  2439. if(response)
  2440. {
  2441. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Message must contain atleast one character.");
  2442. new cmd[128];
  2443. format(cmd, sizeof(cmd), "say %s", inputtext);
  2444. SendRconCommand(cmd);
  2445. format(cmd, sizeof(cmd), "%s %s has sent a server RCON message: %s", RPARN(playerid), RPN(playerid), inputtext);
  2446. Log("logs/rconsay.log", cmd);
  2447. }
  2448. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2449. }
  2450. case DIALOG_SERVER_GMTEXT:
  2451. {
  2452. if(response)
  2453. {
  2454. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "GameMode text must contain atleast one character.");
  2455. new cmd[128];
  2456. format(cmd, sizeof(cmd), "gamemodetext %s", inputtext);
  2457. SendRconCommand(cmd);
  2458. format(cmd, sizeof(cmd), "%s %s has changed the GameMode text to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2459. Log("logs/gmtext.log", cmd);
  2460. SendClientMessage(playerid, COLOR_RED, "You have changed the server gamemode text.");
  2461. }
  2462. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2463. }
  2464. case DIALOG_SERVER_EXEC:
  2465. {
  2466. if(response)
  2467. {
  2468. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "File name must contain atleast one character.");
  2469. new cmd[128];
  2470. format(cmd, sizeof(cmd), "%s %s has executed a cfg file: %s", RPARN(playerid), RPN(playerid), inputtext);
  2471. Log("logs/exec.log", cmd);
  2472. format(cmd, sizeof(cmd), "exec %s", inputtext);
  2473. SendRconCommand(cmd);
  2474. SendClientMessage(playerid, COLOR_RED, "You have executed a CFG file.");
  2475. }
  2476. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2477. }
  2478. case DIALOG_SERVER_MAP:
  2479. {
  2480. if(response)
  2481. {
  2482. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Map name must contain atleast one character.");
  2483. new cmd[128];
  2484. format(cmd, sizeof(cmd), "mapname %s", inputtext);
  2485. SendRconCommand(cmd);
  2486. format(cmd, sizeof(cmd), "%s %s has changed the map name to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2487. Log("logs/mapname.log", cmd);
  2488. SendClientMessage(playerid, COLOR_RED, "You have changed the server map name.");
  2489. }
  2490. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2491. }
  2492. case DIALOG_SERVER_MODE:
  2493. {
  2494. if(response)
  2495. {
  2496. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Gamemode name must contain atleast one character.");
  2497. new cmd[128];
  2498. format(cmd, sizeof(cmd), "%s %s has changed the server gamemode to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2499. Log("logs/gamemode.log", cmd);
  2500. format(cmd, sizeof(cmd), "changemode %s", inputtext);
  2501. SendRconCommand(cmd);
  2502. SendClientMessage(playerid, COLOR_RED, "You have changed the server's gamemode.");
  2503. }
  2504. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2505. }
  2506. case DIALOG_SERVER_GRAVITY:
  2507. {
  2508. if(response)
  2509. {
  2510. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Gravity must contain a numerical value.");
  2511. new cmd[128];
  2512. format(cmd, sizeof(cmd), "%s %s has changed the server gravity to: %f", RPARN(playerid), RPN(playerid), floatstr(inputtext));
  2513. Log("logs/gravity.log", cmd);
  2514. format(cmd, sizeof(cmd), "gravity %f", floatstr(inputtext));
  2515. SendRconCommand(cmd);
  2516. SendClientMessage(playerid, COLOR_RED, "You have changed the server's gravity.");
  2517. }
  2518. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2519. }
  2520. case DIALOG_SERVER_LOADFS:
  2521. {
  2522. if(response)
  2523. {
  2524. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Filterscript name must contain atleast one character.");
  2525. new cmd[128];
  2526. format(cmd, sizeof(cmd), "%s %s has loaded the filterscript: %s", RPARN(playerid), RPN(playerid), inputtext);
  2527. Log("logs/loadfs.log", cmd);
  2528. format(cmd, sizeof(cmd), "loadfs %s", inputtext);
  2529. SendRconCommand(cmd);
  2530. SendClientMessage(playerid, COLOR_RED, "You have loaded a filterscript to the server.");
  2531. }
  2532. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2533. }
  2534. case DIALOG_SERVER_UNLOADFS:
  2535. {
  2536. if(response)
  2537. {
  2538. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Filterscript name must contain atleast one character.");
  2539. new cmd[128];
  2540. format(cmd, sizeof(cmd), "%s %s has unloaded the filterscript: %s", RPARN(playerid), RPN(playerid), inputtext);
  2541. Log("logs/unloadfs.log", cmd);
  2542. format(cmd, sizeof(cmd), "unloadfs %s", inputtext);
  2543. SendRconCommand(cmd);
  2544. SendClientMessage(playerid, COLOR_RED, "You have unloaded a filterscript from the server.");
  2545. }
  2546. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2547. }
  2548. case DIALOG_SERVER_RELOADFS:
  2549. {
  2550. if(response)
  2551. {
  2552. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Filterscript name must contain atleast one character.");
  2553. new cmd[128];
  2554. format(cmd, sizeof(cmd), "%s %s has reloaded the filterscript: %s", RPARN(playerid), RPN(playerid), inputtext);
  2555. Log("logs/reloadfs.log", cmd);
  2556. format(cmd, sizeof(cmd), "reloadfs %s", inputtext);
  2557. SendRconCommand(cmd);
  2558. SendClientMessage(playerid, COLOR_RED, "You have reloaded the chosen filterscript.");
  2559. }
  2560. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2561. }
  2562. case DIALOG_SERVER_PASS:
  2563. {
  2564. if(response)
  2565. {
  2566. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Server password must contain atleast one character.");
  2567. new cmd[128];
  2568. format(cmd, sizeof(cmd), "%s %s has changed the server password to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2569. Log("logs/serverpass.log", cmd);
  2570. format(cmd, sizeof(cmd), "password %s", inputtext);
  2571. SendRconCommand(cmd);
  2572. SendClientMessage(playerid, COLOR_RED, "You have changed the server password.");
  2573. }
  2574. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2575. }
  2576. case DIALOG_SERVER_RCONPASS:
  2577. {
  2578. if(response)
  2579. {
  2580. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "RCON password must contain atleast one character.");
  2581. new cmd[128];
  2582. format(cmd, sizeof(cmd), "%s %s has changed the RCON password to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2583. Log("logs/rconpass.log", cmd);
  2584. format(cmd, sizeof(cmd), "rcon_password %s", inputtext);
  2585. SendRconCommand(cmd);
  2586. SendClientMessage(playerid, COLOR_RED, "You have changed the RCON password.");
  2587. }
  2588. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2589. }
  2590. case DIALOG_SERVER_LANG:
  2591. {
  2592. if(response)
  2593. {
  2594. if(!strlen(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "Server Language must contain atleast one character.");
  2595. new cmd[128];
  2596. format(cmd, sizeof(cmd), "%s %s has changed the server language to: %s", RPARN(playerid), RPN(playerid), inputtext);
  2597. Log("logs/rconlang.log", cmd);
  2598. format(cmd, sizeof(cmd), "language %s", inputtext);
  2599. SendRconCommand(cmd);
  2600. SendClientMessage(playerid, COLOR_RED, "You have changed the server language.");
  2601. }
  2602. else return SendClientMessage(playerid, COLOR_WHITE, "You have closed the server RCON panel.");
  2603. }
  2604. }
  2605. return 0;
  2606. }
  2607. //-------------------------------- Forwarded Publics & Callbacks
  2608. forward Mute(playerid);
  2609. public Mute(playerid)
  2610. {
  2611. if(Muted[playerid])
  2612. {
  2613. SendClientMessage(playerid, COLOR_RED, "You have been automatically unmuted by the system due to finishing your mute time.");
  2614. Muted[playerid] = 0;
  2615. }
  2616. if(RMute[playerid])
  2617. {
  2618. SendClientMessage(playerid, COLOR_REPORT, "You have been automatically unmuted from reporting due to finishing your mute time.");
  2619. RMute[playerid] = 0;
  2620. }
  2621. return 1;
  2622. }
  2623.  
  2624. forward RMuted(playerid);
  2625. public RMuted(playerid)
  2626. {
  2627. if(RMute[playerid])
  2628. {
  2629. SendClientMessage(playerid, COLOR_REPORT, "You have been automatically unmuted from reporting due to finishing your mute time.");
  2630. RMute[playerid] = 0;
  2631. }
  2632. return 1;
  2633. }
  2634.  
  2635. forward Report(playerid);
  2636. public Report(playerid)
  2637. {
  2638. if(Reported[playerid]) Reported[playerid] = 0;
  2639. return 1;
  2640. }
  2641.  
  2642. forward Jail(playerid);
  2643. public Jail(playerid)
  2644. {
  2645. if(Jailed[playerid])
  2646. {
  2647. Jailed[playerid] = 0;
  2648. SetPlayerInterior(playerid, 0);
  2649. SetPlayerVirtualWorld(playerid, 0);
  2650. SetPlayerPos(playerid, 1515.2551, -1666.3148, 14.0469);
  2651. SendClientMessage(playerid, COLOR_REPORT, "You have served your time in prison.");
  2652. }
  2653. return 1;
  2654. }
  2655.  
  2656. forward DelayedKick(playerid);
  2657. public DelayedKick(playerid)
  2658. {
  2659. Kick(playerid);
  2660. return 1;
  2661. }
  2662.  
  2663. forward AdminFly(playerid);
  2664. public AdminFly(playerid)
  2665. {
  2666. if(!IsPlayerConnected(playerid))
  2667. return Fly[playerid] = false;
  2668.  
  2669. if(Fly[playerid])
  2670. {
  2671. if(!IsPlayerInAnyVehicle(playerid))
  2672. {
  2673. new
  2674. keys,
  2675. ud,
  2676. lr,
  2677. Float:x[2],
  2678. Float:y[2],
  2679. Float:z;
  2680.  
  2681. GetPlayerKeys(playerid, keys, ud, lr);
  2682. GetPlayerVelocity(playerid, x[0], y[0], z);
  2683. if(ud == KEY_UP)
  2684. {
  2685. GetPlayerCameraPos(playerid, x[0], y[0], z);
  2686. GetPlayerCameraFrontVector(playerid, x[1], y[1], z);
  2687. ApplyAnimation(playerid,"SWIM","SWIM_crawl",6.1,1,1,1,1,0,1);
  2688. SetPlayerToFacePos(playerid, x[0] + x[1], y[0] + y[1]);
  2689. SetPlayerVelocity(playerid, x[1], y[1], z);
  2690. }
  2691. else
  2692. SetPlayerVelocity(playerid, 0.0, 0.0, 0.01);
  2693. }
  2694. SetTimerEx("AdminFly", 100, 0, "d", playerid);
  2695. }
  2696. return 0;
  2697. }
  2698.  
  2699. forward Float:SetPlayerToFacePos(playerid, Float:X, Float:Y);
  2700. public Float:SetPlayerToFacePos(playerid, Float:X, Float:Y)
  2701. {
  2702. new
  2703. Float:pX1,
  2704. Float:pY1,
  2705. Float:pZ1,
  2706. Float:ang;
  2707.  
  2708. if(!IsPlayerConnected(playerid)) return 0.0;
  2709.  
  2710. GetPlayerPos(playerid, pX1, pY1, pZ1);
  2711.  
  2712. if( Y > pY1 ) ang = (-acos((X - pX1) / floatsqroot((X - pX1)*(X - pX1) + (Y - pY1)*(Y - pY1))) - 90.0);
  2713. else if( Y < pY1 && X < pX1 ) ang = (acos((X - pX1) / floatsqroot((X - pX1)*(X - pX1) + (Y - pY1)*(Y - pY1))) - 450.0);
  2714. else if( Y < pY1 ) ang = (acos((X - pX1) / floatsqroot((X - pX1)*(X - pX1) + (Y - pY1)*(Y - pY1))) - 90.0);
  2715.  
  2716. if(X > pX1) ang = (floatabs(floatabs(ang) + 180.0));
  2717. else ang = (floatabs(ang) - 180.0);
  2718.  
  2719. ang += 180.0;
  2720.  
  2721. SetPlayerFacingAngle(playerid, ang);
  2722.  
  2723. return ang;
  2724. }
  2725.  
  2726. //--------------------------------
  2727. public OnPlayerText(playerid, text[])
  2728. {
  2729. if(Muted[playerid])
  2730. {
  2731. SendClientMessage(playerid, COLOR_RED, "You cannot send messages when you are muted.");
  2732. return 0;
  2733. }
  2734. if(ChatLock && !CPerm[playerid] && !aInfo[playerid][aLevel])
  2735. {
  2736. SendClientMessage(playerid, COLOR_RED, "You cannot send messages when the chat is locked.");
  2737. return 0;
  2738. }
  2739. return 1;
  2740. }
  2741. //---------------------------------
  2742. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  2743. {
  2744. if(Spec[playerid] != -1) PlayerSpectateVehicle(Spec[playerid], vehicleid);
  2745. return 1;
  2746. }
  2747.  
  2748. public OnPlayerExitVehicle(playerid, vehicleid)
  2749. {
  2750. if(Spec[playerid] != -1) PlayerSpectatePlayer(Spec[playerid], playerid);
  2751. return 1;
  2752. }
  2753. //---------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement