Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 97.90 KB | None | 0 0
  1. #include <a_samp>
  2. #include <md5>
  3.  
  4. #define Anim_Dialog 2011
  5. #pragma tabsize 0
  6.  
  7.  
  8. #define GREEN 0x21DD00FF
  9. #define RED 0xE60000FF
  10. #define ADMIN_RED 0xFB0000FF
  11. #define YELLOW 0xFFFF00FF
  12. #define ORANGE 0xF97804FF
  13. #define LIGHTRED 0xFF8080FF
  14. #define LIGHTBLUE 0x00C2ECFF
  15. #define PURPLE 0xB360FDFF
  16. #define BLUE 0x1229FAFF
  17. #define LIGHTGREEN 0x38FF06FF
  18. #define DARKPINK 0xE100E1FF
  19. #define DARKGREEN 0x008040FF
  20. #define AQUAGREEN 0x00CACAFB
  21. #define NICESKY 0x99FFFFAA
  22. #define GREY 0xCECECEFF
  23. #define White 0xFFFFFFFF
  24.  
  25. #define LOGIN_BEFORE_SPAWN
  26. #define ENABLE_AUTO_LOGIN
  27.  
  28. enum Info
  29. {
  30. AdminLevel,
  31. Password[128],
  32. Cash,
  33. Warns,
  34. Jail,
  35. Logged,
  36. Mute,
  37. WarnReason1[128],
  38. WarnReason2[128],
  39. WarnReason3[128],
  40. IP[20],
  41. };
  42. new ViewCommands[2][128] = // 2 = amount of commands to view
  43. {
  44. {"/admins"},
  45. {"/count"}
  46. };
  47. new VehNames[212][] = { // Vehicle Names - Betamaster
  48. {"Landstalker"},
  49. {"Bravura"},
  50. {"Buffalo"},
  51. {"Linerunner"},
  52. {"Perrenial"},
  53. {"Sentinel"},
  54. {"Dumper"},
  55. {"Firetruck"},
  56. {"Trashmaster"},
  57. {"Stretch"},
  58. {"Manana"},
  59. {"Infernus"},
  60. {"Voodoo"},
  61. {"Pony"},
  62. {"Mule"},
  63. {"Cheetah"},
  64. {"Ambulance"},
  65. {"Leviathan"},
  66. {"Moonbeam"},
  67. {"Esperanto"},
  68. {"Taxi"},
  69. {"Washington"},
  70. {"Bobcat"},
  71. {"Mr Whoopee"},
  72. {"BF Injection"},
  73. {"Hunter"},
  74. {"Premier"},
  75. {"Enforcer"},
  76. {"Securicar"},
  77. {"Banshee"},
  78. {"Predator"},
  79. {"Bus"},
  80. {"Rhino"},
  81. {"Barracks"},
  82. {"Hotknife"},
  83. {"Trailer 1"}, //artict1
  84. {"Previon"},
  85. {"Coach"},
  86. {"Cabbie"},
  87. {"Stallion"},
  88. {"Rumpo"},
  89. {"RC Bandit"},
  90. {"Romero"},
  91. {"Packer"},
  92. {"Monster"},
  93. {"Admiral"},
  94. {"Squalo"},
  95. {"Seasparrow"},
  96. {"Pizzaboy"},
  97. {"Tram"},
  98. {"Trailer 2"}, //artict2
  99. {"Turismo"},
  100. {"Speeder"},
  101. {"Reefer"},
  102. {"Tropic"},
  103. {"Flatbed"},
  104. {"Yankee"},
  105. {"Caddy"},
  106. {"Solair"},
  107. {"Berkley's RC Van"},
  108. {"Skimmer"},
  109. {"PCJ-600"},
  110. {"Faggio"},
  111. {"Freeway"},
  112. {"RC Baron"},
  113. {"RC Raider"},
  114. {"Glendale"},
  115. {"Oceanic"},
  116. {"Sanchez"},
  117. {"Sparrow"},
  118. {"Patriot"},
  119. {"Quad"},
  120. {"Coastguard"},
  121. {"Dinghy"},
  122. {"Hermes"},
  123. {"Sabre"},
  124. {"Rustler"},
  125. {"ZR-350"},
  126. {"Walton"},
  127. {"Regina"},
  128. {"Comet"},
  129. {"BMX"},
  130. {"Burrito"},
  131. {"Camper"},
  132. {"Marquis"},
  133. {"Baggage"},
  134. {"Dozer"},
  135. {"Maverick"},
  136. {"News Chopper"},
  137. {"Rancher"},
  138. {"FBI Rancher"},
  139. {"Virgo"},
  140. {"Greenwood"},
  141. {"Jetmax"},
  142. {"Hotring"},
  143. {"Sandking"},
  144. {"Blista Compact"},
  145. {"Police Maverick"},
  146. {"Boxville"},
  147. {"Benson"},
  148. {"Mesa"},
  149. {"RC Goblin"},
  150. {"Hotring Racer A"}, //hotrina
  151. {"Hotring Racer B"}, //hotrinb
  152. {"Bloodring Banger"},
  153. {"Rancher"},
  154. {"Super GT"},
  155. {"Elegant"},
  156. {"Journey"},
  157. {"Bike"},
  158. {"Mountain Bike"},
  159. {"Beagle"},
  160. {"Cropdust"},
  161. {"Stunt"},
  162. {"Tanker"}, //petro
  163. {"Roadtrain"},
  164. {"Nebula"},
  165. {"Majestic"},
  166. {"Buccaneer"},
  167. {"Shamal"},
  168. {"Hydra"},
  169. {"FCR-900"},
  170. {"NRG-500"},
  171. {"HPV1000"},
  172. {"Cement Truck"},
  173. {"Tow Truck"},
  174. {"Fortune"},
  175. {"Cadrona"},
  176. {"FBI Truck"},
  177. {"Willard"},
  178. {"Forklift"},
  179. {"Tractor"},
  180. {"Combine"},
  181. {"Feltzer"},
  182. {"Remington"},
  183. {"Slamvan"},
  184. {"Blade"},
  185. {"Freight"},
  186. {"Streak"},
  187. {"Vortex"},
  188. {"Vincent"},
  189. {"Bullet"},
  190. {"Clover"},
  191. {"Sadler"},
  192. {"Firetruck LA"}, //firela
  193. {"Hustler"},
  194. {"Intruder"},
  195. {"Primo"},
  196. {"Cargobob"},
  197. {"Tampa"},
  198. {"Sunrise"},
  199. {"Merit"},
  200. {"Utility"},
  201. {"Nevada"},
  202. {"Yosemite"},
  203. {"Windsor"},
  204. {"Monster A"}, //monstera
  205. {"Monster B"}, //monsterb
  206. {"Uranus"},
  207. {"Jester"},
  208. {"Sultan"},
  209. {"Stratum"},
  210. {"Elegy"},
  211. {"Raindance"},
  212. {"RC Tiger"},
  213. {"Flash"},
  214. {"Tahoma"},
  215. {"Savanna"},
  216. {"Bandito"},
  217. {"Freight Flat"}, //freiflat
  218. {"Streak Carriage"}, //streakc
  219. {"Kart"},
  220. {"Mower"},
  221. {"Duneride"},
  222. {"Sweeper"},
  223. {"Broadway"},
  224. {"Tornado"},
  225. {"AT-400"},
  226. {"DFT-30"},
  227. {"Huntley"},
  228. {"Stafford"},
  229. {"BF-400"},
  230. {"Newsvan"},
  231. {"Tug"},
  232. {"Trailer 3"}, //petrotr
  233. {"Emperor"},
  234. {"Wayfarer"},
  235. {"Euros"},
  236. {"Hotdog"},
  237. {"Club"},
  238. {"Freight Carriage"}, //freibox
  239. {"Trailer 3"}, //artict3
  240. {"Andromada"},
  241. {"Dodo"},
  242. {"RC Cam"},
  243. {"Launch"},
  244. {"Police Car (LSPD)"},
  245. {"Police Car (SFPD)"},
  246. {"Police Car (LVPD)"},
  247. {"Police Ranger"},
  248. {"Picador"},
  249. {"S.W.A.T. Van"},
  250. {"Alpha"},
  251. {"Phoenix"},
  252. {"Glendale"},
  253. {"Sadler"},
  254. {"Luggage Trailer A"}, //bagboxa
  255. {"Luggage Trailer B"}, //bagboxb
  256. {"Stair Trailer"}, //tugstair
  257. {"Boxville"},
  258. {"Farm Plow"}, //farmtr1
  259. {"Utility Trailer"} //utiltr1
  260. };
  261.  
  262. new WeapNames[][32] = {
  263. {"Unarmed (Fist)"}, // 0
  264. {"Brass Knuckles"}, // 1
  265. {"Golf Club"}, // 2
  266. {"Night Stick"}, // 3
  267. {"Knife"}, // 4
  268. {"Baseball Bat"}, // 5
  269. {"Shovel"}, // 6
  270. {"Pool Cue"}, // 7
  271. {"Katana"}, // 8
  272. {"Chainsaw"}, // 9
  273. {"Purple Dildo"}, // 10
  274. {"Big White Vibrator"}, // 11
  275. {"Medium White Vibrator"}, // 12
  276. {"Small White Vibrator"}, // 13
  277. {"Flowers"}, // 14
  278. {"Cane"}, // 15
  279. {"Grenade"}, // 16
  280. {"Teargas"}, // 17
  281. {"Molotov"}, // 18
  282. {" "}, // 19
  283. {" "}, // 20
  284. {" "}, // 21
  285. {"Colt 45"}, // 22
  286. {"Colt 45(Silenced)"}, // 23
  287. {"Deagle"}, // 24
  288. {"Normal Shotgun"}, // 25
  289. {"Sawnoff Shotgun"}, // 26
  290. {"Combat Shotgun"}, // 27
  291. {"Micro Uzi(Mac 10)"}, // 28
  292. {"SMG(MP5)"}, // 29
  293. {"AK47"}, // 30
  294. {"M4"}, // 31
  295. {"Tec9"}, // 32
  296. {"Country Rifle"}, // 33
  297. {"Sniper Rifle"}, // 34
  298. {"Rocket Launcher"}, // 35
  299. {"Heat-Seeking Rocket Launcher"}, // 36
  300. {"Flamethrower"}, // 37
  301. {"Minigun"}, // 38
  302. {"Satchel Charge"}, // 39
  303. {"Detonator"}, // 40
  304. {"Spray Can"}, // 41
  305. {"Fire Extinguisher"}, // 42
  306. {"Camera"}, // 43
  307. {"Night Vision Goggles"}, // 44
  308. {"Infrared Vision Goggles"}, // 45
  309. {"Parachute"}, // 46
  310. {"Fake Pistol"} // 47
  311. };
  312. new AccountInfo[MAX_PLAYERS][Info];
  313. new SuperPunch[MAX_PLAYERS];
  314. new ViewCmds[MAX_PLAYERS];
  315. new Count = 999;
  316. new Hide[MAX_PLAYERS];
  317. new Drugs[MAX_PLAYERS];
  318. new bool:PMBlock[MAX_PLAYERS];
  319. new Nuke[MAX_PLAYERS];
  320. new Missile[MAX_PLAYERS];
  321. //**FORWARDS**//
  322. forward SendClientMessageToAdmins(color,string[],alevel);
  323. forward OnPlayerRegister(playerid,password[]);
  324. forward OnPlayerLogin(playerid,password[]);
  325. forward OnPlayerUpdateAccount(playerid);
  326. forward BanLog(string[]);
  327. forward KickLog(string[]);
  328. forward VehicleLog(string[]);
  329. forward CountDown();
  330. /*x---------------------------------CallBacks-------------------------------------x*/
  331. stock strtok(const string[], &index,seperator=' ')
  332. {
  333. new length = strlen(string);
  334. new offset = index;
  335. new result[128];
  336. while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  337. {
  338. result[index - offset] = string[index];
  339. index++;
  340. }
  341.  
  342. result[index - offset] = EOS;
  343. if ((index < length) && (string[index] == seperator))
  344. {
  345. index++;
  346. }
  347. return result;
  348. }
  349. stock IsNumeric(const string[])
  350. {
  351. for (new i = 0, j = strlen(string); i < j; i++)
  352. if (string[i] > '9' || string[i] < '0')
  353. return 0;
  354. return 1;
  355. }
  356.  
  357. ReturnUser(text[], playerid = INVALID_PLAYER_ID)
  358. {
  359. new pos = 0;
  360. while (text[pos] < 0x21)
  361. {
  362. if (text[pos] == 0) return INVALID_PLAYER_ID;
  363. pos++;
  364. }
  365. new userid = INVALID_PLAYER_ID;
  366. if (IsNumeric(text[pos]))
  367. {
  368. userid = strval(text[pos]);
  369. if (userid >=0 && userid < MAX_PLAYERS)
  370. {
  371. if(!IsPlayerConnected(userid))
  372. userid = INVALID_PLAYER_ID;
  373. else return userid;
  374. }
  375. }
  376. new len = strlen(text[pos]);
  377. new count = 0;
  378. new pname[MAX_PLAYER_NAME];
  379. for (new i = 0; i < MAX_PLAYERS; i++)
  380. {
  381. if (IsPlayerConnected(i))
  382. {
  383. GetPlayerName(i, pname, sizeof (pname));
  384. if (strcmp(pname, text[pos], true, len) == 0)
  385. {
  386. if (len == strlen(pname)) return i;
  387. else
  388. {
  389. count++;
  390. userid = i;
  391. }
  392. }
  393. }
  394. }
  395. if (count != 1)
  396. {
  397. if (playerid != INVALID_PLAYER_ID)
  398. {
  399. if (count) SendClientMessage(playerid, YELLOW, "There are multiple users, enter full playername.");
  400. else SendClientMessage(playerid, RED, "Playername not found.");
  401. }
  402. userid = INVALID_PLAYER_ID;
  403. }
  404. return userid;
  405. }
  406. stock GetFileString(string[])
  407. {
  408. new result[128];
  409. result[0] = 0;
  410. if (strfind(string, ":", true) == -1) return result;
  411. new id = strfind(string, ":", true);
  412. strmid(result, string, 0, id, 128);
  413. return result;
  414. }
  415.  
  416. stock GetFileValue(string[])
  417. {
  418. new val[128];
  419. val[0] = 0;
  420. if (strfind(string , ":", true) == -1) return val;
  421. new id = strfind(string, ":", true);
  422. strmid(val, string, id+2, strlen(string), 128);
  423. return val;
  424. }
  425.  
  426. public VehicleLog(string[])
  427. {
  428. new entry[128];
  429. format(entry, sizeof(entry), "%s\r\n",string);
  430. new File:hFile;
  431. hFile = fopen("vehiclespawn.log", io_append);
  432. if (hFile)
  433. {
  434. fwrite(hFile, entry);
  435. fclose(hFile);
  436. }
  437. }
  438.  
  439. public KickLog(string[])
  440. {
  441. new entry[128];
  442. format(entry, sizeof(entry), "%s\r\n",string);
  443. new File:hFile;
  444. hFile = fopen("kick.log", io_append);
  445. if (hFile)
  446. {
  447. fwrite(hFile, entry);
  448. fclose(hFile);
  449. }
  450. }
  451.  
  452. public BanLog(string[])
  453. {
  454. new entry[128];
  455. format(entry, sizeof(entry), "%s\r\n",string);
  456. new File:hFile;
  457. hFile = fopen("ban.log", io_append);
  458. if (hFile)
  459. {
  460. fwrite(hFile, entry);
  461. fclose(hFile);
  462. }
  463. }
  464. public SendClientMessageToAdmins(color,string[],alevel)
  465. {
  466. for(new i = 0; i < MAX_PLAYERS; i++)
  467. {
  468. if(IsPlayerConnected(i))
  469. {
  470. if (AccountInfo[i][AdminLevel] >= alevel)
  471. {
  472. SendClientMessage(i, color, string);
  473. printf("%s", string);
  474. }
  475. }
  476. }
  477. return 1;
  478. }
  479. public OnPlayerRegister(playerid, password[])
  480. {
  481. if(IsPlayerConnected(playerid))
  482. {
  483. new name[MAX_PLAYER_NAME], str[128], ip[15];
  484. GetPlayerName(playerid, name, sizeof name);
  485. GetPlayerIp(playerid, ip, sizeof ip);
  486. format(str, sizeof str, "/Accounts/%s.stats", name);
  487. new File:account = fopen(str, io_write);
  488. if (account)
  489. {
  490. strmid(AccountInfo[playerid][Password], password, 0, strlen(password), 255);
  491. AccountInfo[playerid][Cash] = GetPlayerMoney(playerid);
  492. new file[128];
  493. {
  494. format(file, sizeof file, "Password: %s\n\r", AccountInfo[playerid][Password]);
  495. { fwrite(account, file); }
  496. format(file, sizeof file, "AdminLevel: %d\n\r", 0);
  497. { fwrite(account, file); AccountInfo[playerid][AdminLevel] = 0; }
  498. format(file, sizeof file, "Cash: %d\n\r", AccountInfo[playerid][Cash]);
  499. { fwrite(account, file); }
  500. format(file, sizeof file, "Warnings: %d\n\r",AccountInfo[playerid][Warns]);
  501. { fwrite(account, file); }
  502. format(file, sizeof file, "WarnReason1: %s\n\r",AccountInfo[playerid][WarnReason1]);
  503. { fwrite(account, file); }
  504. format(file, sizeof file, "WarnReason2: %s\n\r",AccountInfo[playerid][WarnReason2]);
  505. { fwrite(account, file); }
  506. format(file, sizeof file, "WarnReason3: %s\n\r",AccountInfo[playerid][WarnReason3]);
  507. { fwrite(account, file); }
  508. format(file, sizeof file, "IPAddress: %s\n\r",ip);
  509. { fwrite(account, file); }
  510. }
  511. fclose(account);
  512. SendClientMessage(playerid, GREEN, "|- Account successfully registered. You can now login ( /login [password] ) -|");
  513. }
  514. }
  515. return 1;
  516. }
  517.  
  518. public OnPlayerUpdateAccount(playerid)
  519. {
  520. if(IsPlayerConnected(playerid))
  521. {
  522. if(AccountInfo[playerid][Logged] == 1)
  523. {
  524. new name[MAX_PLAYER_NAME], str[128];
  525. GetPlayerName(playerid, name, sizeof name);
  526. format(str, sizeof str, "/Accounts/%s.stats", name);
  527. new File:account = fopen(str, io_write);
  528. if (account)
  529. {
  530. AccountInfo[playerid][Cash] = GetPlayerMoney(playerid);
  531. new file[128];
  532. {
  533. format(file, sizeof file, "Password: %s\n\r", AccountInfo[playerid][Password]);
  534. { fwrite(account, file); }
  535. format(file, sizeof file, "AdminLevel: %d\n\r",AccountInfo[playerid][AdminLevel]);
  536. { fwrite(account, file); }
  537. format(file, sizeof file, "Cash: %d\n\r", AccountInfo[playerid][Cash]);
  538. { fwrite(account, file); }
  539. format(file, sizeof file, "Warnings: %d\n\r",AccountInfo[playerid][Warns]);
  540. { fwrite(account, file); }
  541. format(file, sizeof file, "WarnReason1: %s\n\r",AccountInfo[playerid][WarnReason1]);
  542. { fwrite(account, file); }
  543. format(file, sizeof file, "WarnReason2: %s\n\r",AccountInfo[playerid][WarnReason2]);
  544. { fwrite(account, file); }
  545. format(file, sizeof file, "WarnReason3: %s\n\r",AccountInfo[playerid][WarnReason3]);
  546. { fwrite(account, file); }
  547. format(file, sizeof file, "IPAddress: %s\n\r",AccountInfo[playerid][IP]);
  548. { fwrite(account, file); }
  549. }
  550. fclose(account);
  551. }
  552. }
  553. }
  554. return 1;
  555. }
  556.  
  557. public OnPlayerLogin(playerid, password[])
  558. {
  559. new name[MAX_PLAYER_NAME], str[128];
  560. GetPlayerName(playerid, name, sizeof name);
  561. format(str, sizeof str, "/Accounts/%s.stats", name);
  562. new File:account = fopen(str, io_read);
  563. if (account)
  564. {
  565. new pass[256];
  566. new passres[128], value[128];
  567. fread(account, pass, sizeof pass);
  568. passres = GetFileString(pass);
  569. if (!strcmp("Password", passres))
  570. {
  571. value = GetFileValue(pass);
  572. strmid(AccountInfo[playerid][Password], value, 0, strlen(value)-1, 128);
  573. }
  574. if (!strcmp(AccountInfo[playerid][Password], password, true))
  575. {
  576. while (fread(account, pass, 256))
  577. {
  578. passres = GetFileString(pass);
  579. if (strfind(passres, "AdminLevel") != -1)
  580. {
  581. value = GetFileValue(pass);
  582. AccountInfo[playerid][AdminLevel] = strval(value);
  583. }
  584. if (strfind(passres, "Cash") != -1)
  585. {
  586. value = GetFileValue(pass);
  587. AccountInfo[playerid][Cash] = strval(value);
  588. }
  589. if (strfind(passres, "Warnings") != -1)
  590. {
  591. value = GetFileValue(pass);
  592. AccountInfo[playerid][Warns] = strval(value);
  593. }
  594. if (strfind(passres, "WarnReason1") != -1)
  595. {
  596. value = GetFileValue(pass);
  597. strmid(AccountInfo[playerid][WarnReason1], value, 0, strlen(value)-1, 128);
  598. }
  599. if (strfind(passres, "WarnReason2") != -1)
  600. {
  601. value = GetFileValue(pass);
  602. strmid(AccountInfo[playerid][WarnReason2], value, 0, strlen(value)-1, 128);
  603. }
  604. if (strfind(passres, "WarnReason3") != -1)
  605. {
  606. value = GetFileValue(pass);
  607. strmid(AccountInfo[playerid][WarnReason3], value, 0, strlen(value)-1, 128);
  608. }
  609. }
  610. fclose(account);
  611. AccountInfo[playerid][Logged] = 1;
  612. }
  613. else
  614. {
  615. SendClientMessage(playerid, RED, "Incorrect Password.");
  616. fclose(account);
  617. return 1;
  618. }
  619. GivePlayerMoney(playerid, AccountInfo[playerid][Cash]);
  620. format(str, sizeof str, "|- You have successfully logged in as %s -|", name);
  621. SendClientMessage(playerid, GREEN, str);
  622. printf("%s has logged in", name);
  623. if (AccountInfo[playerid][AdminLevel] > 0)
  624. {
  625. format(str, sizeof str, "|- You are now logged in as a level %d admin -|", AccountInfo[playerid][AdminLevel]);
  626. SendClientMessage(playerid, LIGHTGREEN, str);
  627. ViewCmds[playerid] = 0;
  628. }
  629. }
  630. return 1;
  631. }
  632.  
  633. public OnPlayerRequestSpawn(playerid)
  634. {
  635. #if defined LOGIN_BEFORE_SPAWN
  636. new string[128];
  637. new sendername[MAX_PLAYER_NAME];
  638. GetPlayerName(playerid,sendername,24);
  639. format(string,128,"/Accounts/%s.stats",sendername);
  640. if (fexist(string) && AccountInfo[playerid][Logged] == 0)
  641. {
  642. SendClientMessage(playerid,RED,"Your account is registered. You must first login in order to spawn.");
  643. return 0;
  644. }
  645. #endif
  646. return 1;
  647. }
  648.  
  649. public OnPlayerConnect(playerid)
  650. {
  651. AccountInfo[playerid][Jail] = 0;
  652. AccountInfo[playerid][AdminLevel] = 0;
  653. AccountInfo[playerid][Warns] = 0;
  654. AccountInfo[playerid][Logged] = 0;
  655. AccountInfo[playerid][Mute] = 0;
  656. format(AccountInfo[playerid][Password], 128, " ");
  657. format(AccountInfo[playerid][WarnReason1], 128, "NONE");
  658. format(AccountInfo[playerid][WarnReason2], 128, "NONE");
  659. format(AccountInfo[playerid][WarnReason3], 128, "NONE");
  660. Drugs[playerid] = 0;
  661. Hide[playerid] = 0;
  662. SuperPunch[playerid] = 0;
  663. ViewCmds[playerid] = 0;
  664. PMBlock[playerid] = false;
  665. new string[128];
  666. new ip[20];
  667. new sendername[MAX_PLAYER_NAME];
  668. GetPlayerName(playerid, sendername, sizeof(sendername));
  669. GetPlayerIp(playerid, ip, sizeof ip);
  670. strmid(AccountInfo[playerid][IP], ip, 0, strlen(ip), 128);
  671. format(string, sizeof(string), "/Accounts/%s.stats", sendername);
  672. if (!fexist(string)) return SendClientMessage(playerid,White,"SERVER: Your account isn't registered. Please register ( /register [password] )");
  673. #if defined ENABLE_AUTO_LOGIN
  674. {
  675. new File:user = fopen(string, io_read);
  676. if (user)
  677. {
  678. new pass[128];
  679. new passres[128], value[128];
  680. new loop = 1;
  681. WHILE:
  682. while (fread(user, pass))
  683. {
  684. printf("line: %s", pass);
  685. strmid(passres, GetFileString(pass), 0, strlen(GetFileString(pass)), 128);
  686. if (loop == 1)
  687. {
  688. if (!strcmp("IPAddress", passres)) printf("IP; %s", GetFileValue(pass));
  689. if (!strcmp("Password", passres))
  690. {
  691. value = GetFileValue(pass);
  692. strmid(AccountInfo[playerid][Password], value, 0, strlen(value)-1, 128);
  693. loop = 2;
  694. goto WHILE;
  695. }
  696. }
  697. else if (loop == 2)
  698. {
  699. if (!strcmp("IPAddress", passres))
  700. {
  701. printf("%s", passres);
  702. strmid(passres, value, 0, strlen(value)-1, 20);
  703. printf("file-ip: %s | player-ip: %s", GetFileValue(pass), AccountInfo[playerid][IP]);
  704. if (!strcmp(AccountInfo[playerid][IP], passres, true))
  705. {
  706. SendClientMessage(playerid, YELLOW, "|- Auto Login -|");
  707. fclose(user);
  708. OnPlayerLogin(playerid, AccountInfo[playerid][Password]);
  709. return 1;
  710. }
  711. else
  712. {
  713. if (fexist(string))
  714. {
  715. SendClientMessage(playerid, White, "SERVER: That account is registered.");
  716. SendClientMessage(playerid, ORANGE, "Please login to retrieve your account stats ( /login [password] )");
  717. }
  718. fclose(user);
  719. }
  720. }
  721. }
  722. }
  723. fclose(user);
  724. }
  725. }
  726. #else
  727. {
  728. if (fexist(string))
  729. {
  730. SendClientMessage(playerid, White, "SERVER: That account is registered.");
  731. SendClientMessage(playerid, ORANGE, "Please login to retrieve your account stats ( /login [password] )");
  732. }
  733. }
  734. #endif
  735. return 1;
  736. }
  737.  
  738. public OnPlayerDisconnect(playerid, reason)
  739. {
  740. OnPlayerUpdateAccount(playerid);
  741. AccountInfo[playerid][Jail] = 0;
  742. AccountInfo[playerid][AdminLevel] = 0;
  743. AccountInfo[playerid][Warns] = 0;
  744. AccountInfo[playerid][Logged] = 0;
  745. AccountInfo[playerid][Mute] = 0;
  746. Drugs[playerid] = 0;
  747. Hide[playerid] = 0;
  748. SuperPunch[playerid] = 0;
  749. ViewCmds[playerid] = 0;
  750. strmid(AccountInfo[playerid][IP], " ", 0, strlen(" "), 20);
  751. return 1;
  752. }
  753.  
  754. public OnPlayerSpawn(playerid)
  755. {
  756. return 1;
  757. }
  758.  
  759. public OnPlayerDeath(playerid, killerid, reason)
  760. {
  761. Drugs[playerid] = 0;
  762. return 1;
  763. }
  764.  
  765. public OnVehicleSpawn(vehicleid)
  766. {
  767. return 1;
  768. }
  769.  
  770. public OnVehicleDeath(vehicleid, killerid)
  771. {
  772. return 1;
  773. }
  774.  
  775. public OnPlayerText(playerid, text[])
  776. {
  777. if (AccountInfo[playerid][Mute] == 1)
  778. {
  779. SendClientMessage(playerid, RED, "You are muted! You cannot talk.");
  780. return 0;
  781. }
  782. return 1;
  783. }
  784.  
  785. public OnPlayerCommandText(playerid, cmdtext[])
  786. {
  787. new cmd[128];
  788. new tmp[128];
  789. new idx;
  790. new giveplayername[MAX_PLAYER_NAME];
  791. new sendername[MAX_PLAYER_NAME];
  792. new string[128];
  793. cmd = strtok(cmdtext,idx);
  794.  
  795. for(new i = 0; i < GetMaxPlayers(); i++)
  796. {
  797. if (IsPlayerConnected(i))
  798. {
  799. if (AccountInfo[i][AdminLevel] > 0 && ViewCmds[i] == 1)
  800. {
  801. for(new v = 0; v < sizeof(ViewCommands); v++) if (!strcmp(cmdtext, ViewCommands[v], true))
  802. {
  803. GetPlayerName(playerid, sendername, sizeof sendername);
  804. format(tmp, 128, "[VIEWCMDS] [%d]%s: %s", playerid, sendername, cmdtext);
  805. SendClientMessage(i, PURPLE, tmp);
  806. }
  807. }
  808. }
  809. }
  810.  
  811. /*»»»»»»»»»»»»»»»»»»»»»»»»»»»» [ADMINS] «««««««««««««««««««««««««««*/
  812.  
  813. if(strcmp(cmd, "/addadmin", true) == 0) // Make player an admin
  814. {
  815. if (AccountInfo[playerid][AdminLevel] >= 0 || IsPlayerAdmin(playerid))
  816. {
  817. tmp = strtok(cmdtext, idx);
  818. if(!strlen(tmp))
  819. {
  820. SendClientMessage(playerid, ORANGE, "USAGE: /addadmin [playerid] [level 1-5]");
  821. SendClientMessage(playerid, ORANGE, "FUNCTION: Player will be an admin depending on the given level.");
  822. return 1;
  823. }
  824. new giveplayerid = ReturnUser(tmp, playerid);
  825. tmp = strtok(cmdtext, idx);
  826. new level = strval(tmp);
  827. if(giveplayerid != INVALID_PLAYER_ID)
  828. {
  829. if (level >= 0)
  830. {
  831. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  832. GetPlayerName(playerid, sendername, sizeof(sendername));
  833. printf("ADMIN: %s made %s a level %d admin.", sendername, giveplayername, level);
  834. format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level, sendername);
  835. SendClientMessage(giveplayerid, LIGHTBLUE, string);
  836. format(string, sizeof(string), "|- Administrator %s has given %s an Admin Level. [Level: %d] -|", sendername,giveplayername,level);
  837. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  838. AccountInfo[giveplayerid][AdminLevel] = level;
  839. format(string, sizeof(string), "You have given %s level %d admin.", giveplayername,AccountInfo[giveplayerid][AdminLevel]);
  840. SendClientMessage(playerid, LIGHTBLUE, string);
  841. }
  842. else return SendClientMessage(playerid, RED, "You can't go below level 0!");
  843. }
  844. else if(giveplayerid == INVALID_PLAYER_ID)
  845. {
  846. format(string, sizeof(string), "%i is not an active player.", giveplayerid);
  847. SendClientMessage(playerid, RED, string);
  848. }
  849. }
  850. else SendClientMessage(playerid, RED, "You are not a lead admin!");
  851. return 1;
  852. }
  853.  
  854. if(strcmp(cmd, "/gmx", true) == 0) // Reboot the server
  855. {
  856. if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid)) return GameModeExit();
  857. else return SendClientMessage(playerid, RED, "You are not a lead admin!");
  858. }
  859.  
  860. if(strcmp(cmd, "/kickall", true) == 0) // Kick everyone except the one who does this
  861. {
  862. new reason[128];
  863. if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid))
  864. {
  865. GetPlayerName(playerid, sendername, sizeof(sendername));
  866. reason = bigstrtok(cmdtext, idx);
  867. if(!strlen(reason))
  868. {
  869. SendClientMessage(playerid, ORANGE, "USAGE: /kickall [reason]");
  870. SendClientMessage(playerid, ORANGE, "FUNCTION: Will kick all the players.");
  871. return 1;
  872. }
  873. printf("ADMIN: Admin %s kicked everyone. Reason: %s", sendername, reason);
  874. format(string, sizeof(string), "-| Administrator %s kicked everyone. [Reason: %s ] |-", sendername,reason);
  875. SendClientMessageToAll(ADMIN_RED, string);
  876. for(new i = 0; i < MAX_PLAYERS; i++)
  877. {
  878. if (i != playerid)
  879. {
  880. Kick(i);
  881. KickLog(string);
  882. }
  883. }
  884. }
  885. else SendClientMessage(playerid, RED, "You are not a lead admin!");
  886. return 1;
  887. }
  888.  
  889. if(strcmp(cmd, "/nuke", true) == 0) // Nuke a player (explode)
  890. {
  891. if (AccountInfo[playerid][AdminLevel] >= 3)
  892. {
  893. tmp = strtok(cmdtext, idx);
  894. if(!strlen(tmp))
  895. {
  896. SendClientMessage(playerid, ORANGE, "USAGE: /nuke [playerid]");
  897. SendClientMessage(playerid, ORANGE, "FUNCTION: Player will explode.");
  898. return 1;
  899. }
  900. new Float:X,Float:Y,Float:Z;
  901. new giveplayerid = ReturnUser(tmp, playerid);
  902. if(IsPlayerConnected(giveplayerid))
  903. {
  904. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  905. GetPlayerName(playerid, sendername, sizeof(sendername));
  906. GetPlayerPos(giveplayerid, X,Y,Z);
  907. CreateExplosion(X,Y,Z,2,3.0);
  908. SetPlayerHealth(giveplayerid, 0.0);
  909. format(string, sizeof(string), "-| Administrator %s nuked %s |-",sendername,giveplayername);
  910. SendClientMessageToAdmins(ADMIN_RED, string,1);
  911. }
  912. else if (!IsPlayerConnected(giveplayerid))
  913. {
  914. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  915. SendClientMessage(playerid, RED, string);
  916. }
  917. }
  918. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  919. return 1;
  920. }
  921.  
  922. if(strcmp(cmd, "/setscore", true) == 0) // Set player a score
  923. {
  924. if (IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 1)
  925. {
  926. tmp = strtok(cmdtext, idx);
  927. if(!strlen(tmp))
  928. {
  929. SendClientMessage(playerid, ORANGE, "USAGE: /setscore [playerid] [score]");
  930. SendClientMessage(playerid, ORANGE, "FUNCTION: Will set a specified player's score");
  931. return 1;
  932. }
  933. new giveplayerid = ReturnUser(tmp);
  934. tmp = strtok(cmdtext, idx);
  935. if(!strlen(tmp))
  936. {
  937. SendClientMessage(playerid, ORANGE, "USAGE: /score [playerid] [score]");
  938. SendClientMessage(playerid, ORANGE, "FUNCTION: Will set a specified player's score");
  939. return 1;
  940. }
  941. new score = strval(tmp);
  942. if(IsPlayerConnected(giveplayerid))
  943. {
  944. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  945. GetPlayerScore(giveplayerid);
  946. SetPlayerScore(giveplayerid, score);
  947. format(string, sizeof(string), "You have changed %s's score number to %d.",giveplayername, score);
  948. SendClientMessage(playerid, GREEN, string);
  949. }
  950. else if (!IsPlayerConnected(giveplayerid))
  951. {
  952. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  953. SendClientMessage(playerid, RED, string);
  954. }
  955. }
  956. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  957. return 1;
  958. }
  959.  
  960. if(strcmp(cmd, "/angle", true) == 0) // Shows your current angle + sets it
  961. {
  962. if (IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 1)
  963. {
  964. new Float:angle;
  965. tmp = strtok(cmdtext, idx);
  966. if(!strlen(tmp))
  967. {
  968. SendClientMessage(playerid, ORANGE, "USAGE: /angle [angle degree]");
  969. SendClientMessage(playerid, ORANGE, "FUNCTION: Will change your current angle.");
  970. GetPlayerFacingAngle(playerid,angle);
  971. format(string, sizeof(string), "HELP: Your current angle is %f", angle);
  972. SendClientMessage(playerid, ORANGE, string);
  973. return 1;
  974. }
  975. angle = floatstr(tmp);
  976. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  977. {
  978. SetVehicleZAngle(GetPlayerVehicleID(playerid), angle);
  979. format(string, sizeof(string), "You have changed your angle degree to %f" ,angle);
  980. SendClientMessage(playerid, GREEN, string);
  981. }
  982. else
  983. {
  984. SetPlayerFacingAngle(playerid,angle);
  985. format(string, sizeof(string), "You have changed your angle degree to %f",angle);
  986. SendClientMessage(playerid, GREEN, string);
  987. }
  988. }
  989. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  990. return 1;
  991. }
  992.  
  993. if(strcmp(cmd, "/rangeban", true) == 0) // Range-bans a player with the amount of ranges entered.
  994. {
  995. if (AccountInfo[playerid][AdminLevel] >= 4)
  996. {
  997. tmp = strtok(cmdtext,idx);
  998. if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /rangeban [playername/id] [ranges(2 max)]");
  999. new ip[20],ban[128];
  1000. new giveplayerid = ReturnUser(tmp);
  1001. if (IsPlayerConnected(giveplayerid))
  1002. {
  1003. tmp = strtok(cmdtext,idx);
  1004. if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /rangeban [playername/id] [RANGES(2 max)]");
  1005. new ranges = strval(tmp);
  1006. if (ranges < 0 || ranges > 2) return SendClientMessage(playerid, RED, "mum ranges: 0 | Maximum ranges: 2");
  1007. if (ranges == 0)
  1008. {
  1009. Ban(giveplayerid);
  1010. }
  1011. GetPlayerName(giveplayerid, giveplayername, sizeof giveplayername);
  1012. GetPlayerIp(giveplayerid, ip, sizeof ip);
  1013. new count = 1;
  1014. for(new i = strlen(ip); i > 0; i--)
  1015. {
  1016. if (ip[i] == '.')
  1017. {
  1018. if (count == ranges)
  1019. {
  1020. format(ban, sizeof ban, "banip %s", ip);
  1021. SendRconCommand(ban);
  1022. break;
  1023. }
  1024. else count++;
  1025. }
  1026. else ip[i] = '*';
  1027. }
  1028. format(ban, sizeof ban, "%s has been banned with the ip '%s'", giveplayername, ip);
  1029. SendClientMessage(playerid, GREEN, ban);
  1030. }
  1031. else
  1032. {
  1033. format(string, sizeof(string), "%i is not an active player.", giveplayerid);
  1034. SendClientMessage(playerid, RED, string);
  1035. }
  1036. }
  1037. else SendClientMessage(playerid, RED, "You're not a lead admin !");
  1038. return 1;
  1039. }
  1040.  
  1041. if(strcmp(cmd, "/ip", true) == 0) // Look at the player's IP address
  1042. {
  1043. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1044. {
  1045. tmp = strtok(cmdtext, idx);
  1046. if(!strlen(tmp))
  1047. {
  1048. SendClientMessage(playerid, ORANGE, "USAGE: /ip [playername/id]");
  1049. SendClientMessage(playerid, ORANGE, "FUNCTION: View a player's IP.");
  1050. return 1;
  1051. }
  1052.  
  1053. new giveplayerid = ReturnUser(tmp);
  1054. if(IsPlayerConnected(giveplayerid))
  1055. {
  1056. new sstring[256];
  1057. new ip[20];
  1058. GetPlayerIp(giveplayerid, ip, sizeof ip);
  1059. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1060. format(sstring, sizeof(sstring), "-| %s's IP: %s |-", giveplayername,ip);
  1061. SendClientMessage(playerid,LIGHTBLUE, sstring);
  1062. }
  1063. else
  1064. {
  1065. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1066. SendClientMessage(playerid, RED, string);
  1067. }
  1068. }
  1069. else SendClientMessage(playerid, RED, "You are not an admin.");
  1070. return 1;
  1071. }
  1072.  
  1073. if(strcmp(cmd, "/ban", true) == 0) // Bans a player from the server
  1074. {
  1075. new reason[128];
  1076. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1077. {
  1078. tmp = strtok(cmdtext, idx);
  1079. if(!strlen(tmp))
  1080. {
  1081. SendClientMessage(playerid, ORANGE, "USAGE: /ban [playername/id] [reason]");
  1082. SendClientMessage(playerid, ORANGE, "FUNCTION: Will BAN the specified player.");
  1083. return 1;
  1084. }
  1085.  
  1086. new giveplayerid = ReturnUser(tmp);
  1087.  
  1088. if (AccountInfo[giveplayerid][AdminLevel] > AccountInfo[playerid][AdminLevel])
  1089. {
  1090. format(string, sizeof(string), "-| [%i]%s tried to ban you! |-",playerid,sendername);
  1091. SendClientMessage(giveplayerid, ADMIN_RED,string);
  1092. SendClientMessage(playerid, ADMIN_RED, "You are not allowed to ban an admin with a higher level than you!");
  1093. }
  1094.  
  1095. else if (giveplayerid != INVALID_PLAYER_ID)
  1096. {
  1097. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1098. GetPlayerName(playerid, sendername, sizeof(sendername));
  1099. reason = bigstrtok(cmdtext, idx);
  1100. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /ban [playername/id] [reason]");
  1101. new ip[20];
  1102. printf("ADMIN: Admin %s banned %s. Reason: %s", sendername, giveplayername, reason);
  1103. format(string, sizeof(string), "-| Administrator %s banned %s. [Reason: %s ] |-", sendername, giveplayername, reason);
  1104. SendClientMessageToAll(ADMIN_RED, string);
  1105. GetPlayerIp(giveplayerid, ip, sizeof ip);
  1106. format(string, sizeof(string), "-| Banned Player's IP: %s |-", ip);
  1107. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1108. AccountInfo[giveplayerid][AdminLevel] = 0; // Resets the banned player's admin level for security reasons
  1109. format(reason, sizeof reason, "[%s]%s", sendername, reason);
  1110. BanEx(giveplayerid, reason);
  1111. }
  1112. else if(giveplayerid == INVALID_PLAYER_ID)
  1113. {
  1114. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1115. SendClientMessage(playerid, RED, string);
  1116. }
  1117. }
  1118. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1119. return 1;
  1120. }
  1121.  
  1122. if(strcmp(cmd, "/kick", true) == 0) // Kicks the player from the server
  1123. {
  1124. new reason[128];
  1125. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1126. {
  1127. tmp = strtok(cmdtext, idx);
  1128. if(!strlen(tmp))
  1129. {
  1130. SendClientMessage(playerid, ORANGE, "USAGE: /kick [playername/id] [reason]");
  1131. SendClientMessage(playerid, ORANGE, "FUNCTION: Will kick the specified player.");
  1132. return 1;
  1133. }
  1134.  
  1135. new giveplayerid = ReturnUser(tmp);
  1136. if(giveplayerid != INVALID_PLAYER_ID)
  1137. {
  1138. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1139. GetPlayerName(playerid, sendername, sizeof(sendername));
  1140. reason = bigstrtok(cmdtext, idx);
  1141. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /kick [playername/id] [reason]");
  1142. printf("ADMIN: Admin %s kicked %s. Reason: %s", sendername, giveplayername, reason);
  1143. format(string, sizeof(string), "-| Administrator %s kicked %s. [Reason: %s ] |-", sendername, giveplayername, reason);
  1144. SendClientMessageToAll(ADMIN_RED, string);
  1145. Kick(giveplayerid);
  1146. KickLog(string);
  1147. }
  1148. else if(giveplayerid == INVALID_PLAYER_ID)
  1149. {
  1150. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1151. SendClientMessage(playerid, RED, string);
  1152. }
  1153. }
  1154. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1155. return 1;
  1156. }
  1157.  
  1158. if(strcmp(cmd, "/mute", true) == 0) // Mutes the player from talking in the chat box
  1159. {
  1160. new reason[128];
  1161. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1162. {
  1163. tmp = strtok(cmdtext, idx);
  1164. if(!strlen(tmp))
  1165. {
  1166. SendClientMessage(playerid, ORANGE, "USAGE: /mute [playername/id] [reason]");
  1167. SendClientMessage(playerid, ORANGE, "FUNCTION: Will mute the specified player.");
  1168. return 1;
  1169. }
  1170.  
  1171. new giveplayerid = ReturnUser(tmp);
  1172.  
  1173. if(giveplayerid != INVALID_PLAYER_ID)
  1174. {
  1175. if (AccountInfo[giveplayerid][Mute] == 0)
  1176. {
  1177. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1178. GetPlayerName(playerid, sendername, sizeof(sendername));
  1179. reason = bigstrtok(cmdtext, idx);
  1180. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /mute [playername/id] [reason]");
  1181. printf("ADMIN: Admin %s muted %s. Reason: %s", sendername, giveplayername, reason);
  1182. format(string, sizeof(string), "-| Administrator %s muted %s. [Reason: %s ]|-", sendername,giveplayername,reason);
  1183. SendClientMessageToAll(ADMIN_RED, string);
  1184. AccountInfo[giveplayerid][Mute] = 1;
  1185. }
  1186. else if (AccountInfo[giveplayerid][Mute] == 1) SendClientMessage(playerid, RED, "Player is already muted!");
  1187. }
  1188.  
  1189. else if(giveplayerid == INVALID_PLAYER_ID)
  1190. {
  1191. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1192. SendClientMessage(playerid, RED, string);
  1193. }
  1194. }
  1195. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1196. return 1;
  1197. }
  1198.  
  1199. if(strcmp(cmd, "/unmute", true) == 0) // Unmutes a muted player
  1200. {
  1201. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1202. {
  1203. tmp = strtok(cmdtext, idx);
  1204. if(!strlen(tmp))
  1205. {
  1206. SendClientMessage(playerid, ORANGE, "USAGE: /unmute [playername/id]");
  1207. SendClientMessage(playerid, ORANGE, "FUNCTION: Will unmute the specified player.");
  1208. return 1;
  1209. }
  1210.  
  1211. new giveplayerid = ReturnUser(tmp);
  1212.  
  1213. if(giveplayerid != INVALID_PLAYER_ID)
  1214. {
  1215. if (AccountInfo[giveplayerid][Mute] == 1)
  1216. {
  1217. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1218. GetPlayerName(playerid, sendername, sizeof(sendername));
  1219. format(string, sizeof(string), "-| Administrator %s unmuted %s |-", sendername,giveplayername);
  1220. SendClientMessageToAll(ADMIN_RED, string);
  1221. AccountInfo[giveplayerid][Mute] = 0;
  1222. }
  1223. else if (AccountInfo[giveplayerid][Mute] == 0) SendClientMessage(playerid, RED, "Player isn't muted.");
  1224. }
  1225.  
  1226. else if(giveplayerid == INVALID_PLAYER_ID)
  1227. {
  1228. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1229. SendClientMessage(playerid, RED, string);
  1230. }
  1231. }
  1232. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1233. return 1;
  1234. }
  1235.  
  1236. if(strcmp(cmd, "/drugs", true) == 0) // Will make the player invinsible until death
  1237. {
  1238. if (AccountInfo[playerid][AdminLevel] > 1 || IsPlayerAdmin(playerid))
  1239. {
  1240. SetPlayerHealth(playerid,999999999); // max HP
  1241. Drugs[playerid] = 1;
  1242. SendClientMessage(playerid, GREEN, "You are now high on drugs...");
  1243. }
  1244. else SendClientMessage(playerid, RED, "Drugs are bad for you!");
  1245. return 1;
  1246. }
  1247.  
  1248. if(strcmp(cmd, "/freeze", true) == 0) // Freezes the player. Prevents him from moving
  1249. {
  1250. new reason[128];
  1251. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1252. {
  1253. tmp = strtok(cmdtext, idx);
  1254. if(!strlen(tmp))
  1255. {
  1256. SendClientMessage(playerid, ORANGE, "USAGE: /freeze [playername/id] [reason]");
  1257. SendClientMessage(playerid, ORANGE, "FUNCTION: Will freeze the specified player.");
  1258. return 1;
  1259. }
  1260.  
  1261. new giveplayerid = ReturnUser(tmp);
  1262. if(giveplayerid != INVALID_PLAYER_ID)
  1263. {
  1264. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1265. GetPlayerName(playerid, sendername, sizeof(sendername));
  1266. reason = bigstrtok(cmdtext, idx);
  1267. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /freeze [playername/id] [reason]");
  1268. format(string, sizeof(string), "-| Administrator %s froze %s. [Reason: %s ] |-", sendername, giveplayername, reason);
  1269. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1270. TogglePlayerControllable(giveplayerid, false);
  1271. }
  1272. else if(giveplayerid == INVALID_PLAYER_ID)
  1273. {
  1274. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1275. SendClientMessage(playerid, RED, string);
  1276. }
  1277. }
  1278. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1279. return 1;
  1280. }
  1281. if(strcmp(cmd, "/unfreeze", true) == 0) // Unfreezes the player
  1282. {
  1283. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1284. {
  1285. tmp = strtok(cmdtext, idx);
  1286. if(!strlen(tmp))
  1287. {
  1288. SendClientMessage(playerid, ORANGE, "USAGE: /unfreeze [playername/id]");
  1289. SendClientMessage(playerid, ORANGE, "FUNCTION: Will unfreeze the specified player.");
  1290. return 1;
  1291. }
  1292.  
  1293. new giveplayerid = ReturnUser(tmp);
  1294. if(giveplayerid != INVALID_PLAYER_ID)
  1295. {
  1296. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1297. GetPlayerName(playerid, sendername, sizeof(sendername));
  1298. format(string, sizeof(string), "-| Administrator %s unfroze %s |-", sendername,giveplayername);
  1299. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1300. TogglePlayerControllable(giveplayerid, true);
  1301. }
  1302. else if(giveplayerid == INVALID_PLAYER_ID)
  1303. {
  1304. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1305. SendClientMessage(playerid, RED, string);
  1306. }
  1307. }
  1308. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1309. return 1;
  1310. }
  1311.  
  1312. if(strcmp(cmd, "/setname", true) == 0) // Changes a player's name
  1313. {
  1314. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1315. {
  1316. tmp = strtok(cmdtext, idx);
  1317. if(!strlen(tmp))
  1318. {
  1319. SendClientMessage(playerid, ORANGE, "USAGE: /setname [playername/id] [newname]");
  1320. SendClientMessage(playerid, ORANGE, "FUNCTION: Will change the player's current name. ");
  1321. return 1;
  1322. }
  1323.  
  1324. new giveplayerid = ReturnUser(tmp);
  1325. if(giveplayerid != INVALID_PLAYER_ID)
  1326. {
  1327. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1328. GetPlayerName(playerid, sendername, sizeof(sendername));
  1329. tmp = strtok(cmdtext, idx);
  1330. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /setname [playername/id] [newname]");
  1331. format(string, sizeof(string), "-| Administrator %s renamed %s. [New Name: %s ] |-", sendername, giveplayername, tmp);
  1332. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1333. SetPlayerName(giveplayerid, tmp);
  1334. }
  1335. else if(giveplayerid == INVALID_PLAYER_ID)
  1336. {
  1337. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1338. SendClientMessage(playerid, RED, string);
  1339. }
  1340. }
  1341. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1342. return 1;
  1343. }
  1344.  
  1345. if(strcmp(cmd, "/givecash", true) == 0) // Gives some cash to the player
  1346. {
  1347. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1348. {
  1349. tmp = strtok(cmdtext, idx);
  1350. if(!strlen(tmp))
  1351. {
  1352. SendClientMessage(playerid, ORANGE, "USAGE: /givecash [playername/id] [cash]");
  1353. SendClientMessage(playerid, ORANGE, "FUNCTION: Will give the player some cash. ");
  1354. return 1;
  1355. }
  1356.  
  1357. new giveplayerid = ReturnUser(tmp);
  1358. if(giveplayerid != INVALID_PLAYER_ID)
  1359. {
  1360. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1361. GetPlayerName(playerid, sendername, sizeof(sendername));
  1362. tmp = strtok(cmdtext, idx);
  1363. new cash = strval(tmp);
  1364. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /givecash [playername/id] [cash]");
  1365. format(string, sizeof(string), "-| Administrator %s gave %s $%d |-", sendername,giveplayername,cash);
  1366. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1367. GivePlayerMoney(giveplayerid, cash);
  1368. }
  1369. else if(giveplayerid == INVALID_PLAYER_ID)
  1370. {
  1371. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1372. SendClientMessage(playerid, RED, string);
  1373. }
  1374. }
  1375. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1376. return 1;
  1377. }
  1378.  
  1379. if(strcmp(cmd, "/kill", true) == 0) // If an admin, it kills the player you want. If not, suicide.
  1380. {
  1381. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1382. {
  1383. tmp = strtok(cmdtext, idx);
  1384. if(!strlen(tmp))
  1385. {
  1386. SendClientMessage(playerid, ORANGE, "USAGE: /kill [playername/id]");
  1387. SendClientMessage(playerid, ORANGE, "FUNCTION: Will kill the specified player.");
  1388. return 1;
  1389. }
  1390.  
  1391. new giveplayerid = ReturnUser(tmp);
  1392. if(giveplayerid != INVALID_PLAYER_ID)
  1393. {
  1394. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1395. GetPlayerName(playerid, sendername, sizeof(sendername));
  1396. format(string, sizeof(string), "-| Administrator %s killed %s |-", sendername,giveplayername);
  1397. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1398. SetPlayerHealth(giveplayerid, 0.0);
  1399. }
  1400. else if(giveplayerid == INVALID_PLAYER_ID)
  1401. {
  1402. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1403. SendClientMessage(playerid, RED, string);
  1404. }
  1405. }
  1406. else
  1407. {
  1408. SendClientMessage(playerid, RED, "You have committed suicide.");
  1409. SetPlayerHealth(playerid,0.0);
  1410. }
  1411. return 1;
  1412. }
  1413.  
  1414. if(strcmp(cmd, "/goto", true) == 0) // Teleports to a player
  1415. {
  1416. new Float:pX,Float:pY,Float:pZ;
  1417. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1418. {
  1419. tmp = strtok(cmdtext, idx);
  1420. if(!strlen(tmp))
  1421. {
  1422. SendClientMessage(playerid, ORANGE, "USAGE: /goto [playername/id]");
  1423. SendClientMessage(playerid, ORANGE, "FUNCTION: Will teleport to the specified player.");
  1424. return 1;
  1425. }
  1426. new giveplayerid = ReturnUser(tmp);
  1427. if(giveplayerid != INVALID_PLAYER_ID)
  1428. {
  1429. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1430. {
  1431. GetPlayerPos(giveplayerid,pX,pY,pZ);
  1432. SetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ+2);
  1433. }
  1434. else
  1435. {
  1436. GetPlayerPos(giveplayerid,pX,pY,pZ);
  1437. SetPlayerPos(playerid,pX,pY,pZ+2);
  1438. }
  1439. SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
  1440. }
  1441. else if(giveplayerid == INVALID_PLAYER_ID)
  1442. {
  1443. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1444. SendClientMessage(playerid, RED, string);
  1445. }
  1446. }
  1447. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1448. return 1;
  1449. }
  1450.  
  1451. if(strcmp(cmd, "/get", true) == 0) // Teleports the player to your position
  1452. {
  1453. new Float:pX,Float:pY,Float:pZ;
  1454. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1455. {
  1456. tmp = strtok(cmdtext, idx);
  1457. if(!strlen(tmp))
  1458. {
  1459. SendClientMessage(playerid, ORANGE, "USAGE: /get [playername/id]");
  1460. SendClientMessage(playerid, ORANGE, "FUNCTION: Will teleport the specified player to you.");
  1461. return 1;
  1462. }
  1463. new giveplayerid = ReturnUser(tmp);
  1464. if(giveplayerid != INVALID_PLAYER_ID)
  1465. {
  1466. if (GetPlayerState(giveplayerid) == PLAYER_STATE_DRIVER)
  1467. {
  1468. GetPlayerPos(playerid,pX,pY,pZ);
  1469. SetVehiclePos(GetPlayerVehicleID(giveplayerid),pX,pY,pZ+2);
  1470. }
  1471. else
  1472. {
  1473. GetPlayerPos(playerid,pX,pY,pZ);
  1474. SetPlayerPos(giveplayerid,pX,pY,pZ+2);
  1475. }
  1476. SetPlayerInterior(giveplayerid,GetPlayerInterior(playerid));
  1477. }
  1478. else if(giveplayerid == INVALID_PLAYER_ID)
  1479. {
  1480. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1481. SendClientMessage(playerid, RED, string);
  1482. }
  1483. }
  1484. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1485. return 1;
  1486. }
  1487.  
  1488. if(strcmp(cmd, "/teleport", true) == 0) // Teleports the player to the other player
  1489. {
  1490. if (AccountInfo[playerid][AdminLevel] >= 4 || IsPlayerAdmin(playerid))
  1491. {
  1492. tmp = strtok(cmdtext, idx);
  1493. if(!strlen(tmp))
  1494. {
  1495. SendClientMessage(playerid, ORANGE, "USAGE: /teleport [playername/id] [targetname/id]");
  1496. SendClientMessage(playerid, ORANGE, "FUNCTION: Will teleport the player to the target.");
  1497. return 1;
  1498. }
  1499. new giveplayerid = ReturnUser(tmp);
  1500. if(giveplayerid != INVALID_PLAYER_ID)
  1501. {
  1502. tmp = strtok(cmdtext, idx);
  1503. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /teleport [playername/id] [targetname/id]");
  1504. new targetid = ReturnUser(tmp, playerid);
  1505. if (targetid == INVALID_PLAYER_ID) return 1;
  1506. new Float:tX,Float:tY,Float:tZ;
  1507. if (GetPlayerState(giveplayerid) == PLAYER_STATE_DRIVER)
  1508. {
  1509. GetPlayerPos(targetid,tX,tY,tZ);
  1510. SetVehiclePos(GetPlayerVehicleID(giveplayerid),tX,tY,tZ+2);
  1511. }
  1512. else
  1513. {
  1514. GetPlayerPos(targetid,tX,tY,tZ);
  1515. SetPlayerPos(giveplayerid,tX,tY,tZ+2);
  1516. }
  1517. SetPlayerInterior(giveplayerid,GetPlayerInterior(targetid));
  1518. }
  1519. else if(giveplayerid == INVALID_PLAYER_ID)
  1520. {
  1521. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1522. SendClientMessage(playerid, RED, string);
  1523. }
  1524. }
  1525. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1526. return 1;
  1527. }
  1528.  
  1529. if(!strcmp(cmdtext, "//", true, 2)) // Admin chat
  1530. {
  1531. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1532. {
  1533. if(!strlen(cmdtext[2])) return SendClientMessage(playerid, ORANGE, "USAGE: //<text>"), SendClientMessage(playerid, ORANGE, "HELP: Example: //Hi");
  1534. GetPlayerName(playerid, sendername, sizeof(sendername));
  1535. format(string, sizeof(string), "Admin [%i]%s: %s" ,playerid,sendername, cmdtext[2]);
  1536. SendClientMessageToAdmins(DARKPINK, string, 1);
  1537. return 1;
  1538. }
  1539. else return SendClientMessage(playerid, RED, "You are not an admin!");
  1540. }
  1541.  
  1542. if(strcmp(cmd, "/slap", true) == 0) // Slap a player
  1543. {
  1544. new Float:pX,Float:pY,Float:pZ;
  1545. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  1546. {
  1547. tmp = strtok(cmdtext, idx);
  1548. if(!strlen(tmp))
  1549. {
  1550. SendClientMessage(playerid, ORANGE, "USAGE: /slap [playername/id]");
  1551. SendClientMessage(playerid, ORANGE, "FUNCTION: Will slap the specified player");
  1552. return 1;
  1553. }
  1554.  
  1555. new giveplayerid = ReturnUser(tmp);
  1556. if(giveplayerid != INVALID_PLAYER_ID)
  1557. {
  1558. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1559. GetPlayerName(playerid, sendername, sizeof(sendername));
  1560. GetPlayerPos(giveplayerid,pX,pY,pZ);
  1561. SetPlayerPos(giveplayerid,pX,pY,pZ+5);
  1562. format(string, sizeof(string), "-| Administrator %s slapped %s |-",sendername, giveplayername);
  1563. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1564. }
  1565. else if(giveplayerid == INVALID_PLAYER_ID)
  1566. {
  1567. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1568. SendClientMessage(playerid, RED, string);
  1569. }
  1570. }
  1571. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1572. return 1;
  1573. }
  1574.  
  1575. if(strcmp(cmd, "/bslap", true) == 0) // Slap a player 2 times higher than /slap
  1576. {
  1577. new Float:pX,Float:pY,Float:pZ;
  1578. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1579. {
  1580. tmp = strtok(cmdtext, idx);
  1581. if(!strlen(tmp))
  1582. {
  1583. SendClientMessage(playerid, ORANGE, "USAGE: /bslap [playername/id]");
  1584. SendClientMessage(playerid, ORANGE, "FUNCTION: Will double slap the specified player");
  1585. return 1;
  1586. }
  1587.  
  1588. new giveplayerid = ReturnUser(tmp);
  1589. if(giveplayerid != INVALID_PLAYER_ID)
  1590. {
  1591. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1592. GetPlayerName(playerid, sendername, sizeof(sendername));
  1593. GetPlayerPos(giveplayerid,pX,pY,pZ);
  1594. SetPlayerPos(giveplayerid,pX,pY,pZ+10);
  1595. format(string, sizeof(string), "-| Administrator %s bitch slapped %s |-",sendername, giveplayername);
  1596. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1597. }
  1598. else if(giveplayerid == INVALID_PLAYER_ID)
  1599. {
  1600. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1601. SendClientMessage(playerid, RED, string);
  1602. }
  1603. }
  1604. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1605. return 1;
  1606. }
  1607.  
  1608. if(strcmp(cmd, "/disarm", true) == 0) // Reset the player's weapons
  1609. {
  1610. if (AccountInfo[playerid][AdminLevel] >= 3 || IsPlayerAdmin(playerid))
  1611. {
  1612. tmp = strtok(cmdtext, idx);
  1613. if(!strlen(tmp))
  1614. {
  1615. SendClientMessage(playerid, ORANGE, "USAGE: /disarm [playername/id]");
  1616. SendClientMessage(playerid, ORANGE, "FUNCTION: Will disarm the player.");
  1617. return 1;
  1618. }
  1619.  
  1620. new giveplayerid = ReturnUser(tmp);
  1621. if(giveplayerid != INVALID_PLAYER_ID)
  1622. {
  1623. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1624. GetPlayerName(playerid, sendername, sizeof(sendername));
  1625. ResetPlayerWeapons(giveplayerid);
  1626. format(string, sizeof(string), "-| Administrator %s disarmed %s |-",sendername, giveplayername);
  1627. SendClientMessageToAdmins(ADMIN_RED,string,1);
  1628. }
  1629. else if(giveplayerid == INVALID_PLAYER_ID)
  1630. {
  1631. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1632. SendClientMessage(playerid, RED, string);
  1633. }
  1634. }
  1635. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1636. return 1;
  1637. }
  1638.  
  1639. if(strcmp(cmd, "/say", true) == 0) // Publicly says an admin message. Exact same as RCON's 'say' but in a red color.
  1640. {
  1641. if (AccountInfo[playerid][AdminLevel] >= 3 || IsPlayerAdmin(playerid))
  1642. {
  1643. GetPlayerName(playerid, sendername, sizeof(sendername));
  1644. new result[128];
  1645. result = bigstrtok(cmdtext, idx);
  1646. if(!strlen(result))
  1647. {
  1648. SendClientMessage(playerid, ORANGE, "USAGE: /say [message]");
  1649. SendClientMessage(playerid, ORANGE, "FUNCTION: Will broadcast an admin message.");
  1650. return 1;
  1651. }
  1652. format(string, sizeof(string), "* Admin: %s", result);
  1653. SendClientMessageToAll(LIGHTRED, string);
  1654. printf("%s", string);
  1655. }
  1656. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1657. return 1;
  1658. }
  1659.  
  1660. if(strcmp(cmd, "/bc", true) == 0 || strcmp(cmd, "/broadcast", true) == 0) // Displays a screen message
  1661. {
  1662. if (AccountInfo[playerid][AdminLevel] >= 3 || IsPlayerAdmin(playerid))
  1663. {
  1664. GetPlayerName(playerid, sendername, sizeof(sendername));
  1665. new result[128];
  1666. result = bigstrtok(cmdtext, idx);
  1667. if(!strlen(result))
  1668. {
  1669. SendClientMessage(playerid, ORANGE, "USAGE: /bc [message] [time in seconds(if non entered, 5 seconds will be the time by default)]");
  1670. SendClientMessage(playerid, RED, "FUNCTION: Will broadcast a screen message");
  1671. return 1;
  1672. }
  1673. new time;
  1674. tmp = strtok(cmdtext, idx);
  1675. if (!strlen(tmp)) time = 5;
  1676. else time = strval(tmp);
  1677. format(string, sizeof(string), "~w~%s", result);
  1678. GameTextForAll(string, time*1000, 4);
  1679. printf("%s", string);
  1680. }
  1681. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1682. return 1;
  1683. }
  1684.  
  1685. if(strcmp(cmd, "/veh", true) == 0) // Spawn a vehicle. Name supported too.
  1686. {
  1687. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  1688. {
  1689. tmp = strtok(cmdtext, idx);
  1690. if(!strlen(tmp))
  1691. {
  1692. SendClientMessage(playerid, ORANGE, "USAGE: /veh [modelname/id] [color1] [color2]");
  1693. return 1;
  1694. }
  1695. new car = GetVehicleModelIDFromName(tmp);
  1696. if (car == -1)
  1697. {
  1698. car = strval(tmp);
  1699. if(car < 400 || car > 611) return SendClientMessage(playerid, RED, "Vehicle ID can't be below 400 nor above 611 !");
  1700. }
  1701.  
  1702. tmp = strtok(cmdtext, idx);
  1703. if(!strlen(tmp))
  1704. {
  1705. SendClientMessage(playerid, ORANGE, "USAGE: /veh [modelname/id] [color1] [color2]");
  1706. return 1;
  1707. }
  1708. new color1 = strval(tmp);
  1709.  
  1710. tmp = strtok(cmdtext, idx);
  1711. if(!strlen(tmp))
  1712. {
  1713. SendClientMessage(playerid, ORANGE, "USAGE: /veh [modelname/id] [color1] [color2]");
  1714. return 1;
  1715. }
  1716. new color2 = strval(tmp);
  1717.  
  1718. new Float:X,Float:Y,Float:Z,Float:A;
  1719. GetPlayerPos(playerid, X,Y,Z);
  1720. GetPlayerFacingAngle(playerid, A);
  1721. X += (5 * floatsin(-A, degrees));
  1722. Y += (5 * floatcos(-A, degrees));
  1723. new carid = CreateVehicle(car, X,Y,Z, 0.0, color1, color2, 600000000);
  1724. format(string, sizeof(string), "Vehicle %s(%d) spawned.", VehNames[GetVehicleModel(carid)-400], carid);
  1725. SendClientMessage(playerid, GREEN, string);
  1726. GetPlayerName(playerid,sendername,sizeof(sendername));
  1727. format(string, sizeof(string), "-| Administrator %s spawned a vehicle(%d) [ Model: %s ] |-", sendername, carid, VehNames[GetVehicleModel(carid)-400]);
  1728. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1729. }
  1730. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  1731. return 1;
  1732. }
  1733.  
  1734. if(strcmp(cmd, "/pweapons", true) == 0) // Checks a player's weapons
  1735. {
  1736. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 1)
  1737. {
  1738. tmp = strtok(cmdtext, idx);
  1739. if(!strlen(tmp))
  1740. {
  1741. SendClientMessage(playerid, ORANGE, "USAGE: /pweapons [playerid/name]");
  1742. return 1;
  1743. }
  1744. new giveplayerid = ReturnUser(tmp);
  1745. if (giveplayerid != INVALID_PLAYER_ID)
  1746. {
  1747. new bullets[12];
  1748. new weapons[12];
  1749. new weapname[12][20];
  1750. for(new i = 0; i < 12; i++)
  1751. {
  1752. GetPlayerWeaponData(giveplayerid, i+1, weapons[i], bullets[i]);
  1753. GetWeaponName(weapons[i], weapname[i], 20);
  1754. }
  1755. GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
  1756. format(string,sizeof(string)," |- %s's Weapons -|",giveplayername);
  1757. SendClientMessage(playerid,LIGHTGREEN,string);
  1758. format(string, sizeof(string),"%s(0) - %s(%d) - %s(%d) - %s(%d) - %s(%d) - %s(%d)",weapname[0],weapname[1],bullets[1],weapname[2],bullets[2],weapname[3],bullets[3],weapname[4],bullets[4],weapname[5],bullets[5]);
  1759. SendClientMessage(playerid,YELLOW,string);
  1760. format(string,sizeof(string),"%s(%d) - %s(%d) - %s(%d) - %s(0) - %s(0) - %s(0)",weapname[6],bullets[6],weapname[7],bullets[7],weapname[8],bullets[8],weapname[9],weapname[10],weapname[11]);
  1761. SendClientMessage(playerid,YELLOW,string);
  1762. }
  1763. else SendClientMessage(playerid, RED, "Player is not active.");
  1764. }
  1765. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  1766. return 1;
  1767. }
  1768.  
  1769. if(strcmp(cmd, "/sethp", true) == 0) // Sets a player's health
  1770. {
  1771. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 3)
  1772. {
  1773. tmp = strtok(cmdtext, idx);
  1774. if(!strlen(tmp))
  1775. {
  1776. SendClientMessage(playerid, ORANGE, "USAGE: /sethp [playerid/name] [health]");
  1777. return 1;
  1778. }
  1779. new targetid = ReturnUser(tmp);
  1780. tmp = strtok(cmdtext, idx);
  1781. new Float:hp = floatstr(tmp);
  1782. if (targetid != INVALID_PLAYER_ID)
  1783. {
  1784. if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /sethp [playerid/name] [health]");
  1785. SetPlayerHealth(targetid,hp);
  1786. if (hp < 1) Drugs[targetid] = 0;
  1787. GetPlayerName(playerid, sendername, sizeof(sendername));
  1788. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  1789. format(string,sizeof(string),"|- Administrator %s has changed %s's HP. [HP: %.2f] -|",sendername,giveplayername,hp);
  1790. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  1791. }
  1792. else SendClientMessage(playerid, RED, "Player is not active.");
  1793. }
  1794. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  1795. return 1;
  1796. }
  1797.  
  1798. if (strcmp(cmd, "/logout", true) == 0) // Logs off the admin
  1799. {
  1800. if(AccountInfo[playerid][Logged] == 1)
  1801. {
  1802. if(AccountInfo[playerid][AdminLevel] >= 1)
  1803. {
  1804. OnPlayerUpdateAccount(playerid);
  1805. AccountInfo[playerid][Logged] = 0;
  1806. AccountInfo[playerid][AdminLevel] = 0;
  1807. SendClientMessage(playerid, GREEN, "You have successfuly logged out.");
  1808. }
  1809. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  1810. }
  1811. else return SendClientMessage(playerid, RED, "You're not logged in! ( /login [password] )");
  1812. return 1;
  1813. }
  1814.  
  1815. if(strcmp(cmd, "/warn", true) == 0) // Warns a player. 3 warnings = auto-ban
  1816. {
  1817. if (AccountInfo[playerid][AdminLevel] >= 3)
  1818. {
  1819. tmp = strtok(cmdtext, idx);
  1820. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /warn [playername/id] [reason]");
  1821. new targetid = ReturnUser(tmp);
  1822. if(IsPlayerConnected(targetid))
  1823. {
  1824. if(targetid != INVALID_PLAYER_ID)
  1825. {
  1826. new reason[128];
  1827. reason = bigstrtok(cmdtext, idx);
  1828. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /warn [playername/id] [reason]");
  1829. new sstring[128];
  1830. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  1831. GetPlayerName(playerid, sendername, sizeof(sendername));
  1832. AccountInfo[targetid][Warns] += 1;
  1833. format(string, sizeof(string), "You got warned by Admin %s. Reason: %s", sendername, reason);
  1834. SendClientMessage(targetid, ADMIN_RED, string);
  1835. format(string, sizeof(string), "-| Administrator %s warned %s. [Reason: %s ] |-", sendername,giveplayername, reason);
  1836. SendClientMessageToAdmins(ADMIN_RED,string,1);
  1837. format(string, sizeof(string), "-| %s's warnings: %d |-",giveplayername, AccountInfo[targetid][Warns]);
  1838. SendClientMessageToAdmins(ADMIN_RED,string,1);
  1839. if (AccountInfo[targetid][Warns] == 1) strmid(AccountInfo[targetid][WarnReason1], reason, 0, strlen(reason), 128);
  1840. else if (AccountInfo[targetid][Warns] == 2) strmid(AccountInfo[targetid][WarnReason2], reason, 0, strlen(reason), 128);
  1841. else if (AccountInfo[targetid][Warns] == 3) strmid(AccountInfo[targetid][WarnReason3], reason, 0, strlen(reason), 128);
  1842. SendClientMessage(targetid, RED, "3 Warnings = Auto-Ban!");
  1843. if(AccountInfo[targetid][Warns] >= 3)
  1844. {
  1845. new ip[128];
  1846. format(string, sizeof(string), "-| Administrator %s banned %s. [Reason: 3 Warnings...] |-", sendername,giveplayername);
  1847. BanLog(string);
  1848. SendClientMessageToAll(ADMIN_RED, string);
  1849. for(new i = 0; i < 3; i++)
  1850. {
  1851. if (i == 0) format(string, sizeof (string), "-| Reason #%d: %s |-", i+1, AccountInfo[targetid][WarnReason1]);
  1852. else if (i == 1) format(string, sizeof (string), "-| Reason #%d: %s |-", i+1, AccountInfo[targetid][WarnReason2]);
  1853. else if (i == 2) format(string, sizeof (string), "-| Reason #%d: %s |-", i+1, AccountInfo[targetid][WarnReason3]);
  1854. SendClientMessageToAll(ADMIN_RED, string);
  1855. }
  1856. GetPlayerIp(targetid,ip,128);
  1857. format(sstring, sizeof(sstring), "-| Banned Player's IP: %s |-", ip);
  1858. SendClientMessageToAdmins(ADMIN_RED, sstring,1);
  1859. AccountInfo[targetid][AdminLevel]= 0;
  1860. AccountInfo[targetid][Warns] = 0;
  1861. format(AccountInfo[targetid][WarnReason1], 128, "NONE");
  1862. format(AccountInfo[targetid][WarnReason2], 128, "NONE");
  1863. format(AccountInfo[targetid][WarnReason3], 128, "NONE");
  1864. Ban(giveplayerid);
  1865. return 1;
  1866. }
  1867. }
  1868. else
  1869. {
  1870. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1871. SendClientMessage(playerid, RED, string);
  1872. }
  1873. }
  1874. else
  1875. {
  1876. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1877. SendClientMessage(playerid, RED, string);
  1878. }
  1879. }
  1880. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1881. return 1;
  1882. }
  1883.  
  1884. if(strcmp(cmd, "/pstats", true) == 0) // Views the player's stats
  1885. {
  1886. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 1)
  1887. {
  1888. tmp = strtok(cmdtext, idx);
  1889. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /pstats [playername/id]");
  1890. new targetid = ReturnUser(tmp);
  1891. if (targetid != INVALID_PLAYER_ID)
  1892. {
  1893. new Float:health,Float:armor;
  1894. GetPlayerHealth(targetid,health);
  1895. GetPlayerArmour(targetid,armor);
  1896. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  1897. format(string, sizeof(string), "Stats of %s: Health: '%.2f' - Cash: '$%d' - Warnings: '%d' - Armor: '%.2f'",giveplayername, health,GetPlayerMoney(targetid),AccountInfo[targetid][Warns],armor);
  1898. SendClientMessage(playerid,PURPLE,string);
  1899. if(AccountInfo[giveplayerid][Logged] == 1) SendClientMessage(playerid, PURPLE, "Logged In: Yes");
  1900. else if(AccountInfo[giveplayerid][Logged] == 0) SendClientMessage(playerid, PURPLE, "Logged In: No");
  1901. SendClientMessage(playerid,YELLOW,"Type /pweapons [playername/id] to check the player's weapons");
  1902. }
  1903. else SendClientMessage(playerid, RED, "Player is not active.");
  1904. }
  1905. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  1906. return 1;
  1907. }
  1908.  
  1909. if(strcmp(cmd, "/fuck", true) == 0) // Sends a player in the air and explodes
  1910. {
  1911. new Float:pX,Float:pY,Float:pZ;
  1912. new Float:X,Float:Y,Float:Z;
  1913. if (AccountInfo[playerid][AdminLevel] >= 4 || IsPlayerAdmin(playerid))
  1914. {
  1915. tmp = strtok(cmdtext, idx);
  1916. if(!strlen(tmp))
  1917. {
  1918. SendClientMessage(playerid, ORANGE, "USAGE: /fuck [playerid]");
  1919. SendClientMessage(playerid, ORANGE, "FUNCTION: Will fuck up a player.");
  1920. return 1;
  1921. }
  1922.  
  1923. new targetid = ReturnUser(tmp);
  1924. if(targetid != INVALID_PLAYER_ID)
  1925. {
  1926. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  1927. GetPlayerName(playerid, sendername, sizeof(sendername));
  1928. GetPlayerPos(targetid,pX,pY,pZ);
  1929. CreateExplosion(X,Y,Z+50,2,5.0);
  1930. SetPlayerPos(targetid,pX,pY,pZ+50);
  1931. format(string, sizeof(string), "-| Administrator %s fucked %s up |-",sendername, giveplayername);
  1932. SendClientMessageToAdmins(ADMIN_RED,string,1);
  1933. SendClientMessage(targetid, RED, "You've been fucked up by an admin.");
  1934. }
  1935. else if(giveplayerid == INVALID_PLAYER_ID)
  1936. {
  1937. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  1938. SendClientMessage(playerid, RED, string);
  1939. }
  1940. }
  1941. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  1942. return 1;
  1943. }
  1944.  
  1945. if(strcmp(cmd, "/giveweapon", true) == 0 || strcmp(cmd, "/gw", true) == 0) // Gives a weapon to a player
  1946. {
  1947. if (AccountInfo[playerid][AdminLevel] >= 3 || IsPlayerAdmin(playerid))
  1948. {
  1949. tmp = strtok(cmdtext, idx);
  1950. if(!strlen(tmp))
  1951. {
  1952. SendClientMessage(playerid, ORANGE, "USAGE: /giveweapon [playername/id] [weaponid] [ammo]");
  1953. return 1;
  1954. }
  1955. new gun;
  1956. new ammo;
  1957. new targetid = ReturnUser(tmp);
  1958. tmp = strtok(cmdtext, idx);
  1959. gun = strval(tmp);
  1960. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /giveweapon [playername/id] [weaponid] [ammo]");
  1961. tmp = strtok(cmdtext, idx);
  1962. ammo = strval(tmp);
  1963. if(targetid != INVALID_PLAYER_ID)
  1964. {
  1965. new weap[50];
  1966. GetPlayerName(playerid, sendername, sizeof(sendername));
  1967. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  1968. GivePlayerWeapon(targetid, gun, ammo);
  1969. GetWeaponName(gun, weap, sizeof weap);
  1970. format(string, sizeof(string), "-| Administrator %s gave a weapon(%s) to %s |-",sendername, weap, giveplayername);
  1971. SendClientMessageToAdmins(ADMIN_RED,string,1);
  1972. }
  1973. else if(targetid == INVALID_PLAYER_ID)
  1974. {
  1975. format(string, sizeof(string), "%d is not an active player.", targetid);
  1976. SendClientMessage(playerid, RED, string);
  1977. }
  1978. }
  1979. else SendClientMessage(playerid, RED, "Invaild Command, Please use /commands or /cmds");
  1980. return 1;
  1981. }
  1982. if(strcmp(cmd, "/timeout", true) == 0) // Crashes a player's client
  1983. {
  1984. if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid))
  1985. {
  1986. tmp = strtok(cmdtext, idx);
  1987. if(!strlen(tmp))
  1988. {
  1989. SendClientMessage(playerid, ORANGE, "USAGE: /timeout [playername/id]");
  1990. SendClientMessage(playerid, ORANGE, "FUNCTION: Will Make a player Timeout.");
  1991. return 1;
  1992. }
  1993. new Float:X,Float:Y,Float:Z;
  1994. new targetid = ReturnUser(tmp);
  1995. if(IsPlayerConnected(targetid))
  1996. {
  1997. GetPlayerPos(giveplayerid,X,Y,Z);
  1998. new objectcrash = CreatePlayerObject(targetid,666666,X,Y,Z,0,0,0); // double-devil has spoken
  1999. SendClientMessage(playerid,GREEN, "Player successfuly crashed.");
  2000. DestroyPlayerObject(targetid, objectcrash);
  2001. }
  2002. else if (!IsPlayerConnected(giveplayerid))
  2003. {
  2004. format(string, sizeof(string), "%d is not an active player.", targetid);
  2005. SendClientMessage(playerid, RED, string);
  2006. }
  2007. }
  2008. else SendClientMessage(playerid, RED, "You're not a lead admin.");
  2009. return 1;
  2010. }
  2011.  
  2012. if(strcmp(cmd, "/setwarn", true) == 0) // Sets the player's warnings
  2013. {
  2014. if (AccountInfo[playerid][AdminLevel] >= 4 || IsPlayerAdmin(playerid))
  2015. {
  2016. tmp = strtok(cmdtext, idx);
  2017. if(!strlen(tmp))
  2018. {
  2019. SendClientMessage(playerid, ORANGE, "USAGE: /setwarn [playername/id] [warning]");
  2020. SendClientMessage(playerid, ORANGE, "FUNCTION: Will set a certain player's warning.");
  2021. return 1;
  2022. }
  2023. new targetid = ReturnUser(tmp);
  2024. if(targetid != INVALID_PLAYER_ID)
  2025. {
  2026. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2027. GetPlayerName(playerid, sendername, sizeof(sendername));
  2028. tmp = strtok(cmdtext, idx);
  2029. new warnings = strval(tmp);
  2030. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /setwarn [playername/id] [warning]");
  2031. AccountInfo[targetid][Warns] = warnings;
  2032. format(string, sizeof(string), "Admin %s changed your warnings to %d", sendername, warnings);
  2033. SendClientMessage(targetid, GREEN, string);
  2034. SendClientMessage(targetid, RED, "3 Warnings = Auto-Ban! Ask an admin to check how many warnings you have");
  2035. format(string, sizeof(string), "-| Administrator %s changed %s's warnings. [Warnings: %d ] |-",sendername,giveplayername, AccountInfo[giveplayerid][Warns]);
  2036. SendClientMessageToAdmins(ADMIN_RED,string,1);
  2037. }
  2038. else if(giveplayerid == INVALID_PLAYER_ID)
  2039. {
  2040. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  2041. SendClientMessage(playerid, RED, string);
  2042. }
  2043. }
  2044. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2045. return 1;
  2046. }
  2047.  
  2048. if(strcmp(cmd, "/an", true) == 0 || strcmp(cmd, "/announce", true) == 0) // Broadcasts an 'announcement' message.
  2049. {
  2050. if (AccountInfo[playerid][AdminLevel] >= 4 || IsPlayerAdmin(playerid))
  2051. {
  2052. GetPlayerName(playerid, sendername, sizeof(sendername));
  2053. new result[128];
  2054. result = bigstrtok(cmdtext, idx);
  2055. if(!strlen(result))
  2056. {
  2057. SendClientMessage(playerid, ORANGE, "USAGE: /(an)nounce [message]");
  2058. SendClientMessage(playerid, ORANGE, "FUNCTION: Will broadcast an announcement.");
  2059. return 1;
  2060. }
  2061. format(string, sizeof(string), "%s", result);
  2062. SendClientMessageToAll(AQUAGREEN, string);
  2063. printf("Announcement by %s: %s", sendername, string);
  2064. }
  2065. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2066. return 1;
  2067. }
  2068.  
  2069. if(strcmp(cmd, "/superpunch", true) == 0) // Triggers an explosion when you use the punch key
  2070. {
  2071. if (AccountInfo[playerid][AdminLevel] >= 4 || IsPlayerAdmin(playerid))
  2072. {
  2073. tmp = strtok(cmdtext,idx);
  2074. if(!strlen(tmp))
  2075. {
  2076. SendClientMessage(playerid, ORANGE, "USAGE: /superpunch [on/off]");
  2077. SendClientMessage(playerid, ORANGE, "FUNCTION: Will give you the power of Super Punch. When pressing 'PUNCH' button, you will explode but will live.");
  2078. }
  2079. else if(strcmp(tmp,"on",true) == 0)
  2080. {
  2081. SuperPunch[playerid] = 1;
  2082. SendClientMessage(playerid,GREEN,"You are now blessed with SUPER PUNCH! Go knock someone out.");
  2083. }
  2084. else if(strcmp(tmp,"off",true) == 0)
  2085. {
  2086. SuperPunch[playerid] = 0;
  2087. SendClientMessage(playerid,GREEN,"Your super punch is now disabled.");
  2088. }
  2089. }
  2090. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2091. return 1;
  2092. }
  2093.  
  2094. if (strcmp(cmd, "/superpunchp", true) == 0) // Gives the Super Punch ability to a player
  2095. {
  2096. new tmp2[128];
  2097. if (AccountInfo[playerid][AdminLevel] > 4 || IsPlayerAdmin(playerid))
  2098. {
  2099. tmp = strtok(cmdtext,idx);
  2100. if(!strlen(tmp))
  2101. {
  2102. SendClientMessage(playerid,ORANGE,"USAGE: /superpunchp [playername/id] [on/off]");
  2103. SendClientMessage(playerid,ORANGE,"FUNCTION: Will give the player the power of SuperPunch.");
  2104. }
  2105. new targetid = ReturnUser(tmp);
  2106. if(targetid != INVALID_PLAYER_ID)
  2107. {
  2108. tmp2 = strtok(cmdtext,idx);
  2109. if(strcmp(tmp2,"on",true) == 0)
  2110. {
  2111. GetPlayerName(playerid, sendername, sizeof(sendername));
  2112. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2113. SuperPunch[targetid] = 1;
  2114. format(string, sizeof(string), "Admin %s blessed you with the power of Super Punch !", sendername);
  2115. SendClientMessage(targetid,GREEN,string);
  2116. format(string, sizeof(string), "-| Administrator %s blessed %s with the power of Super Punch |-", sendername,giveplayername);
  2117. SendClientMessageToAdmins(ADMIN_RED,string,1);
  2118. }
  2119. else if(strcmp(tmp2,"off",true) == 0)
  2120. {
  2121. format(string, sizeof(string), "Admin %s removed your Super Punch power.", sendername);
  2122. SendClientMessage(targetid,RED,string);
  2123. SuperPunch[targetid] = 0;
  2124. }
  2125. }
  2126. else if(giveplayerid == INVALID_PLAYER_ID)
  2127. {
  2128. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  2129. SendClientMessage(playerid,RED,string);
  2130. }
  2131. }
  2132. else SendClientMessage(playerid,RED,"You are not an admin with the required level.");
  2133. return 1;
  2134. }
  2135.  
  2136. if(strcmp(cmd, "/viewcmds", true) == 0) // Views unknown commands and commands mentioned in 'ViewCommands' variable entered by players
  2137. {
  2138. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  2139. {
  2140. tmp = strtok(cmdtext,idx);
  2141. if(!strlen(tmp))
  2142. {
  2143. SendClientMessage(playerid, ORANGE, "USAGE: /viewcmds [on/off]");
  2144. SendClientMessage(playerid, ORANGE, "FUNCTION: Will see the players typing some commands and wrong commands.");
  2145. }
  2146. else if(strcmp(tmp,"on",true) == 0)
  2147. {
  2148. ViewCmds[playerid] = 1;
  2149. SendClientMessage(playerid,GREEN,"You can know view players typing some commands and wrong commands.");
  2150. }
  2151. else if(strcmp(tmp,"off",true) == 0)
  2152. {
  2153. ViewCmds[playerid] = 0;
  2154. SendClientMessage(playerid,GREEN,"You can no longer view players typing some commands and wrong commands.");
  2155. }
  2156. }
  2157. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2158. return 1;
  2159. }
  2160.  
  2161. if(strcmp(cmd, "/jail", true) == 0) // Jails a player
  2162. {
  2163. if (AccountInfo[playerid][AdminLevel] >= 2)
  2164. {
  2165. tmp = strtok(cmdtext, idx);
  2166. if(!strlen(tmp))
  2167. {
  2168. SendClientMessage(playerid, ORANGE, "USAGE: /jail [playername/id] [reason]");
  2169. return 1;
  2170. }
  2171. new targetid = ReturnUser(tmp);
  2172. if(IsPlayerConnected(targetid))
  2173. {
  2174. if(targetid != INVALID_PLAYER_ID)
  2175. {
  2176. if(AccountInfo[giveplayerid][Jail] == 0)
  2177. {
  2178. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2179. GetPlayerName(playerid, sendername, sizeof(sendername));
  2180. new reason[128];
  2181. reason = bigstrtok(cmdtext, idx);
  2182. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /jail [playername/id] [reason]");
  2183. format(string, sizeof(string), "You got jailed by Admin %s. Reason: %s", sendername, reason);
  2184. SendClientMessage(targetid, ADMIN_RED, string);
  2185. format(string, sizeof(string), "-| Administrator %s jailed %s. [ Reason: %s ] |-",sendername,giveplayername, reason);
  2186. SendClientMessageToAll(ADMIN_RED,string);
  2187. AccountInfo[targetid][Jail] = 1;
  2188. OnPlayerJailed(targetid);
  2189. return 1;
  2190. }
  2191. else SendClientMessage(playerid, RED, "Player is already jailed!");
  2192. }
  2193. else
  2194. {
  2195. format(string, sizeof(string), "%d is not an active player.", targetid);
  2196. SendClientMessage(playerid, RED, string);
  2197. }
  2198. }
  2199. else
  2200. {
  2201. format(string, sizeof(string), "%d is not an active player.", targetid);
  2202. SendClientMessage(playerid, RED, string);
  2203. }
  2204. }
  2205. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2206. return 1;
  2207. }
  2208.  
  2209. if(strcmp(cmd, "/unjail", true) == 0) // Unjails a player
  2210. {
  2211. if (AccountInfo[playerid][AdminLevel] >= 2 || IsPlayerAdmin(playerid))
  2212. {
  2213. tmp = strtok(cmdtext, idx);
  2214. if(!strlen(tmp))
  2215. {
  2216. SendClientMessage(playerid, ORANGE, "USAGE: /unjail [playername/id]");
  2217. return 1;
  2218. }
  2219.  
  2220. new targetid = ReturnUser(tmp);
  2221. if(targetid != INVALID_PLAYER_ID)
  2222. {
  2223. if(AccountInfo[giveplayerid][Jail] == 1)
  2224. {
  2225. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2226. GetPlayerName(playerid, sendername, sizeof(sendername));
  2227. format(string, sizeof(string), "-| Administrator %s unjailed %s |-",sendername, giveplayername);
  2228. SendClientMessageToAll(ADMIN_RED,string);
  2229. AccountInfo[targetid][Jail] = 0;
  2230. OnPlayerUnjailed(targetid);
  2231. }
  2232. else SendClientMessage(playerid, RED, "Player is not jailed!");
  2233. }
  2234. else
  2235. {
  2236. format(string, sizeof(string), "%d is not an active player.", targetid);
  2237. SendClientMessage(playerid, RED, string);
  2238. }
  2239. }
  2240. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2241. return 1;
  2242. }
  2243.  
  2244. if(strcmp(cmd, "/gotoveh", true) == 0) // Teleports to a vehicle's position
  2245. {
  2246. tmp = strtok(cmdtext, idx);
  2247. if(!strlen(tmp))
  2248. {
  2249. SendClientMessage(playerid, ORANGE, "USAGE: /gotoveh [vehicleid]");
  2250. return 1;
  2251. }
  2252. new car = strval(tmp);
  2253. if (AccountInfo[playerid][AdminLevel] >= 3)
  2254. {
  2255. new Float:vx,Float:vy,Float:vz;
  2256. GetVehiclePos(car,vx,vy,vz);
  2257. if (GetPlayerState(playerid) == 2)
  2258. SetVehiclePos(GetPlayerVehicleID(playerid),vx,vy+2,vz);
  2259. else
  2260. SetPlayerPos(playerid,vx,vy,vz+1);
  2261. SetPlayerInterior(playerid,0);
  2262. format(string,256,"You have teleported to vehicle id %d(%s)",car, VehNames[GetVehicleModel(car)-400]);
  2263. SendClientMessage(playerid,GREEN,string);
  2264. }
  2265. else SendClientMessage(playerid,RED,"You're not an admin with the required level");
  2266. return 1;
  2267. }
  2268. if(!strcmp(cmdtext, "/aclearchat", true)) // Clears the chatbox for everyone
  2269. {
  2270. if(AccountInfo[playerid][AdminLevel] >= 3 || IsPlayerAdmin(playerid))
  2271. {
  2272. for(new chat = 0; chat <= 50; chat++) SendClientMessageToAll(GREEN, " ");
  2273. GetPlayerName(playerid, sendername, 20);
  2274. format(string, 256, "-| Administrator %s cleared the chat |-", sendername);
  2275. SendClientMessageToAll(ADMIN_RED, string);
  2276. return 1;
  2277. }
  2278. else SendClientMessage(playerid, RED, "You are not an admin with the required level.");
  2279. return 1;
  2280. }
  2281. if(strcmp(cmd, "/hide", true) == 0) // Hides you from the admin list
  2282. {
  2283. if (AccountInfo[playerid][AdminLevel] >= 4)
  2284. {
  2285. Hide[playerid] = 1;
  2286. SendClientMessage(playerid,GREEN,"|- You're now hidden from the admin list -|");
  2287. }
  2288. return 1;
  2289. }
  2290. if(strcmp(cmd, "/unhide", true) == 0)
  2291. {
  2292. if (AccountInfo[playerid][AdminLevel] >= 4) // Unhides you from the admin list
  2293. {
  2294. if (Hide[playerid] != 1) return SendClientMessage(playerid,RED,"You're not hidden in the admin list!");
  2295. Hide[playerid] = 0;
  2296. SendClientMessage(playerid,GREEN,"|- You're now visible in the admin list -|");
  2297. }
  2298. return 1;
  2299. }
  2300.  
  2301. if(strcmp(cmd, "/virtual", true) == 0) // Sets the player's virtual world
  2302. {
  2303. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 2)
  2304. {
  2305. tmp = strtok(cmdtext, idx);
  2306. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /virtual [playerid/name] [virtual world (0-255)]");
  2307. new targetid = ReturnUser(tmp);
  2308. tmp = strtok(cmdtext, idx);
  2309. new v = strval(tmp);
  2310. if (targetid != INVALID_PLAYER_ID)
  2311. {
  2312. if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /virtual [playerid/name] [virtual world (0-255)]");
  2313. SetPlayerVirtualWorld(targetid,v);
  2314. GetPlayerName(playerid, sendername, sizeof(sendername));
  2315. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2316. format(string,sizeof(string),"|- Administrator %s has changed %s's Virtual World. [World: %d] -|",sendername,giveplayername,v);
  2317. SendClientMessageToAdmins(ADMIN_RED,string,1);
  2318. }
  2319. else SendClientMessage(playerid, RED, "Player is not active.");
  2320. }
  2321. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  2322. return 1;
  2323. }
  2324.  
  2325. if(strcmp(cmd,"/count", true) == 0) // Starts a count down
  2326. {
  2327. tmp = strtok(cmdtext, idx);
  2328. new count = strval(tmp);
  2329. if (!strlen(tmp)) count = 5;
  2330. if (AccountInfo[playerid][AdminLevel] < 1) return SendClientMessage(playerid,RED,"You're not an admin");
  2331. if (Count > 0) return SendClientMessage(playerid, RED, "Countdown is already in progress.");
  2332. GetPlayerName(playerid, sendername, sizeof(sendername));
  2333. format(string,sizeof(string),"|- Administrator %s started a countdown from %d -|", sendername, count);
  2334. SendClientMessageToAll(LIGHTGREEN, string);
  2335. Count = count;
  2336. CountDown();
  2337. return 1;
  2338. }
  2339.  
  2340. if(strcmp(cmd, "/view", true) == 0) // Spectates a player
  2341. {
  2342. if (AccountInfo[playerid][AdminLevel] < 1) return SendClientMessage(playerid,RED,"You're not an admin !");
  2343. tmp = strtok(cmdtext, idx);
  2344. if(!strlen(tmp))
  2345. {
  2346. SendClientMessage(playerid, ORANGE, "|__________________________________|");
  2347. SendClientMessage(playerid, ORANGE, "USAGE: /view [playerid]");
  2348. SendClientMessage(playerid, ORANGE, "FUNCTION: Will spectate a player.");
  2349. SendClientMessage(playerid, ORANGE, "HELP: /view off to stop spectating");
  2350. SendClientMessage(playerid, ORANGE, "|__________________________________|");
  2351. return 1;
  2352. }
  2353. new targetid = ReturnUser(tmp);
  2354. if (giveplayerid != INVALID_PLAYER_ID)
  2355. {
  2356. if (AccountInfo[playerid][AdminLevel] < 1) return SendClientMessage(playerid,RED,"You're not an admin !");
  2357. TogglePlayerSpectating(playerid, 1);
  2358. SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(targetid));
  2359. SetPlayerInterior(playerid,GetPlayerInterior(targetid));
  2360. if (IsPlayerInAnyVehicle(targetid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(targetid));
  2361. else PlayerSpectatePlayer(playerid, targetid);
  2362. SendClientMessage(playerid, ORANGE, "HELP: '/view off' to stop spectating");
  2363. }
  2364. else if(strcmp(tmp, "off", true) == 0)
  2365. {
  2366. TogglePlayerSpectating(playerid, 0);
  2367. SetPlayerVirtualWorld(playerid,0);
  2368. }
  2369. else
  2370. {
  2371. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  2372. SendClientMessage(playerid, RED, string);
  2373. }
  2374. return 1;
  2375. }
  2376.  
  2377. if(strcmp(cmd, "/blockpm", true) == 0) // Blocks PMs
  2378. {
  2379. if (AccountInfo[playerid][AdminLevel] >= 5)
  2380. {
  2381. if (PMBlock[playerid] == true)
  2382. {
  2383. PMBlock[playerid] = false;
  2384. SendClientMessage(playerid, GREEN, "|- Private messages BLOCKED -|");
  2385. return 1;
  2386. }
  2387. if (PMBlock[playerid] == false)
  2388. {
  2389. PMBlock[playerid] = true;
  2390. SendClientMessage(playerid, GREEN, "|- Private messages UNBLOCKED -|");
  2391. return 1;
  2392. }
  2393. }
  2394. else return SendClientMessage(playerid, RED, "You're not a lead admin!");
  2395. }
  2396.  
  2397. if(!strcmp(cmd, "/Explosions", true)) // Launches explosion(s) in front of the player(it follow the previous explosion so it goes straight) as many times has he wants
  2398. {
  2399. if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid))
  2400. {
  2401. tmp = strtok(cmdtext, idx);
  2402. if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /Explosions [Number]");
  2403. new Float:X,Float:Y,Float:Z,Float:A;
  2404. GetPlayerPos(playerid, X,Y,Z);
  2405. GetPlayerFacingAngle(playerid, A);
  2406. Nuke[playerid] = 1;
  2407. SetTimerEx("NukeBlast", 200, 0, "ddffff",playerid, strval(tmp), X, Y, Z, A);
  2408. }
  2409. else return SendClientMessage(playerid, RED, "You're not a lead admin!");
  2410. return 1;
  2411. }
  2412.  
  2413. if(!strcmp(cmd, "/missile", true)) // Spawns a missile 50 Z higher than player's and drops it to the ground, toggling a huge explosion
  2414. {
  2415. if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid))
  2416. {
  2417. if (IsValidObject(Missile[playerid])) return SendClientMessage(playerid, RED, "You already dropped a missile that's currently in progress of exploding");
  2418. new Float:X,Float:Y,Float:Z;
  2419. GetPlayerPos(playerid, X,Y,Z);
  2420. Missile[playerid] = CreateObject(3786, X, Y, Z+50, 357.6293, 272.3375, 6.8755);
  2421. MoveObject(Missile[playerid], X, Y, Z, 20.0);
  2422. }
  2423. else return SendClientMessage(playerid, RED, "You're not a lead admin!");
  2424. return 1;
  2425. }
  2426.  
  2427. if (!strcmp(cmd, "/push", true)) // Pushes a player back. Player gets pushed back in motions
  2428. {
  2429. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 3)
  2430. {
  2431. tmp = strtok(cmdtext, idx);
  2432. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /push [playername/id]");
  2433. new targetid = ReturnUser(tmp);
  2434. if (targetid != INVALID_PLAYER_ID)
  2435. {
  2436. PushPlayer(targetid, 20, true);
  2437. GetPlayerName(playerid, sendername, sizeof(sendername));
  2438. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2439. format(string,sizeof(string),"|- Administrator %s has pushed %s -|", sendername, giveplayername);
  2440. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  2441. }
  2442. else SendClientMessage(playerid, RED, "Player is not active.");
  2443. }
  2444. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  2445. return 1;
  2446. }
  2447.  
  2448. if (!strcmp(cmd, "/setgravity", true)) // Changes gravity
  2449. {
  2450. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 4)
  2451. {
  2452. tmp = strtok(cmdtext, idx);
  2453. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /pussetgravity [gravity float]");
  2454. new Float:gravity = floatstr(tmp);
  2455. SetGravity(gravity);
  2456. GetPlayerName(playerid, sendername, sizeof(sendername));
  2457. format(string,sizeof(string),"|- Administrator %s has changed gravity [ Gravity: %.4f ] -|", sendername, gravity);
  2458. SendClientMessageToAll(ADMIN_RED, string);
  2459. }
  2460. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  2461. return 1;
  2462. }
  2463.  
  2464. if (!strcmp(cmd, "/settime", true)) // Changes time
  2465. {
  2466. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 3)
  2467. {
  2468. tmp = strtok(cmdtext, idx);
  2469. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /settime [time(0-23)]");
  2470. new time = strval(tmp);
  2471. if (time < 0 || time > 23) return SendClientMessage(playerid, RED, "Time can only be from 0 to 23!");
  2472. SetWorldTime(time);
  2473. GetPlayerName(playerid, sendername, sizeof(sendername));
  2474. format(string,sizeof(string),"|- Administrator %s has changed time [ Hour: %d ] -|", sendername, time);
  2475. SendClientMessageToAll(ADMIN_RED, string);
  2476. }
  2477. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  2478. return 1;
  2479. }
  2480.  
  2481. if (!strcmp(cmd, "/setweather", true)) // Changes time
  2482. {
  2483. if(IsPlayerAdmin(playerid) || AccountInfo[playerid][AdminLevel] >= 4)
  2484. {
  2485. tmp = strtok(cmdtext, idx);
  2486. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /setweather [weather id]");
  2487. new weather = strval(tmp);
  2488. SetWeather(weather);
  2489. GetPlayerName(playerid, sendername, sizeof(sendername));
  2490. format(string,sizeof(string),"|- Administrator %s has changed weather [ Weather: %d ] -|", sendername, weather);
  2491. SendClientMessageToAdmins(ADMIN_RED, string, 1);
  2492. }
  2493. else SendClientMessage(playerid, White, "Server: Unknown Command.");
  2494. return 1;
  2495. }
  2496.  
  2497. if(strcmp(cmd, "/report", true) == 0) // Available for everyone: reports a player to the admins
  2498. {
  2499. tmp = strtok(cmdtext, idx);
  2500. if(!strlen(tmp))
  2501. {
  2502. SendClientMessage(playerid, ORANGE, "USAGE: /report [playername/id] [reason]");
  2503. SendClientMessage(playerid, ORANGE, "FUNCTION: Will report the specified player to the administrators(online).");
  2504. return 1;
  2505. }
  2506. new targetid = ReturnUser(tmp);
  2507. if(targetid != INVALID_PLAYER_ID)
  2508. {
  2509. GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
  2510. GetPlayerName(playerid, sendername, sizeof(sendername));
  2511. new reason[128];
  2512. reason = bigstrtok(cmdtext, idx);
  2513. if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /report [playerid] [reason]");
  2514. format(string, sizeof(string), "|- %s reported %s [ Reason: %s ]", sendername,giveplayername,reason);
  2515. SendClientMessageToAdmins(ADMIN_RED, string,1);
  2516. format(string, sizeof(string), "Your report on '%s' has been sent to the current online admins. Thank you.", giveplayername);
  2517. SendClientMessage(playerid, GREEN, string);
  2518. }
  2519.  
  2520. else if(giveplayerid == INVALID_PLAYER_ID)
  2521. {
  2522. format(string, sizeof(string), "%d is not an active player.", giveplayerid);
  2523. SendClientMessage(playerid, RED, string);
  2524. }
  2525. return 1;
  2526. }
  2527.  
  2528. if(strcmp(cmd, "/ah", true) == 0 || strcmp(cmd, "/ahelp", true) == 0 || strcmp(cmd, "/acommands", true) == 0) // List of admin commands
  2529. {
  2530. if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
  2531. {
  2532. SendClientMessage(playerid, RED, " |- Server Admin Commands -|");
  2533. SendClientMessage(playerid, White, "LEAD(5): /gmx /addadmin /kickall /timeout /blockpm /Explosions /missile");
  2534. SendClientMessage(playerid, White, "LEVEL 1+: /(un)freeze /setscore /angle /kick /setname /kill /goto /ip /pweapons /view /changepassword");
  2535. SendClientMessage(playerid, White, "LEVEL 2+: /(un)mute /givecash /get /pstats /warn /viewcmds /logout /demolish /virtual");
  2536. SendClientMessage(playerid, White, "LEVEL 3+: /nuke /ban /disarm /say /giveweapon /slap /gotoveh /(un)jail /sethp /push /settime");
  2537. SendClientMessage(playerid, White, "LEVEL 4+: /fuck /bc /setwarn /announce /aclearchat /bslap /(un)hide /rangeban /teleport /setgravity /setweather");
  2538. SendClientMessage(playerid, White, "ADMIN CHAT: // Example: //hello");
  2539. }
  2540. else SendClientMessage(playerid, RED, "You are not an admin!");
  2541. return 1;
  2542. }
  2543.  
  2544.  
  2545.  
  2546. if (strcmp(cmd, "/admins", true) == 0) // Admin list if they're online
  2547. {
  2548. new count = 0;
  2549. SendClientMessage(playerid, GREEN, " [Online Admins]");
  2550. for(new i = 0; i < MAX_PLAYERS; i++)
  2551. {
  2552. if (IsPlayerConnected(i))
  2553. {
  2554. if(AccountInfo[i][AdminLevel] >= 1 && AccountInfo[i][AdminLevel] <= 5 && Hide[i] == 0)
  2555. {
  2556. GetPlayerName(i, sendername, sizeof(sendername));
  2557. format(string, 128, "Level %d [%i]%s", AccountInfo[i][AdminLevel],i,sendername);
  2558. SendClientMessage(playerid, LIGHTGREEN, string);
  2559. count++;
  2560. }
  2561. }
  2562. }
  2563. if (count == 0) SendClientMessage(playerid, BLUE,"No admin online in the list");
  2564. SendClientMessage(playerid, GREEN, "[____________________________________]");
  2565. return 1;
  2566. }
  2567.  
  2568. if (strcmp(cmd, "/register", true) == 0) // Registers an account
  2569. {
  2570. if(IsPlayerConnected(playerid))
  2571. {
  2572. if(AccountInfo[playerid][Logged] == 1)
  2573. {
  2574. SendClientMessage(playerid, RED, "You are already logged in.");
  2575. return 1;
  2576. }
  2577. GetPlayerName(playerid, sendername, sizeof(sendername));
  2578. format(string, sizeof(string), "/Accounts/%s.stats", sendername);
  2579. new File: hFile = fopen(string, io_read);
  2580. if (hFile)
  2581. {
  2582. SendClientMessage(playerid, RED, "That name is already taken. Please reconnect using a different username.");
  2583. fclose(hFile);
  2584. return 1;
  2585. }
  2586. new tmppass[128];
  2587. tmp = strtok(cmdtext, idx);
  2588. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /register [password]");
  2589. strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  2590. OnPlayerRegister(playerid, MD5_Hash(tmppass));
  2591. }
  2592. return 1;
  2593. }
  2594. if (strcmp(cmd, "/login", true) == 0) // Logins
  2595. {
  2596. new tmppass[128];
  2597. if(AccountInfo[playerid][Logged] == 1) return SendClientMessage(playerid, RED, "You are already logged in.");
  2598. tmp = strtok(cmdtext, idx);
  2599. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /login [password]");
  2600. new plname[MAX_PLAYER_NAME];
  2601. GetPlayerName(playerid, plname, sizeof(plname));
  2602. format(string, sizeof(string), "/Accounts/%s.stats", plname);
  2603. if(!fexist(string)) return SendClientMessage(playerid, RED, "That account isn't registered! Please register: /register [password]");
  2604. strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  2605. OnPlayerLogin(playerid, MD5_Hash(tmppass));
  2606. return 1;
  2607. }
  2608.  
  2609. if (!strcmp(cmd, "/changepassword", true) || strcmp(cmd, "/cp", true) == 0) // Changes your password
  2610. {
  2611. if (!AccountInfo[playerid][Logged]) return SendClientMessage(playerid, RED, "You're not logged in.");
  2612. if (AccountInfo[playerid][AdminLevel] >= 1)
  2613. {
  2614. new oldpass[128];
  2615. oldpass = strtok(cmdtext, idx);
  2616. if(!strlen(oldpass)) return SendClientMessage(playerid, ORANGE, "USAGE: /changepassword [CURRENT PASSWORD] [new password]");
  2617. if (strcmp(MD5_Hash(oldpass), AccountInfo[playerid][Password], true)) return SendClientMessage(playerid, RED, "Invalid password.");
  2618. tmp = strtok(cmdtext, idx);
  2619. if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /changepassword [current password] [NEW PASSWORD]");
  2620. format(oldpass, 128, "|- You've changed your password to '%s' -|", tmp);
  2621. SendClientMessage(playerid, LIGHTGREEN, oldpass);
  2622. strmid(AccountInfo[playerid][Password], MD5_Hash(tmp), 0, strlen(MD5_Hash(tmp)), 128);
  2623. }
  2624. return 1;
  2625. }
  2626.  
  2627. /*»»»»»»»»»»»»»»»»»»»»»»»»»»»» [WRONG COMMAND] «««««««««««««««««««««««««««*/
  2628. else
  2629. {
  2630. for(new i = 0; i < GetMaxPlayers(); i++)
  2631. {
  2632. if (IsPlayerConnected(i))
  2633. {
  2634. if (AccountInfo[i][AdminLevel] > 0 && ViewCmds[i] == 1)
  2635. {
  2636. GetPlayerName(playerid, sendername, sizeof sendername);
  2637. format(tmp, 128, "[VIEWCMDS] [%d]%s: %s", playerid, sendername, cmdtext);
  2638. SendClientMessage(i, PURPLE, tmp);
  2639. }
  2640. }
  2641. }
  2642. return 0;
  2643. }
  2644. }
  2645.  
  2646. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  2647. {
  2648. if (SuperPunch[playerid] == 1)
  2649. {
  2650. if (GetPlayerState(playerid) != 2)
  2651. {
  2652. if (newkeys & KEY_FIRE && Drugs[playerid] == 0)
  2653. {
  2654. new Float:X,Float:Y,Float:Z,Float:Health;
  2655. GetPlayerHealth(playerid,Health);
  2656. if (GetPlayerWeapon(playerid) == 0)
  2657. {
  2658. GetPlayerPos(playerid,X,Y,Z);
  2659. CreateExplosion(X,Y,Z,7,7.0);
  2660. SetPlayerHealth(playerid,Health);
  2661. }
  2662. }
  2663. else if (newkeys & KEY_FIRE && Drugs[playerid] == 1)
  2664. {
  2665. new Float:X,Float:Y,Float:Z;
  2666. if (GetPlayerWeapon(playerid) == 0)
  2667. {
  2668. SetPlayerHealth(playerid,999999999);
  2669. GetPlayerPos(playerid,X,Y,Z);
  2670. CreateExplosion(X,Y,Z,7,7.0);
  2671. SetPlayerHealth(playerid,999999999);
  2672. }
  2673. }
  2674. }
  2675. }
  2676. }
  2677.  
  2678. OnPlayerJailed(playerid)
  2679. {
  2680. SetPlayerInterior(playerid, 6);
  2681. SetPlayerPos(playerid, 264.3700,77.5700,1001.0391);
  2682. SetPlayerFacingAngle(playerid, 272.6900);
  2683. TogglePlayerControllable(playerid, 0);
  2684. return 1;
  2685. }
  2686.  
  2687. OnPlayerUnjailed(playerid)
  2688. {
  2689. SetPlayerInterior(playerid, 6);
  2690. SetPlayerPos(playerid, 266.9272,78.6098,1001.0391);
  2691. SetPlayerFacingAngle(playerid, 266.9169);
  2692. TogglePlayerControllable(playerid, 1);
  2693. return 1;
  2694. }
  2695.  
  2696. public CountDown()
  2697. {
  2698. if (Count > 0)
  2699. {
  2700. new str[5];
  2701. format(str, sizeof str, "~w~%d", Count);
  2702. GameTextForAll(str,2500,3);
  2703. Count--;
  2704. SetTimer("CountDown",1000,0);
  2705. }
  2706. else
  2707. {
  2708. GameTextForAll("~g~~h~Go ~w~!!",2500,3);
  2709. Count = 999;
  2710. }
  2711. return 1;
  2712. }
  2713.  
  2714.  
  2715.  
  2716. forward NukeBlast(playerid, times, Float:X,Float:Y,Float:Z,Float:A);
  2717. public NukeBlast(playerid, times, Float:X,Float:Y,Float:Z,Float:A)
  2718. {
  2719. if (Nuke[playerid] == times+1) return 1;
  2720. //printf("Nukeblast %d",Nuke[playerid]);
  2721. new Float:x,Float:y;
  2722. x = X + ((10*Nuke[playerid]) * floatsin(-A+5, degrees));
  2723. y = Y + ((10*Nuke[playerid]) * floatcos(-A+5, degrees));
  2724. CreateExplosion(x, y, Z, 3, 3.0);
  2725. Nuke[playerid]++;
  2726. SetTimerEx("NukeBlast", 200, 0, "ddffff",playerid, times, X, Y, Z, A);
  2727. return 1;
  2728. }
  2729.  
  2730. public OnObjectMoved(objectid)
  2731. {
  2732. for(new i; i < MAX_PLAYERS; i++) if (objectid == Missile[i])
  2733. {
  2734. new Float:X,Float:Y,Float:Z,Float:x,Float:y,Float:z;
  2735. GetObjectPos(objectid, X, Y, Z);
  2736. GetObjectPos(objectid, x, y, z);
  2737. DestroyObject(objectid);
  2738. CreateExplosion(X, Y, Z, 7, 5);
  2739. //front
  2740. X += (5.0 * floatsin(0, degrees));
  2741. Y += (5.0 * floatcos(0, degrees));
  2742. CreateExplosion(X, Y, Z, 7, 5);
  2743. X += (3.0 * floatsin(0+45, degrees));
  2744. Y += (3.0 * floatcos(0+45, degrees));
  2745. CreateExplosion(X, Y, Z, 7, 5);
  2746. X += (3.0 * floatsin(0-45, degrees));
  2747. Y += (3.0 * floatcos(0-45, degrees));
  2748. CreateExplosion(X, Y, Z, 7, 5);
  2749. //right-left
  2750. X += (5.0 * floatcos(0, degrees));
  2751. Y += (5.0 * floatsin(0, degrees));
  2752. CreateExplosion(X, Y, Z, 7, 5);
  2753. //back
  2754. X -= (5.0 * floatcos(0, degrees));
  2755. Y -= (5.0 * floatsin(0, degrees));
  2756. CreateExplosion(X, Y, Z, 7, 5);
  2757. X -= (5.0 * floatsin(0, degrees));
  2758. Y -= (5.0 * floatcos(0, degrees));
  2759. CreateExplosion(X, Y, Z, 7, 5);
  2760. X -= (3.0 * floatsin(0+45, degrees));
  2761. Y -= (3.0 * floatcos(0+45, degrees));
  2762. CreateExplosion(X, Y, Z, 7, 5);
  2763. X -= (3.0 * floatsin(0-45, degrees));
  2764. Y -= (3.0 * floatcos(0-45, degrees));
  2765. CreateExplosion(X, Y, Z, 7, 5);
  2766. SetTimerEx("MissileExplosion", 700, 0, "fffd", x, y, z, 3);
  2767. break;
  2768. }
  2769. }
  2770.  
  2771. forward MissileExplosion(Float:X, Float:Y, Float:Z, times);
  2772. public MissileExplosion(Float:X, Float:Y, Float:Z, times)
  2773. {
  2774. new Float:x = X;
  2775. new Float:y = Y;
  2776. new Float:z = Z;
  2777. if (times == 3)
  2778. {
  2779. //front
  2780. X += (10.0 * floatsin(0, degrees));
  2781. Y += (10.0 * floatcos(0, degrees));
  2782. CreateExplosion(X, Y, Z, 7, 5);
  2783. X += (6.0 * floatsin(0+45, degrees));
  2784. Y += (6.0 * floatcos(0+45, degrees));
  2785. CreateExplosion(X, Y, Z, 7, 5);
  2786. X += (6.0 * floatsin(0-45, degrees));
  2787. Y += (6.0 * floatcos(0-45, degrees));
  2788. CreateExplosion(X, Y, Z, 7, 5);
  2789. //right-left
  2790. X += (10.0 * floatcos(0, degrees));
  2791. Y += (10.0 * floatsin(0, degrees));
  2792. CreateExplosion(X, Y, Z, 7, 5);
  2793. //back
  2794. X -= (10.0 * floatcos(0, degrees));
  2795. Y -= (10.0 * floatsin(0, degrees));
  2796. CreateExplosion(X, Y, Z, 7, 5);
  2797. X -= (10.0 * floatsin(0, degrees));
  2798. Y -= (10.0 * floatcos(0, degrees));
  2799. CreateExplosion(X, Y, Z, 7, 5);
  2800. X -= (6.0 * floatsin(0+45, degrees));
  2801. Y -= (6.0 * floatcos(0+45, degrees));
  2802. CreateExplosion(X, Y, Z, 7, 5);
  2803. X -= (6.0 * floatsin(0-45, degrees));
  2804. Y -= (6.0 * floatcos(0-45, degrees));
  2805. CreateExplosion(X, Y, Z, 7, 5);
  2806. }
  2807. else if (times == 2)
  2808. {
  2809. //front
  2810. X += (15.0 * floatsin(0, degrees));
  2811. Y += (15.0 * floatcos(0, degrees));
  2812. CreateExplosion(X, Y, Z, 7, 5);
  2813. X += (9.0 * floatsin(0+45, degrees));
  2814. Y += (9.0 * floatcos(0+45, degrees));
  2815. CreateExplosion(X, Y, Z, 7, 5);
  2816. X += (9.0 * floatsin(0-45, degrees));
  2817. Y += (9.0 * floatcos(0-45, degrees));
  2818. CreateExplosion(X, Y, Z, 7, 5);
  2819. //right-left
  2820. X += (15.0 * floatcos(0, degrees));
  2821. Y += (15.0 * floatsin(0, degrees));
  2822. CreateExplosion(X, Y, Z, 7, 5);
  2823. //back
  2824. X -= (15.0 * floatcos(0, degrees));
  2825. Y -= (15.0 * floatsin(0, degrees));
  2826. CreateExplosion(X, Y, Z, 7, 5);
  2827. X -= (15.0 * floatsin(0, degrees));
  2828. Y -= (15.0 * floatcos(0, degrees));
  2829. CreateExplosion(X, Y, Z, 7, 5);
  2830. X -= (9.0 * floatsin(0+45, degrees));
  2831. Y -= (9.0 * floatcos(0+45, degrees));
  2832. CreateExplosion(X, Y, Z, 7, 5);
  2833. X -= (9.0 * floatsin(0-45, degrees));
  2834. Y -= (9.0 * floatcos(0-45, degrees));
  2835. CreateExplosion(X, Y, Z, 7, 5);
  2836. }
  2837. else if (times == 1)
  2838. {
  2839. //front
  2840. X += (20.0 * floatsin(0, degrees));
  2841. Y += (20.0 * floatcos(0, degrees));
  2842. CreateExplosion(X, Y, Z, 7, 5);
  2843. X += (12.0 * floatsin(0+45, degrees));
  2844. Y += (12.0 * floatcos(0+45, degrees));
  2845. CreateExplosion(X, Y, Z, 7, 5);
  2846. X += (12.0 * floatsin(0-45, degrees));
  2847. Y += (12.0 * floatcos(0-45, degrees));
  2848. CreateExplosion(X, Y, Z, 7, 5);
  2849. //right-left
  2850. X += (20.0 * floatcos(0, degrees));
  2851. Y += (20.0 * floatsin(0, degrees));
  2852. CreateExplosion(X, Y, Z, 7, 5);
  2853. //back
  2854. X -= (20.0 * floatcos(0, degrees));
  2855. Y -= (20.0 * floatsin(0, degrees));
  2856. CreateExplosion(X, Y, Z, 7, 5);
  2857. X -= (20.0 * floatsin(0, degrees));
  2858. Y -= (20.0 * floatcos(0, degrees));
  2859. CreateExplosion(X, Y, Z, 7, 5);
  2860. X -= (12.0 * floatsin(0+45, degrees));
  2861. Y -= (12.0 * floatcos(0+45, degrees));
  2862. CreateExplosion(X, Y, Z, 7, 5);
  2863. X -= (12.0 * floatsin(0-45, degrees));
  2864. Y -= (12.0 * floatcos(0-45, degrees));
  2865. CreateExplosion(X, Y, Z, 7, 5);
  2866. }
  2867.  
  2868. if (times > 0) SetTimerEx("MissileExplosion", 700, 0, "fffd", x, y, z, times-1);
  2869. }
  2870.  
  2871. forward PushPlayer(playerid, distance, zup);
  2872. public PushPlayer(playerid, distance, zup)
  2873. {
  2874. new Float:X,Float:Y,Float:Z,Float:A;
  2875. GetPlayerPos(playerid, X, Y, Z);
  2876. GetPlayerFacingAngle(playerid, A);
  2877. if (zup == 1) SetPlayerPos(playerid, X, Y, Z+5);
  2878. GetPlayerPos(playerid, X, Y, Z);
  2879. X -= (2.0 * floatsin(-A, degrees));
  2880. Y -= (2.0 * floatcos(-A, degrees));
  2881. SetPlayerPos(playerid, X, Y, Z);
  2882. if (distance > 0) SetTimerEx("PushPlayer", 100, 0, "ddd", playerid, distance-1, 0);
  2883. }
  2884.  
  2885. stock GetVehicleModelIDFromName(vehname[])
  2886. {
  2887. for(new i = 0; i < 211; i++)
  2888. {
  2889. if (strfind(VehNames[i], vehname, true) != -1) return i + 400;
  2890. }
  2891. return -1;
  2892. }
  2893.  
  2894. stock GetWeaponModelIDFromName(weapname[])
  2895. {
  2896. for(new i = 0; i < 48; i++)
  2897. {
  2898. if (i == 19 || i == 20 || i == 21) continue;
  2899. if (strfind(WeapNames[i], weapname, true) != -1) return i;
  2900. }
  2901. return -1;
  2902. }
  2903.  
  2904. stock bigstrtok(const string[], &idx)
  2905. {
  2906. new length = strlen(string);
  2907. while ((idx < length) && (string[idx] <= ' '))
  2908. {
  2909. idx++;
  2910. }
  2911. new offset = idx;
  2912. new result[128];
  2913. while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
  2914. {
  2915. result[idx - offset] = string[idx];
  2916. idx++;
  2917. }
  2918. result[idx - offset] = EOS;
  2919. return result;
  2920. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement