Advertisement
Guest User

Matthias

a guest
Jul 26th, 2009
703
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 80.27 KB | None | 0 0
  1. //|==================================================|
  2. //  mAdmin [Version 1.0] by Matthias aka GTA_Rules.  |
  3. //|==================================================|
  4. /*
  5.     I take all credits for this, you are not allowed to re-release it without my permission.
  6.     Do NOT remove these credits. You can use it on your server all you want, putting me in the credits is highly appreciated.
  7. */
  8.  
  9. #include <a_samp>
  10. #include <dini>
  11. #include <MD5>
  12.  
  13. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  14.  
  15. #define COLOR_GREY 0xAFAFAFAA
  16. #define COLOR_GREEN 0x33AA33AA
  17. #define COLOR_YELLOW 0xFFFF00AA
  18. #define COLOR_WHITE 0xFFFFFFAA
  19. #define COLOR_PINK 0xFF66FFAA
  20. #define COLOR_BLUE 0x0000BBAA
  21. #define COLOR_LIGHTBLUE 0x33CCFFAA
  22. #define COLOR_BLACK 0x000000AA
  23. #define COLOR_BRIGHTRED 0xFF0000AA
  24. #define COLOR_GRAD1 0xB4B5B7FF
  25.  
  26. forward bool:IsValidWeapon(weaponid);
  27. forward GodMode();
  28.  
  29. enum PlayerData
  30. {
  31.     Registered,
  32.     LoggedIn,
  33.     AdminLevel,
  34.     Password,
  35.     Kills,
  36.     Deaths,
  37.     PlayerIP
  38. };
  39.  
  40. enum SpecInfo
  41. {
  42.     IsWatching,
  43.     LastInterior
  44. };
  45.  
  46. new PlayerInfo[MAX_PLAYERS][PlayerData];
  47. new PlayerState[MAX_PLAYERS][SpecInfo];
  48.  
  49. new WrongPassword[MAX_PLAYERS];
  50. new PlayerIsMuted[MAX_PLAYERS];
  51. new PlayerIsJailed[MAX_PLAYERS];
  52. new PlayerInJail1[MAX_PLAYERS];
  53. new PlayerInJail2[MAX_PLAYERS];
  54. new PlayerHasGodMode[MAX_PLAYERS];
  55.  
  56. new GodTimer;
  57. new SpawnedVehicle[100];
  58. new Vehicles = 0;
  59. new Pickups[200];
  60. new NumberOfPickups = 0;
  61. new ServerIsLocked;
  62.  
  63. new Menu:tpMenu;
  64.  
  65. new Jail1;
  66. new Jail2;
  67.  
  68. // Weapon name credits to Simon's Debug FS
  69. new aWeaponNames[][32] = {
  70.     {"Unarmed (Fist)"},
  71.     {"Brass Knuckles"},
  72.     {"Golf Club"},
  73.     {"Night Stick"},
  74.     {"Knife"},
  75.     {"Baseball Bat"},
  76.     {"Shovel"},
  77.     {"Pool Cue"},
  78.     {"Katana"},
  79.     {"Chainsaw"},
  80.     {"Purple Dildo"},
  81.     {"Big White Vibrator"},
  82.     {"Medium White Vibrator"},
  83.     {"Small White Vibrator"},
  84.     {"Flowers"},
  85.     {"Cane"},
  86.     {"Grenade"},
  87.     {"Teargas"},
  88.     {"Molotov"},
  89.     {" "},
  90.     {" "},
  91.     {" "},
  92.     {"Colt 45"},
  93.     {"Colt 45 (Silenced)"},
  94.     {"Desert Eagle"},
  95.     {"Normal Shotgun"},
  96.     {"Sawnoff Shotgun"},
  97.     {"Combat Shotgun"},
  98.     {"Micro Uzi (Mac 10)"},
  99.     {"MP5"},
  100.     {"AK47"},
  101.     {"M4"},
  102.     {"Tec9"},
  103.     {"Country Rifle"},
  104.     {"Sniper Rifle"},
  105.     {"Rocket Launcher"},
  106.     {"Heat-Seeking Rocket Launcher"},
  107.     {"Flamethrower"},
  108.     {"Minigun"},
  109.     {"Satchel Charge"},
  110.     {"Detonator"},
  111.     {"Spray Can"},
  112.     {"Fire Extinguisher"},
  113.     {"Camera"},
  114.     {"Night Vision Goggles"},
  115.     {"Infrared Vision Goggles"},
  116.     {"Parachute"},
  117.     {"Fake Pistol"}
  118. };
  119.  
  120. new VehicleNames[212][] =
  121. {
  122.     {"Landstalker"},
  123.     {"Bravura"},
  124.     {"Buffalo"},
  125.     {"Linerunner"},
  126.     {"Perrenial"},
  127.     {"Sentinel"},
  128.     {"Dumper"},
  129.     {"Firetruck"},
  130.     {"Trashmaster"},
  131.     {"Stretch"},
  132.     {"Manana"},
  133.     {"Infernus"},
  134.     {"Voodoo"},
  135.     {"Pony"},
  136.     {"Mule"},
  137.     {"Cheetah"},
  138.     {"Ambulance"},
  139.     {"Leviathan"},
  140.     {"Moonbeam"},
  141.     {"Esperanto"},
  142.     {"Taxi"},
  143.     {"Washington"},
  144.     {"Bobcat"},
  145.     {"Mr Whoopee"},
  146.     {"BF Injection"},
  147.     {"Hunter"},
  148.     {"Premier"},
  149.     {"Enforcer"},
  150.     {"Securicar"},
  151.     {"Banshee"},
  152.     {"Predator"},
  153.     {"Bus"},
  154.     {"Rhino"},
  155.     {"Barracks"},
  156.     {"Hotknife"},
  157.     {"Trailer 1"},
  158.     {"Previon"},
  159.     {"Coach"},
  160.     {"Cabbie"},
  161.     {"Stallion"},
  162.     {"Rumpo"},
  163.     {"RC Bandit"},
  164.     {"Romero"},
  165.     {"Packer"},
  166.     {"Monster"},
  167.     {"Admiral"},
  168.     {"Squalo"},
  169.     {"Seasparrow"},
  170.     {"Pizzaboy"},
  171.     {"Tram"},
  172.     {"Trailer 2"},
  173.     {"Turismo"},
  174.     {"Speeder"},
  175.     {"Reefer"},
  176.     {"Tropic"},
  177.     {"Flatbed"},
  178.     {"Yankee"},
  179.     {"Caddy"},
  180.     {"Solair"},
  181.     {"Berkley's RC Van"},
  182.     {"Skimmer"},
  183.     {"PCJ-600"},
  184.     {"Faggio"},
  185.     {"Freeway"},
  186.     {"RC Baron"},
  187.     {"RC Raider"},
  188.     {"Glendale"},
  189.     {"Oceanic"},
  190.     {"Sanchez"},
  191.     {"Sparrow"},
  192.     {"Patriot"},
  193.     {"Quad"},
  194.     {"Coastguard"},
  195.     {"Dinghy"},
  196.     {"Hermes"},
  197.     {"Sabre"},
  198.     {"Rustler"},
  199.     {"ZR-350"},
  200.     {"Walton"},
  201.     {"Regina"},
  202.     {"Comet"},
  203.     {"BMX"},
  204.     {"Burrito"},
  205.     {"Camper"},
  206.     {"Marquis"},
  207.     {"Baggage"},
  208.     {"Dozer"},
  209.     {"Maverick"},
  210.     {"News Chopper"},
  211.     {"Rancher"},
  212.     {"FBI Rancher"},
  213.     {"Virgo"},
  214.     {"Greenwood"},
  215.     {"Jetmax"},
  216.     {"Hotring"},
  217.     {"Sandking"},
  218.     {"Blista Compact"},
  219.     {"Police Maverick"},
  220.     {"Boxville"},
  221.     {"Benson"},
  222.     {"Mesa"},
  223.     {"RC Goblin"},
  224.     {"Hotring Racer A"},
  225.     {"Hotring Racer B"},
  226.     {"Bloodring Banger"},
  227.     {"Rancher"},
  228.     {"Super GT"},
  229.     {"Elegant"},
  230.     {"Journey"},
  231.     {"Bike"},
  232.     {"Mountain Bike"},
  233.     {"Beagle"},
  234.     {"Cropdust"},
  235.     {"Stunt"},
  236.     {"Tanker"},
  237.     {"Roadtrain"},
  238.     {"Nebula"},
  239.     {"Majestic"},
  240.     {"Buccaneer"},
  241.     {"Shamal"},
  242.     {"Hydra"},
  243.     {"FCR-900"},
  244.     {"NRG-500"},
  245.     {"HPV1000"},
  246.     {"Cement Truck"},
  247.     {"Tow Truck"},
  248.     {"Fortune"},
  249.     {"Cadrona"},
  250.     {"FBI Truck"},
  251.     {"Willard"},
  252.     {"Forklift"},
  253.     {"Tractor"},
  254.     {"Combine"},
  255.     {"Feltzer"},
  256.     {"Remington"},
  257.     {"Slamvan"},
  258.     {"Blade"},
  259.     {"Freight"},
  260.     {"Streak"},
  261.     {"Vortex"},
  262.     {"Vincent"},
  263.     {"Bullet"},
  264.     {"Clover"},
  265.     {"Sadler"},
  266.     {"Firetruck LA"},
  267.     {"Hustler"},
  268.     {"Intruder"},
  269.     {"Primo"},
  270.     {"Cargobob"},
  271.     {"Tampa"},
  272.     {"Sunrise"},
  273.     {"Merit"},
  274.     {"Utility"},
  275.     {"Nevada"},
  276.     {"Yosemite"},
  277.     {"Windsor"},
  278.     {"Monster A"},
  279.     {"Monster B"},
  280.     {"Uranus"},
  281.     {"Jester"},
  282.     {"Sultan"},
  283.     {"Stratum"},
  284.     {"Elegy"},
  285.     {"Raindance"},
  286.     {"RC Tiger"},
  287.     {"Flash"},
  288.     {"Tahoma"},
  289.     {"Savanna"},
  290.     {"Bandito"},
  291.     {"Freight Flat"},
  292.     {"Streak Carriage"},
  293.     {"Kart"},
  294.     {"Mower"},
  295.     {"Duneride"},
  296.     {"Sweeper"},
  297.     {"Broadway"},
  298.     {"Tornado"},
  299.     {"AT-400"},
  300.     {"DFT-30"},
  301.     {"Huntley"},
  302.     {"Stafford"},
  303.     {"BF-400"},
  304.     {"Newsvan"},
  305.     {"Tug"},
  306.     {"Trailer 3"},
  307.     {"Emperor"},
  308.     {"Wayfarer"},
  309.     {"Euros"},
  310.     {"Hotdog"},
  311.     {"Club"},
  312.     {"Freight Carriage"},
  313.     {"Trailer 3"},
  314.     {"Andromada"},
  315.     {"Dodo"},
  316.     {"RC Cam"},
  317.     {"Launch"},
  318.     {"Police Car (LSPD)"},
  319.     {"Police Car (SFPD)"},
  320.     {"Police Car (LVPD)"},
  321.     {"Police Ranger"},
  322.     {"Picador"},
  323.     {"S.W.A.T. Van"},
  324.     {"Alpha"},
  325.     {"Phoenix"},
  326.     {"Glendale"},
  327.     {"Sadler"},
  328.     {"Luggage Trailer A"},
  329.     {"Luggage Trailer B"},
  330.     {"Stair Trailer"},
  331.     {"Boxville"},
  332.     {"Farm Plow"},
  333.     {"Utility Trailer"}
  334. };
  335.  
  336. public OnPlayerConnect(playerid)
  337. {
  338.     new string[256], pName[24], PlayerFile[50], playerIP[256], playerIp[50];
  339.     new year, month, day; getdate(year, month, day);
  340.     new hour, minute, second; gettime(hour, minute, second);
  341.    
  342.     if(ServerIsLocked == 0)
  343.     {
  344.         GetPlayerName(playerid, pName, sizeof(pName));
  345.         GetPlayerIp(playerid, playerIp, sizeof(playerIp));
  346.         playerIP = dini_Get(PlayerFile, "PlayerIP");
  347.         format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  348.         format(string, 256, "* %s (ID: %d) has joined the server.", pName, playerid);
  349.         PlayerInfo[playerid][AdminLevel] = 0;
  350.         PlayerState[playerid][IsWatching] = 0;
  351.         PlayerIsJailed[playerid] = 0;
  352.  
  353.         SendClientMessageToAll(COLOR_GRAD1, string);
  354.  
  355.         if(dini_Exists(PlayerFile))
  356.         {
  357.             if(playerIP[50] == playerIp[49])
  358.             {
  359.                 SendClientMessage(playerid, COLOR_GREEN, "You have been automatically logged in! Welcome back to the server.");
  360.                 PlayerInfo[playerid][Registered] = 1;
  361.                 PlayerInfo[playerid][LoggedIn] = 1;
  362.                 PlayerInfo[playerid][AdminLevel] = dini_Int(PlayerFile, "AdminLevel");
  363.                 PlayerInfo[playerid][Kills] = dini_Int(PlayerFile, "Kills");
  364.                 PlayerInfo[playerid][Deaths] = dini_Int(PlayerFile, "Deaths");
  365.             }
  366.             else
  367.             {
  368.                 PlayerInfo[playerid][Registered] = 1;
  369.                 PlayerInfo[playerid][LoggedIn] = 0;
  370.                 SendClientMessage(playerid, COLOR_GREEN," Since you are registered, please use /login to login onto your account.");
  371.             }
  372.         }
  373.  
  374.         else if(!dini_Exists(PlayerFile))
  375.         {
  376.             PlayerInfo[playerid][Registered] = 0;
  377.             PlayerInfo[playerid][LoggedIn] = 0;
  378.         }
  379.  
  380.         WrongPassword[playerid] = 0;
  381.     }
  382.     else
  383.     {
  384.         GetPlayerName(playerid, pName, sizeof(pName));
  385.         format(string, 256, "* %s (ID: %d) has joined the server while it was locked and has been kicked.", pName, playerid);
  386.         SendClientMessageToAll(COLOR_GRAD1, string);
  387.         SendClientMessage(playerid, COLOR_GREEN, "The server is locked, sorry!");
  388.         new File:KickFile = fopen("logs/KickLog.txt", io_append);
  389.         format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been kicked by the server. [Reason: The server is locked]\r\n", year, month, day, hour, minute, second, pName);
  390.         fwrite(KickFile, string);
  391.         fclose(KickFile);
  392.         Kick(playerid);
  393.     }
  394.     return 1;
  395. }
  396.  
  397. public OnPlayerDisconnect(playerid, reason)
  398. {
  399.     new PlayerName[24], string[256];
  400.     GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  401.  
  402.     switch (reason)
  403.     {
  404.       case 0: { format(string, 256, "* %s (ID: %d) has left the server (Timeout)", PlayerName, playerid);     SendClientMessageToAll(COLOR_GRAD1, string);    }
  405.       case 1: { format(string, 256, "* %s (ID: %d) has left the server (Leaving)", PlayerName, playerid);     SendClientMessageToAll(COLOR_GRAD1, string);    }
  406.       case 2: { format(string, 256, "* %s (ID: %d) has left the server (Kicked)", PlayerName, playerid);      SendClientMessageToAll(COLOR_GRAD1, string);    }
  407.     }
  408.     return 1;
  409. }
  410.  
  411. public OnFilterScriptInit()
  412. {
  413.     new year, month, day; getdate(year, month, day);
  414.     new hour, minute, second; gettime(hour, minute, second);
  415.     if(fexist("users/"))
  416.     {
  417.         printf("==================================================");
  418.         printf("|        Loaded on: %d/%d/%d at %d:%d:%d         |", year, month, day, hour, minute, second);
  419.         printf("==================================================");
  420.         printf("|   mAdmin [V 1.0] by Matthias has been loaded.  |");
  421.         printf("==================================================");
  422.     }
  423.    
  424.     if(!fexist("users/"))
  425.     {
  426.         printf("==================================================");
  427.         printf("|   Attempting to load on: %d/%d/%d at %d:%d:%d  |", year, month, day, hour, minute, second);
  428.         printf("==================================================");
  429.         printf("* Folder 'users' not found in scriptfiles.");
  430.         printf("* Unload the filterscript and create the folder 'users' in scriptfiles.");
  431.     }
  432.    
  433.     if(!fexist("logs/"))
  434.     {
  435.         printf("==================================================");
  436.         printf("|   Attempting to load on: %d/%d/%d at %d:%d:%d  |", year, month, day, hour, minute, second);
  437.         printf("==================================================");
  438.         printf("* Folder 'logs' not found in scriptfiles.");
  439.         printf("* Unload the filterscript and create the folder 'logs' in scriptfiles.");
  440.     }
  441.    
  442.     Jail1 = 0;
  443.     Jail2 = 0;
  444.     Vehicles = 0;
  445.     NumberOfPickups = 0;
  446.     ServerIsLocked = 0;
  447.    
  448.     GodTimer = SetTimer("GodMode",50,1);
  449.    
  450.     tpMenu = CreateMenu("Teleport menu", 1, 200.0, 100.0, 150.0, 150.0);
  451.  
  452.     AddMenuItem(tpMenu, 0, "Los Santos");
  453.     AddMenuItem(tpMenu, 0, "San Fierro");
  454.     AddMenuItem(tpMenu, 0, "Las Venturas");
  455.     return 1;
  456. }
  457.  
  458. public OnFilterScriptExit()
  459. {
  460.     new year, month, day; getdate(year, month, day);
  461.     new hour, minute, second; gettime(hour, minute, second);
  462.     printf("==================================================");
  463.     printf("|        Unloaded on: %d/%d/%d at %d:%d:%d       |", year, month, day, hour, minute, second);
  464.     printf("==================================================");
  465.     printf("|  mAdmin [V 1.0] by Matthias has been unloaded. |");
  466.     printf("==================================================");
  467.    
  468.     KillTimer(GodTimer);
  469.     return 1;
  470. }
  471.  
  472. public OnPlayerText(playerid, text[])
  473. {
  474.     if(PlayerIsMuted[playerid] == 1)
  475.     {
  476.         SendClientMessage(playerid, COLOR_BRIGHTRED, "You are muted and cannot talk.");
  477.         return false;
  478.     }
  479.  
  480.     if(text[0] == '@')
  481.     {
  482.         new string[256], pName[24];
  483.         if(PlayerInfo[playerid][AdminLevel] > 0)
  484.         {
  485.             GetPlayerName(playerid,pName,sizeof(pName));
  486.             format(string, sizeof(string), "Admin Chat: %s: %s", pName, text[1]);
  487.             SendModMsg(COLOR_YELLOW, string);
  488.         }
  489.         return 0;
  490.     }
  491.     if(text[0] == '#')
  492.     {
  493.         new string[256], pName[24];
  494.         if(PlayerInfo[playerid][AdminLevel] > 2)
  495.         {
  496.             GetPlayerName(playerid,pName,sizeof(pName));
  497.             format(string, sizeof(string), "Pro-Admin Chat: %s: %s", pName, text[1]);
  498.             SendModMsg(COLOR_YELLOW, string);
  499.         }
  500.         return 0;
  501.     }
  502.     return 1;
  503. }
  504.  
  505.  
  506. public OnPlayerDeath(playerid, killerid, reason)
  507. {
  508.     new pName[24], KillerFile[50], PlayerFile[50], kName[24];
  509.     GetPlayerName(playerid, pName, sizeof(pName));
  510.     GetPlayerName(killerid, kName, sizeof(kName));
  511.     format(KillerFile, sizeof(KillerFile), "/users/%s.ini", kName);
  512.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  513.    
  514.     if(killerid == INVALID_PLAYER_ID)
  515.     {
  516.         SendDeathMessage(INVALID_PLAYER_ID, playerid, reason);
  517.         PlayerInfo[playerid][Deaths]++;
  518.         dini_IntSet(PlayerFile, "Deaths", PlayerInfo[playerid][Deaths]);
  519.     }
  520.     else
  521.     {
  522.         SendDeathMessage(killerid, playerid, reason);
  523.         PlayerInfo[killerid][Kills]++;
  524.         PlayerInfo[playerid][Deaths]++;
  525.         dini_IntSet(PlayerFile, "Deaths", PlayerInfo[playerid][Deaths]);
  526.         dini_IntSet(KillerFile, "Kills", PlayerInfo[killerid][Kills]);
  527.     }
  528.     return 1;
  529. }
  530.  
  531. public OnPlayerPrivmsg(playerid, recieverid, text[])
  532. {
  533.     new RecieverName[24], pName[24], str[256];
  534.     GetPlayerName(recieverid, RecieverName, sizeof(RecieverName));
  535.     GetPlayerName(playerid, pName, sizeof(pName));
  536.     format(str, sizeof(str), "* PM from %s (ID: %d) to %s (ID: %d): %s", pName, playerid, RecieverName, recieverid, text);
  537.     SendModMsg(COLOR_LIGHTBLUE, str);
  538.     return 1;
  539. }
  540.  
  541.  
  542. public GodMode()
  543. {
  544.     for (new i = 0; i < MAX_PLAYERS; i++)
  545.     {
  546.         if (IsPlayerConnected(i) && PlayerHasGodMode[i] == 1)
  547.         {
  548.             SetPlayerHealth(i, 250);
  549.             SetPlayerArmour(i, 250);
  550.         }
  551.     }
  552.     return 1;
  553. }
  554.  
  555. public OnPlayerExitedMenu(playerid)
  556. {
  557.     TogglePlayerControllable(playerid,1);
  558.     return 1;
  559. }
  560.  
  561. public OnPlayerSelectedMenuRow(playerid, row)
  562. {
  563.     new Menu:PlayerMenu = GetPlayerMenu(playerid);
  564.     if(PlayerMenu == tpMenu)
  565.     {
  566.         new string[128], pName[24];
  567.         GetPlayerName(playerid, pName, sizeof(pName));
  568.        
  569.         switch(row)
  570.         {
  571.             case 0:
  572.             {
  573.                 SetPlayerPos(playerid,1979.0,-2241.0,13.0);
  574.                 SetPlayerInterior(playerid, 0);
  575.                 TogglePlayerControllable(playerid, 1);
  576.                 HideMenuForPlayer(tpMenu, playerid);
  577.                 format(string, sizeof(string), "Mod Message: %s (ID: %d) has been teleported to Los Santos.", pName, playerid);
  578.             }
  579.             case 1:
  580.             {
  581.                 SetPlayerPos(playerid,-1990.0,137.0,27.0);
  582.                 SetPlayerInterior(playerid, 0);
  583.                 TogglePlayerControllable(playerid, 1);
  584.                 HideMenuForPlayer(tpMenu, playerid);
  585.                 format(string, sizeof(string), "Mod Message: %s (ID: %d) has been teleported to San Fierro.", pName, playerid);
  586.             }
  587.             case 2:
  588.             {
  589.                 SetPlayerPos(playerid,2037.0,1343.0,12.0);
  590.                 SetPlayerInterior(playerid, 0);
  591.                 TogglePlayerControllable(playerid, 1);
  592.                 HideMenuForPlayer(tpMenu, playerid);
  593.                 format(string, sizeof(string), "Mod Message: %s (ID: %d) has been teleported to Las Venturas.", pName, playerid);
  594.             }
  595.         }
  596.         SendModMsg(COLOR_WHITE, string);
  597.     }
  598.     return 1;
  599. }
  600.  
  601. public OnPlayerCommandText(playerid, cmdtext[])
  602. {
  603.     new cmd[256], idx;
  604.     cmd = strtok(cmdtext, idx);
  605.    
  606.     if(PlayerInfo[playerid][LoggedIn] == 0 && PlayerInfo[playerid][Registered] == 1)
  607.     {
  608.         if (strcmp( cmd, "/login", true) != 0)
  609.         {
  610.             SendClientMessage(playerid,COLOR_BRIGHTRED,"* You cannot use commands when you aren't logged in! Please use /login to login onto your account.");
  611.             return true;
  612.         }
  613.     }
  614.    
  615.     if(PlayerInfo[playerid][Registered] == 0 && PlayerInfo[playerid][LoggedIn] == 0)
  616.     {
  617.         if (strcmp( cmd, "/register", true) != 0)
  618.         {
  619.             SendClientMessage(playerid,COLOR_BRIGHTRED,"* You cannot use commands because you aren't registered! Please use /register to create an account.");
  620.             return true;
  621.         }
  622.     }
  623.    
  624.     if(PlayerInfo[playerid][AdminLevel] != 3 && PlayerIsJailed[playerid] == 1) return SendClientMessage(playerid, COLOR_GREEN, "You can't use commands since you are jailed.");
  625.    
  626.     dcmd(tp, 2, cmdtext);
  627.     dcmd(vr, 2, cmdtext);
  628.     dcmd(up, 2, cmdtext);
  629.    
  630.     dcmd(fix, 3, cmdtext);
  631.     dcmd(ban, 3, cmdtext);
  632.     dcmd(gmx, 3, cmdtext);
  633.     dcmd(nos, 3, cmdtext);
  634.     dcmd(god, 3, cmdtext);
  635.    
  636.     dcmd(spec, 4, cmdtext);
  637.     dcmd(kill, 4, cmdtext);
  638.     dcmd(nuke, 4, cmdtext);
  639.     dcmd(kick, 4, cmdtext);
  640.     dcmd(jail, 4, cmdtext);
  641.     dcmd(mute, 4, cmdtext);
  642.     dcmd(flip, 4, cmdtext);
  643.     dcmd(cmds, 4, cmdtext);
  644.    
  645.     dcmd(crash, 5, cmdtext);
  646.     dcmd(clear, 5, cmdtext);
  647.     dcmd(ungod, 5, cmdtext);
  648.     dcmd(spawn, 5, cmdtext);
  649.     dcmd(acmds, 5, cmdtext);
  650.     dcmd(kill2, 5, cmdtext);
  651.     dcmd(login, 5, cmdtext);
  652.     dcmd(unban, 5, cmdtext);
  653.     dcmd(fetch, 5, cmdtext);
  654.     dcmd(banip, 5, cmdtext);
  655.    
  656.     dcmd(tpmenu, 6, cmdtext);
  657.     dcmd(report, 6, cmdtext);
  658.     dcmd(refill, 6, cmdtext);
  659.     dcmd(unjail, 6, cmdtext);
  660.     dcmd(loadfs, 6, cmdtext);
  661.     dcmd(create, 6, cmdtext);
  662.     dcmd(unmute, 6, cmdtext);
  663.  
  664.     dcmd(kickall, 7, cmdtext);
  665.     dcmd(nukeall, 7, cmdtext);
  666.     dcmd(vcolour, 7, cmdtext);
  667.     dcmd(forward, 7, cmdtext);
  668.     dcmd(destroy, 7, cmdtext);
  669.     dcmd(specoff, 7, cmdtext);
  670.     dcmd(respawn, 7, cmdtext);
  671.     dcmd(unbanip, 7, cmdtext);
  672.     dcmd(mystats, 7, cmdtext);
  673.     dcmd(tempmod, 7, cmdtext);
  674.     dcmd(tempman, 7, cmdtext);
  675.  
  676.     dcmd(setlevel, 8, cmdtext);
  677.     dcmd(register, 8, cmdtext);
  678.     dcmd(announce, 8, cmdtext);
  679.     dcmd(unloadfs, 8, cmdtext);
  680.     dcmd(reloadfs, 8, cmdtext);
  681.     dcmd(givecash, 8, cmdtext);
  682.    
  683.     dcmd(announce2, 9, cmdtext);
  684.     dcmd(tempadmin, 9, cmdtext);
  685.     dcmd(sethealth, 9, cmdtext);
  686.     dcmd(setarmour, 9, cmdtext);
  687.  
  688.     dcmd(giveweapon, 10, cmdtext);
  689.     dcmd(lockserver, 10, cmdtext);
  690.    
  691.     dcmd(makemeadmin, 11, cmdtext);
  692.    
  693.     dcmd(unlockserver, 12, cmdtext);
  694.     return 0;
  695. }
  696.  
  697. // ******************************************************** //
  698. //                    General commands                      //
  699. // ******************************************************** //
  700.  
  701. dcmd_kill(playerid, params[])
  702. {
  703.     SetPlayerHealth(playerid, 0 );
  704.     #pragma unused params
  705.     return 1;
  706. }
  707.  
  708. dcmd_register(playerid, params[])
  709. {
  710.     new pName[24], PlayerFile[50], plrIP[50];
  711.     GetPlayerName(playerid, pName, sizeof(pName));
  712.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  713.     GetPlayerIp(playerid, plrIP, sizeof(plrIP));
  714.  
  715.     if(dini_Exists(PlayerFile))
  716.     {
  717.         SendClientMessage(playerid, COLOR_BRIGHTRED, "You have already registered! Please use /login to login or choose another nickname.");
  718.     }
  719.  
  720.     if(!dini_Exists(PlayerFile))
  721.     {
  722.         if (!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /register [password]");
  723.        
  724.         dini_Create(PlayerFile);
  725.         dini_Set(PlayerFile, "Password", MD5_Hash(params));
  726.         dini_Set(PlayerFile, "PlayerIP", plrIP);
  727.         dini_IntSet(PlayerFile, "AdminLevel", 0);
  728.         dini_IntSet(PlayerFile, "Deaths", 0);
  729.         dini_IntSet(PlayerFile, "Kills", 0);
  730.  
  731.         SendClientMessage(playerid, COLOR_GREEN, "You have succesfully registered, you have been automatically logged in.");
  732.  
  733.         PlayerInfo[playerid][Registered] = 1;
  734.         PlayerInfo[playerid][LoggedIn] = 1;
  735.     }
  736.     return 1;
  737. }
  738.    
  739. dcmd_login(playerid, params[])
  740. {
  741.     new pName[24], PlayerFile[50], Pass[256], plrIP[50];
  742.     GetPlayerName(playerid, pName, sizeof(pName));
  743.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  744.  
  745.     if(PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You are already logged in!");
  746.     if(PlayerInfo[playerid][Registered] == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not registered! Use /register to register.");
  747.     if(sscanf(params, "s", Pass)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /login [password]");
  748.  
  749.     Pass = dini_Get(PlayerFile, "Password");
  750.    
  751.     if(!strcmp(MD5_Hash(params), Pass, true))
  752.     {
  753.         GetPlayerIp(playerid, plrIP, sizeof(plrIP));
  754.         dini_Set(PlayerFile, "PlayerIP", plrIP);
  755.         SendClientMessage(playerid, COLOR_GREEN, "You have been succesfully logged in");
  756.         PlayerInfo[playerid][LoggedIn] = 1;
  757.         PlayerInfo[playerid][AdminLevel] = dini_Int(PlayerFile, "AdminLevel");
  758.         PlayerInfo[playerid][Kills] = dini_Int(PlayerFile, "Kills");
  759.         PlayerInfo[playerid][Deaths] = dini_Int(PlayerFile, "Deaths");
  760.     }
  761.     else
  762.     {
  763.         new str[256];
  764.         WrongPassword[playerid]++;
  765.  
  766.         if(WrongPassword[playerid] >= 3)
  767.         {
  768.             new year, month, day; getdate(year, month, day);
  769.             new hour, minute, second; gettime(hour, minute, second);
  770.             new str2[256], string[256];
  771.             format(str2, sizeof(str2), "* %s has been kicked: Failed to login.", pName);
  772.             SendClientMessageToAll(COLOR_BRIGHTRED, str2);
  773.             Kick(playerid);
  774.             new File:KickFile = fopen("KickLog.txt", io_append);
  775.             format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been kicked by the server. [Reason: Entered an invalid password 3 times]\r\n", year, month, day, hour, minute, second, pName);
  776.             fwrite(KickFile, string);
  777.             fclose(KickFile);
  778.         }
  779.  
  780.         format(str, sizeof(str), "Invalid password. %d/3 tries left.", WrongPassword[playerid]);
  781.         SendClientMessage(playerid, COLOR_BRIGHTRED, str);
  782.     }
  783.     return 1;
  784. }
  785.  
  786. dcmd_nos(playerid, params[])
  787. {
  788.     new pName[24], string[128];
  789.     GetPlayerName(playerid, pName, sizeof(pName));
  790.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You have to be in a vehicle to use this command!");
  791.     new Model = GetVehicleModel(GetPlayerVehicleID(playerid));
  792.    
  793.     switch(Model)
  794.     {
  795.         case 581,523,462,521,463,522,461,448,468,586,509,481,510,472,473,493,595,484,430,453,452,446,454,590,569,537,538,570,449: return SendClientMessage(playerid, COLOR_BRIGHTRED, "You can't add nos to this vehicle!");
  796.     }
  797.    
  798.     AddVehicleComponent(GetPlayerVehicleID(playerid),1010);
  799.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has added nos to his/her vehicle.", pName, playerid);
  800.     SendModMsg(COLOR_WHITE, string);
  801.     #pragma unused params
  802.     return 1;
  803. }
  804.  
  805. dcmd_report(playerid, params[])
  806. {
  807.     new year, month, day; getdate(year, month, day);
  808.     new hour, minute, second; gettime(hour, minute, second);
  809.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Reason[128], string[256];
  810.     if(sscanf(params, "ds", ReturnPlayer, Reason)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /report [playerid] [reason]");
  811.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  812.  
  813.     GetPlayerName(playerid, pName, sizeof(pName));
  814.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  815.     SendClientMessage(playerid, COLOR_GREEN, "Your report has been sent to the current online moderators and administrators");
  816.     format(str, sizeof(str), "* Report: %s (ID: %d) has reported %s (ID: %d) for %s", pName, playerid, ReturnUserName, ReturnPlayer, Reason);
  817.     SendModMsg(COLOR_YELLOW, str);
  818.    
  819.     new File:ReportFile = fopen("logs/ReportLog.txt", io_append);
  820.     format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been reported by %s. [Reason: %s]\r\n", year, month, day, hour, minute, second, ReturnUserName, pName, Reason);
  821.     fwrite(ReportFile, string);
  822.     fclose(ReportFile);
  823.     return 1;
  824. }
  825.  
  826. dcmd_cmds(playerid, params[])
  827. {
  828.     SendClientMessage(playerid, COLOR_YELLOW, "Commands:");
  829.     SendClientMessage(playerid, COLOR_GREEN, "/register, /login, /mystats, /report, /nos");
  830.     #pragma unused params
  831.     return 1;
  832. }
  833.  
  834. dcmd_mystats(playerid, params[])
  835. {
  836.     new pName[24], PlayerFile[50], str[128], pDeaths[50], pKills[50];
  837.    
  838.     GetPlayerName(playerid, pName, sizeof(pName));
  839.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  840.    
  841.     if(!dini_Exists(PlayerFile)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You aren't registered! Use /register to create an account.");
  842.    
  843.     if(dini_Exists(PlayerFile))
  844.     {
  845.         pDeaths[24] = dini_Int(PlayerFile, "Deaths");
  846.         pKills[24] = dini_Int(PlayerFile, "Kills");
  847.         new Float:Ratio=floatdiv(pKills[24], pDeaths[24]);
  848.         format(str, sizeof(str), "You have died %d times and killed somebody %d times. That makes your ratio %.2f .", pDeaths[24], pKills[24], Ratio);
  849.         SendClientMessage(playerid, COLOR_WHITE, str);
  850.  
  851.         if(PlayerInfo[playerid][AdminLevel] == 0)
  852.         {
  853.             SendClientMessage(playerid, COLOR_WHITE, "You are a player on the server.");
  854.         }
  855.         if(PlayerInfo[playerid][AdminLevel] == 1)
  856.         {
  857.             SendClientMessage(playerid, COLOR_WHITE, "You are a moderator on the server.");
  858.         }
  859.         if(PlayerInfo[playerid][AdminLevel] == 2)
  860.         {
  861.             SendClientMessage(playerid, COLOR_WHITE, "You are an administrator on the server.");
  862.         }
  863.         if(PlayerInfo[playerid][AdminLevel] == 3)
  864.         {
  865.             SendClientMessage(playerid, COLOR_WHITE, "You are a management member on the server.");
  866.         }
  867.     }
  868.     #pragma unused params
  869.     return 1;
  870. }
  871.  
  872.  
  873. // ******************************************************** //
  874. //                 Management commands                      //
  875. // ******************************************************** //
  876.  
  877. dcmd_up(playerid, params[])
  878. {
  879.     new string[128], pName[24], Float:X, Float:Y, Float:Z, Ammount;
  880.     GetPlayerName(playerid, pName, sizeof(pName));
  881.     GetPlayerPos(playerid, X, Y, Z);
  882.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  883.    
  884.     if(sscanf(params, "d", Ammount)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /up [ammount]");
  885.    
  886.     SetPlayerPos(playerid, X, Y, Z + Ammount);
  887.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has used /up.", pName, playerid);
  888.     SendProAdminMsg(COLOR_WHITE, string);
  889.     return 1;
  890. }
  891.  
  892. dcmd_forward(playerid, params[])
  893. {
  894.     new string[128], pName[24], Float:X, Float:Y, Float:Z, Ammount;
  895.     GetPlayerName(playerid, pName, sizeof(pName));
  896.     GetPlayerPos(playerid, X, Y, Z);
  897.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  898.  
  899.     if(sscanf(params, "d", Ammount)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /forward [ammount]");
  900.    
  901.     GetXYInFrontOfPlayer(playerid, X, Y, Ammount);
  902.     SetPlayerPos(playerid, X, Y, Z);
  903.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has used /forward.", pName, playerid);
  904.     SendProAdminMsg(COLOR_WHITE, string);
  905.     return 1;
  906. }
  907.  
  908. dcmd_create(playerid, params[])
  909. {
  910.     new string[128], pName[24], Float:X, Float:Y, Float:Z;
  911.     GetPlayerName(playerid, pName, sizeof(pName));
  912.     GetPlayerPos(playerid, X, Y, Z);
  913.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  914.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /create [health/armour/jetpack/pill]");
  915.  
  916.     if (strcmp(params, "health", true) == 0)
  917.     {
  918.         Pickups[NumberOfPickups++] = CreatePickup( 1240, 2, X+1, Y+1, Z);
  919.         SendClientMessage(playerid, COLOR_GREEN, "You have created a health pickup on your location.");
  920.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has created a health pickup.", pName, playerid);
  921.     }
  922.    
  923.     else if (strcmp(params, "armour", true) == 0)
  924.     {
  925.         Pickups[NumberOfPickups++] = CreatePickup( 1242, 2, X+1, Y+1, Z);
  926.         SendClientMessage(playerid, COLOR_GREEN, "You have created an armour pickup on your location.");
  927.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has created an armour pickup.", pName, playerid);
  928.     }
  929.    
  930.     else if (strcmp(params, "jetpack", true) == 0)
  931.     {
  932.         Pickups[NumberOfPickups++] = CreatePickup(370, 2, X+1, Y+1, Z);
  933.         SendClientMessage(playerid, COLOR_GREEN, "You have created a jetpack on your location.");
  934.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has created a jetpack.", pName, playerid);
  935.     }
  936.    
  937.     else if (strcmp(params, "pill", true) == 0)
  938.     {
  939.         Pickups[NumberOfPickups++] = CreatePickup( 1241, 2, X+1, Y+1, Z);
  940.         SendClientMessage(playerid, COLOR_GREEN, "You have created a pill on your location.");
  941.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has created a pill.", pName, playerid);
  942.     }
  943.  
  944.     else return SendClientMessage(playerid, COLOR_WHITE, "Usage: /create [health/armour/jetpack/pill]");
  945.    
  946.     SendProAdminMsg(COLOR_WHITE, string);
  947.     return 1;
  948. }
  949.    
  950. dcmd_destroy(playerid, params[])
  951. {
  952.     new string[128], pName[24];
  953.     GetPlayerName(playerid, pName, sizeof(pName));
  954.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  955.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /destroy [vehicles/pickups]");
  956.  
  957.     if (strcmp(params, "vehicles", true) == 0)
  958.     {
  959.         for(new i=0; i < Vehicles; i++)
  960.         {
  961.             DestroyVehicle(SpawnedVehicle[i]);
  962.         }
  963.         Vehicles = 0;
  964.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has destroyed all dynamically created vehicles.", pName, playerid);
  965.     }
  966.  
  967.     else if (strcmp(params, "pickups", true) == 0)
  968.     {
  969.         for(new i=0; i < NumberOfPickups; i++)
  970.         {
  971.             DestroyPickup(Pickups[i]);
  972.         }
  973.         NumberOfPickups = 0;
  974.         format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has destroyed all dynamically created pickups.", pName, playerid);
  975.     }
  976.  
  977.     else return SendClientMessage(playerid, COLOR_WHITE, "Usage: /destroy [vehicles/pickups]");
  978.  
  979.     SendProAdminMsg(COLOR_WHITE, string);
  980.     return 1;
  981. }
  982.    
  983. dcmd_gmx(playerid, params[])
  984. {
  985.     new string[128], pName[24];
  986.     GetPlayerName(playerid, pName, sizeof(pName));
  987.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  988.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) restarted the server.", pName, playerid);
  989.     SendProAdminMsg(COLOR_WHITE, string);
  990.     SendRconCommand("gmx");
  991.     #pragma unused params
  992.     return 1;
  993. }
  994.  
  995. dcmd_loadfs(playerid, params[])
  996. {
  997.     new string[128], pName[24];
  998.     GetPlayerName(playerid, pName, sizeof(pName));
  999.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1000.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /loadfs [filterscript]");
  1001.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has loaded filterscript: %s.amx", pName, playerid, params);
  1002.     SendProAdminMsg(COLOR_WHITE, string);
  1003.     format(string, sizeof(string), "loadfs %s", params);
  1004.     SendRconCommand(string);
  1005.     #pragma unused params
  1006.     return 1;
  1007. }
  1008.  
  1009. dcmd_unloadfs(playerid, params[])
  1010. {
  1011.     new string[128], pName[24];
  1012.     GetPlayerName(playerid, pName, sizeof(pName));
  1013.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1014.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /unloadfs [filterscript]");
  1015.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has unloaded filterscript: %s.amx", pName, playerid, params);
  1016.     SendProAdminMsg(COLOR_WHITE, string);
  1017.     format(string, sizeof(string), "unloadfs %s", params);
  1018.     SendRconCommand(string);
  1019.     #pragma unused params
  1020.     return 1;
  1021. }
  1022.  
  1023. dcmd_reloadfs(playerid, params[])
  1024. {
  1025.     new string[128], pName[24];
  1026.     GetPlayerName(playerid, pName, sizeof(pName));
  1027.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1028.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /reloadfs [filterscript]");
  1029.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has reloaded filterscript: %s.amx", pName, playerid, params);
  1030.     SendProAdminMsg(COLOR_WHITE, string);
  1031.     format(string, sizeof(string), "reloadfs %s", params);
  1032.     SendRconCommand(string);
  1033.     #pragma unused params
  1034.     return 1;
  1035. }
  1036.  
  1037. dcmd_makemeadmin(playerid, params[])
  1038. {
  1039.     if(!IsPlayerAdmin(playerid)) return false;
  1040.  
  1041.     new pName[24], PlayerFile[50];
  1042.     GetPlayerName(playerid, pName, sizeof(pName));
  1043.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  1044.     if(!dini_Exists(PlayerFile)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You have to register first! (/register)");
  1045.    
  1046.     PlayerInfo[playerid][AdminLevel] = 3;
  1047.     SendClientMessage(playerid, COLOR_GREEN, "You have granted yourself management rights!");
  1048.     dini_IntSet(PlayerFile, "AdminLevel", 3);
  1049.     #pragma unused params
  1050.     return 1;
  1051. }
  1052.  
  1053. dcmd_lockserver(playerid, params[])
  1054. {
  1055.     new string[128], pName[24];
  1056.     GetPlayerName(playerid, pName, sizeof(pName));
  1057.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1058.     if(ServerIsLocked == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "The server is locked already!");
  1059.    
  1060.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has locked the server.", pName, playerid, params);
  1061.     SendProAdminMsg(COLOR_WHITE, string);
  1062.     SendClientMessageToAll(COLOR_GREEN, "Notice: The server has been locked.");
  1063.    
  1064.     ServerIsLocked = true;
  1065.     return 1;
  1066. }
  1067.  
  1068. dcmd_unlockserver(playerid, params[])
  1069. {
  1070.     new string[128], pName[24];
  1071.     GetPlayerName(playerid, pName, sizeof(pName));
  1072.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1073.     if(ServerIsLocked == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "The server isn't locked!");
  1074.    
  1075.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has unlocked the server.", pName, playerid, params);
  1076.     SendProAdminMsg(COLOR_WHITE, string);
  1077.     SendClientMessageToAll(COLOR_GREEN, "Notice: The server has been unlocked.");
  1078.  
  1079.     ServerIsLocked = false;
  1080.     return 1;
  1081. }
  1082.  
  1083. dcmd_crash(playerid, params[])
  1084. {
  1085.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1086.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1087.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /crash [playerid]");
  1088.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1089.     GetPlayerName(playerid, pName, sizeof(pName));
  1090.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1091.  
  1092.     new tempObject = CreatePlayerObject(ReturnPlayer, 111111, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  1093.     DestroyPlayerObject(ReturnPlayer, tempObject);
  1094.    
  1095.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has crashed %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1096.     SendModMsg(COLOR_WHITE, string);
  1097.     return 1;
  1098. }
  1099.  
  1100.  
  1101. dcmd_nukeall(playerid, params[])
  1102. {
  1103.     new pName[24], string[256], Float:X, Float:Y, Float:Z;
  1104.     GetPlayerName(playerid, pName, sizeof(pName));
  1105.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1106.  
  1107.     for(new i=0; i < MAX_PLAYERS; i++)
  1108.     {
  1109.         if(IsPlayerConnected(i))
  1110.         {
  1111.             GetPlayerPos(i, X, Y, Z);
  1112.             CreateExplosion(X, Y, Z+1, 7, 10.0);
  1113.             CreateExplosion(X+1, Y, Z, 7, 10.0);
  1114.             CreateExplosion(X, Y+1, Z, 7, 10.0);
  1115.             CreateExplosion(X+1, Y, Z, 7, 10.0);
  1116.         }
  1117.     }
  1118.  
  1119.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has nuked everyone in the server.", pName, playerid);
  1120.     SendProAdminMsg(COLOR_WHITE, string);
  1121.     #pragma unused params
  1122.     return 1;
  1123. }
  1124.  
  1125. dcmd_kickall(playerid, params[])
  1126. {
  1127.     new year, month, day; getdate(year, month, day);
  1128.     new hour, minute, second; gettime(hour, minute, second);
  1129.     new pName[24], string[256];
  1130.     GetPlayerName(playerid, pName, sizeof(pName));
  1131.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1132.  
  1133.     format(string, sizeof(string), "Pro-Admin Message: %s (ID: %d) has kicked everyone off the server.", pName, playerid);
  1134.     SendProAdminMsg(COLOR_WHITE, string);
  1135.     SendClientMessageToAll(COLOR_GREEN, "Notice: Everybody has been kicked off the server by a management member.");
  1136.  
  1137.     for(new i=0; i < MAX_PLAYERS; i++)
  1138.     {
  1139.         if(IsPlayerConnected(i))
  1140.         {
  1141.             Kick(i);
  1142.         }
  1143.     }
  1144.    
  1145.     new File:KickFile = fopen("logs/KickLog.txt", io_append);
  1146.     format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: Everyone has been kicked by %s. [Used /kickall]\r\n", year, month, day, hour, minute, second, pName);
  1147.     fwrite(KickFile, string);
  1148.     fclose(KickFile);
  1149.  
  1150.     #pragma unused params
  1151.     return 1;
  1152. }
  1153.  
  1154. dcmd_tempman(playerid, params[])
  1155. {
  1156.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1157.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1158.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /tempman [playerid]");
  1159.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1160.     if(PlayerInfo[ReturnPlayer][AdminLevel] == 3) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player is a crew member already!");
  1161.     GetPlayerName(playerid, pName, sizeof(pName));
  1162.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1163.  
  1164.     PlayerInfo[ReturnPlayer][AdminLevel] = 2;
  1165.     SendClientMessage(ReturnPlayer, COLOR_GREEN, "An administrator has given you temporary management rights.");
  1166.     format(str, sizeof(str), "You have granted %s (ID: %d) temporary management rights.", ReturnUserName, ReturnPlayer);
  1167.     SendClientMessage(playerid, COLOR_GREEN, str);
  1168.     format(str, sizeof(str), "Pro-Admin Message: %s (ID: %d) has granted %s (ID: %d) temporary management rights.", pName, playerid, ReturnUserName, ReturnPlayer);
  1169.     SendAdminMsg(COLOR_WHITE, str);
  1170.     return 1;
  1171. }
  1172.  
  1173. dcmd_setlevel(playerid, params[])
  1174. {
  1175.     new Level, Player, pName[24], pName2[24], str[128], PlayerFile[50], AdminMsg[128];
  1176.  
  1177.     if(PlayerInfo[playerid][AdminLevel] < 3) return false;
  1178.     if(sscanf(params, "dd", Player, Level)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /setlevel [playerid] [level]");
  1179.     GetPlayerName(Player, pName, sizeof(pName));
  1180.     GetPlayerName(playerid, pName2, sizeof(pName2));
  1181.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", pName);
  1182.     if(!IsPlayerConnected(Player)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1183.     if(Level > 3 || Level < 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid level! Valid levels: [ 0 - 3]");
  1184.     if(!dini_Exists(PlayerFile)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player isn't registered!");
  1185.     if(PlayerInfo[Player][AdminLevel] == Level) return SendClientMessage(playerid, COLOR_BRIGHTRED, "ERROR: That player is that level already!");
  1186.  
  1187.     if(Level == 0)
  1188.     {
  1189.         format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s (ID: %d) has been demoted to a player by %s (ID: %d).", pName, Player, pName2, playerid);
  1190.         SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1191.         format(str, sizeof(str), "You have demoted %s to a player.", pName);
  1192.         SendClientMessage(playerid, COLOR_GREEN, str);
  1193.         SendClientMessage(Player, COLOR_GREEN, "You have been demoted to a player.");
  1194.         PlayerInfo[Player][AdminLevel] = 0;
  1195.         dini_IntSet(PlayerFile, "AdminLevel", 0);
  1196.     }
  1197.  
  1198.     if(Level == 1)
  1199.     {
  1200.         if(PlayerInfo[Player][AdminLevel] > 1)
  1201.         {
  1202.             format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s (ID: %d) has been demoted to a moderator by %s (ID: %d).", pName, Player, pName2, playerid);
  1203.             SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1204.             format(str, sizeof(str), "You have demoted %s to a moderator.", pName);
  1205.             SendClientMessage(playerid, COLOR_GREEN, str);
  1206.             SendClientMessage(Player, COLOR_GREEN, "You have been demoted to a moderator.");
  1207.             PlayerInfo[Player][AdminLevel] = 1;
  1208.             dini_IntSet(PlayerFile, "AdminLevel", 1);
  1209.         }
  1210.         if(PlayerInfo[Player][AdminLevel] < 1)
  1211.         {
  1212.             format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s (ID: %d) has been promoted to a moderator by %s (ID: %d).", pName, Player, pName2, playerid);
  1213.             SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1214.             format(str, sizeof(str), "You have promoted %s to a moderator.", pName);
  1215.             SendClientMessage(playerid, COLOR_GREEN, str);
  1216.             SendClientMessage(Player, COLOR_GREEN, "You have been promoted to a moderator.");
  1217.             PlayerInfo[Player][AdminLevel] = 1;
  1218.             dini_IntSet(PlayerFile, "AdminLevel", 1);
  1219.         }
  1220.     }
  1221.  
  1222.     if(Level == 2)
  1223.     {
  1224.         if(PlayerInfo[Player][AdminLevel] > 2)
  1225.         {
  1226.             format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s (ID: %d) has been demoted to an administrator by %s (ID: %d).",pName, Player, pName2, playerid);
  1227.             SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1228.             format(str, sizeof(str), "You have demoted %s to an administrator.", pName);
  1229.             SendClientMessage(playerid, COLOR_GREEN, str);
  1230.             SendClientMessage(Player, COLOR_GREEN, "You have been demoted to an administrator.");
  1231.             PlayerInfo[Player][AdminLevel] = 2;
  1232.             dini_IntSet(PlayerFile, "AdminLevel", 2);
  1233.         }
  1234.         if(PlayerInfo[Player][AdminLevel] < 2)
  1235.         {
  1236.             format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s (ID: %d) has been promoted to an administrator by %s (ID: %d).", pName, Player, pName2, playerid);
  1237.             SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1238.             format(str, sizeof(str), "You have promoted %s to an administrator.", pName);
  1239.             SendClientMessage(playerid, COLOR_GREEN, str);
  1240.             SendClientMessage(Player, COLOR_GREEN, "You have been promoted to an administrator.");
  1241.             PlayerInfo[Player][AdminLevel] = 2;
  1242.             dini_IntSet(PlayerFile, "AdminLevel", 2);
  1243.         }
  1244.     }
  1245.  
  1246.     if(Level == 3)
  1247.     {
  1248.         format(AdminMsg, sizeof(AdminMsg), "Pro-Admin Message: %s has been promoted to a management member by %s.", pName, Player, pName2, playerid);
  1249.         SendProAdminMsg(COLOR_WHITE, AdminMsg);
  1250.         format(str, sizeof(str), "You have promoted %s to a management member.", pName);
  1251.         SendClientMessage(playerid, COLOR_GREEN, str);
  1252.         SendClientMessage(Player, COLOR_GREEN, "You have been promoted to a management member.");
  1253.         PlayerInfo[Player][AdminLevel] = 3;
  1254.         dini_IntSet(PlayerFile, "AdminLevel", 3);
  1255.     }
  1256.     return 1;
  1257. }
  1258.  
  1259. // ******************************************************** //
  1260. //                 Administrator commands                   //
  1261. // ******************************************************** //
  1262.  
  1263. dcmd_god(playerid, params[])
  1264. {
  1265.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1266.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1267.     if(sscanf(params, "d", ReturnPlayer))
  1268.     {
  1269.         GetPlayerName(playerid, pName, sizeof(pName));
  1270.         SetPlayerHealth(playerid, 100);
  1271.         SetPlayerArmour(playerid, 100);
  1272.         PlayerHasGodMode[playerid] = 1;
  1273.         format(string, sizeof string, "Admin Message: %s (ID: %d) has activated his/her godmode.", pName, playerid);
  1274.         SendModMsg(COLOR_WHITE, string);
  1275.     }
  1276.     else
  1277.     {
  1278.         if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1279.  
  1280.         GetPlayerName(playerid, pName, sizeof(pName));
  1281.         GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1282.         SetPlayerHealth(ReturnPlayer, 100);
  1283.         SetPlayerArmour(ReturnPlayer, 100);
  1284.         PlayerHasGodMode[ReturnPlayer] = 1;
  1285.         format(string, sizeof string, "Admin Message: %s (ID: %d) has activated %s (ID: %d) his/her godmode.", pName, playerid, ReturnUserName, ReturnPlayer);
  1286.         SendModMsg(COLOR_WHITE, string);
  1287.     }
  1288.     return 1;
  1289. }
  1290.  
  1291. dcmd_ungod(playerid, params[])
  1292. {
  1293.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1294.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1295.     if(sscanf(params, "d", ReturnPlayer))
  1296.     {
  1297.         GetPlayerName(playerid, pName, sizeof(pName));
  1298.         SetPlayerHealth(playerid, 100);
  1299.         SetPlayerArmour(playerid, 100);
  1300.         PlayerHasGodMode[playerid] = 0;
  1301.         format(string, sizeof string, "Admin Message: %s (ID: %d) has de-activated his/her godmode.", pName, playerid);
  1302.         SendModMsg(COLOR_WHITE, string);
  1303.     }
  1304.     else
  1305.     {
  1306.         if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1307.  
  1308.         GetPlayerName(playerid, pName, sizeof(pName));
  1309.         GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1310.         SetPlayerHealth(ReturnPlayer, 100);
  1311.         SetPlayerArmour(ReturnPlayer, 100);
  1312.         PlayerHasGodMode[ReturnPlayer] = 0;
  1313.         format(string, sizeof string, "Admin Message: %s (ID: %d) has de-activated %s (ID: %d) his/her godmode.", pName, playerid, ReturnUserName, ReturnPlayer);
  1314.         SendModMsg(COLOR_WHITE, string);
  1315.     }
  1316.     return 1;
  1317. }
  1318.  
  1319. dcmd_banip(playerid, params[])
  1320. {
  1321.     new pName[24], string[256];
  1322.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1323.     GetPlayerName(playerid, pName, sizeof(pName));
  1324.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /banip [playerip]");
  1325.  
  1326.     format(string, sizeof string, "banip %s", params);
  1327.     SendRconCommand(string);
  1328.     SendRconCommand("reloadbans");
  1329.  
  1330.     format(string, sizeof string, "Admin Message: %s (ID: %d) has banned the IP: %s.", pName, playerid, params);
  1331.     SendAdminMsg(COLOR_WHITE, string);
  1332.     return 1;
  1333. }
  1334.  
  1335. dcmd_tempadmin(playerid, params[])
  1336. {
  1337.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1338.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1339.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /tempadmin [playerid]");
  1340.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1341.     if(PlayerInfo[ReturnPlayer][AdminLevel] >= 2) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player is a crew member already!");
  1342.     GetPlayerName(playerid, pName, sizeof(pName));
  1343.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1344.    
  1345.     PlayerInfo[ReturnPlayer][AdminLevel] = 2;
  1346.     SendClientMessage(ReturnPlayer, COLOR_GREEN, "An administrator has given you temporary administrator rights.");
  1347.     format(str, sizeof(str), "You have granted %s (ID: %d) temporary administrator rights.", ReturnUserName, ReturnPlayer);
  1348.     SendClientMessage(playerid, COLOR_GREEN, str);
  1349.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has granted %s (ID: %d) temporary administrator rights.", pName, playerid, ReturnUserName, ReturnPlayer);
  1350.     SendAdminMsg(COLOR_WHITE, str);
  1351.     return 1;
  1352. }
  1353.  
  1354. dcmd_tempmod(playerid, params[])
  1355. {
  1356.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1357.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1358.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /tempmod [playerid]");
  1359.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1360.     if(PlayerInfo[ReturnPlayer][AdminLevel] >= 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player is a crew member already!");
  1361.     GetPlayerName(playerid, pName, sizeof(pName));
  1362.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1363.  
  1364.     PlayerInfo[ReturnPlayer][AdminLevel] = 1;
  1365.     SendClientMessage(ReturnPlayer, COLOR_GREEN, "An administrator has given you temporary moderator rights.");
  1366.     format(str, sizeof(str), "You have granted %s (ID: %d) temporary moderator rights.", ReturnUserName, ReturnPlayer);
  1367.     SendClientMessage(playerid, COLOR_GREEN, str);
  1368.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has granted %s (ID: %d) temporary moderator rights.", pName, playerid, ReturnUserName, ReturnPlayer);
  1369.     SendAdminMsg(COLOR_WHITE, str);
  1370.     return 1;
  1371. }
  1372.  
  1373. dcmd_giveweapon(playerid, params[])
  1374. {
  1375.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Weapon, Ammo;
  1376.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1377.     if(sscanf(params, "ddd", ReturnPlayer, Weapon, Ammo)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /giveweapon [playerid] [Weapon ID] [Ammo]");
  1378.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1379.     if(!IsValidWeapon(Weapon)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid Weapon ID.");
  1380.     GetPlayerName(playerid, pName, sizeof(pName));
  1381.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1382.  
  1383.     GivePlayerWeapon(ReturnPlayer, Weapon, Ammo);
  1384.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has given %s (ID: %d) a %s (Weapon ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer, aWeaponNames[Weapon], Weapon);
  1385.     SendAdminMsg(COLOR_WHITE, str);
  1386.     return 1;
  1387. }
  1388.  
  1389. dcmd_givecash(playerid, params[])
  1390. {
  1391.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Cash;
  1392.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1393.     if(sscanf(params, "dd", ReturnPlayer, Cash)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /givecash [playerid] [ammount]");
  1394.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1395.     GetPlayerName(playerid, pName, sizeof(pName));
  1396.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1397.  
  1398.     GivePlayerMoney(ReturnPlayer, Cash);
  1399.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has given %s (ID: %d) $%d.", pName, playerid, ReturnUserName, ReturnPlayer, Cash);
  1400.     SendAdminMsg(COLOR_WHITE, str);
  1401.     return 1;
  1402. }
  1403.  
  1404. dcmd_nuke(playerid, params[])
  1405. {
  1406.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Float:X, Float:Y, Float:Z;
  1407.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1408.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /nuke [playerid]");
  1409.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1410.     GetPlayerName(playerid, pName, sizeof(pName));
  1411.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1412.     GetPlayerPos(ReturnPlayer, X, Y, Z);
  1413.     CreateExplosion(X, Y, Z+1, 7, 10.0);
  1414.     CreateExplosion(X+1, Y, Z, 7, 10.0);
  1415.     CreateExplosion(X, Y+1, Z, 7, 10.0);
  1416.     CreateExplosion(X+1, Y, Z, 7, 10.0);
  1417.  
  1418.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has nuked %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1419.     SendAdminMsg(COLOR_WHITE, str);
  1420.     return 1;
  1421. }
  1422.  
  1423. dcmd_sethealth(playerid, params[])
  1424. {
  1425.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Health;
  1426.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1427.     if(sscanf(params, "dd", ReturnPlayer, Health)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /sethealth [playerid] [1 - 100]");
  1428.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1429.     if(Health < 0 || Health > 100) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You can only use 1 - 100");
  1430.     GetPlayerName(playerid, pName, sizeof(pName));
  1431.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1432.  
  1433.     SetPlayerHealth(ReturnPlayer, Health);
  1434.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has set %s (ID: %d) his/her health to %d.", pName, playerid, ReturnUserName, ReturnPlayer, Health);
  1435.     SendAdminMsg(COLOR_WHITE, str);
  1436.     return 1;
  1437. }
  1438.  
  1439. dcmd_setarmour(playerid, params[])
  1440. {
  1441.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Armour;
  1442.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1443.     if(sscanf(params, "dd", ReturnPlayer, Armour)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /setarmour [playerid] [1 - 100]");
  1444.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1445.     if(Armour < 0 || Armour > 100) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You can only use 1 - 100");
  1446.     GetPlayerName(playerid, pName, sizeof(pName));
  1447.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1448.  
  1449.     SetPlayerArmour(ReturnPlayer, Armour);
  1450.     format(str, sizeof(str), "Admin Message: %s (ID: %d) has set %s (ID: %d) his/her armour to %d.", pName, playerid, ReturnUserName, ReturnPlayer, Armour);
  1451.     SendAdminMsg(COLOR_WHITE, str);
  1452.     return 1;
  1453. }
  1454.  
  1455. dcmd_fetch(playerid, params[])
  1456. {
  1457.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256], Float:X, Float:Y, Float:Z;
  1458.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1459.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /fetch [playerid]");
  1460.     GetPlayerName(playerid, pName, sizeof(pName));
  1461.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1462.     if(playerid == ReturnPlayer) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You cannot fetch yourself, silly!");
  1463.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1464.  
  1465.     GetPlayerPos(playerid, X, Y, Z);
  1466.     SetPlayerPos(ReturnPlayer, X+1, Y+1, Z);
  1467.     format(string, sizeof string, "Admin Message: %s (ID: %d) has fetched %s (ID: %d) to his/her location.", pName, playerid, ReturnUserName, ReturnPlayer);
  1468.     SendAdminMsg(COLOR_WHITE, string);
  1469.     return 1;
  1470. }
  1471.  
  1472. dcmd_clear(playerid, params[])
  1473. {
  1474.     if(PlayerInfo[playerid][AdminLevel] < 2) return false;
  1475.     for(new i=0; i<30; i++)
  1476.     {
  1477.         SendClientMessageToAll(COLOR_BRIGHTRED, " ");
  1478.     }
  1479.     #pragma unused params
  1480.     return 1;
  1481. }
  1482.  
  1483.  
  1484. // ******************************************************** //
  1485. //                  Moderator commands                      //
  1486. // ******************************************************** //
  1487.  
  1488. dcmd_announce(playerid, params[])
  1489. {
  1490.     new pName[24], str[128];
  1491.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1492.     GetPlayerName(playerid, pName, sizeof(pName));
  1493.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /announce [message]");
  1494.    
  1495.     SendClientMessageToAll(COLOR_BRIGHTRED, "-------------------------");
  1496.     SendClientMessageToAll(COLOR_YELLOW, params);
  1497.     SendClientMessageToAll(COLOR_BRIGHTRED, "-------------------------");
  1498.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has announced: '%s'.", pName, playerid);
  1499.     SendModMsg(COLOR_WHITE, str);
  1500.     return 1;
  1501. }
  1502.  
  1503. dcmd_announce2(playerid, params[])
  1504. {
  1505.     new pName[24], str[128];
  1506.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1507.     GetPlayerName(playerid, pName, sizeof(pName));
  1508.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /announce2 [message]");
  1509.  
  1510.     GameTextForAll(params, 3000, 6);
  1511.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has announced: '%s'.", pName, playerid);
  1512.     SendModMsg(COLOR_WHITE, str);
  1513.     return 1;
  1514. }
  1515.  
  1516. dcmd_spec(playerid, params[])
  1517. {
  1518.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1519.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1520.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /spec [playerid]");
  1521.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1522.     if(playerid == ReturnPlayer) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You can't watch yourself, silly!");
  1523.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1524.     GetPlayerName(playerid, pName, sizeof(pName));
  1525.    
  1526.     if(PlayerState[playerid][IsWatching] == 0)
  1527.     {
  1528.         PlayerState[playerid][LastInterior] = GetPlayerInterior(playerid);
  1529.     }
  1530.     PlayerState[playerid][IsWatching] = true;
  1531.     TogglePlayerSpectating(playerid, 1);
  1532.  
  1533.     if(IsPlayerInAnyVehicle(ReturnPlayer))
  1534.     {
  1535.         PlayerSpectateVehicle(playerid, GetPlayerVehicleID(ReturnPlayer));
  1536.     }
  1537.     else
  1538.     {
  1539.         PlayerSpectatePlayer(playerid, ReturnPlayer);
  1540.     }
  1541.     format(str, sizeof(str), "Mod Message: %s (ID: %d) is now watching %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1542.     SendModMsg(COLOR_WHITE, str);
  1543.     return 1;
  1544. }
  1545.  
  1546. dcmd_specoff(playerid, params[])
  1547. {
  1548.     if(PlayerState[playerid][IsWatching] == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You aren't watching anyone!");
  1549.    
  1550.     new pName[24], string[128];
  1551.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1552.     GetPlayerName(playerid, pName, sizeof(pName));
  1553.    
  1554.     TogglePlayerSpectating(playerid, 0);
  1555.     SetPlayerInterior(playerid, PlayerState[playerid][LastInterior]);
  1556.     SpawnPlayer(playerid);
  1557.     PlayerState[playerid][IsWatching] = false;
  1558.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has stopped watching.", pName, playerid);
  1559.     SendModMsg(COLOR_WHITE, string);
  1560.     #pragma unused params
  1561.     return 1;
  1562. }
  1563.  
  1564. dcmd_spawn(playerid, params[])
  1565. {
  1566.     new Float:X, Float:Y, Float:Z, str[128], pName[24];
  1567.     GetPlayerName(playerid, pName, sizeof(pName));
  1568.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1569.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /spawn [car name]");
  1570.     new vehicle = GetVehicleModelIDFromName(params);
  1571.     if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid vehicle name!");
  1572.  
  1573.     GetPlayerPos(playerid, X, Y, Z);
  1574.     new tempVeh = CreateVehicle(vehicle, X, Y, Z, 90, -1, -1, -1);
  1575.     PutPlayerInVehicle(playerid, tempVeh, 0);
  1576.     SpawnedVehicle[Vehicles++] = tempVeh;
  1577.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has spawned a %s on his/her location.", pName, playerid, VehicleNames[vehicle - 400]);
  1578.     SendModMsg(COLOR_WHITE, str);
  1579.     return 1;
  1580. }
  1581.  
  1582. dcmd_mute(playerid, params[])
  1583. {
  1584.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1585.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1586.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /mute [playerid]");
  1587.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1588.     if(PlayerIsMuted[ReturnPlayer] == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player is muted already!");
  1589.  
  1590.     GetPlayerName(playerid, pName, sizeof(pName));
  1591.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1592.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has muted %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1593.     SendModMsg(COLOR_WHITE, str);
  1594.     PlayerIsMuted[ReturnPlayer] = true;
  1595.     return 1;
  1596. }
  1597.  
  1598. dcmd_unmute(playerid, params[])
  1599. {
  1600.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1601.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1602.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /unute [playerid]");
  1603.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1604.     if(PlayerIsMuted[ReturnPlayer] == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player isn't muted!");
  1605.  
  1606.     GetPlayerName(playerid, pName, sizeof(pName));
  1607.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1608.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has unmuted %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1609.     SendModMsg(COLOR_WHITE, str);
  1610.     PlayerIsMuted[ReturnPlayer] = false;
  1611.     return 1;
  1612. }
  1613.  
  1614. dcmd_jail(playerid, params[])
  1615. {
  1616.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1617.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1618.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /jail [playerid]");
  1619.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1620.     if(PlayerIsJailed[ReturnPlayer] == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player is jailed already.");
  1621.  
  1622.     GetPlayerName(playerid, pName, sizeof(pName));
  1623.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1624.    
  1625.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has jailed %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1626.     SendModMsg(COLOR_WHITE, str);
  1627.    
  1628.     if(Jail1 == 0 && Jail2 == 0)
  1629.     {
  1630.         SetPlayerPos(playerid, 198.0768,175.1553,1003.0234);
  1631.         Jail1 = true;
  1632.         PlayerInJail1[playerid] = true;
  1633.         SendClientMessage(ReturnPlayer, COLOR_GREEN, "You have been jailed by a crew member.");
  1634.         PlayerIsJailed[ReturnPlayer] = true;
  1635.         SetPlayerInterior(playerid, 3);
  1636.     }
  1637.     else if(Jail1 == 1 && Jail2 == 0)
  1638.     {
  1639.         SetPlayerPos(playerid, 193.2748,175.0982,1003.0234);
  1640.         Jail2 = true;
  1641.         PlayerInJail2[playerid] = true;
  1642.         SendClientMessage(ReturnPlayer, COLOR_BRIGHTRED, "You have been jailed by a crew member.");
  1643.         PlayerIsJailed[ReturnPlayer] = true;
  1644.         SetPlayerInterior(playerid, 3);
  1645.     }
  1646.     if(Jail1 == 1 && Jail2 == 1) return SendClientMessage(playerid, COLOR_BRIGHTRED, "The jails are too crowded!");
  1647.     return 1;
  1648. }
  1649.  
  1650. dcmd_unjail(playerid, params[])
  1651. {
  1652.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128];
  1653.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1654.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /unjail [playerid]");
  1655.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1656.     if(PlayerIsJailed[ReturnPlayer] == 0) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player isn't jailed!");
  1657.  
  1658.     GetPlayerName(playerid, pName, sizeof(pName));
  1659.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1660.  
  1661.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has unjailed %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1662.     SendModMsg(COLOR_WHITE, str);
  1663.  
  1664.     SendClientMessage(ReturnPlayer, COLOR_GREEN, "You have been unjailed.");
  1665.     PlayerIsJailed[ReturnPlayer] = false;
  1666.     SetPlayerInterior(playerid, 0);
  1667.     SpawnPlayer(ReturnPlayer);
  1668.  
  1669.     if(PlayerInJail1[playerid] == 1)
  1670.     {
  1671.         Jail1 = false;
  1672.         PlayerInJail1[playerid] = false;
  1673.     }
  1674.     if(PlayerInJail2[playerid] == 1)
  1675.     {
  1676.         Jail2 = false;
  1677.         PlayerInJail2[playerid] = false;
  1678.     }
  1679.     return 1;
  1680. }
  1681.  
  1682.  
  1683. dcmd_kick(playerid, params[])
  1684. {
  1685.     new year, month, day; getdate(year, month, day);
  1686.     new hour, minute, second; gettime(hour, minute, second);
  1687.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Reason[128], string[256];
  1688.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1689.     if(sscanf(params, "ds", ReturnPlayer, Reason)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /kick [playerid] [reason]");
  1690.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1691.  
  1692.     GetPlayerName(playerid, pName, sizeof(pName));
  1693.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1694.     SendClientMessage(playerid, COLOR_GREEN, "That user has been kicked.");
  1695.     format(str, sizeof(str), "* %s (ID: %d) has been kicked: %s", ReturnUserName, ReturnPlayer, Reason);
  1696.     SendClientMessageToAll(COLOR_BRIGHTRED, str);
  1697.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has kicked %s (ID: %d): %s", pName, playerid, ReturnUserName, ReturnPlayer, Reason);
  1698.     SendModMsg(COLOR_WHITE, str);
  1699.     Kick(ReturnPlayer);
  1700.     new File:KickFile = fopen("logs/KickLog.txt", io_append);
  1701.     format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been kicked by %s. [Reason: %s]\r\n", year, month, day, hour, minute, second, ReturnUserName, pName, Reason);
  1702.     fwrite(KickFile, string);
  1703.     fclose(KickFile);
  1704.     return 1;
  1705. }
  1706.  
  1707. dcmd_ban(playerid, params[])
  1708. {
  1709.     new year, month, day; getdate(year, month, day);
  1710.     new hour, minute, second; gettime(hour, minute, second);
  1711.     new ReturnPlayer, pName[24], ReturnUserName[24], str[128], Reason[128], string[256];
  1712.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1713.     if(sscanf(params, "ds", ReturnPlayer, Reason)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /ban [playerid] [reason]");
  1714.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1715.  
  1716.     GetPlayerName(playerid, pName, sizeof(pName));
  1717.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1718.     SendClientMessage(playerid, COLOR_GREEN, "That user has been banned.");
  1719.     format(str, sizeof(str), "* %s (ID: %d) has been banned: %s", ReturnUserName, ReturnPlayer, Reason);
  1720.     SendClientMessageToAll(COLOR_BRIGHTRED, str);
  1721.     format(str, sizeof(str), "Mod Message: %s (ID: %d) has banned %s (ID: %d): %s", pName, playerid, ReturnUserName, ReturnPlayer, Reason);
  1722.     SendModMsg(COLOR_WHITE, str);
  1723.     BanEx(ReturnPlayer, Reason);
  1724.     new File:BanFile = fopen("logs/BanLog.txt", io_append);
  1725.     format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been banned by %s. [Reason: %s]\r\n", year, month, day, hour, minute, second, ReturnUserName, pName, Reason);
  1726.     fwrite(BanFile, string);
  1727.     fclose(BanFile);
  1728.     return 1;
  1729. }
  1730.  
  1731. dcmd_refill(playerid, params[])
  1732. {
  1733.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1734.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1735.     if(sscanf(params, "d", ReturnPlayer))
  1736.     {
  1737.         GetPlayerName(playerid, pName, sizeof(pName));
  1738.         SetPlayerHealth(playerid, 100);
  1739.         SetPlayerArmour(playerid, 100);
  1740.         format(string, sizeof string, "Mod Message: %s (ID: %d) has refilled his/her health and armour.", pName, playerid);
  1741.         SendModMsg(COLOR_WHITE, string);
  1742.     }
  1743.     else
  1744.     {
  1745.         if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1746.        
  1747.         GetPlayerName(playerid, pName, sizeof(pName));
  1748.         GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1749.         SetPlayerHealth(ReturnPlayer, 100);
  1750.         SetPlayerArmour(ReturnPlayer, 100);
  1751.         format(string, sizeof string, "Mod Message: %s (ID: %d) has refilled %s (ID: %d) his/her health and armour.", pName, playerid, ReturnUserName, ReturnPlayer);
  1752.         SendModMsg(COLOR_WHITE, string);
  1753.     }
  1754.     return 1;
  1755. }
  1756.  
  1757. dcmd_kill2(playerid, params[])
  1758. {
  1759.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1760.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1761.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /kill2 [playerid]");
  1762.     GetPlayerName(playerid, pName, sizeof(pName));
  1763.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1764.    
  1765.     SetPlayerHealth(ReturnPlayer, 0);
  1766.     format(string, sizeof string, "Mod Message: %s (ID: %d) has killed %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1767.     SendModMsg(COLOR_WHITE, string);
  1768.     return 1;
  1769. }
  1770.  
  1771. dcmd_tp(playerid, params[])
  1772. {
  1773.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256], Float:X, Float:Y, Float:Z;
  1774.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1775.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /tp [playerid]");
  1776.     if(playerid == ReturnPlayer) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You cannot teleport to yourself, silly!");
  1777.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1778.     GetPlayerName(playerid, pName, sizeof(pName));
  1779.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1780.  
  1781.     GetPlayerPos(ReturnPlayer, X, Y, Z);
  1782.     SetPlayerPos(playerid, X+1, Y+1, Z);
  1783.     SendClientMessage(playerid, COLOR_GREEN, "You have been teleported!");
  1784.     format(string, sizeof string, "Mod Message: %s (ID: %d) has been teleported to %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1785.     SendModMsg(COLOR_WHITE, string);
  1786.     return 1;
  1787. }
  1788.  
  1789. dcmd_tpmenu(playerid, params[])
  1790. {
  1791.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1792.     ShowMenuForPlayer(tpMenu, playerid);
  1793.     TogglePlayerControllable(playerid, 0);
  1794.     SendClientMessage(playerid, COLOR_GREEN, "Please choose a destination.");
  1795.     #pragma unused params
  1796.     return 1;
  1797. }
  1798.  
  1799. dcmd_unban(playerid, params[])
  1800. {
  1801.     new pName[24], PlayerFile[50], string[256], playerIP[256];
  1802.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1803.     GetPlayerName(playerid, pName, sizeof(pName));
  1804.     format(PlayerFile, sizeof(PlayerFile), "/users/%s.ini", params);
  1805.     playerIP = dini_Get(PlayerFile, "PlayerIP");
  1806.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /unban [playername]");
  1807.     if(!dini_Exists(PlayerFile)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "No such player found in the database.");
  1808.    
  1809.     format(string, sizeof string, "unbanip %s", playerIP);
  1810.     SendRconCommand(string);
  1811.     SendRconCommand("reloadbans");
  1812.    
  1813.     format(string, sizeof string, "Mod Message: %s (ID:%d) has unbanned %s.", pName, playerid, params);
  1814.     SendModMsg(COLOR_WHITE, string);
  1815.     return 1;
  1816. }
  1817.  
  1818. dcmd_unbanip(playerid, params[])
  1819. {
  1820.     new pName[24], string[256];
  1821.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1822.     GetPlayerName(playerid, pName, sizeof(pName));
  1823.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /unbanip [playerip]");
  1824.  
  1825.     format(string, sizeof string, "unbanip %s", params);
  1826.     SendRconCommand(string);
  1827.     SendRconCommand("reloadbans");
  1828.  
  1829.     format(string, sizeof string, "Mod Message: %s (ID: %d) has unbanned the IP: %s.", pName, playerid, params);
  1830.     SendModMsg(COLOR_WHITE, string);
  1831.     return 1;
  1832. }
  1833.  
  1834. dcmd_vr(playerid, params[])
  1835. {
  1836.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1837.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1838.     if(sscanf(params, "d", ReturnPlayer))
  1839.     {
  1840.         if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You need to be in a car to use this command!");
  1841.        
  1842.         GetPlayerName(playerid, pName, sizeof(pName));
  1843.         SetVehicleHealth(GetPlayerVehicleID(playerid),1000.0);
  1844.         format(string, sizeof string, "Mod Message: %s (ID: %d) has repaired his/her vehicle.", pName, playerid);
  1845.         SendModMsg(COLOR_WHITE, string);
  1846.     }
  1847.     else
  1848.     {
  1849.         if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1850.         if(!IsPlayerInAnyVehicle(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "That player isn't in a vehicle!");
  1851.         GetPlayerName(playerid, pName, sizeof(pName));
  1852.         GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1853.         SetVehicleHealth(GetPlayerVehicleID(ReturnPlayer),1000.0);
  1854.         format(string, sizeof string, "Mod Message: %s (ID: %d) has repaired %s (ID: %d) his/her vehicle .", pName, playerid, ReturnUserName, ReturnPlayer);
  1855.         SendModMsg(COLOR_WHITE, string);
  1856.     }
  1857.     return 1;
  1858. }
  1859.  
  1860. dcmd_respawn(playerid, params[])
  1861. {
  1862.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1863.     new string[128], currentvehicle, pName[24];
  1864.     GetPlayerName(playerid, pName, sizeof(pName));
  1865.     currentvehicle = GetPlayerVehicleID(playerid);
  1866.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You have to be in a vehicle to use this command!");
  1867.     SetVehicleToRespawn(currentvehicle);
  1868.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has respawned his/her vehicle.", pName, playerid);
  1869.     SendModMsg(COLOR_WHITE, string);
  1870.     #pragma unused params
  1871.     return 1;
  1872. }
  1873.  
  1874. dcmd_fix(playerid, params[])
  1875. {
  1876.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1877.     new ReturnPlayer, pName[24], ReturnUserName[24], string[256];
  1878.     if(sscanf(params, "d", ReturnPlayer)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /fix [playerid]");
  1879.     if(!IsPlayerConnected(ReturnPlayer)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid playerid.");
  1880.     GetPlayerName(playerid, pName, sizeof(pName));
  1881.     GetPlayerName(ReturnPlayer, ReturnUserName, sizeof(ReturnUserName));
  1882.    
  1883.     SpawnPlayer(ReturnPlayer);
  1884.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has fixed %s (ID: %d).", pName, playerid, ReturnUserName, ReturnPlayer);
  1885.     SendModMsg(COLOR_WHITE, string);
  1886.     return 1;
  1887. }
  1888.  
  1889. dcmd_flip(playerid, params[])
  1890. {
  1891.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1892.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You have to be in a vehicle to use this command!");
  1893.     new Vehicle, Float:angle, string[128], pName[24], Float:X, Float:Y, Float:Z;
  1894.     Vehicle = GetPlayerVehicleID(playerid);
  1895.     GetVehiclePos(Vehicle, X, Y, Z);
  1896.     GetPlayerName(playerid, pName, sizeof(pName));
  1897.     SetVehiclePos(Vehicle, X, Y, Z +1);
  1898.     GetVehicleZAngle(Vehicle, angle);
  1899.     SetVehicleZAngle(Vehicle, angle);
  1900.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has flipped his/her car.", pName, playerid);
  1901.     SendModMsg(COLOR_WHITE, string);
  1902.     #pragma unused params
  1903.     return 1;
  1904. }
  1905.  
  1906. dcmd_vcolour(playerid, params[])
  1907. {
  1908.     new string[128], currentvehicle, pName[24], C1, C2;
  1909.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1910.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BRIGHTRED, "You have to be in a vehicle to use this command!");
  1911.     if(sscanf(params, "dd", C1, C2)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /vcolour [Colour 1] [Colour 2]");
  1912.     if(C1 < 0 || C1 > 126) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Your first vehicle colour was invalid!");
  1913.     if(C2 < 0 || C2 > 126) return SendClientMessage(playerid, COLOR_BRIGHTRED, "Your second vehicle colour was invalid!");
  1914.     GetPlayerName(playerid, pName, sizeof(pName));
  1915.     currentvehicle = GetPlayerVehicleID(playerid);
  1916.    
  1917.     ChangeVehicleColor(currentvehicle, C1, C2);
  1918.     format(string, sizeof(string), "Mod Message: %s (ID: %d) has changed his/her vehicle colours to %d and %d.", pName, playerid, C1, C2);
  1919.     SendModMsg(COLOR_WHITE, string);
  1920.     return 1;
  1921. }
  1922.  
  1923. dcmd_acmds(playerid, params[])
  1924. {
  1925.     if(PlayerInfo[playerid][AdminLevel] < 1) return false;
  1926.    
  1927.     if(PlayerInfo[playerid][AdminLevel] >= 1)
  1928.     {
  1929.         SendClientMessage(playerid, COLOR_YELLOW, "=== Moderator commands ===");
  1930.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/unban, /unbanip, /tp, /kill2, /refill, /ban, /kick");
  1931.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/mute, /unmute, /vr, /spawn, /fix, /flip, /respawn, /tpmenu");
  1932.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/spec, /specoff, /vcolour, /jail, /unjail /announce /announce2");
  1933.     }
  1934.     if(PlayerInfo[playerid][AdminLevel] >= 2)
  1935.     {
  1936.         SendClientMessage(playerid, COLOR_YELLOW, "=== Administrator commands ===");
  1937.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/nuke, /fetch, /sethealth, /setarmour, /givecash");
  1938.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/tempmod, /tempadmin, /giveweapon, /clear, /god, /ungod");
  1939.     }
  1940.     if(PlayerInfo[playerid][AdminLevel] >= 3)
  1941.     {
  1942.         SendClientMessage(playerid, COLOR_YELLOW, "=== Management commands ===");
  1943.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/setlevel, /makemeadmin (Rcon), /loadfs, /unloadfs");
  1944.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/reloadfs, /gmx, /create, /destroy, /nukeall, /crash");
  1945.         SendClientMessage(playerid, COLOR_BRIGHTRED, "/lockserver, /unlockserver /tempman");
  1946.     }
  1947.     #pragma unused params
  1948.     return 1;
  1949. }
  1950.  
  1951. // ******************************************************** //
  1952. //                  End of the commands                     //
  1953. // ******************************************************** //
  1954.  
  1955. GetVehicleModelIDFromName(vname[]) // Zezombia's function, credits to him for this.
  1956. {
  1957.         for(new i = 0; i < 211; i++)
  1958.         {
  1959.                 if(strfind(VehicleNames[i], vname, true) != -1)
  1960.                 return i + 400;
  1961.         }
  1962.         return -1;
  1963. }
  1964.  
  1965. stock GetXYInFrontOfPlayer(playerid, &Float:x2, &Float:y2, Float:distance) // Not my function either, credits to the author, whoever that might be.
  1966. {
  1967.     new Float:a;
  1968.     GetPlayerPos(playerid, x2, y2, a);
  1969.     GetPlayerFacingAngle(playerid, a);
  1970.  
  1971.     if(GetPlayerVehicleID(playerid))
  1972.     {
  1973.         GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
  1974.     }
  1975.     x2 += (distance * floatsin(-a, degrees));
  1976.     y2 += (distance * floatcos(-a, degrees));
  1977. }
  1978.  
  1979. stock bool:IsValidWeapon(weaponid)
  1980. {
  1981.     if(weaponid == 19 || weaponid == 20 || weaponid == 21 || weaponid < 0 || weaponid > 46) return false;
  1982.     return true;
  1983. }
  1984.  
  1985.  
  1986. stock SendProAdminMsg(color,const string[])
  1987. {
  1988.     for(new i = 0; i < MAX_PLAYERS; i++)
  1989.     {
  1990.         if(IsPlayerConnected(i) == 1 && PlayerInfo[i][AdminLevel] == 3)
  1991.         {
  1992.             SendClientMessage(i, color, string);
  1993.         }
  1994.     }
  1995.     return 1;
  1996. }
  1997.  
  1998. stock SendAdminMsg(color,const string[])
  1999. {
  2000.     for(new i = 0; i < MAX_PLAYERS; i++)
  2001.     {
  2002.         if(IsPlayerConnected(i) == 1 && PlayerInfo[i][AdminLevel] >= 2)
  2003.         {
  2004.             SendClientMessage(i, color, string);
  2005.         }
  2006.     }
  2007.     return 1;
  2008. }
  2009.  
  2010. stock SendModMsg(color,const string[])
  2011. {
  2012.     for(new i = 0; i < MAX_PLAYERS; i++)
  2013.     {
  2014.         if(IsPlayerConnected(i) == 1 && PlayerInfo[i][AdminLevel] >= 1)
  2015.         {
  2016.             SendClientMessage(i, color, string);
  2017.         }
  2018.     }
  2019.     return 1;
  2020. }
  2021.  
  2022.  
  2023. strtok(const string[], &index)
  2024. {
  2025.         new length = strlen(string);
  2026.         while ((index < length) && (string[index] <= ' '))
  2027.         {
  2028.                 index++;
  2029.         }
  2030.  
  2031.         new offset = index;
  2032.         new result[20];
  2033.         while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  2034.         {
  2035.                 result[index - offset] = string[index];
  2036.                 index++;
  2037.         }
  2038.         result[index - offset] = EOS;
  2039.         return result;
  2040. }
  2041.  
  2042. stock sscanf(string[], format[], {Float,_}:...)
  2043. {
  2044.         new
  2045.                 formatPos = 0,
  2046.                 stringPos = 0,
  2047.                 paramPos = 2,
  2048.                 paramCount = numargs();
  2049.         while (paramPos < paramCount && string[stringPos])
  2050.         {
  2051.                 switch (format[formatPos++])
  2052.                 {
  2053.                         case '\0':
  2054.                         {
  2055.                                 return false;
  2056.                         }
  2057.                         case 'i', 'd':
  2058.                         {
  2059.                                 new
  2060.                                         neg = 1,
  2061.                                         num = 0,
  2062.                                         ch = string[stringPos];
  2063.                                 if (ch == '-')
  2064.                                 {
  2065.                                         neg = -1;
  2066.                                         ch = string[++stringPos];
  2067.                                 }
  2068.                                 do
  2069.                                 {
  2070.                                         stringPos++;
  2071.                                         if (ch >= '0' && ch <= '9')
  2072.                                         {
  2073.                                                 num = (num * 10) + (ch - '0');
  2074.                                         }
  2075.                                         else
  2076.                                         {
  2077.                                                 return true;
  2078.                                         }
  2079.                                 }
  2080.                                 while ((ch = string[stringPos]) && ch != ' ');
  2081.                                 setarg(paramPos, 0, num * neg);
  2082.                         }
  2083.                         case 'h', 'x':
  2084.                         {
  2085.                                 new
  2086.                                         ch,
  2087.                                         num = 0;
  2088.                                 while ((ch = string[stringPos++]))
  2089.                                 {
  2090.                                         switch (ch)
  2091.                                         {
  2092.                                                 case 'x', 'X':
  2093.                                                 {
  2094.                                                         num = 0;
  2095.                                                         continue;
  2096.                                                 }
  2097.                                                 case '0' .. '9':
  2098.                                                 {
  2099.                                                         num = (num << 4) | (ch - '0');
  2100.                                                 }
  2101.                                                 case 'a' .. 'f':
  2102.                                                 {
  2103.                                                         num = (num << 4) | (ch - ('a' - 10));
  2104.                                                 }
  2105.                                                 case 'A' .. 'F':
  2106.                                                 {
  2107.                                                         num = (num << 4) | (ch - ('A' - 10));
  2108.                                                 }
  2109.                                                 case ' ':
  2110.                                                 {
  2111.                                                         break;
  2112.                                                 }
  2113.                                                 default:
  2114.                                                 {
  2115.                                                         return true;
  2116.                                                 }
  2117.                                         }
  2118.                                 }
  2119.                                 setarg(paramPos, 0, num);
  2120.                         }
  2121.                         case 'c':
  2122.                         {
  2123.                                 setarg(paramPos, 0, string[stringPos++]);
  2124.                         }
  2125.                         case 'f':
  2126.                         {
  2127.                                 new tmp[25];
  2128.                                 strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
  2129.                                 setarg(paramPos, 0, _:floatstr(tmp));
  2130.                         }
  2131.                         case 's', 'z':
  2132.                         {
  2133.                                 new
  2134.                                         i = 0,
  2135.                                         ch;
  2136.                                 if (format[formatPos])
  2137.                                 {
  2138.                                         while ((ch = string[stringPos++]) && ch != ' ')
  2139.                                         {
  2140.                                                 setarg(paramPos, i++, ch);
  2141.                                         }
  2142.                                         if (!i) return true;
  2143.                                 }
  2144.                                 else
  2145.                                 {
  2146.                                         while ((ch = string[stringPos++]))
  2147.                                         {
  2148.                                                 setarg(paramPos, i++, ch);
  2149.                                         }
  2150.                                 }
  2151.                                 stringPos--;
  2152.                                 setarg(paramPos, i, '\0');
  2153.                         }
  2154.                         default:
  2155.                         {
  2156.                                 continue;
  2157.                         }
  2158.                 }
  2159.                 while (string[stringPos] && string[stringPos] != ' ')
  2160.                 {
  2161.                         stringPos++;
  2162.                 }
  2163.                 while (string[stringPos] == ' ')
  2164.                 {
  2165.                         stringPos++;
  2166.                 }
  2167.                 paramPos++;
  2168.         }
  2169.         while (format[formatPos] == 'z') formatPos++;
  2170.         return format[formatPos];
  2171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement