Guest User

Admin System by Nexius v2.6

a guest
Jun 4th, 2020
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Admin System by Nexius v2.6
  2.  
  3. #if defined _admsys_included
  4.     #endinput
  5. #endif
  6. #define _admsys_included
  7.  
  8. #include <a_samp>
  9.  
  10. #define ADMSYS_VERSION                      "2.6"
  11.  
  12. #if !defined ADMSYS_SEND_ACTION_MSGS_TO_ALL
  13.     #define ADMSYS_SEND_ACTION_MSGS_TO_ALL      false
  14. #endif
  15.  
  16. #if !defined ADMSYS_SEND_CONNECT_MSGS_TO_ADM
  17.     #define ADMSYS_SEND_CONNECT_MSGS_TO_ADM     false
  18. #endif
  19.  
  20. #if !defined ADMSYS_SHOW_KILL_LIST_FOR_ADM
  21.     #define ADMSYS_SHOW_KILL_LIST_FOR_ADM       true
  22. #endif
  23.  
  24. #if !defined ADMSYS_DEFAULT_COLOR
  25.     #define ADMSYS_DEFAULT_COLOR            -1
  26. #endif
  27.  
  28. #if !defined ADMSYS_MAX_WARNS
  29.     #define ADMSYS_MAX_WARNS                2
  30. #endif
  31.  
  32. #if !defined ADMSYS_MAX_TAB_INPUT
  33.     #define ADMSYS_MAX_TAB_INPUT            8
  34. #endif
  35.  
  36. #if !defined ADMSYS_MAX_SUSPECTS_IN_TABLE
  37.     #define ADMSYS_MAX_SUSPECTS_IN_TABLE        8
  38. #endif
  39.  
  40. #if !defined ADMSYS_MAX_GIVE_PLAYERS_IN_CMD
  41.     #define ADMSYS_MAX_GIVE_PLAYERS_IN_CMD      3
  42. #endif
  43.  
  44. #define admsys_isnull(%0) ((!(%0[0])) || (((%0[0]) == '\1') && (!(%0[1]))))
  45. #define admsys_fpublic%0(%1) forward %0(%1); public %0(%1)
  46.  
  47. #if !defined CMD
  48.     #define CMD:%0(%1) forward cmd_%0(%1); public cmd_%0(%1)
  49. #endif
  50.  
  51. static const AdmSysCmds[][] =
  52. {
  53.     "Level 1:\n",
  54.     "/achat [text] - Admin chat\n",
  55.     "/ahelp - Help with admin commands\n",
  56.     "/showstats [id] - Show player's statistics\n",
  57.     "/answer [id] [text] - Respond on player's report\n",
  58.     "/apanel - Admin panel with all available commands\n",
  59.     "/admins - List of administrators online\n",
  60.     "/eject [id] - Remove player from vehicle\n",
  61.     "\n",
  62.     "Level 2:\n",
  63.     "/spec [id] - Begin spectate player\n",
  64.     "/spawnveh [vehicle id] - Teleport vehicle to respawn\n",
  65.     "/(un)mute [id] [time] [reason] - Mute/unmute player\n",
  66.     "/asay [text] - Message: 'Administrator: [text]'\n",
  67.     "/warn [id] [reason] - Give warn to player\n",
  68.     "/kick [id] [reason] - Kick player from the server\n",
  69.     "/(un)freeze [id] - Freeze/unfreeze player\n",
  70.     "/slap [id] [reason] - Slap player\n",
  71.     "/goto [id] - Teleport to player\n",
  72.     "\n",
  73.     "Level 3:\n",
  74.     "/suspectlist - List of suspected players\n",
  75.     "/gethere [id] - Teleport player to yourself\n",
  76.     "/gotoveh [vehicle id] - Teleport to vehicle\n",
  77.     "/ban [id] [reason] - Ban player's account\n",
  78.     "/gmtest [id] - Check for infinite health\n",
  79.     "/spawn [id] - Teleport player to respawn\n",
  80.     "/unwarn [id] - Remove warn from player\n",
  81.     "/banip [IP] - Block IP address\n",
  82.     "/cc - Clear chat\n",
  83.     "\n",
  84.     "Level 4:\n",
  85.     "/sethealth [id] [health] - Set health to player\n",
  86.     "/setarmour [id] [armour] - Set armour to player\n",
  87.     "/setmoney [id] [money] - Set money to player\n",
  88.     "/setskin [id] [skin id] - Set skin to player\n",
  89.     "/setint [id] [interior] - Set interior to player\n",
  90.     "/setvw [id] [vw] - Set virtual world to player\n",
  91.     "/giveweapon [id] [weapon] [ammo] - Give weapon to player\n",
  92.     "/repairveh [vehicle id] - Repair vehicle\n",
  93.     "/unbanip [IP] - Unblock IP address\n",
  94.     "\n",
  95.     "Level 5:\n",
  96.     "/getall - Teleport all to yourself\n",
  97.     "/setweather [number] - Set weather\n",
  98.     "/settime [hour] - Set time of day\n",
  99.     "/destroyveh [vehicle id] - Destroy vehicle\n",
  100.     "/veh [vehicle id] [color 1] [color 2] - Create vehicle\n",
  101.     "/sban [id] - Silent ban\n",
  102.     "/skick [id] - Silent kick"
  103. };
  104.  
  105. enum
  106. {
  107.     ADMSYS_DIALOG_TAB_PANEL = 8192,
  108.     ADMSYS_DIALOG_ANSWER,
  109.     ADMSYS_DIALOG_MUTE_TIME,
  110.     ADMSYS_DIALOG_MUTE,
  111.     ADMSYS_DIALOG_WARN,
  112.     ADMSYS_DIALOG_KICK,
  113.     ADMSYS_DIALOG_SLAP,
  114.     ADMSYS_DIALOG_BAN,
  115.     ADMSYS_DIALOG_SET_HEALTH,
  116.     ADMSYS_DIALOG_SET_ARMOUR,
  117.     ADMSYS_DIALOG_SET_MONEY,
  118.     ADMSYS_DIALOG_CHANGE_SKIN,
  119.     ADMSYS_DIALOG_SET_INT,
  120.     ADMSYS_DIALOG_SET_VW,
  121.     ADMSYS_DIALOG_GIVE_WEAPON,
  122.     ADMSYS_DIALOG_GIVE_WEAPON_AMMO,
  123.     ADMSYS_DIALOG_AHELP,
  124.     ADMSYS_DIALOG_STATS,
  125.     ADMSYS_DIALOG_APANEL,
  126.     ADMSYS_DIALOG_ACHAT,
  127.     ADMSYS_DIALOG_SPAWN_VEH,
  128.     ADMSYS_DIALOG_ASAY,
  129.     ADMSYS_DIALOG_GOTO_VEH,
  130.     ADMSYS_DIALOG_BAN_IP,
  131.     ADMSYS_DIALOG_REPAIR_VEH,
  132.     ADMSYS_DIALOG_UNBAN_IP,
  133.     ADMSYS_DIALOG_SET_WEATHER,
  134.     ADMSYS_DIALOG_SET_TIME,
  135.     ADMSYS_DIALOG_DESTROY_VEH,
  136.     ADMSYS_DIALOG_CREATE_VEH,
  137.     ADMSYS_DIALOG_CREATE_VEH_COL_1,
  138.     ADMSYS_DIALOG_CREATE_VEH_COL_2,
  139.     ADMSYS_DIALOG_ADMINS,
  140.     ADMSYS_DIALOG_SUSPECT_LIST,
  141.     ADMSYS_DIALOG_GMTEST
  142. }
  143.  
  144. enum asInfo
  145. {
  146.     Float:asGmTestHP,
  147.     Float:asGmTestAR,
  148.     Float:asLastAngle,
  149.     Float:asLastPos[3],
  150.     Float:asLastFloatData,
  151.     asInput[ADMSYS_MAX_TAB_INPUT],
  152.     asInput2[ADMSYS_MAX_TAB_INPUT],
  153.     asLastWeapon[13],
  154.     asLastIntData[2],
  155.     asLastAmmo[13],
  156.     asLastActionID,
  157.     asLastAction,
  158.     asLastSpecID,
  159.     asGmTestID,
  160.     asAdminLvl,
  161.     asTabPanel,
  162.     asMuteTime,
  163.     asWarns,
  164.     asSpecID,
  165.     asLastVW,
  166.     asLastInt,
  167.     asUpdTimer,
  168.     bool:asLastSpec,
  169.     bool:asIsSpawned,
  170.     bool:asIsDead,
  171.     bool:asGmTest
  172. }
  173.  
  174. static
  175.     AdmSysInfo[MAX_PLAYERS][asInfo],
  176.     SuspectList[ADMSYS_MAX_SUSPECTS_IN_TABLE] = {INVALID_PLAYER_ID, ...},
  177.     AdmSysCmdsStr[1728];
  178.  
  179. forward OnPlayerBan(playerid, gaveid, bool:sban);
  180. forward OnPlayerKick(playerid, gaveid, bool:skick);
  181. forward OnPlayerWarn(playerid, gaveid, count);
  182.  
  183. public OnGameModeInit()
  184. {
  185.     print(" ");
  186.     print(" Admin System by Nexius loaded!");
  187.     printf(" Version: %s", ADMSYS_VERSION);
  188.     print(" ");
  189.     for(new i; i < sizeof AdmSysCmds; i++) strcat(AdmSysCmdsStr, AdmSysCmds[i]);
  190.     SetTimer("UpdateMuteTime", 1000, 1);
  191.     #if defined admsys_OnGameModeInit
  192.         return admsys_OnGameModeInit();
  193.     #else
  194.         return 1;
  195.     #endif
  196. }
  197.  
  198. #if defined _ALS_OnGameModeInit
  199.     #undef OnGameModeInit
  200. #else
  201.     #define _ALS_OnGameModeInit
  202. #endif
  203. #define OnGameModeInit admsys_OnGameModeInit
  204. #if defined admsys_OnGameModeInit
  205.     forward admsys_OnGameModeInit();
  206. #endif
  207.  
  208. public OnGameModeExit()
  209. {
  210.     print(" ");
  211.     print(" Admin System by Nexius unloaded!");
  212.     print(" ");
  213.     #if defined admsys_OnGameModeExit
  214.         return admsys_OnGameModeExit();
  215.     #else
  216.         return 1;
  217.     #endif
  218. }
  219.  
  220. #if defined _ALS_OnGameModeExit
  221.     #undef OnGameModeExit
  222. #else
  223.     #define _ALS_OnGameModeExit
  224. #endif
  225. #define OnGameModeExit admsys_OnGameModeExit
  226. #if defined admsys_OnGameModeExit
  227.     forward admsys_OnGameModeExit();
  228. #endif
  229.  
  230. public OnPlayerConnect(playerid)
  231. {
  232.     AdmSysInfo[playerid][asWarns] = 0;
  233.     AdmSysInfo[playerid][asMuteTime] = 0;
  234.     AdmSysInfo[playerid][asAdminLvl] = 0;
  235.     AdmSysInfo[playerid][asUpdTimer] = -1;
  236.     AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID;
  237.     AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID;
  238.     AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID;
  239.     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  240.     AdmSysInfo[playerid][asIsSpawned] = false;
  241.     AdmSysInfo[playerid][asIsDead] = false;
  242.     AdmSysInfo[playerid][asGmTest] = false;
  243.     #if ADMSYS_SEND_CONNECT_MSGS_TO_ADM
  244.         new strtmp[78], sname[MAX_PLAYER_NAME + 1], sip[16];
  245.         GetPlayerName(playerid, sname, sizeof sname);
  246.         GetPlayerIp(playerid, sip, sizeof sip);
  247.         format(strtmp, sizeof strtmp, "[IP: %s] %s[%d] has joined the server", sip, sname, playerid);
  248.         SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
  249.     #endif
  250.     #if defined admsys_OnPlayerConnect
  251.         return admsys_OnPlayerConnect(playerid);
  252.     #else
  253.         return 1;
  254.     #endif
  255. }
  256.  
  257. #if defined _ALS_OnPlayerConnect
  258.     #undef OnPlayerConnect
  259. #else
  260.     #define _ALS_OnPlayerConnect
  261. #endif
  262. #define OnPlayerConnect admsys_OnPlayerConnect
  263. #if defined admsys_OnPlayerConnect
  264.     forward admsys_OnPlayerConnect(playerid);
  265. #endif
  266.  
  267. public OnPlayerDisconnect(playerid, reason)
  268. {
  269.     AdmSysInfo[playerid][asLastAction] = 0;
  270.     KillTimer(AdmSysInfo[playerid][asUpdTimer]);
  271.     #if defined foreach
  272.         foreach(new i : Player)
  273.         {
  274.     #else
  275.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  276.         {
  277.             if(!IsPlayerConnected(i)) continue;
  278.     #endif
  279.         if(AdmSysInfo[i][asSpecID] == playerid)
  280.         {
  281.             SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player has disconnected");
  282.             StopSpectating(i);
  283.         }
  284.     }
  285.     #if defined admsys_OnPlayerDisconnect
  286.         return admsys_OnPlayerDisconnect(playerid, reason);
  287.     #else
  288.         return 1;
  289.     #endif
  290. }
  291.  
  292. #if defined _ALS_OnPlayerDisconnect
  293.     #undef OnPlayerDisconnect
  294. #else
  295.     #define _ALS_OnPlayerDisconnect
  296. #endif
  297. #define OnPlayerDisconnect admsys_OnPlayerDisconnect
  298. #if defined admsys_OnPlayerDisconnect
  299.     forward admsys_OnPlayerDisconnect(playerid, reason);
  300. #endif
  301.  
  302. public OnPlayerSpawn(playerid)
  303. {
  304.     if(IsPlayerSpectating(playerid))
  305.     {
  306.         for(new i = 12; i >= 0; --i)
  307.             GivePlayerWeapon(playerid, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]);
  308.         SetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0],
  309.         AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]);
  310.         SetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]);
  311.         SetPlayerVirtualWorld(playerid, AdmSysInfo[playerid][asLastVW]);
  312.         SetPlayerInterior(playerid, AdmSysInfo[playerid][asLastInt]);
  313.     }
  314.     AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID;
  315.     AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID;
  316.     AdmSysInfo[playerid][asIsSpawned] = true;
  317.     AdmSysInfo[playerid][asLastSpec] = false;
  318.     AdmSysInfo[playerid][asIsDead] = false;
  319.     #if defined foreach
  320.         foreach(new i : Player)
  321.         {
  322.     #else
  323.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  324.         {
  325.             if(!IsPlayerConnected(i)) continue;
  326.     #endif
  327.         if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
  328.     }
  329.     #if defined admsys_OnPlayerSpawn
  330.         return admsys_OnPlayerSpawn(playerid);
  331.     #else
  332.         return 1;
  333.     #endif
  334. }
  335.  
  336. #if defined _ALS_OnPlayerSpawn
  337.     #undef OnPlayerSpawn
  338. #else
  339.     #define _ALS_OnPlayerSpawn
  340. #endif
  341. #define OnPlayerSpawn admsys_OnPlayerSpawn
  342. #if defined admsys_OnPlayerSpawn
  343.     forward admsys_OnPlayerSpawn(playerid);
  344. #endif
  345.  
  346. public OnPlayerDeath(playerid, killerid, reason)
  347. {
  348.     new interior, vw;
  349.     interior = GetPlayerInterior(playerid);
  350.     vw = GetPlayerVirtualWorld(playerid);
  351.     #if defined foreach
  352.     foreach(new i : Player)
  353.     {
  354.     #else
  355.     for(new i = GetPlayerPoolSize(); i >= 0; --i)
  356.     {
  357.         if(!IsPlayerConnected(i)) continue;
  358.     #endif
  359.         if(AdmSysInfo[i][asSpecID] == playerid)
  360.         {
  361.             SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player has died");
  362.             SetPlayerInterior(i, interior);
  363.             SetPlayerVirtualWorld(i, vw);
  364.         }
  365.         #if ADMSYS_SHOW_KILL_LIST_FOR_ADM
  366.             if(IsPlayerAdminEx(i)) SendDeathMessageToPlayer(i, killerid, playerid, reason);
  367.         #endif
  368.     }
  369.     AdmSysInfo[playerid][asIsSpawned] = false;
  370.     AdmSysInfo[playerid][asIsDead] = true;
  371.     #if defined admsys_OnPlayerDeath
  372.         return admsys_OnPlayerDeath(playerid, killerid, reason);
  373.     #else
  374.         return 1;
  375.     #endif
  376. }
  377.  
  378. #if defined _ALS_OnPlayerDeath
  379.     #undef OnPlayerDeath
  380. #else
  381.     #define _ALS_OnPlayerDeath
  382. #endif
  383. #define OnPlayerDeath admsys_OnPlayerDeath
  384. #if defined admsys_OnPlayerDeath
  385.     forward admsys_OnPlayerDeath(playerid, killerid, reason);
  386. #endif
  387.  
  388. public OnPlayerText(playerid, text[])
  389. {
  390.     static strtmp[59];
  391.     if(AdmSysInfo[playerid][asMuteTime] > 0)
  392.     {
  393.         format(strtmp, sizeof strtmp, "You are muted. Remaining mute time: %d minutes %d seconds",
  394.         floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60);
  395.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  396.         return 0;
  397.     }
  398.     #if defined admsys_OnPlayerText
  399.         return admsys_OnPlayerText(playerid, text);
  400.     #else
  401.         return 1;
  402.     #endif
  403. }
  404.  
  405. #if defined _ALS_OnPlayerText
  406.     #undef OnPlayerText
  407. #else
  408.     #define _ALS_OnPlayerText
  409. #endif
  410. #define OnPlayerText admsys_OnPlayerText
  411. #if defined admsys_OnPlayerText
  412.     forward admsys_OnPlayerText(playerid, text[]);
  413. #endif
  414.  
  415. #if !defined YCMD && !defined _I_ZCMD_INCLUDED
  416.     public OnPlayerCommandText(playerid, cmdtext[])
  417.     {
  418.         new cmd[32], pos;
  419.         static params[126];
  420.         params[0] = EOS;
  421.         while(cmdtext[pos] > ' ')
  422.         {
  423.             cmd[pos] = cmdtext[pos];
  424.             pos++;
  425.         }
  426.         while(cmdtext[pos] == ' ')
  427.         {
  428.             pos++;
  429.             if(cmdtext[pos] == '\0')
  430.             {
  431.                 params = "\1";
  432.                 break;
  433.             }
  434.         }
  435.         strcat(params, cmdtext[pos]);
  436.         if(!strcmp(cmd, "/report", true)) return admsys_cmd_report(playerid, params);
  437.         if(!strcmp(cmd, "/achat", true) || !strcmp(cmd, "/admchat", true) || !strcmp(cmd, "/adminchat", true)) return admsys_cmd_achat(playerid, params);
  438.         if(!strcmp(cmd, "/ahelp", true) || !strcmp(cmd, "/admhelp", true) || !strcmp(cmd, "/adminhelp", true)) return admsys_cmd_ahelp(playerid, params);
  439.         if(!strcmp(cmd, "/showstats", true)) return admsys_cmd_showstats(playerid, params);
  440.         if(!strcmp(cmd, "/answer", true)) return admsys_cmd_answer(playerid, params);
  441.         if(!strcmp(cmd, "/apanel", true) || !strcmp(cmd, "/admpanel", true) || !strcmp(cmd, "/adminpanel", true)) return admsys_cmd_apanel(playerid, params);
  442.         if(!strcmp(cmd, "/admins", true)) return admsys_cmd_admins(playerid, params);
  443.         if(!strcmp(cmd, "/eject", true)) return admsys_cmd_eject(playerid, params);
  444.  
  445.         if(!strcmp(cmd, "/spec", true)) return admsys_cmd_spec(playerid, params);
  446.         if(!strcmp(cmd, "/specupdate", true)) return admsys_cmd_specupdate(playerid, params);
  447.         if(!strcmp(cmd, "/specoff", true)) return admsys_cmd_specoff(playerid, params);
  448.         if(!strcmp(cmd, "/spawnveh", true) || !strcmp(cmd, "/spawnvehicle", true)) return admsys_cmd_spawnveh(playerid, params);
  449.         if(!strcmp(cmd, "/mute", true)) return admsys_cmd_mute(playerid, params);
  450.         if(!strcmp(cmd, "/unmute", true)) return admsys_cmd_unmute(playerid, params);
  451.         if(!strcmp(cmd, "/asay", true) || !strcmp(cmd, "/admsay", true) || !strcmp(cmd, "/adminsay", true)) return admsys_cmd_asay(playerid, params);
  452.         if(!strcmp(cmd, "/warn", true)) return admsys_cmd_warn(playerid, params);
  453.         if(!strcmp(cmd, "/kick", true)) return admsys_cmd_kick(playerid, params);
  454.         if(!strcmp(cmd, "/freeze", true)) return admsys_cmd_freeze(playerid, params);
  455.         if(!strcmp(cmd, "/unfreeze", true)) return admsys_cmd_unfreeze(playerid, params);
  456.         if(!strcmp(cmd, "/slap", true)) return admsys_cmd_slap(playerid, params);
  457.         if(!strcmp(cmd, "/goto", true)) return admsys_cmd_goto(playerid, params);
  458.  
  459.         if(!strcmp(cmd, "/suspectlist", true)) return admsys_cmd_suspectlist(playerid, params);
  460.         if(!strcmp(cmd, "/gethere", true) || !strcmp(cmd, "/get", true)) return admsys_cmd_gethere(playerid, params);
  461.         if(!strcmp(cmd, "/gotoveh", true) || !strcmp(cmd, "/gotovehicle", true)) return admsys_cmd_gotoveh(playerid, params);
  462.         if(!strcmp(cmd, "/ban", true)) return admsys_cmd_ban(playerid, params);
  463.         if(!strcmp(cmd, "/gmtest", true)) return admsys_cmd_gmtest(playerid, params);
  464.         if(!strcmp(cmd, "/spawn", true)) return admsys_cmd_spawn(playerid, params);
  465.         if(!strcmp(cmd, "/unwarn", true)) return admsys_cmd_unwarn(playerid, params);
  466.         if(!strcmp(cmd, "/banip", true) || !strcmp(cmd, "/blockip", true)) return admsys_cmd_banip(playerid, params);
  467.         if(!strcmp(cmd, "/cc", true) || !strcmp(cmd, "/clearchat", true)) return admsys_cmd_cc(playerid, params);
  468.  
  469.         if(!strcmp(cmd, "/sethealth", true)) return admsys_cmd_sethealth(playerid, params);
  470.         if(!strcmp(cmd, "/setarmour", true)) return admsys_cmd_setarmour(playerid, params);
  471.         if(!strcmp(cmd, "/setmoney", true)) return admsys_cmd_setmoney(playerid, params);
  472.         if(!strcmp(cmd, "/setskin", true)) return admsys_cmd_setskin(playerid, params);
  473.         if(!strcmp(cmd, "/setint", true) || !strcmp(cmd, "/setinterior", true)) return admsys_cmd_setint(playerid, params);
  474.         if(!strcmp(cmd, "/setvw", true) || !strcmp(cmd, "/setvirtualworld", true)) return admsys_cmd_setvw(playerid, params);
  475.         if(!strcmp(cmd, "/giveweapon", true)) return admsys_cmd_giveweapon(playerid, params);
  476.         if(!strcmp(cmd, "/repairveh", true) || !strcmp(cmd, "/repairvehicle", true)) return admsys_cmd_repairveh(playerid, params);
  477.         if(!strcmp(cmd, "/unbanip", true) || !strcmp(cmd, "/unblockip", true)) return admsys_cmd_unbanip(playerid, params);
  478.  
  479.         if(!strcmp(cmd, "/setweather", true)) return admsys_cmd_setweather(playerid, params);
  480.         if(!strcmp(cmd, "/getall", true)) return admsys_cmd_getall(playerid, params);
  481.         if(!strcmp(cmd, "/settime", true)) return admsys_cmd_settime(playerid, params);
  482.         if(!strcmp(cmd, "/destroyveh", true) || !strcmp(cmd, "/destroyvehicle", true)) return admsys_cmd_destroyveh(playerid, params);
  483.         if(!strcmp(cmd, "/veh", true) || !strcmp(cmd, "/vehicle", true)) return admsys_cmd_veh(playerid, params);
  484.         if(!strcmp(cmd, "/sban", true) || !strcmp(cmd, "/silentban", true)) return admsys_cmd_sban(playerid, params);
  485.         if(!strcmp(cmd, "/skick", true) || !strcmp(cmd, "/silentkick", true)) return admsys_cmd_skick(playerid, params);
  486.         #if defined admsys_OnPlayerCommandText
  487.             return admsys_OnPlayerCommandText(playerid, cmdtext);
  488.         #else
  489.             return 0;
  490.         #endif
  491.     }
  492.  
  493.     #if defined _ALS_OnPlayerCommandText
  494.         #undef OnPlayerCommandText
  495.     #else
  496.         #define _ALS_OnPlayerCommandText
  497.     #endif
  498.     #define OnPlayerCommandText admsys_OnPlayerCommandText
  499.     #if defined admsys_OnPlayerCommandText
  500.         forward admsys_OnPlayerCommandText(playerid, cmdtext[]);
  501.     #endif
  502. #endif
  503.  
  504. public OnPlayerStateChange(playerid, newstate, oldstate)
  505. {
  506.     if(newstate == PLAYER_STATE_SPECTATING)
  507.     {
  508.         #if defined foreach
  509.             foreach(new i : Player)
  510.             {
  511.         #else
  512.             for(new i = GetPlayerPoolSize(); i >= 0; --i)
  513.             {
  514.                 if(!IsPlayerConnected(i)) continue;
  515.         #endif
  516.             if(AdmSysInfo[i][asSpecID] == playerid)
  517.             {
  518.                 SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Player is in spectator mode");
  519.                 StopSpectating(i);
  520.             }
  521.         }
  522.     }
  523.     else if(PLAYER_STATE_DRIVER <= newstate <= PLAYER_STATE_PASSENGER || PLAYER_STATE_DRIVER <= oldstate <= PLAYER_STATE_PASSENGER)
  524.     {
  525.         #if defined foreach
  526.             foreach(new i : Player)
  527.             {
  528.         #else
  529.             for(new i = GetPlayerPoolSize(); i >= 0; --i)
  530.             {
  531.                 if(!IsPlayerConnected(i)) continue;
  532.         #endif
  533.             if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
  534.         }
  535.     }
  536.     #if defined admsys_OnPlayerStateChange
  537.         return admsys_OnPlayerStateChange(playerid, newstate, oldstate);
  538.     #else
  539.         return 1;
  540.     #endif
  541. }
  542.  
  543. #if defined _ALS_OnPlayerStateChange
  544.     #undef OnPlayerStateChange
  545. #else
  546.     #define _ALS_OnPlayerStateChange
  547. #endif
  548. #define OnPlayerStateChange admsys_OnPlayerStateChange
  549. #if defined admsys_OnPlayerStateChange
  550.     forward admsys_OnPlayerStateChange(playerid, newstate, oldstate);
  551. #endif
  552.  
  553. public OnPlayerUpdate(playerid)
  554. {
  555.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING &&
  556.     AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID && AdmSysInfo[AdmSysInfo[playerid][asSpecID]][asIsDead])
  557.     {
  558.         new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ;
  559.         GetPlayerCameraPos(AdmSysInfo[playerid][asSpecID], cX, cY, cZ);
  560.         GetPlayerPos(AdmSysInfo[playerid][asSpecID], pX, pY, pZ);
  561.         SetPlayerCameraPos(playerid, cX, cY, cZ);
  562.         SetPlayerCameraLookAt(playerid, pX, pY, pZ);
  563.     }
  564.     #if defined admsys_OnPlayerUpdate
  565.         return admsys_OnPlayerUpdate(playerid);
  566.     #else
  567.         return 1;
  568.     #endif
  569. }
  570.  
  571. #if defined _ALS_OnPlayerUpdate
  572.     #undef OnPlayerUpdate
  573. #else
  574.     #define _ALS_OnPlayerUpdate
  575. #endif
  576. #define OnPlayerUpdate admsys_OnPlayerUpdate
  577. #if defined admsys_OnPlayerUpdate
  578.     forward admsys_OnPlayerUpdate(playerid);
  579. #endif
  580.  
  581. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  582. {
  583.     switch(dialogid)
  584.     {
  585.         case ADMSYS_DIALOG_TAB_PANEL:
  586.         {
  587.             if(response)
  588.             {
  589.                 static strtmp[3];
  590.                 format(strtmp, sizeof strtmp, "%d", AdmSysInfo[playerid][asTabPanel]);
  591.                 switch(listitem)
  592.                 {
  593.                     case 0: admsys_cmd_showstats(playerid, strtmp);
  594.                     case 1:
  595.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, DIALOG_STYLE_INPUT, "Respond on report", "Enter the answer to the report:", "Ok", "Close");
  596.                     case 2: admsys_cmd_eject(playerid, strtmp);
  597.                     case 3: admsys_cmd_spec(playerid, strtmp);
  598.                     case 4:
  599.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, DIALOG_STYLE_INPUT, "Mute", "Enter mute time:", "Ok", "Close");
  600.                     case 5: admsys_cmd_unmute(playerid, strtmp);
  601.                     case 6:
  602.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, DIALOG_STYLE_INPUT, "Give warn", "Enter the reason of the warn:", "Ok", "Close");
  603.                     case 7:
  604.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, DIALOG_STYLE_INPUT, "Kick", "Enter the reason of kick:", "Ok", "Close");
  605.                     case 8: admsys_cmd_freeze(playerid, strtmp);
  606.                     case 9: admsys_cmd_unfreeze(playerid, strtmp);
  607.                     case 10:
  608.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, DIALOG_STYLE_INPUT, "Slap", "Enter the reason of slap:", "Ok", "Close");
  609.                     case 11: admsys_cmd_goto(playerid, strtmp);
  610.                     case 12: admsys_cmd_gethere(playerid, strtmp);
  611.                     case 13:
  612.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, DIALOG_STYLE_INPUT, "Ban", "Enter the reason of ban:", "Ok", "Close");
  613.                     case 14: admsys_cmd_gmtest(playerid, strtmp);
  614.                     case 15: admsys_cmd_spawn(playerid, strtmp);
  615.                     case 16: admsys_cmd_unwarn(playerid, strtmp);
  616.                     case 17:
  617.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, DIALOG_STYLE_INPUT, "Set health", "Enter the amount of health you want to set:", "Ok", "Close");
  618.                     case 18:
  619.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, DIALOG_STYLE_INPUT, "Set armour", "Enter the amount of armour you want to set:", "Ok", "Close");
  620.                     case 19:
  621.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, DIALOG_STYLE_INPUT, "Set money", "Enter the amount of money you want to set:", "Ok", "Close");
  622.                     case 20:
  623.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, DIALOG_STYLE_INPUT, "Set skin", "Enter the ID of the skin you want to set:", "Ok", "Close");
  624.                     case 21:
  625.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, DIALOG_STYLE_INPUT, "Set interior", "Enter the ID of the interior you want to set:", "Ok", "Close");
  626.                     case 22:
  627.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, DIALOG_STYLE_INPUT, "Set virtual world", "Enter the ID of the virtual world you want to set:", "Ok", "Close");
  628.                     case 23:
  629.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, DIALOG_STYLE_INPUT, "Give weapon", "Enter the ID of the weapon you want to give:", "Ok", "Close");
  630.                     case 24: admsys_cmd_sban(playerid, strtmp);
  631.                     case 25: admsys_cmd_skick(playerid, strtmp);
  632.                 }
  633.             }
  634.             return 1;
  635.         }
  636.         case ADMSYS_DIALOG_ANSWER:
  637.         {
  638.             if(response)
  639.             {
  640.                 if(admsys_isnull(inputtext))
  641.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, DIALOG_STYLE_INPUT, "Respond on report", "Enter the answer to the report:", "Ok", "Close");
  642.                 else
  643.                 {
  644.                     static strtmp[145];
  645.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  646.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  647.                     admsys_cmd_answer(playerid, strtmp);
  648.                 }
  649.             }
  650.             return 1;
  651.         }
  652.         case ADMSYS_DIALOG_MUTE_TIME:
  653.         {
  654.             if(response)
  655.             {
  656.                 if(admsys_isnull(inputtext))
  657.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, DIALOG_STYLE_INPUT, "Mute", "Enter mute time:", "Ok", "Close");
  658.                 else
  659.                 {
  660.                     format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
  661.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, DIALOG_STYLE_INPUT, "Mute", "Enter the reason of mute:", "Ok", "Back");
  662.                 }
  663.             }
  664.             return 1;
  665.         }
  666.         case ADMSYS_DIALOG_MUTE:
  667.         {
  668.             if(response)
  669.             {
  670.                 if(admsys_isnull(inputtext))
  671.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, DIALOG_STYLE_INPUT, "Mute", "Enter the reason of mute:", "Ok", "Back");
  672.                 else
  673.                 {
  674.                     static strtmp[145];
  675.                     format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext);
  676.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  677.                     admsys_cmd_mute(playerid, strtmp);
  678.                 }
  679.             }
  680.             else ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, DIALOG_STYLE_INPUT, "Mute", "Enter the time of mute:", "Ok", "Close");
  681.             return 1;
  682.         }
  683.         case ADMSYS_DIALOG_WARN:
  684.         {
  685.             if(response)
  686.             {
  687.                 if(admsys_isnull(inputtext))
  688.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, DIALOG_STYLE_INPUT, "Give warn", "Enter the reason of the warn:", "Ok", "Close");
  689.                 else
  690.                 {
  691.                     static strtmp[145];
  692.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  693.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  694.                     admsys_cmd_warn(playerid, strtmp);
  695.                 }
  696.             }
  697.             return 1;
  698.         }
  699.         case ADMSYS_DIALOG_KICK:
  700.         {
  701.             if(response)
  702.             {
  703.                 if(admsys_isnull(inputtext))
  704.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, DIALOG_STYLE_INPUT, "Kick", "Enter the reason of kick:", "Ok", "Close");
  705.                 else
  706.                 {
  707.                     static strtmp[145];
  708.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  709.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  710.                     admsys_cmd_kick(playerid, strtmp);
  711.                 }
  712.             }
  713.             return 1;
  714.         }
  715.         case ADMSYS_DIALOG_SLAP:
  716.         {
  717.             if(response)
  718.             {
  719.                 if(admsys_isnull(inputtext))
  720.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, DIALOG_STYLE_INPUT, "Slap", "Enter the reason of slap:", "Ok", "Close");
  721.                 else
  722.                 {
  723.                     static strtmp[145];
  724.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  725.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  726.                     admsys_cmd_slap(playerid, strtmp);
  727.                 }
  728.             }
  729.             return 1;
  730.         }
  731.         case ADMSYS_DIALOG_BAN:
  732.         {
  733.             if(response)
  734.             {
  735.                 if(admsys_isnull(inputtext))
  736.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, DIALOG_STYLE_INPUT, "Ban", "Enter the reason of ban:", "Ok", "Close");
  737.                 else
  738.                 {
  739.                     static strtmp[145];
  740.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  741.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  742.                     admsys_cmd_ban(playerid, strtmp);
  743.                 }
  744.             }
  745.             return 1;
  746.         }
  747.         case ADMSYS_DIALOG_SET_HEALTH:
  748.         {
  749.             if(response)
  750.             {
  751.                 if(admsys_isnull(inputtext))
  752.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, DIALOG_STYLE_INPUT, "Set health", "Enter the amount of health you want to set:", "Ok", "Close");
  753.                 else
  754.                 {
  755.                     static strtmp[32];
  756.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  757.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  758.                     admsys_cmd_sethealth(playerid, strtmp);
  759.                 }
  760.             }
  761.             return 1;
  762.         }
  763.         case ADMSYS_DIALOG_SET_ARMOUR:
  764.         {
  765.             if(response)
  766.             {
  767.                 if(admsys_isnull(inputtext))
  768.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, DIALOG_STYLE_INPUT, "Set armour", "Enter the amount of armour you want to set:", "Ok", "Close");
  769.                 else
  770.                 {
  771.                     static strtmp[32];
  772.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  773.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  774.                     admsys_cmd_setarmour(playerid, strtmp);
  775.                 }
  776.             }
  777.             return 1;
  778.         }
  779.         case ADMSYS_DIALOG_SET_MONEY:
  780.         {
  781.             if(response)
  782.             {
  783.                 if(admsys_isnull(inputtext))
  784.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, DIALOG_STYLE_INPUT, "Set money", "Enter the amount of money you want to set:", "Ok", "Close");
  785.                 else
  786.                 {
  787.                     static strtmp[32];
  788.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  789.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  790.                     admsys_cmd_setmoney(playerid, strtmp);
  791.                 }
  792.             }
  793.             return 1;
  794.         }
  795.         case ADMSYS_DIALOG_CHANGE_SKIN:
  796.         {
  797.             if(response)
  798.             {
  799.                 if(admsys_isnull(inputtext))
  800.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, DIALOG_STYLE_INPUT, "Set skin", "Enter the ID of the skin you want to set:", "Ok", "Close");
  801.                 else
  802.                 {
  803.                     static strtmp[32];
  804.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  805.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  806.                     admsys_cmd_setskin(playerid, strtmp);
  807.                 }
  808.             }
  809.             return 1;
  810.         }
  811.         case ADMSYS_DIALOG_SET_INT:
  812.         {
  813.             if(response)
  814.             {
  815.                 if(admsys_isnull(inputtext))
  816.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, DIALOG_STYLE_INPUT, "Set interior", "Enter the ID of the interior you want to set:", "Ok", "Close");
  817.                 else
  818.                 {
  819.                     static strtmp[32];
  820.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  821.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  822.                     admsys_cmd_setint(playerid, strtmp);
  823.                 }
  824.             }
  825.             return 1;
  826.         }
  827.         case ADMSYS_DIALOG_SET_VW:
  828.         {
  829.             if(response)
  830.             {
  831.                 if(admsys_isnull(inputtext))
  832.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, DIALOG_STYLE_INPUT, "Set virtual world", "Enter the ID of the virtual world you want to set:", "Ok", "Close");
  833.                 else
  834.                 {
  835.                     static strtmp[32];
  836.                     format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext);
  837.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  838.                     admsys_cmd_setvw(playerid, strtmp);
  839.                 }
  840.             }
  841.             return 1;
  842.         }
  843.         case ADMSYS_DIALOG_GIVE_WEAPON:
  844.         {
  845.             if(response)
  846.             {
  847.                 if(admsys_isnull(inputtext))
  848.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, DIALOG_STYLE_INPUT, "Give weapon", "Enter the ID of the weapon you want to give:", "Ok", "Close");
  849.                 else
  850.                 {
  851.                     format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
  852.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, DIALOG_STYLE_INPUT, "Give weapon", "Enter the number of ammo you want to give:", "Ok", "Back");
  853.                 }
  854.             }
  855.             return 1;
  856.         }
  857.         case ADMSYS_DIALOG_GIVE_WEAPON_AMMO:
  858.         {
  859.             if(response)
  860.             {
  861.                 if(admsys_isnull(inputtext))
  862.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, DIALOG_STYLE_INPUT, "Give weapon", "Enter the number of ammo you want to give:", "Ok", "Back");
  863.                 else
  864.                 {
  865.                     static strtmp[32];
  866.                     format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext);
  867.                     AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID;
  868.                     admsys_cmd_giveweapon(playerid, strtmp);
  869.                 }
  870.             }
  871.             else ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, DIALOG_STYLE_INPUT, "Give weapon", "Enter the ID of the weapon you want to give:", "Ok", "Close");
  872.             return 1;
  873.         }
  874.         case ADMSYS_DIALOG_APANEL:
  875.         {
  876.             if(response)
  877.             {
  878.                 switch(listitem)
  879.                 {
  880.                     case 0:
  881.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, DIALOG_STYLE_INPUT, "Admin chat", "Write your message:", "Ok", "Close");
  882.                     case 1: admsys_cmd_ahelp(playerid, "\1");
  883.                     case 2: admsys_cmd_admins(playerid, "\1");
  884.                     case 3:
  885.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SPAWN_VEH, DIALOG_STYLE_INPUT, "Teleport vehicle to respawn", "Enter the ID of vehicle you want to spawn:", "Ok", "Close");
  886.                     case 4:
  887.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, DIALOG_STYLE_INPUT, "Message from admin", "Write your message:", "Ok", "Close");
  888.                     case 5: admsys_cmd_suspectlist(playerid, "\1");
  889.                     case 6:
  890.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, DIALOG_STYLE_INPUT, "Teleport to vehicle", "Enter the ID of vehicle you want to teleport to:", "Ok", "Close");
  891.                     case 7:
  892.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, DIALOG_STYLE_INPUT, "Block IP address", "Enter the IP address you want to block:", "Ok", "Close");
  893.                     case 8: admsys_cmd_cc(playerid, "\1");
  894.                     case 9:
  895.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_REPAIR_VEH, DIALOG_STYLE_INPUT, "Repair vehicle", "Enter the ID of vehicle you want to repair:", "Ok", "Close");
  896.                     case 10:
  897.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, DIALOG_STYLE_INPUT, "Unblock IP address", "Enter the IP address you want to unblock:", "Ok", "Close");
  898.                     case 11: admsys_cmd_getall(playerid, "\1");
  899.                     case 12:
  900.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, DIALOG_STYLE_INPUT, "Set weather", "Enter the ID of the weather you want to set:", "Ok", "Close");
  901.                     case 13:
  902.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, DIALOG_STYLE_INPUT, "Set the time of day", "Enter the hour you want to set:", "Ok", "Close");
  903.                     case 14:
  904.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_DESTROY_VEH, DIALOG_STYLE_INPUT, "Destroy vehicle", "Enter the ID of vehicle you want to destroy:", "Ok", "Close");
  905.                     case 15:
  906.                         ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, DIALOG_STYLE_INPUT, "Create vehicle", "Enter vehicle model you want to create:", "Ok", "Close");
  907.                     case 16:
  908.                     {
  909.                         if(AdmSysInfo[playerid][asLastAction])
  910.                         {
  911.                             switch(AdmSysInfo[playerid][asLastAction])
  912.                             {
  913.                                 case 1: SetPlayerHealth(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]);
  914.                                 case 2: SetPlayerArmour(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]);
  915.                                 case 3:
  916.                                 {
  917.                                     ResetPlayerMoney(AdmSysInfo[playerid][asLastActionID]);
  918.                                     GivePlayerMoney(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
  919.                                 }
  920.                                 case 4: SetPlayerSkin(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
  921.                                 case 5: SetPlayerInterior(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
  922.                                 case 6: SetPlayerVirtualWorld(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]);
  923.                                 case 7:
  924.                                     GivePlayerWeapon(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0], -AdmSysInfo[playerid][asLastIntData][1]);
  925.                             }
  926.                             AdmSysInfo[playerid][asLastAction] = 0;
  927.                             SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "The command canceled");
  928.                         }
  929.                     }
  930.                 }
  931.             }
  932.             return 1;
  933.         }
  934.         case ADMSYS_DIALOG_ACHAT:
  935.         {
  936.             if(response)
  937.             {
  938.                 if(admsys_isnull(inputtext))
  939.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, DIALOG_STYLE_INPUT, "Admin chat", "Write your message:", "Ok", "Close");
  940.                 else admsys_cmd_achat(playerid, inputtext);
  941.             }
  942.             return 1;
  943.         }
  944.         case ADMSYS_DIALOG_SPAWN_VEH:
  945.         {
  946.             if(response)
  947.             {
  948.                 if(admsys_isnull(inputtext)) admsys_cmd_spawnveh(playerid, "\1");
  949.                 else admsys_cmd_spawnveh(playerid, inputtext);
  950.             }
  951.             return 1;
  952.         }
  953.         case ADMSYS_DIALOG_ASAY:
  954.         {
  955.             if(response)
  956.             {
  957.                 if(admsys_isnull(inputtext))
  958.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, DIALOG_STYLE_INPUT, "Message from admin", "Write your message:", "Ok", "Close");
  959.                 else admsys_cmd_asay(playerid, inputtext);
  960.             }
  961.             return 1;
  962.         }
  963.         case ADMSYS_DIALOG_GOTO_VEH:
  964.         {
  965.             if(response)
  966.             {
  967.                 if(admsys_isnull(inputtext))
  968.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, DIALOG_STYLE_INPUT, "Teleport to vehicle", "Enter the ID of vehicle you want to teleport to:", "Ok", "Close");
  969.                 else admsys_cmd_gotoveh(playerid, inputtext);
  970.             }
  971.             return 1;
  972.         }
  973.         case ADMSYS_DIALOG_BAN_IP:
  974.         {
  975.             if(response)
  976.             {
  977.                 if(admsys_isnull(inputtext))
  978.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, DIALOG_STYLE_INPUT, "Block IP address", "Enter the IP address you want to block:", "Ok", "Close");
  979.                 else admsys_cmd_banip(playerid, inputtext);
  980.             }
  981.             return 1;
  982.         }
  983.         case ADMSYS_DIALOG_REPAIR_VEH:
  984.         {
  985.             if(response)
  986.             {
  987.                 if(admsys_isnull(inputtext)) admsys_cmd_repairveh(playerid, "\1");
  988.                 else admsys_cmd_repairveh(playerid, inputtext);
  989.             }
  990.             return 1;
  991.         }
  992.         case ADMSYS_DIALOG_UNBAN_IP:
  993.         {
  994.             if(response)
  995.             {
  996.                 if(admsys_isnull(inputtext))
  997.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, DIALOG_STYLE_INPUT, "Unblock IP address", "Enter the IP address you want to unblock:", "Ok", "Close");
  998.                 else admsys_cmd_unbanip(playerid, inputtext);
  999.             }
  1000.             return 1;
  1001.         }
  1002.         case ADMSYS_DIALOG_SET_WEATHER:
  1003.         {
  1004.             if(response)
  1005.             {
  1006.                 if(admsys_isnull(inputtext))
  1007.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, DIALOG_STYLE_INPUT, "Set weather", "Enter the ID of the weather you want to set:", "Ok", "Close");
  1008.                 else admsys_cmd_setweather(playerid, inputtext);
  1009.             }
  1010.             return 1;
  1011.         }
  1012.         case ADMSYS_DIALOG_SET_TIME:
  1013.         {
  1014.             if(response)
  1015.             {
  1016.                 if(admsys_isnull(inputtext))
  1017.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, DIALOG_STYLE_INPUT, "Set the time of day", "Enter the hour you want to set:", "Ok", "Close");
  1018.                 else admsys_cmd_settime(playerid, inputtext);
  1019.             }
  1020.             return 1;
  1021.         }
  1022.         case ADMSYS_DIALOG_DESTROY_VEH:
  1023.         {
  1024.             if(response)
  1025.             {
  1026.                 if(admsys_isnull(inputtext)) admsys_cmd_destroyveh(playerid, "\1");
  1027.                 else admsys_cmd_destroyveh(playerid, inputtext);
  1028.             }
  1029.             return 1;
  1030.         }
  1031.         case ADMSYS_DIALOG_CREATE_VEH:
  1032.         {
  1033.             if(response)
  1034.             {
  1035.                 if(admsys_isnull(inputtext))
  1036.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, DIALOG_STYLE_INPUT, "Create vehicle", "Enter vehicle model you want to create:", "Ok", "Close");
  1037.                 else
  1038.                 {
  1039.                     format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
  1040.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, DIALOG_STYLE_INPUT, "Create vehicle", "Enter the color 1 for vehicle you want to create:", "Ok", "Back");
  1041.                 }
  1042.             }
  1043.             return 1;
  1044.         }
  1045.         case ADMSYS_DIALOG_CREATE_VEH_COL_1:
  1046.         {
  1047.             if(response)
  1048.             {
  1049.                 if(admsys_isnull(inputtext)) admsys_cmd_veh(playerid, AdmSysInfo[playerid][asInput]);
  1050.                 else
  1051.                 {
  1052.                     format(AdmSysInfo[playerid][asInput2], ADMSYS_MAX_TAB_INPUT, "%s", inputtext);
  1053.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, DIALOG_STYLE_INPUT, "Create vehicle", "Enter the color 2 for vehicle you want to create:", "Ok", "Back");
  1054.                 }
  1055.             }
  1056.             else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, DIALOG_STYLE_INPUT, "Create vehicle", "Enter vehicle model you want to create:", "Ok", "Close");
  1057.             return 1;
  1058.         }
  1059.         case ADMSYS_DIALOG_CREATE_VEH_COL_2:
  1060.         {
  1061.             if(response)
  1062.             {
  1063.                 if(admsys_isnull(inputtext))
  1064.                     ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, DIALOG_STYLE_INPUT, "Create vehicle", "Enter the color 2 for vehicle you want to create:", "Ok", "Back");
  1065.                 else
  1066.                 {
  1067.                     static strtmp[32];
  1068.                     format(strtmp, sizeof strtmp, "%s %s %s", AdmSysInfo[playerid][asInput], AdmSysInfo[playerid][asInput2], inputtext);
  1069.                     admsys_cmd_veh(playerid, strtmp);
  1070.                 }
  1071.             }
  1072.             else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, DIALOG_STYLE_INPUT, "Create vehicle", "Enter the color 1 for vehicle you want to create:", "Ok", "Back");
  1073.             return 1;
  1074.         }
  1075.         case ADMSYS_DIALOG_SUSPECT_LIST:
  1076.         {
  1077.             if(response && 0 <= listitem < sizeof SuspectList)
  1078.             {
  1079.                 if(!StartSpectating(playerid, SuspectList[listitem]))
  1080.                 {
  1081.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player has disconnected");
  1082.                     admsys_cmd_suspectlist(playerid, "\1");
  1083.                 }
  1084.                 else if(AdmSysInfo[playerid][asSpecID] == SuspectList[listitem]) RemovePlayerFromSuspectList(SuspectList[listitem]);
  1085.                 else admsys_cmd_suspectlist(playerid, "\1");
  1086.             }
  1087.             return 1;
  1088.         }
  1089.     }
  1090.     #if defined admsys_OnDialogResponse
  1091.         return admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
  1092.     #else
  1093.         return 0;
  1094.     #endif
  1095. }
  1096.  
  1097. #if defined _ALS_OnDialogResponse
  1098.     #undef OnDialogResponse
  1099. #else
  1100.     #define _ALS_OnDialogResponse
  1101. #endif
  1102. #define OnDialogResponse admsys_OnDialogResponse
  1103. #if defined admsys_OnDialogResponse
  1104.     forward admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  1105. #endif
  1106.  
  1107. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  1108. {
  1109.     #if defined foreach
  1110.         foreach(new i : Player)
  1111.         {
  1112.     #else
  1113.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  1114.         {
  1115.             if(!IsPlayerConnected(i)) continue;
  1116.     #endif
  1117.         if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i);
  1118.     }
  1119.     #if defined admsys_OnPlayerInteriorChange
  1120.         return admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
  1121.     #else
  1122.         return 1;
  1123.     #endif
  1124. }
  1125.  
  1126. #if defined _ALS_OnPlayerInteriorChange
  1127.     #undef OnPlayerInteriorChange
  1128. #else
  1129.     #define _ALS_OnPlayerInteriorChange
  1130. #endif
  1131. #define OnPlayerInteriorChange admsys_OnPlayerInteriorChange
  1132. #if defined admsys_OnPlayerInteriorChange
  1133.     forward admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
  1134. #endif
  1135.  
  1136. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1137. {
  1138.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID)
  1139.     {
  1140.         if(newkeys & KEY_ANALOG_LEFT)
  1141.         {
  1142.             new ud = AdmSysInfo[playerid][asSpecID];
  1143.             AdmSysInfo[playerid][asSpecID]--;
  1144.             while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid)
  1145.             {
  1146.                 AdmSysInfo[playerid][asSpecID]--;
  1147.                 if(AdmSysInfo[playerid][asSpecID] < 0) AdmSysInfo[playerid][asSpecID] = GetPlayerPoolSize();
  1148.                 if(AdmSysInfo[playerid][asSpecID] == ud) break;
  1149.             }
  1150.             if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid);
  1151.         }
  1152.         else if(newkeys & KEY_ANALOG_RIGHT)
  1153.         {
  1154.             new ud = AdmSysInfo[playerid][asSpecID];
  1155.             AdmSysInfo[playerid][asSpecID]++;
  1156.             while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid)
  1157.             {
  1158.                 AdmSysInfo[playerid][asSpecID]++;
  1159.                 if(AdmSysInfo[playerid][asSpecID] > GetPlayerPoolSize()) AdmSysInfo[playerid][asSpecID] = 0;
  1160.                 if(AdmSysInfo[playerid][asSpecID] == ud) break;
  1161.             }
  1162.             if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid);
  1163.         }
  1164.     }
  1165.     #if defined admsys_OnPlayerKeyStateChange
  1166.         return admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  1167.     #else
  1168.         return 1;
  1169.     #endif
  1170. }
  1171.  
  1172. #if defined _ALS_OnPlayerKeyStateChange
  1173.     #undef OnPlayerKeyStateChange
  1174. #else
  1175.     #define _ALS_OnPlayerKeyStateChange
  1176. #endif
  1177. #define OnPlayerKeyStateChange admsys_OnPlayerKeyStateChange
  1178. #if defined admsys_OnPlayerKeyStateChange
  1179.     forward admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  1180. #endif
  1181.  
  1182. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1183. {
  1184.     if(IsPlayerAdminEx(playerid))
  1185.     {
  1186.         static strtmp[351], strtmp2[43], strname[MAX_PLAYER_NAME + 1];
  1187.         strtmp[0] = EOS;
  1188.         AdmSysInfo[playerid][asTabPanel] = clickedplayerid;
  1189.         GetPlayerName(clickedplayerid, strname, sizeof strname);
  1190.         format(strtmp2, sizeof strtmp2, "Admin panel for %s", strname);
  1191.         strcat(strtmp, "Show statistics\nRespond on report\nRemove from vehicle");
  1192.         if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nBegin spectate\n\
  1193.         Mute\nUnmute\nGive warn\nKick\nFreeze\nUnfreeze\nSlap\nTeleport to player");
  1194.         if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nTeleport to yourself\nBan\n\
  1195.         Check for infinite health\nTeleport to respawn\nRemove warn");
  1196.         if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nSet health\nSet armour\nSet money\n\
  1197.         Set skin\nSet interior\nSet virtual world\nGive weapon");
  1198.         if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nSilent ban\nSilent kick");
  1199.         ShowPlayerDialog(playerid, ADMSYS_DIALOG_TAB_PANEL, DIALOG_STYLE_LIST, strtmp2, strtmp, "Ok", "Close");
  1200.     }
  1201.     #if defined admsys_OnPlayerClickPlayer
  1202.         return admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source);
  1203.     #else
  1204.         return 0;
  1205.     #endif
  1206. }
  1207.  
  1208. #if defined _ALS_OnPlayerClickPlayer
  1209.     #undef OnPlayerClickPlayer
  1210. #else
  1211.     #define _ALS_OnPlayerClickPlayer
  1212. #endif
  1213. #define OnPlayerClickPlayer admsys_OnPlayerClickPlayer
  1214. #if defined admsys_OnPlayerClickPlayer
  1215.     forward admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source);
  1216. #endif
  1217.  
  1218. admsys_fpublic BanWithDelay(playerid) return Ban(playerid);
  1219.  
  1220. admsys_fpublic KickWithDelay(playerid) return Kick(playerid);
  1221.  
  1222. admsys_fpublic UpdateMuteTime()
  1223. {
  1224.     #if defined foreach
  1225.     foreach(new i : Player)
  1226.     {
  1227.     #else
  1228.     for(new i = GetPlayerPoolSize(); i >= 0; --i)
  1229.     {
  1230.         if(!IsPlayerConnected(i)) continue;
  1231.     #endif
  1232.         if(AdmSysInfo[i][asMuteTime] > 0)
  1233.         {
  1234.             AdmSysInfo[i][asMuteTime]--;
  1235.             if(AdmSysInfo[i][asMuteTime] < 1)
  1236.                 SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Mute time has expired");
  1237.         }
  1238.     }
  1239.     return 1;
  1240. }
  1241.  
  1242. admsys_fpublic UpdateSpecInfo(playerid)
  1243. {
  1244.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID)
  1245.     {
  1246.         static strtmp[100], sname[MAX_PLAYER_NAME + 1], sip[16];
  1247.         GetPlayerIp(AdmSysInfo[playerid][asSpecID], sip, sizeof sip);
  1248.         GetPlayerName(AdmSysInfo[playerid][asSpecID], sname, sizeof sname);
  1249.         format(strtmp, sizeof strtmp, "~w~~n~~n~~n~~n~~n~~n~Nick: %s~n~ID: %d~n~IP: %s~n~Ping: %d",
  1250.         sname, AdmSysInfo[playerid][asSpecID], sip, GetPlayerPing(AdmSysInfo[playerid][asSpecID]));
  1251.         SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID]));
  1252.         AdmSysInfo[playerid][asUpdTimer] = SetTimerEx("UpdateSpecInfo", 1000, false, "d", playerid);
  1253.         GameTextForPlayer(playerid, strtmp, 1500, 3);
  1254.         return 1;
  1255.     }
  1256.     return 0;
  1257. }
  1258.  
  1259. admsys_fpublic GmTest(playerid)
  1260. {
  1261.     if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID)
  1262.     {
  1263.         if(AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest])
  1264.         {
  1265.             static strtmp[179];
  1266.             new vehid, Float:nowhp, Float:nowar, Float:hpdiff, Float:ardiff;
  1267.             vehid = GetPlayerVehicleID(AdmSysInfo[playerid][asGmTestID]);
  1268.             if(vehid) GetVehicleHealth(vehid, nowhp);
  1269.             else
  1270.             {
  1271.                 GetPlayerHealth(AdmSysInfo[playerid][asGmTestID], nowhp);
  1272.                 GetPlayerArmour(AdmSysInfo[playerid][asGmTestID], nowar);
  1273.             }
  1274.             hpdiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP] - nowhp;
  1275.             ardiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR] - nowar;
  1276.             if(hpdiff == 0.0 && ardiff == 0.0)
  1277.             {
  1278.                 format(strtmp, sizeof strtmp, "Before:\t%.1f health, %.1f armour\nAfter:\t%.1f health, %.1f armour\nHealth and armour hasn't decreased\n\nPerhaps the player uses GodMode.",
  1279.                 AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar);
  1280.                 ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, DIALOG_STYLE_MSGBOX, "Check for GodMode", strtmp, "Close", "");
  1281.             }
  1282.             else
  1283.             {
  1284.                 format(strtmp, sizeof strtmp, "Before:\t%.1f health, %.1f armour\nAfter:\t%.1f health, %.1f armour\nHealth decreased by:\t%.1f\nArmour decreased by:\t%.1f\n\nGodMode isn't detected.\nHealth and armor restored.",
  1285.                 AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar, hpdiff, ardiff);
  1286.                 ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, DIALOG_STYLE_MSGBOX, "Check for GodMode", strtmp, "Close", "");
  1287.                 if(vehid) SetVehicleHealth(vehid, AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]);
  1288.                 else
  1289.                 {
  1290.                     SetPlayerHealth(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]);
  1291.                     SetPlayerArmour(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR]);
  1292.                 }
  1293.             }
  1294.         }
  1295.         AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest] = false;
  1296.         AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID;
  1297.     }
  1298.     return 1;
  1299. }
  1300.  
  1301. CMD:report(playerid, const params[]) return admsys_cmd_report(playerid, params);
  1302. admsys_cmd_report(playerid, const params[])
  1303. {
  1304.     static strtmp[145];
  1305.     if(AdmSysInfo[playerid][asMuteTime] > 0)
  1306.     {
  1307.         format(strtmp, sizeof strtmp, "You are muted. Remaining mute time: %d minutes %d seconds",
  1308.         floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60);
  1309.         return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1310.     }
  1311.     if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /report [text]");
  1312.     static strname[MAX_PLAYER_NAME + 1];
  1313.     GetPlayerName(playerid, strname, sizeof strname);
  1314.     format(strtmp, sizeof strtmp, "[Report] %s[%d]: %s", strname, playerid, params);
  1315.     SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
  1316.     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1317.     return 1;
  1318. }
  1319.  
  1320. CMD:achat(playerid, const params[]) return admsys_cmd_achat(playerid, params);
  1321. CMD:admchat(playerid, const params[]) return admsys_cmd_achat(playerid, params);
  1322. CMD:adminchat(playerid, const params[]) return admsys_cmd_achat(playerid, params);
  1323. admsys_cmd_achat(playerid, const params[])
  1324. {
  1325.     if(IsPlayerAdminEx(playerid))
  1326.     {
  1327.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /achat [text]");
  1328.         static strtmp[145], strname[MAX_PLAYER_NAME + 1];
  1329.         strtmp = "[Admin chat] ";
  1330.         GetPlayerName(playerid, strname, sizeof strname);
  1331.         strcat(strtmp, strname);
  1332.         strcat(strtmp, ": ");
  1333.         strcat(strtmp, params);
  1334.         SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
  1335.     }
  1336.     return 1;
  1337. }
  1338.  
  1339. CMD:ahelp(playerid, const params[]) return admsys_cmd_ahelp(playerid, params);
  1340. CMD:admhelp(playerid, const params[]) return admsys_cmd_ahelp(playerid, params);
  1341. CMD:adminhelp(playerid, const params[]) return admsys_cmd_ahelp(playerid, params);
  1342. admsys_cmd_ahelp(playerid, const params[])
  1343. {
  1344.     #pragma unused params
  1345.     if(IsPlayerAdminEx(playerid))
  1346.         ShowPlayerDialog(playerid, ADMSYS_DIALOG_AHELP, DIALOG_STYLE_MSGBOX, "Help with admin commands", AdmSysCmdsStr, "Ok", "");
  1347.     return 1;
  1348. }
  1349.  
  1350. CMD:showstats(playerid, params[]) return admsys_cmd_showstats(playerid, params);
  1351. admsys_cmd_showstats(playerid, params[])
  1352. {
  1353.     if(IsPlayerAdminEx(playerid))
  1354.     {
  1355.         if(admsys_isnull(params)) params[0] = playerid;
  1356.         else
  1357.         {
  1358.             if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /showstats [id]");
  1359.             params[0] = strval(params);
  1360.             if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1361.         }
  1362.         new Float:ghealth, Float:garmour;
  1363.         static strtmp[38], strtmp2[192], strname[MAX_PLAYER_NAME + 1], gip[16];
  1364.         GetPlayerName(params[0], strname, sizeof strname);
  1365.         GetPlayerHealth(params[0], ghealth);
  1366.         GetPlayerArmour(params[0], garmour);
  1367.         GetPlayerIp(params[0], gip, sizeof gip);
  1368.         format(strtmp, sizeof strtmp, "Info about %s", strname);
  1369.         format(strtmp2, sizeof strtmp2, "Health: %.1f\nArmour: %.1f\nMoney: %d\nInterior: %d\nVirtual world: %d\nWanted level: %d\nIP address: %s\nPing: %d\nWeapon: %d\nAmmo: %d\nScore: %d\nSkin: %d",
  1370.         ghealth, garmour, GetPlayerMoney(params[0]), GetPlayerInterior(params[0]), GetPlayerVirtualWorld(params[0]), GetPlayerWantedLevel(params[0]), gip, GetPlayerPing(params[0]),
  1371.         GetPlayerWeapon(params[0]), GetPlayerAmmo(params[0]), GetPlayerScore(params[0]), GetPlayerSkin(params[0]));
  1372.         ShowPlayerDialog(playerid, ADMSYS_DIALOG_STATS, DIALOG_STYLE_MSGBOX, strtmp, strtmp2, "Ok", "");
  1373.     }
  1374.     return 1;
  1375. }
  1376.  
  1377. CMD:answer(playerid, const params[]) return admsys_cmd_answer(playerid, params);
  1378. admsys_cmd_answer(playerid, const params[])
  1379. {
  1380.     if(IsPlayerAdminEx(playerid))
  1381.     {
  1382.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
  1383.         new pos;
  1384.         static strtmp[145];
  1385.         while(params[pos] > ' ') pos++;
  1386.         strmid(strtmp, params, 0, pos);
  1387.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
  1388.         new giveid = strval(strtmp);
  1389.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1390.         while(params[pos] == ' ') pos++;
  1391.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /answer [id] [text]");
  1392.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1393.         GetPlayerName(playerid, strname, sizeof strname);
  1394.         GetPlayerName(giveid, strname2, sizeof strname2);
  1395.         format(strtmp, sizeof strtmp, "[Response to report %s] %s: %s", strname2, strname, params[pos]);
  1396.         SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
  1397.         strtmp = "[Response to report]: ";
  1398.         strcat(strtmp, params[pos]);
  1399.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1400.     }
  1401.     return 1;
  1402. }
  1403.  
  1404. CMD:apanel(playerid, const params[]) return admsys_cmd_apanel(playerid, params);
  1405. CMD:admpanel(playerid, const params[]) return admsys_cmd_apanel(playerid, params);
  1406. CMD:adminpanel(playerid, const params[]) return admsys_cmd_apanel(playerid, params);
  1407. admsys_cmd_apanel(playerid, const params[])
  1408. {
  1409.     #pragma unused params
  1410.     if(IsPlayerAdminEx(playerid))
  1411.     {
  1412.         static strtmp[361];
  1413.         strtmp[0] = EOS;
  1414.         strcat(strtmp, "Admin chat\nHelp with admin commands\nList of administrators online");
  1415.         if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nTeleport vehicle to respawn\n\
  1416.         Message: 'Administrator: [text]'");
  1417.         if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nList of suspected players\n\
  1418.         Teleport to vehicle\nBlock IP address\nClear chat");
  1419.         if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nRepair vehicle\nUnblock IP address");
  1420.         if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nTeleport all to yourself\nSet weather\n\
  1421.         Set the time of day\nDestroy vehicle\nCreate vehicle");
  1422.         strcat(strtmp, "\nUndo the last command");
  1423.         ShowPlayerDialog(playerid, ADMSYS_DIALOG_APANEL, DIALOG_STYLE_LIST, "Admin panel", strtmp, "Ok", "Close");
  1424.     }
  1425.     return 1;
  1426. }
  1427.  
  1428. CMD:admins(playerid, const params[]) return admsys_cmd_admins(playerid, params);
  1429. admsys_cmd_admins(playerid, const params[])
  1430. {
  1431.     #pragma unused params
  1432.     if(IsPlayerAdminEx(playerid))
  1433.     {
  1434.         static strtmp[296];
  1435.         strtmp[0] = EOS;
  1436.         static strtmp2[59], strtmp3[MAX_PLAYER_NAME + 1];
  1437.         #if defined foreach
  1438.         foreach(new i : Player)
  1439.         #else
  1440.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  1441.         #endif
  1442.         {
  1443.             if(IsPlayerAdminEx(i))
  1444.             {
  1445.                 GetPlayerName(i, strtmp3, sizeof strtmp3);
  1446.                 format(strtmp2, sizeof strtmp2, "Administrator %s[%d] [Level %d]\n", strtmp3, i, GetPlayerAdminLevel(i));
  1447.                 strcat(strtmp, strtmp2);
  1448.             }
  1449.         }
  1450.         if(strtmp[0] == '\0') strtmp = "Right now no administrators online";
  1451.         ShowPlayerDialog(playerid, ADMSYS_DIALOG_ADMINS, DIALOG_STYLE_MSGBOX, "Administrators online", strtmp, "Ok", "");
  1452.     }
  1453.     return 1;
  1454. }
  1455.  
  1456. CMD:eject(playerid, const params[]) return admsys_cmd_eject(playerid, params);
  1457. admsys_cmd_eject(playerid, const params[])
  1458. {
  1459.     if(IsPlayerAdminEx(playerid))
  1460.     {
  1461.         new strtmp[66];
  1462.         if(admsys_isnull(params))
  1463.         {
  1464.             format(strtmp, sizeof strtmp, "%d", playerid);
  1465.             return admsys_cmd_eject(playerid, strtmp);
  1466.         }
  1467.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1468.         GetPlayerName(playerid, strname, sizeof strname);
  1469.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  1470.         {
  1471.             while(params[pos] == ' ') pos++;
  1472.             if(params[pos])
  1473.             {
  1474.                 oldpos = pos;
  1475.                 while(params[pos] > ' ') pos++;
  1476.                 strmid(strtmp, params, oldpos, pos);
  1477.                 if(!admsys_IsNumeric(strtmp))
  1478.                 {
  1479.                     strtmp = "Use: /eject [id]";
  1480.                     if(i > 1)
  1481.                     {
  1482.                         for(j = 2; j <= i; j++)
  1483.                         {
  1484.                             format(strname2, sizeof strname2, " [id %d]", j);
  1485.                             strcat(strtmp, strname2);
  1486.                         }
  1487.                     }
  1488.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1489.                 }
  1490.                 giveid = strval(strtmp);
  1491.                 if(!IsPlayerConnected(giveid))
  1492.                 {
  1493.                     if(i == 1) strtmp = "Player is not found";
  1494.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  1495.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1496.                 }
  1497.                 else if(!IsPlayerInAnyVehicle(giveid))
  1498.                 {
  1499.                     if(i == 1)
  1500.                     {
  1501.                         if(giveid == playerid) strtmp = "You are not in vehicle";
  1502.                         else strtmp = "Player is not in vehicle";
  1503.                     }
  1504.                     else format(strtmp, sizeof strtmp, "Player %d is not in vehicle", i);
  1505.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1506.                 }
  1507.                 else
  1508.                 {
  1509.                     RemovePlayerFromVehicle(giveid);
  1510.                     GetPlayerName(giveid, strname2, sizeof strname2);
  1511.                     format(strtmp, sizeof strtmp, "You removed %s[%d] from vehicle", strname2, giveid);
  1512.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1513.                     format(strtmp, sizeof strtmp, "Administrator %s removed you from vehicle", strname);
  1514.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1515.                 }
  1516.             }
  1517.         }
  1518.     }
  1519.     return 1;
  1520. }
  1521.  
  1522. CMD:spec(playerid, params[]) return admsys_cmd_spec(playerid, params);
  1523. admsys_cmd_spec(playerid, params[])
  1524. {
  1525.     if(IsPlayerAdminEx(playerid, 2))
  1526.     {
  1527.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spec [id]");
  1528.         if(!strcmp(params, "off", true)) return admsys_cmd_specoff(playerid, "\1");
  1529.         if(!strcmp(params, "update", true)) return admsys_cmd_specupdate(playerid, "\1");
  1530.         if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spec [id]");
  1531.         params[0] = strval(params);
  1532.         if(!StartSpectating(playerid, params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1533.     }
  1534.     return 1;
  1535. }
  1536.  
  1537. CMD:specupdate(playerid, const params[]) return admsys_cmd_specupdate(playerid, params);
  1538. admsys_cmd_specupdate(playerid, const params[])
  1539. {
  1540.     #pragma unused params
  1541.     if(IsPlayerAdminEx(playerid, 2)) UpdateSpectating(playerid);
  1542.     return 1;
  1543. }
  1544.  
  1545. CMD:specoff(playerid, const params[]) return admsys_cmd_specoff(playerid, params);
  1546. admsys_cmd_specoff(playerid, const params[])
  1547. {
  1548.     #pragma unused params
  1549.     if(IsPlayerAdminEx(playerid, 2)) StopSpectating(playerid);
  1550.     return 1;
  1551. }
  1552.  
  1553. CMD:spawnveh(playerid, params[]) return admsys_cmd_spawnveh(playerid, params);
  1554. CMD:spawnvehicle(playerid, params[]) return admsys_cmd_spawnveh(playerid, params);
  1555. admsys_cmd_spawnveh(playerid, params[])
  1556. {
  1557.     if(IsPlayerAdminEx(playerid, 2))
  1558.     {
  1559.         if(admsys_isnull(params))
  1560.         {
  1561.             if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
  1562.             params[0] = GetPlayerVehicleID(playerid);
  1563.         }
  1564.         else
  1565.         {
  1566.             if(!admsys_IsNumeric(params))
  1567.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /spawnveh [vehicle id]");
  1568.             params[0] = strval(params);
  1569.             if(GetVehicleModel(params[0]) <= 0)
  1570.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
  1571.         }
  1572.         static strtmp[24];
  1573.         SetVehicleToRespawn(params[0]);
  1574.         format(strtmp, sizeof strtmp, "Vehicle id %d spawned", params[0]);
  1575.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1576.     }
  1577.     return 1;
  1578. }
  1579.  
  1580. CMD:mute(playerid, const params[]) return admsys_cmd_mute(playerid, params);
  1581. admsys_cmd_mute(playerid, const params[])
  1582. {
  1583.     if(IsPlayerAdminEx(playerid, 2))
  1584.     {
  1585.         if(admsys_isnull(params))
  1586.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
  1587.         static strtmp[145];
  1588.         new pos, oldpos;
  1589.         while(params[pos] > ' ') pos++;
  1590.         strmid(strtmp, params, 0, pos);
  1591.         if(!admsys_IsNumeric(strtmp))
  1592.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
  1593.         new giveid = strval(strtmp);
  1594.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1595.         if(AdmSysInfo[giveid][asMuteTime] > 0) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is already muted");
  1596.         if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
  1597.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
  1598.         while(params[pos] == ' ') pos++;
  1599.         oldpos = pos;
  1600.         while(params[pos] > ' ') pos++;
  1601.         strmid(strtmp, params, oldpos, pos);
  1602.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  1603.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
  1604.         new gtime = strval(strtmp);
  1605.         if(!(1 <= gtime <= 60)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use time for 1 to 60 minutes");
  1606.         while(params[pos] == ' ') pos++;
  1607.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /mute [id] [time] [reason]");
  1608.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1609.         AdmSysInfo[giveid][asMuteTime] = gtime * 60;
  1610.         GetPlayerName(playerid, strname, sizeof strname);
  1611.         GetPlayerName(giveid, strname2, sizeof strname2);
  1612.         format(strtmp, sizeof strtmp, "Administrator %s muted %s[%d] on %d minutes. Reason: %s", strname, strname2, giveid, gtime, params[pos]);
  1613.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1614.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1615.         #else
  1616.             SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1617.         #endif
  1618.         format(strtmp, sizeof strtmp, "Administrator %s muted you on %d minutes. Reason: %s", strname, gtime, params[pos]);
  1619.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1620.     }
  1621.     return 1;
  1622. }
  1623.  
  1624. CMD:unmute(playerid, const params[]) return admsys_cmd_unmute(playerid, params);
  1625. admsys_cmd_unmute(playerid, const params[])
  1626. {
  1627.     if(IsPlayerAdminEx(playerid, 2))
  1628.     {
  1629.         new strtmp[92];
  1630.         if(admsys_isnull(params))
  1631.         {
  1632.             format(strtmp, sizeof strtmp, "%d", playerid);
  1633.             return admsys_cmd_unmute(playerid, strtmp);
  1634.         }
  1635.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1636.         GetPlayerName(playerid, strname, sizeof strname);
  1637.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  1638.         {
  1639.             while(params[pos] == ' ') pos++;
  1640.             if(params[pos])
  1641.             {
  1642.                 oldpos = pos;
  1643.                 while(params[pos] > ' ') pos++;
  1644.                 strmid(strtmp, params, oldpos, pos);
  1645.                 if(!admsys_IsNumeric(strtmp))
  1646.                 {
  1647.                     strtmp = "Use: /unmute [id]";
  1648.                     if(i > 1)
  1649.                     {
  1650.                         for(j = 2; j <= i; j++)
  1651.                         {
  1652.                             format(strname2, sizeof strname2, " [id %d]", j);
  1653.                             strcat(strtmp, strname2);
  1654.                         }
  1655.                     }
  1656.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1657.                 }
  1658.                 giveid = strval(strtmp);
  1659.                 if(!IsPlayerConnected(giveid))
  1660.                 {
  1661.                     if(i == 1) strtmp = "Player is not found";
  1662.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  1663.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1664.                 }
  1665.                 else if(AdmSysInfo[giveid][asMuteTime] < 1)
  1666.                 {
  1667.                     if(i == 1) strtmp = "Player is not muted";
  1668.                     else format(strtmp, sizeof strtmp, "Player %d is not muted", i);
  1669.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1670.                 }
  1671.                 else
  1672.                 {
  1673.                     AdmSysInfo[giveid][asMuteTime] = 0;
  1674.                     GetPlayerName(giveid, strname2, sizeof strname2);
  1675.                     format(strtmp, sizeof strtmp, "Administrator %s unmuted %s[%d]", strname, strname2, giveid);
  1676.                     #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1677.                         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1678.                     #else
  1679.                         SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1680.                     #endif
  1681.                     format(strtmp, sizeof strtmp, "Administrator %s unmuted you", strname);
  1682.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1683.                 }
  1684.             }
  1685.         }
  1686.     }
  1687.     return 1;
  1688. }
  1689.  
  1690. CMD:asay(playerid, const params[]) return admsys_cmd_asay(playerid, params);
  1691. CMD:admsay(playerid, const params[]) return admsys_cmd_asay(playerid, params);
  1692. CMD:adminsay(playerid, const params[]) return admsys_cmd_asay(playerid, params);
  1693. admsys_cmd_asay(playerid, const params[])
  1694. {
  1695.     if(IsPlayerAdminEx(playerid, 2))
  1696.     {
  1697.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /asay [text]");
  1698.         static strtmp[145], strname[MAX_PLAYER_NAME + 1];
  1699.         strtmp = "Administrator ";
  1700.         GetPlayerName(playerid, strname, sizeof strname);
  1701.         strcat(strtmp, strname);
  1702.         strcat(strtmp, ": ");
  1703.         strcat(strtmp, params);
  1704.         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1705.     }
  1706.     return 1;
  1707. }
  1708.  
  1709. CMD:warn(playerid, const params[]) return admsys_cmd_warn(playerid, params);
  1710. admsys_cmd_warn(playerid, const params[])
  1711. {
  1712.     if(IsPlayerAdminEx(playerid, 2))
  1713.     {
  1714.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
  1715.         static strtmp[145];
  1716.         new pos;
  1717.         while(params[pos] > ' ') pos++;
  1718.         strmid(strtmp, params, 0, pos);
  1719.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
  1720.         new giveid = strval(strtmp);
  1721.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1722.         if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
  1723.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
  1724.         while(params[pos] == ' ') pos++;
  1725.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /warn [id] [reason]");
  1726.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1727.         AdmSysInfo[giveid][asWarns]++;
  1728.         CallRemoteFunction("OnPlayerWarn", "iii", giveid, playerid, AdmSysInfo[giveid][asWarns]);
  1729.         GetPlayerName(playerid, strname, sizeof strname);
  1730.         GetPlayerName(giveid, strname2, sizeof strname2);
  1731.         format(strtmp, sizeof strtmp, "Administrator %s has given %s[%d] a warn. Reason: %s", strname, strname2, giveid, params[pos]);
  1732.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1733.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1734.         #else
  1735.             SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1736.         #endif
  1737.         format(strtmp, sizeof strtmp, "Administrator %s has given you a warn. Reason: %s", strname, params[pos]);
  1738.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1739.         if(AdmSysInfo[giveid][asWarns] > ADMSYS_MAX_WARNS) return admsys_cmd_ban(playerid, params);
  1740.     }
  1741.     return 1;
  1742. }
  1743.  
  1744. CMD:kick(playerid, const params[]) return admsys_cmd_kick(playerid, params);
  1745. admsys_cmd_kick(playerid, const params[])
  1746. {
  1747.     if(IsPlayerAdminEx(playerid, 2))
  1748.     {
  1749.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
  1750.         static strtmp[145];
  1751.         new pos;
  1752.         while(params[pos] > ' ') pos++;
  1753.         strmid(strtmp, params, 0, pos);
  1754.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
  1755.         new giveid = strval(strtmp);
  1756.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1757.         if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
  1758.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
  1759.         while(params[pos] == ' ') pos++;
  1760.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /kick [id] [reason]");
  1761.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1762.         CallRemoteFunction("OnPlayerKick", "iii", giveid, playerid, false);
  1763.         GetPlayerName(playerid, strname, sizeof strname);
  1764.         GetPlayerName(giveid, strname2, sizeof strname2);
  1765.         format(strtmp, sizeof strtmp, "Administrator %s has kicked %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
  1766.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1767.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1768.         #else
  1769.             SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1770.         #endif
  1771.         format(strtmp, sizeof strtmp, "Administrator %s has kicked you. Reason: %s", strname, params[pos]);
  1772.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1773.         SetTimerEx("KickWithDelay", 500, 0, "i", giveid);
  1774.     }
  1775.     return 1;
  1776. }
  1777.  
  1778. CMD:freeze(playerid, const params[]) return admsys_cmd_freeze(playerid, params);
  1779. admsys_cmd_freeze(playerid, const params[])
  1780. {
  1781.     if(IsPlayerAdminEx(playerid, 2))
  1782.     {
  1783.         new strtmp[95];
  1784.         if(admsys_isnull(params))
  1785.         {
  1786.             format(strtmp, sizeof strtmp, "%d", playerid);
  1787.             return admsys_cmd_freeze(playerid, strtmp);
  1788.         }
  1789.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1790.         GetPlayerName(playerid, strname, sizeof strname);
  1791.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  1792.         {
  1793.             while(params[pos] == ' ') pos++;
  1794.             if(params[pos])
  1795.             {
  1796.                 oldpos = pos;
  1797.                 while(params[pos] > ' ') pos++;
  1798.                 strmid(strtmp, params, oldpos, pos);
  1799.                 if(!admsys_IsNumeric(strtmp))
  1800.                 {
  1801.                     strtmp = "Use: /freeze [id]";
  1802.                     if(i > 1)
  1803.                     {
  1804.                         for(j = 2; j <= i; j++)
  1805.                         {
  1806.                             format(strname2, sizeof strname2, " [id %d]", j);
  1807.                             strcat(strtmp, strname2);
  1808.                         }
  1809.                     }
  1810.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1811.                 }
  1812.                 giveid = strval(strtmp);
  1813.                 if(!IsPlayerConnected(giveid))
  1814.                 {
  1815.                     if(i == 1) strtmp = "Player is not found";
  1816.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  1817.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1818.                 }
  1819.                 else
  1820.                 {
  1821.                     TogglePlayerControllable(giveid, 0);
  1822.                     GetPlayerName(giveid, strname2, sizeof strname2);
  1823.                     format(strtmp, sizeof strtmp, "Administrator %s has frozen %s[%d]", strname, strname2, giveid);
  1824.                     #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1825.                         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1826.                     #else
  1827.                         SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1828.                     #endif
  1829.                     format(strtmp, sizeof strtmp, "Administrator %s has frozen you", strname);
  1830.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1831.                 }
  1832.             }
  1833.         }
  1834.     }
  1835.     return 1;
  1836. }
  1837.  
  1838. CMD:unfreeze(playerid, const params[]) return admsys_cmd_unfreeze(playerid, params);
  1839. admsys_cmd_unfreeze(playerid, const params[])
  1840. {
  1841.     if(IsPlayerAdminEx(playerid, 2))
  1842.     {
  1843.         new strtmp[97];
  1844.         if(admsys_isnull(params))
  1845.         {
  1846.             format(strtmp, sizeof strtmp, "%d", playerid);
  1847.             return admsys_cmd_unfreeze(playerid, strtmp);
  1848.         }
  1849.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1850.         GetPlayerName(playerid, strname, sizeof strname);
  1851.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  1852.         {
  1853.             while(params[pos] == ' ') pos++;
  1854.             if(params[pos])
  1855.             {
  1856.                 oldpos = pos;
  1857.                 while(params[pos] > ' ') pos++;
  1858.                 strmid(strtmp, params, oldpos, pos);
  1859.                 if(!admsys_IsNumeric(strtmp))
  1860.                 {
  1861.                     strtmp = "Use: /unfreeze [id]";
  1862.                     if(i > 1)
  1863.                     {
  1864.                         for(j = 2; j <= i; j++)
  1865.                         {
  1866.                             format(strname2, sizeof strname2, " [id %d]", j);
  1867.                             strcat(strtmp, strname2);
  1868.                         }
  1869.                     }
  1870.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1871.                 }
  1872.                 giveid = strval(strtmp);
  1873.                 if(!IsPlayerConnected(giveid))
  1874.                 {
  1875.                     if(i == 1) strtmp = "Player is not found";
  1876.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  1877.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1878.                 }
  1879.                 else
  1880.                 {
  1881.                     TogglePlayerControllable(giveid, 1);
  1882.                     GetPlayerName(giveid, strname2, sizeof strname2);
  1883.                     format(strtmp, sizeof strtmp, "Administrator %s has unfrozen %s[%d]", strname, strname2, giveid);
  1884.                     #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1885.                         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1886.                     #else
  1887.                         SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1888.                     #endif
  1889.                     format(strtmp, sizeof strtmp, "Administrator %s has unfrozen you", strname);
  1890.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1891.                 }
  1892.             }
  1893.         }
  1894.     }
  1895.     return 1;
  1896. }
  1897.  
  1898. CMD:slap(playerid, const params[]) return admsys_cmd_slap(playerid, params);
  1899. admsys_cmd_slap(playerid, const params[])
  1900. {
  1901.     if(IsPlayerAdminEx(playerid, 2))
  1902.     {
  1903.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
  1904.         static strtmp[145];
  1905.         new pos;
  1906.         while(params[pos] > ' ') pos++;
  1907.         strmid(strtmp, params, 0, pos);
  1908.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
  1909.         new giveid = strval(strtmp);
  1910.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1911.         if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
  1912.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
  1913.         if(IsPlayerSpectating(giveid))
  1914.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is in spectator mode");
  1915.         while(params[pos] == ' ') pos++;
  1916.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /slap [id] [reason]");
  1917.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1918.         new Float:pX, Float:pY, Float:pZ;
  1919.         GetPlayerPos(giveid, pX, pY, pZ);
  1920.         SetPlayerPos(giveid, pX, pY, pZ + 8.0);
  1921.         PlayerPlaySound(giveid, 1130, 0.0, 0.0, 0.0);
  1922.         GetPlayerName(playerid, strname, sizeof strname);
  1923.         GetPlayerName(giveid, strname2, sizeof strname2);
  1924.         format(strtmp, sizeof strtmp, "Administrator %s slapped %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
  1925.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  1926.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  1927.         #else
  1928.             SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp);
  1929.         #endif
  1930.         format(strtmp, sizeof strtmp, "Administrator %s slapped you. Reason: %s", strname, params[pos]);
  1931.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  1932.     }
  1933.     return 1;
  1934. }
  1935.  
  1936. CMD:goto(playerid, params[]) return admsys_cmd_goto(playerid, params);
  1937. admsys_cmd_goto(playerid, params[])
  1938. {
  1939.     if(IsPlayerAdminEx(playerid, 2))
  1940.     {
  1941.         if(IsPlayerSpectating(playerid))
  1942.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
  1943.         if(admsys_isnull(params) || !admsys_IsNumeric(params))
  1944.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /goto [id]");
  1945.         params[0] = strval(params);
  1946.         if(params[0] == playerid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't specify your id");
  1947.         if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  1948.         static strtmp[54], strname[MAX_PLAYER_NAME + 1];
  1949.         new Float:pX, Float:pY, Float:pZ;
  1950.         GetPlayerPos(params[0], pX, pY, pZ);
  1951.         SetPlayerPos(playerid, pX + 1.0, pY + 1.0, pZ);
  1952.         SetPlayerInterior(playerid, GetPlayerInterior(params[0]));
  1953.         SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0]));
  1954.         GetPlayerName(params[0], strname, sizeof strname);
  1955.         format(strtmp, sizeof strtmp, "You are teleported to %s[%d]", strname, params[0]);
  1956.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  1957.     }
  1958.     return 1;
  1959. }
  1960.  
  1961. CMD:suspectlist(playerid, const params[]) return admsys_cmd_suspectlist(playerid, params);
  1962. admsys_cmd_suspectlist(playerid, const params[])
  1963. {
  1964.     #pragma unused params
  1965.     if(IsPlayerAdminEx(playerid, 3))
  1966.     {
  1967.         UpdateSuspectList();
  1968.         new c;
  1969.         static strtmp[337], strtmp2[43], iname[MAX_PLAYER_NAME + 1];
  1970.         strtmp[0] = EOS;
  1971.         for(new i; i < sizeof SuspectList; ++i)
  1972.         {
  1973.             if(SuspectList[i] != INVALID_PLAYER_ID)
  1974.             {
  1975.                 GetPlayerName(SuspectList[i], iname, sizeof iname);
  1976.                 format(strtmp2, sizeof strtmp2, "%d. %s [ID: %d]\n", i + 1, iname, SuspectList[i]);
  1977.                 strcat(strtmp, strtmp2);
  1978.                 c++;
  1979.             }
  1980.         }
  1981.         if(c) ShowPlayerDialog(playerid, ADMSYS_DIALOG_SUSPECT_LIST, DIALOG_STYLE_LIST, "Waiting for checking", strtmp, "Ok", "Close");
  1982.         else SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "List is empty");
  1983.     }
  1984.     return 1;
  1985. }
  1986.  
  1987. CMD:gethere(playerid, const params[]) return admsys_cmd_gethere(playerid, params);
  1988. CMD:get(playerid, const params[]) return admsys_cmd_gethere(playerid, params);
  1989. admsys_cmd_gethere(playerid, const params[])
  1990. {
  1991.     if(IsPlayerAdminEx(playerid, 3))
  1992.     {
  1993.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gethere [id]");
  1994.         if(!strcmp(params, "all", true)) return admsys_cmd_getall(playerid, "\1");
  1995.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  1996.         new strtmp[67], interior, vw, Float:pX, Float:pY, Float:pZ;
  1997.         GetPlayerName(playerid, strname, sizeof strname);
  1998.         interior = GetPlayerInterior(playerid);
  1999.         vw = GetPlayerVirtualWorld(playerid);
  2000.         GetPlayerPos(playerid, pX, pY, pZ);
  2001.         pX += 1.0;
  2002.         pY += 1.0;
  2003.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  2004.         {
  2005.             while(params[pos] == ' ') pos++;
  2006.             if(params[pos])
  2007.             {
  2008.                 oldpos = pos;
  2009.                 while(params[pos] > ' ') pos++;
  2010.                 strmid(strtmp, params, oldpos, pos);
  2011.                 if(!admsys_IsNumeric(strtmp))
  2012.                 {
  2013.                     strtmp = "Use: /gethere [id]";
  2014.                     if(i > 1)
  2015.                     {
  2016.                         for(j = 2; j <= i; j++)
  2017.                         {
  2018.                             format(strname2, sizeof strname2, " [id %d]", j);
  2019.                             strcat(strtmp, strname2);
  2020.                         }
  2021.                     }
  2022.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2023.                 }
  2024.                 giveid = strval(strtmp);
  2025.                 if(giveid == playerid) SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't specify your id");
  2026.                 else if(!IsPlayerConnected(giveid))
  2027.                 {
  2028.                     if(i == 1) strtmp = "Player is not found";
  2029.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  2030.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2031.                 }
  2032.                 else
  2033.                 {
  2034.                     SetPlayerPos(giveid, pX, pY, pZ);
  2035.                     SetPlayerVirtualWorld(giveid, vw);
  2036.                     SetPlayerInterior(giveid, interior);
  2037.                     GetPlayerName(giveid, strname2, sizeof strname2);
  2038.                     format(strtmp, sizeof strtmp, "You teleported %s[%d] to himself", strname2, giveid);
  2039.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2040.                     format(strtmp, sizeof strtmp, "Administrator %s teleported you to himself", strname);
  2041.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2042.                 }
  2043.             }
  2044.         }
  2045.     }
  2046.     return 1;
  2047. }
  2048.  
  2049. CMD:gotoveh(playerid, params[]) return admsys_cmd_gotoveh(playerid, params);
  2050. CMD:gotovehicle(playerid, params[]) return admsys_cmd_gotoveh(playerid, params);
  2051. admsys_cmd_gotoveh(playerid, params[])
  2052. {
  2053.     if(IsPlayerAdminEx(playerid, 3))
  2054.     {
  2055.         if(IsPlayerSpectating(playerid))
  2056.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
  2057.         if(admsys_isnull(params) || !admsys_IsNumeric(params))
  2058.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gotoveh [vehicle id]");
  2059.         params[0] = strval(params);
  2060.         if(GetVehicleModel(params[0]) <= 0) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
  2061.         static strtmp[50];
  2062.         new Float:vX, Float:vY, Float:vZ;
  2063.         GetVehiclePos(params[0], vX, vY, vZ);
  2064.         SetPlayerPos(playerid, vX, vY, vZ + 2.5);
  2065.         SetPlayerVirtualWorld(playerid, GetVehicleVirtualWorld(params[0]));
  2066.         format(strtmp, sizeof strtmp, "You are teleported to vehicle id %d", params[0]);
  2067.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2068.     }
  2069.     return 1;
  2070. }
  2071.  
  2072. CMD:ban(playerid, const params[]) return admsys_cmd_ban(playerid, params);
  2073. admsys_cmd_ban(playerid, const params[])
  2074. {
  2075.     if(IsPlayerAdminEx(playerid, 3))
  2076.     {
  2077.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
  2078.         static strtmp[145];
  2079.         new pos;
  2080.         while(params[pos] > ' ') pos++;
  2081.         strmid(strtmp, params, 0, pos);
  2082.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
  2083.         new giveid = strval(strtmp);
  2084.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2085.         if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid)
  2086.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't apply this action to the administrator");
  2087.         while(params[pos] == ' ') pos++;
  2088.         if(params[pos] == '\0') return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /ban [id] [reason]");
  2089.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  2090.         CallRemoteFunction("OnPlayerBan", "iii", giveid, playerid, false);
  2091.         GetPlayerName(playerid, strname, sizeof strname);
  2092.         GetPlayerName(giveid, strname2, sizeof strname2);
  2093.         format(strtmp, sizeof strtmp, "Administrator %s has banned %s[%d]. Reason: %s", strname, strname2, giveid, params[pos]);
  2094.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2095.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2096.         #else
  2097.             SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
  2098.         #endif
  2099.         format(strtmp, sizeof strtmp, "Administrator %s has banned you. Reason: %s", strname, params[pos]);
  2100.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2101.         SetTimerEx("BanWithDelay", 500, 0, "i", giveid);
  2102.     }
  2103.     return 1;
  2104. }
  2105.  
  2106. CMD:gmtest(playerid, params[]) return admsys_cmd_gmtest(playerid, params);
  2107. admsys_cmd_gmtest(playerid, params[])
  2108. {
  2109.     if(IsPlayerAdminEx(playerid, 3))
  2110.     {
  2111.         if(admsys_isnull(params) || !admsys_IsNumeric(params))
  2112.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /gmtest [id]");
  2113.         params[0] = strval(params);
  2114.         if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2115.         if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID)
  2116.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You already checks someone on GodMode");
  2117.         if(AdmSysInfo[params[0]][asGmTest])
  2118.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player are already checked for GodMode");
  2119.         if(!AdmSysInfo[params[0]][asIsSpawned])
  2120.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not spawned");
  2121.         if(IsPlayerSpectating(params[0]))
  2122.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is in spectator mode");
  2123.         new Float:bx, Float:by, Float:bz;
  2124.         GetPlayerPos(params[0], bx, by, bz);
  2125.         if(!IsPlayerInAnyVehicle(params[0]))
  2126.         {
  2127.             GetPlayerHealth(params[0], AdmSysInfo[params[0]][asGmTestHP]);
  2128.             GetPlayerArmour(params[0], AdmSysInfo[params[0]][asGmTestAR]);
  2129.         }
  2130.         else GetVehicleHealth(GetPlayerVehicleID(params[0]), AdmSysInfo[params[0]][asGmTestHP]);
  2131.         AdmSysInfo[params[0]][asGmTest] = true;
  2132.         AdmSysInfo[playerid][asGmTestID] = params[0];
  2133.         CreateExplosionForPlayer(params[0], bx, by, bz + 7.5, 5, 0.5);
  2134.         SetTimerEx("GmTest", 1000, 0, "d", playerid);
  2135.     }
  2136.     return 1;
  2137. }
  2138.  
  2139. CMD:spawn(playerid, const params[]) return admsys_cmd_spawn(playerid, params);
  2140. admsys_cmd_spawn(playerid, const params[])
  2141. {
  2142.     if(IsPlayerAdminEx(playerid, 3))
  2143.     {
  2144.         new strtmp[102];
  2145.         if(admsys_isnull(params))
  2146.         {
  2147.             format(strtmp, sizeof strtmp, "%d", playerid);
  2148.             return admsys_cmd_spawn(playerid, strtmp);
  2149.         }
  2150.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  2151.         GetPlayerName(playerid, strname, sizeof strname);
  2152.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  2153.         {
  2154.             while(params[pos] == ' ') pos++;
  2155.             if(params[pos])
  2156.             {
  2157.                 oldpos = pos;
  2158.                 while(params[pos] > ' ') pos++;
  2159.                 strmid(strtmp, params, oldpos, pos);
  2160.                 if(!admsys_IsNumeric(strtmp))
  2161.                 {
  2162.                     strtmp = "Use: /spawn [id]";
  2163.                     if(i > 1)
  2164.                     {
  2165.                         for(j = 2; j <= i; j++)
  2166.                         {
  2167.                             format(strname2, sizeof strname2, " [id %d]", j);
  2168.                             strcat(strtmp, strname2);
  2169.                         }
  2170.                     }
  2171.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2172.                 }
  2173.                 giveid = strval(strtmp);
  2174.                 if(!IsPlayerConnected(giveid))
  2175.                 {
  2176.                     if(i == 1) strtmp = "Player is not found";
  2177.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  2178.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2179.                 }
  2180.                 else
  2181.                 {
  2182.                     if(IsPlayerSpectating(giveid)) TogglePlayerSpectating(giveid, 0);
  2183.                     else SpawnPlayer(giveid);
  2184.                     GetPlayerName(giveid, strname2, sizeof strname2);
  2185.                     format(strtmp, sizeof strtmp, "Administrator %s has spawned %s[%d]", strname, strname2, giveid);
  2186.                     #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2187.                         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2188.                     #else
  2189.                         SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
  2190.                     #endif
  2191.                     format(strtmp, sizeof strtmp, "Administrator %s has spawned you", strname);
  2192.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2193.                 }
  2194.             }
  2195.         }
  2196.     }
  2197.     return 1;
  2198. }
  2199.  
  2200. CMD:unwarn(playerid, const params[]) return admsys_cmd_unwarn(playerid, params);
  2201. admsys_cmd_unwarn(playerid, const params[])
  2202. {
  2203.     if(IsPlayerAdminEx(playerid, 3))
  2204.     {
  2205.         new strtmp[108];
  2206.         if(admsys_isnull(params))
  2207.         {
  2208.             format(strtmp, sizeof strtmp, "%d", playerid);
  2209.             return admsys_cmd_unwarn(playerid, strtmp);
  2210.         }
  2211.         static strname[MAX_PLAYER_NAME + 1], strname2[MAX_PLAYER_NAME + 1];
  2212.         GetPlayerName(playerid, strname, sizeof strname);
  2213.         for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  2214.         {
  2215.             while(params[pos] == ' ') pos++;
  2216.             if(params[pos])
  2217.             {
  2218.                 oldpos = pos;
  2219.                 while(params[pos] > ' ') pos++;
  2220.                 strmid(strtmp, params, oldpos, pos);
  2221.                 if(!admsys_IsNumeric(strtmp))
  2222.                 {
  2223.                     strtmp = "Use: /unwarn [id]";
  2224.                     if(i > 1)
  2225.                     {
  2226.                         for(j = 2; j <= i; j++)
  2227.                         {
  2228.                             format(strname2, sizeof strname2, " [id %d]", j);
  2229.                             strcat(strtmp, strname2);
  2230.                         }
  2231.                     }
  2232.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2233.                 }
  2234.                 giveid = strval(strtmp);
  2235.                 if(!IsPlayerConnected(giveid))
  2236.                 {
  2237.                     if(i == 1) strtmp = "Player is not found";
  2238.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  2239.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2240.                 }
  2241.                 else if(AdmSysInfo[giveid][asWarns] < 1)
  2242.                 {
  2243.                     if(i == 1) strtmp = "Player has no warns";
  2244.                     else format(strtmp, sizeof strtmp, "Player %d has no warns", i);
  2245.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2246.                 }
  2247.                 else
  2248.                 {
  2249.                     AdmSysInfo[giveid][asWarns]--;
  2250.                     GetPlayerName(giveid, strname2, sizeof strname2);
  2251.                     format(strtmp, sizeof strtmp, "Administrator %s has removed a warn from %s[%d]", strname, strname2, giveid);
  2252.                     #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2253.                         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2254.                     #else
  2255.                         SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
  2256.                     #endif
  2257.                     format(strtmp, sizeof strtmp, "Administrator %s has removed a warn from you", strname);
  2258.                     SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2259.                 }
  2260.             }
  2261.         }
  2262.     }
  2263.     return 1;
  2264. }
  2265.  
  2266. CMD:banip(playerid, const params[]) return admsys_cmd_banip(playerid, params);
  2267. CMD:blockip(playerid, const params[]) return admsys_cmd_banip(playerid, params);
  2268. admsys_cmd_banip(playerid, const params[])
  2269. {
  2270.     if(IsPlayerAdminEx(playerid, 3))
  2271.     {
  2272.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /banip [IP]");
  2273.         for(new i, c, j = strlen(params); i < j; i++)
  2274.         {
  2275.             switch(params[i])
  2276.             {
  2277.                 case '*':
  2278.                 {
  2279.                     if(c < 2) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
  2280.                 }
  2281.                 case '.': c++;
  2282.                 case '0'..'9':{}
  2283.                 default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
  2284.             }
  2285.         }
  2286.         static strtmp[74], strname[MAX_PLAYER_NAME + 1];
  2287.         format(strtmp, sizeof strtmp, "banip %s", params);
  2288.         SendRconCommand(strtmp);
  2289.         SendRconCommand("reloadbans");
  2290.         GetPlayerName(playerid, strname, sizeof strname);
  2291.         format(strtmp, sizeof strtmp, "Administrator %s has blocked IP %s", strname, params);
  2292.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2293.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2294.         #else
  2295.             SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
  2296.         #endif
  2297.     }
  2298.     return 1;
  2299. }
  2300.  
  2301. CMD:cc(playerid, const params[]) return admsys_cmd_cc(playerid, params);
  2302. CMD:clearchat(playerid, const params[]) return admsys_cmd_cc(playerid, params);
  2303. admsys_cmd_cc(playerid, const params[])
  2304. {
  2305.     #pragma unused params
  2306.     if(IsPlayerAdminEx(playerid, 3))
  2307.     {
  2308.         static strtmp[62], strname[MAX_PLAYER_NAME + 1];
  2309.         for(new i = 30; i >= 0; --i) SendClientMessageToAll(-1, " ");
  2310.         GetPlayerName(playerid, strname, sizeof strname);
  2311.         format(strtmp, sizeof strtmp, "Administrator %s has cleared the chat", strname);
  2312.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2313.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2314.         #else
  2315.             SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp);
  2316.         #endif
  2317.     }
  2318.     return 1;
  2319. }
  2320.  
  2321. CMD:sethealth(playerid, const params[]) return admsys_cmd_sethealth(playerid, params);
  2322. admsys_cmd_sethealth(playerid, const params[])
  2323. {
  2324.     if(IsPlayerAdminEx(playerid, 4))
  2325.     {
  2326.         if(admsys_isnull(params))
  2327.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
  2328.         static strtmp[68];
  2329.         new pos, oldpos;
  2330.         while(params[pos] > ' ') pos++;
  2331.         strmid(strtmp, params, 0, pos);
  2332.         if(!admsys_IsNumeric(strtmp))
  2333.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
  2334.         new giveid = strval(strtmp);
  2335.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2336.         while(params[pos] == ' ') pos++;
  2337.         oldpos = pos;
  2338.         while(params[pos] > ' ') pos++;
  2339.         strmid(strtmp, params, oldpos, pos);
  2340.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2341.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sethealth [id] [health]");
  2342.         static strname[MAX_PLAYER_NAME + 1];
  2343.         new Float:ghealth = strval(strtmp);
  2344.         AdmSysInfo[playerid][asLastAction] = 1;
  2345.         GetPlayerHealth(giveid, AdmSysInfo[playerid][asLastFloatData]);
  2346.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2347.         SetPlayerHealth(giveid, ghealth);
  2348.         GetPlayerName(giveid, strname, sizeof strname);
  2349.         format(strtmp, sizeof strtmp, "You have set %.1f health to %s[%d]", ghealth, strname, giveid);
  2350.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2351.         GetPlayerName(playerid, strname, sizeof strname);
  2352.         format(strtmp, sizeof strtmp, "Administrator %s has set you %.1f health", strname, ghealth);
  2353.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2354.     }
  2355.     return 1;
  2356. }
  2357.  
  2358. CMD:setarmour(playerid, const params[]) return admsys_cmd_setarmour(playerid, params);
  2359. admsys_cmd_setarmour(playerid, const params[])
  2360. {
  2361.     if(IsPlayerAdminEx(playerid, 4))
  2362.     {
  2363.         if(admsys_isnull(params))
  2364.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
  2365.         static strtmp[68];
  2366.         new pos, oldpos;
  2367.         while(params[pos] > ' ') pos++;
  2368.         strmid(strtmp, params, 0, pos);
  2369.         if(!admsys_IsNumeric(strtmp))
  2370.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
  2371.         new giveid = strval(strtmp);
  2372.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2373.         while(params[pos] == ' ') pos++;
  2374.         oldpos = pos;
  2375.         while(params[pos] > ' ') pos++;
  2376.         strmid(strtmp, params, oldpos, pos);
  2377.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2378.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setarmour [id] [armour]");
  2379.         static strname[MAX_PLAYER_NAME + 1];
  2380.         new Float:garmour = strval(strtmp);
  2381.         AdmSysInfo[playerid][asLastAction] = 2;
  2382.         GetPlayerArmour(giveid, AdmSysInfo[playerid][asLastFloatData]);
  2383.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2384.         SetPlayerArmour(giveid, garmour);
  2385.         GetPlayerName(giveid, strname, sizeof strname);
  2386.         format(strtmp, sizeof strtmp, "You have set %.1f armour to %s[%d]", garmour, strname, giveid);
  2387.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2388.         GetPlayerName(playerid, strname, sizeof strname);
  2389.         format(strtmp, sizeof strtmp, "Administrator %s has set you %.1f armour", strname, garmour);
  2390.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2391.     }
  2392.     return 1;
  2393. }
  2394.  
  2395. CMD:setmoney(playerid, const params[]) return admsys_cmd_setmoney(playerid, params);
  2396. admsys_cmd_setmoney(playerid, const params[])
  2397. {
  2398.     if(IsPlayerAdminEx(playerid, 4))
  2399.     {
  2400.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
  2401.         static strtmp[64];
  2402.         new pos, oldpos;
  2403.         while(params[pos] > ' ') pos++;
  2404.         strmid(strtmp, params, 0, pos);
  2405.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
  2406.         new giveid = strval(strtmp);
  2407.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2408.         while(params[pos] == ' ') pos++;
  2409.         oldpos = pos;
  2410.         while(params[pos] > ' ') pos++;
  2411.         strmid(strtmp, params, oldpos, pos);
  2412.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2413.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setmoney [id] [money]");
  2414.         static strname[MAX_PLAYER_NAME + 1];
  2415.         new gmoney = strval(strtmp);
  2416.         AdmSysInfo[playerid][asLastAction] = 3;
  2417.         AdmSysInfo[playerid][asLastIntData][0] = GetPlayerMoney(giveid);
  2418.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2419.         ResetPlayerMoney(giveid);
  2420.         GivePlayerMoney(giveid, gmoney);
  2421.         GetPlayerName(giveid, strname, sizeof strname);
  2422.         format(strtmp, sizeof strtmp, "You have set $%d to %s[%d]", gmoney, strname, giveid);
  2423.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2424.         GetPlayerName(playerid, strname, sizeof strname);
  2425.         format(strtmp, sizeof strtmp, "Administrator %s has set you $%d", strname, gmoney);
  2426.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2427.     }
  2428.     return 1;
  2429. }
  2430.  
  2431. CMD:setskin(playerid, const params[]) return admsys_cmd_setskin(playerid, params);
  2432. admsys_cmd_setskin(playerid, const params[])
  2433. {
  2434.     if(IsPlayerAdminEx(playerid, 4))
  2435.     {
  2436.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
  2437.         static strtmp[60];
  2438.         new pos, oldpos;
  2439.         while(params[pos] > ' ') pos++;
  2440.         strmid(strtmp, params, 0, pos);
  2441.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
  2442.         new giveid = strval(strtmp);
  2443.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2444.         while(params[pos] == ' ') pos++;
  2445.         oldpos = pos;
  2446.         while(params[pos] > ' ') pos++;
  2447.         strmid(strtmp, params, oldpos, pos);
  2448.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2449.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setskin [id] [skin]");
  2450.         new skinid = strval(strtmp);
  2451.         if(!(0 <= skinid <= 311)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use ID of skin from 0 to 311");
  2452.         static strname[MAX_PLAYER_NAME + 1];
  2453.         AdmSysInfo[playerid][asLastAction] = 4;
  2454.         AdmSysInfo[playerid][asLastIntData][0] = GetPlayerSkin(giveid);
  2455.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2456.         SetPlayerSkin(giveid, skinid);
  2457.         GetPlayerName(giveid, strname, sizeof strname);
  2458.         format(strtmp, sizeof strtmp, "You have changed the skin to %d to %s[%d]", skinid, strname, giveid);
  2459.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2460.         GetPlayerName(playerid, strname, sizeof strname);
  2461.         format(strtmp, sizeof strtmp, "Administrator %s has changed your skin to %d", strname, skinid);
  2462.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2463.     }
  2464.     return 1;
  2465. }
  2466.  
  2467. CMD:setint(playerid, const params[]) return admsys_cmd_setint(playerid, params);
  2468. CMD:setinterior(playerid, const params[]) return admsys_cmd_setint(playerid, params);
  2469. admsys_cmd_setint(playerid, const params[])
  2470. {
  2471.     if(IsPlayerAdminEx(playerid, 4))
  2472.     {
  2473.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
  2474.         static strtmp[70];
  2475.         new pos, oldpos;
  2476.         while(params[pos] > ' ') pos++;
  2477.         strmid(strtmp, params, 0, pos);
  2478.         if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
  2479.         new giveid = strval(strtmp);
  2480.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2481.         while(params[pos] == ' ') pos++;
  2482.         oldpos = pos;
  2483.         while(params[pos] > ' ') pos++;
  2484.         strmid(strtmp, params, oldpos, pos);
  2485.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2486.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setint [id] [interior]");
  2487.         static strname[MAX_PLAYER_NAME + 1];
  2488.         new gint = strval(strtmp);
  2489.         AdmSysInfo[playerid][asLastAction] = 5;
  2490.         AdmSysInfo[playerid][asLastIntData][0] = GetPlayerInterior(giveid);
  2491.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2492.         SetPlayerInterior(giveid, gint);
  2493.         GetPlayerName(giveid, strname, sizeof strname);
  2494.         format(strtmp, sizeof strtmp, "You have set the interior to %d to %s[%d]", gint, strname, giveid);
  2495.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2496.         GetPlayerName(playerid, strname, sizeof strname);
  2497.         format(strtmp, sizeof strtmp, "Administrator %s has set your interior to %d", strname, gint);
  2498.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2499.     }
  2500.     return 1;
  2501. }
  2502.  
  2503. CMD:setvw(playerid, const params[]) return admsys_cmd_setvw(playerid, params);
  2504. CMD:setvirtualworld(playerid, const params[]) return admsys_cmd_setvw(playerid, params);
  2505. admsys_cmd_setvw(playerid, const params[])
  2506. {
  2507.     if(IsPlayerAdminEx(playerid, 4))
  2508.     {
  2509.         if(admsys_isnull(params))
  2510.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
  2511.         static strtmp[82];
  2512.         new pos, oldpos;
  2513.         while(params[pos] > ' ') pos++;
  2514.         strmid(strtmp, params, 0, pos);
  2515.         if(!admsys_IsNumeric(strtmp))
  2516.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
  2517.         new giveid = strval(strtmp);
  2518.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2519.         while(params[pos] == ' ') pos++;
  2520.         oldpos = pos;
  2521.         while(params[pos] > ' ') pos++;
  2522.         strmid(strtmp, params, oldpos, pos);
  2523.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2524.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setvw [id] [vw]");
  2525.         static strname[MAX_PLAYER_NAME + 1];
  2526.         new gvw = strval(strtmp);
  2527.         AdmSysInfo[playerid][asLastAction] = 6;
  2528.         AdmSysInfo[playerid][asLastIntData][0] = GetPlayerVirtualWorld(giveid);
  2529.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2530.         SetPlayerVirtualWorld(giveid, gvw);
  2531.         GetPlayerName(giveid, strname, sizeof strname);
  2532.         format(strtmp, sizeof strtmp, "You have set the virtual world to %d to %s[%d]", gvw, strname, giveid);
  2533.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2534.         GetPlayerName(playerid, strname, sizeof strname);
  2535.         format(strtmp, sizeof strtmp, "Administrator %s has set your virtual world to %d", strname, gvw);
  2536.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2537.     }
  2538.     return 1;
  2539. }
  2540.  
  2541. CMD:giveweapon(playerid, const params[]) return admsys_cmd_giveweapon(playerid, params);
  2542. admsys_cmd_giveweapon(playerid, const params[])
  2543. {
  2544.     if(IsPlayerAdminEx(playerid, 4))
  2545.     {
  2546.         if(admsys_isnull(params))
  2547.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
  2548.         static strtmp[79];
  2549.         new pos, oldpos;
  2550.         while(params[pos] > ' ') pos++;
  2551.         strmid(strtmp, params, 0, pos);
  2552.         if(!admsys_IsNumeric(strtmp))
  2553.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
  2554.         new giveid = strval(strtmp);
  2555.         if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not found");
  2556.         while(params[pos] == ' ') pos++;
  2557.         oldpos = pos;
  2558.         while(params[pos] > ' ') pos++;
  2559.         strmid(strtmp, params, oldpos, pos);
  2560.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2561.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
  2562.         new gweapon = strval(strtmp);
  2563.         if(!(0 <= gweapon <= 46)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the ID of weapon from 0 to 46");
  2564.         while(params[pos] == ' ') pos++;
  2565.         oldpos = pos;
  2566.         while(params[pos] > ' ') pos++;
  2567.         strmid(strtmp, params, oldpos, pos);
  2568.         if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2569.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /giveweapon [id] [weapon] [ammo]");
  2570.         static strname[MAX_PLAYER_NAME + 1];
  2571.         new gammo = strval(strtmp);
  2572.         AdmSysInfo[playerid][asLastAction] = 7;
  2573.         AdmSysInfo[playerid][asLastIntData][0] = gweapon;
  2574.         AdmSysInfo[playerid][asLastIntData][1] = gammo;
  2575.         AdmSysInfo[playerid][asLastActionID] = giveid;
  2576.         GivePlayerWeapon(giveid, gweapon, gammo);
  2577.         GetPlayerName(giveid, strname, sizeof strname);
  2578.         format(strtmp, sizeof strtmp, "You have gave the weapon %d with %d ammo to %s[%d]", gweapon, gammo, strname, giveid);
  2579.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2580.         GetPlayerName(playerid, strname, sizeof strname);
  2581.         format(strtmp, sizeof strtmp, "Administrator %s gave you weapon %d with %d ammo", strname, gweapon, gammo);
  2582.         SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp);
  2583.     }
  2584.     return 1;
  2585. }
  2586.  
  2587. CMD:repairveh(playerid, params[]) return admsys_cmd_repairveh(playerid, params);
  2588. CMD:repairvehicle(playerid, params[]) return admsys_cmd_repairveh(playerid, params);
  2589. admsys_cmd_repairveh(playerid, params[])
  2590. {
  2591.     if(IsPlayerAdminEx(playerid, 4))
  2592.     {
  2593.         if(admsys_isnull(params))
  2594.         {
  2595.             if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
  2596.             params[0] = GetPlayerVehicleID(playerid);
  2597.         }
  2598.         else
  2599.         {
  2600.             if(!admsys_IsNumeric(params))
  2601.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /repairveh [vehicle id]");
  2602.             params[0] = strval(params);
  2603.             if(GetVehicleModel(params[0]) <= 0)
  2604.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
  2605.         }
  2606.         static strtmp[25];
  2607.         RepairVehicle(params[0]);
  2608.         format(strtmp, sizeof strtmp, "Vehicle id %d repaired", params[0]);
  2609.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2610.     }
  2611.     return 1;
  2612. }
  2613.  
  2614. CMD:unbanip(playerid, const params[]) return admsys_cmd_unbanip(playerid, params);
  2615. CMD:unblockip(playerid, const params[]) return admsys_cmd_unbanip(playerid, params);
  2616. admsys_cmd_unbanip(playerid, const params[])
  2617. {
  2618.     if(IsPlayerAdminEx(playerid, 4))
  2619.     {
  2620.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /unbanip [IP]");
  2621.         for(new i, j = strlen(params); i < j; i++)
  2622.         {
  2623.             switch(params[i])
  2624.             {
  2625.                 case '*', '.', '0'..'9':{}
  2626.                 default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP address entered incorrectly");
  2627.             }
  2628.         }
  2629.         static strtmp[76], strname[MAX_PLAYER_NAME + 1];
  2630.         format(strtmp, sizeof strtmp, "unbanip %s", params);
  2631.         SendRconCommand(strtmp);
  2632.         SendRconCommand("reloadbans");
  2633.         GetPlayerName(playerid, strname, sizeof strname);
  2634.         format(strtmp, sizeof strtmp, "Administrator %s unblocked the IP %s", strname, params);
  2635.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2636.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2637.         #else
  2638.             SendMessageToAdmins(4, ADMSYS_DEFAULT_COLOR, strtmp);
  2639.         #endif
  2640.     }
  2641.     return 1;
  2642. }
  2643.  
  2644. CMD:setweather(playerid, params[]) return admsys_cmd_setweather(playerid, params);
  2645. admsys_cmd_setweather(playerid, params[])
  2646. {
  2647.     if(IsPlayerAdminEx(playerid, 5))
  2648.     {
  2649.         if(admsys_isnull(params) || !admsys_IsNumeric(params))
  2650.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /setweather [weather]");
  2651.         params[0] = strval(params);
  2652.         if(!(0 <= params[0] <= 20)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Weather ID should be from 0 to 20");
  2653.         SetWeather(params[0]);
  2654.         #if defined foreach
  2655.         foreach(new i : Player)
  2656.         #else
  2657.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  2658.         #endif
  2659.         {
  2660.             SetPlayerWeather(i, params[0]);
  2661.         }
  2662.         static strtmp[66], strname[MAX_PLAYER_NAME + 1];
  2663.         GetPlayerName(playerid, strname, sizeof strname);
  2664.         format(strtmp, sizeof strtmp, "Administrator %s changed the weather to %d", strname, params[0]);
  2665.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2666.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2667.         #else
  2668.             SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp);
  2669.         #endif
  2670.     }
  2671.     return 1;
  2672. }
  2673.  
  2674. CMD:getall(playerid, const params[]) return admsys_cmd_getall(playerid, params);
  2675. admsys_cmd_getall(playerid, const params[])
  2676. {
  2677.     #pragma unused params
  2678.     if(IsPlayerAdminEx(playerid, 5))
  2679.     {
  2680.         new Float:pX, Float:pY, Float:pZ;
  2681.         GetPlayerPos(playerid, pX, pY, pZ);
  2682.         pX += 1.0;
  2683.         pY += 1.0;
  2684.         new interior = GetPlayerInterior(playerid), vw = GetPlayerVirtualWorld(playerid);
  2685.         #if defined foreach
  2686.         foreach(new i : Player)
  2687.         {
  2688.         #else
  2689.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  2690.         {
  2691.             if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
  2692.         #endif
  2693.             if(i != playerid)
  2694.             {
  2695.                 SetPlayerVirtualWorld(i, vw);
  2696.                 SetPlayerInterior(i, interior);
  2697.                 SetPlayerPos(i, pX, pY, pZ);
  2698.             }
  2699.         }
  2700.         static strtmp[67], strname[MAX_PLAYER_NAME + 1];
  2701.         GetPlayerName(playerid, strname, sizeof strname);
  2702.         format(strtmp, sizeof strtmp, "Administrator %s teleported all to himself", strname);
  2703.         SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2704.     }
  2705.     return 1;
  2706. }
  2707.  
  2708. CMD:settime(playerid, params[]) return admsys_cmd_settime(playerid, params);
  2709. admsys_cmd_settime(playerid, params[])
  2710. {
  2711.     if(IsPlayerAdminEx(playerid, 5))
  2712.     {
  2713.         if(admsys_isnull(params) || !admsys_IsNumeric(params))
  2714.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /settime [hour]");
  2715.         params[0] = strval(params);
  2716.         if(!(0 <= params[0] <= 23)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "The hour must be between 0 and 23");
  2717.         SetWorldTime(params[0]);
  2718.         #if defined foreach
  2719.         foreach(new i : Player)
  2720.         #else
  2721.         for(new i = GetPlayerPoolSize(); i >= 0; --i)
  2722.         #endif
  2723.         {
  2724.             SetPlayerTime(i, params[0], 0);
  2725.         }
  2726.         static strtmp[70], strname[MAX_PLAYER_NAME + 1];
  2727.         GetPlayerName(playerid, strname, sizeof strname);
  2728.         format(strtmp, sizeof strtmp, "Administrator %s changed the time to %d hours", strname, params[0]);
  2729.         #if ADMSYS_SEND_ACTION_MSGS_TO_ALL
  2730.             SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp);
  2731.         #else
  2732.             SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp);
  2733.         #endif
  2734.     }
  2735.     return 1;
  2736. }
  2737.  
  2738. CMD:destroyveh(playerid, params[]) return admsys_cmd_destroyveh(playerid, params);
  2739. CMD:destroyvehicle(playerid, params[]) return admsys_cmd_destroyveh(playerid, params);
  2740. admsys_cmd_destroyveh(playerid, params[])
  2741. {
  2742.     if(IsPlayerAdminEx(playerid, 5))
  2743.     {
  2744.         if(admsys_isnull(params))
  2745.         {
  2746.             if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in vehicle");
  2747.             params[0] = GetPlayerVehicleID(playerid);
  2748.         }
  2749.         else
  2750.         {
  2751.             if(!admsys_IsNumeric(params))
  2752.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /destroyveh [vehicle id]");
  2753.             params[0] = strval(params);
  2754.             if(GetVehicleModel(params[0]) <= 0)
  2755.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Vehicle is not found");
  2756.         }
  2757.         static strtmp[26];
  2758.         DestroyVehicle(params[0]);
  2759.         format(strtmp, sizeof strtmp, "Vehicle id %d destroyed", params[0]);
  2760.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2761.     }
  2762.     return 1;
  2763. }
  2764.  
  2765. CMD:veh(playerid, const params[]) return admsys_cmd_veh(playerid, params);
  2766. CMD:vehicle(playerid, const params[]) return admsys_cmd_veh(playerid, params);
  2767. admsys_cmd_veh(playerid, const params[])
  2768. {
  2769.     if(IsPlayerAdminEx(playerid, 5))
  2770.     {
  2771.         if(IsPlayerSpectating(playerid))
  2772.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are in spectator mode");
  2773.         if(admsys_isnull(params))
  2774.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
  2775.         static strtmp[48];
  2776.         new pos, oldpos;
  2777.         while(params[pos] > ' ') pos++;
  2778.         strmid(strtmp, params, 0, pos);
  2779.         if(!admsys_IsNumeric(strtmp))
  2780.             return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
  2781.         new gveh = strval(strtmp);
  2782.         if(!(400 <= gveh <= 611)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the vehicle ID from 400 to 611");
  2783.         while(params[pos] == ' ') pos++;
  2784.         oldpos = pos;
  2785.         new gcolor1, gcolor2;
  2786.         if(params[oldpos] == '\0')
  2787.         {
  2788.             gcolor1 = random(256);
  2789.             gcolor2 = random(256);
  2790.         }
  2791.         else
  2792.         {
  2793.             while(params[pos] > ' ') pos++;
  2794.             strmid(strtmp, params, oldpos, pos);
  2795.             if(!admsys_IsNumeric(strtmp))
  2796.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
  2797.             gcolor1 = strval(strtmp);
  2798.             if(!(0 <= gcolor1 <= 255))
  2799.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the color 1 from 0 to 255");
  2800.             while(params[pos] == ' ') pos++;
  2801.             oldpos = pos;
  2802.             while(params[pos] > ' ') pos++;
  2803.             strmid(strtmp, params, oldpos, pos);
  2804.             if(params[oldpos] == '\0' || !admsys_IsNumeric(strtmp))
  2805.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /veh [vehicle id] [color 1] [color 2]");
  2806.             gcolor2 = strval(strtmp);
  2807.             if(!(0 <= gcolor2 <= 255))
  2808.                 return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use the color 2 from 0 to 255");
  2809.         }
  2810.         new vid, Float:pX, Float:pY, Float:pZ, Float:pAngle;
  2811.         GetPlayerPos(playerid, pX, pY, pZ);
  2812.         GetPlayerFacingAngle(playerid, pAngle);
  2813.         vid = CreateVehicle(gveh, pX, pY, pZ, pAngle, gcolor1, gcolor2, -1);
  2814.         SetVehicleVirtualWorld(vid, GetPlayerVirtualWorld(playerid));
  2815.         LinkVehicleToInterior(vid, GetPlayerInterior(playerid));
  2816.         PutPlayerInVehicle(playerid, vid, 0);
  2817.         format(strtmp, sizeof strtmp, "Vehicle id %d with colors %d and %d spawned", vid, gcolor1, gcolor2);
  2818.         SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2819.     }
  2820.     return 1;
  2821. }
  2822.  
  2823. CMD:skick(playerid, const params[]) return admsys_cmd_skick(playerid, params);
  2824. CMD:silentkick(playerid, const params[]) return admsys_cmd_skick(playerid, params);
  2825. admsys_cmd_skick(playerid, const params[])
  2826. {
  2827.     if(IsPlayerAdminEx(playerid, 5))
  2828.     {
  2829.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /skick [id]");
  2830.         static strtmp2[10];
  2831.         for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  2832.         {
  2833.             while(params[pos] == ' ') pos++;
  2834.             if(params[pos])
  2835.             {
  2836.                 oldpos = pos;
  2837.                 while(params[pos] > ' ') pos++;
  2838.                 strmid(strtmp, params, oldpos, pos);
  2839.                 if(!admsys_IsNumeric(strtmp))
  2840.                 {
  2841.                     strtmp = "Use: /skick [id]";
  2842.                     if(i > 1)
  2843.                     {
  2844.                         for(j = 2; j <= i; j++)
  2845.                         {
  2846.                             format(strtmp2, sizeof strtmp2, " [id %d]", j);
  2847.                             strcat(strtmp, strtmp2);
  2848.                         }
  2849.                     }
  2850.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2851.                 }
  2852.                 giveid = strval(strtmp);
  2853.                 if(!IsPlayerConnected(giveid))
  2854.                 {
  2855.                     if(i == 1) strtmp = "Player is not found";
  2856.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  2857.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2858.                 }
  2859.                 else
  2860.                 {
  2861.                     CallRemoteFunction("OnPlayerKick", "iii", giveid, playerid, true);
  2862.                     Kick(giveid);
  2863.                 }
  2864.             }
  2865.         }
  2866.     }
  2867.     return 1;
  2868. }
  2869.  
  2870. CMD:sban(playerid, const params[]) return admsys_cmd_sban(playerid, params);
  2871. CMD:silentban(playerid, const params[]) return admsys_cmd_sban(playerid, params);
  2872. admsys_cmd_sban(playerid, const params[])
  2873. {
  2874.     if(IsPlayerAdminEx(playerid, 5))
  2875.     {
  2876.         if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Use: /sban [id]");
  2877.         static strtmp2[10];
  2878.         for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++)
  2879.         {
  2880.             while(params[pos] == ' ') pos++;
  2881.             if(params[pos])
  2882.             {
  2883.                 oldpos = pos;
  2884.                 while(params[pos] > ' ') pos++;
  2885.                 strmid(strtmp, params, oldpos, pos);
  2886.                 if(!admsys_IsNumeric(strtmp))
  2887.                 {
  2888.                     strtmp = "Use: /sban [id]";
  2889.                     if(i > 1)
  2890.                     {
  2891.                         for(j = 2; j <= i; j++)
  2892.                         {
  2893.                             format(strtmp2, sizeof strtmp2, " [id %d]", j);
  2894.                             strcat(strtmp, strtmp2);
  2895.                         }
  2896.                     }
  2897.                     return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2898.                 }
  2899.                 giveid = strval(strtmp);
  2900.                 if(!IsPlayerConnected(giveid))
  2901.                 {
  2902.                     if(i == 1) strtmp = "Player is not found";
  2903.                     else format(strtmp, sizeof strtmp, "Player %d is not found", i);
  2904.                     SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp);
  2905.                 }
  2906.                 else
  2907.                 {
  2908.                     CallRemoteFunction("OnPlayerBan", "iii", giveid, playerid, true);
  2909.                     Ban(giveid);
  2910.                 }
  2911.             }
  2912.         }
  2913.     }
  2914.     return 1;
  2915. }
  2916.  
  2917. stock SetPlayerAdminLevel(playerid, lvl)
  2918. {
  2919.     if(!IsPlayerConnected(playerid)) return 0;
  2920.     if(!(0 <= lvl <= 5)) return -1;
  2921.     AdmSysInfo[playerid][asAdminLvl] = lvl;
  2922.     return 1;
  2923. }
  2924.  
  2925. stock GetPlayerAdminLevel(playerid)
  2926. {
  2927.     if(!IsPlayerConnected(playerid)) return 0;
  2928.     if(IsPlayerAdmin(playerid)) return 5;
  2929.     return AdmSysInfo[playerid][asAdminLvl];
  2930. }
  2931.  
  2932. stock IsPlayerAdminEx(playerid, lvl = 1) return (GetPlayerAdminLevel(playerid) >= lvl);
  2933.  
  2934. stock SetPlayerMuteTime(playerid, time)
  2935. {
  2936.     if(!IsPlayerConnected(playerid)) return 0;
  2937.     if(time < 0) return -1;
  2938.     AdmSysInfo[playerid][asMuteTime] = time;
  2939.     return 1;
  2940. }
  2941.  
  2942. stock GetPlayerMuteTime(playerid) return (IsPlayerConnected(playerid) ? AdmSysInfo[playerid][asMuteTime] : 0);
  2943.  
  2944. stock UpdateSuspectList()
  2945. {
  2946.     new c;
  2947.     for(new i, j; i < sizeof SuspectList; ++i)
  2948.     {
  2949.         if(!IsPlayerConnected(SuspectList[i]))
  2950.         {
  2951.             c++;
  2952.             for(j = i; j < sizeof(SuspectList) - 1; ++j) SuspectList[j] = SuspectList[j + 1];
  2953.             SuspectList[j] = INVALID_PLAYER_ID;
  2954.         }
  2955.     }
  2956.     return c;
  2957. }
  2958.  
  2959. stock AddPlayerInSuspectList(playerid)
  2960. {
  2961.     UpdateSuspectList();
  2962.     if(IsPlayerConnected(playerid))
  2963.     {
  2964.         new i;
  2965.         for(i = sizeof(SuspectList) - 1; i >= 0; --i)
  2966.         {
  2967.             if(SuspectList[i] == playerid) return 0;
  2968.         }
  2969.         new tmp1 = SuspectList[0], tmp2;
  2970.         for(i = 0; i < sizeof(SuspectList) - 1; ++i)
  2971.         {
  2972.             tmp2 = SuspectList[i + 1];
  2973.             SuspectList[i + 1] = tmp1;
  2974.             tmp1 = tmp2;
  2975.         }
  2976.         SuspectList[0] = playerid;
  2977.         return 1;
  2978.     }
  2979.     return 0;
  2980. }
  2981.  
  2982. stock RemovePlayerFromSuspectList(playerid)
  2983. {
  2984.     for(new i = sizeof(SuspectList) - 1; i >= 0; --i)
  2985.     {
  2986.         if(SuspectList[i] == playerid)
  2987.         {
  2988.             SuspectList[i] = INVALID_PLAYER_ID;
  2989.             break;
  2990.         }
  2991.     }
  2992.     UpdateSuspectList();
  2993.     return 1;
  2994. }
  2995.  
  2996. stock SendMessageToAdmins(lvl, color, const msg[])
  2997. {
  2998.     #if defined foreach
  2999.     foreach(new i : Player)
  3000.     #else
  3001.     for(new i = GetPlayerPoolSize(); i >= 0; --i)
  3002.     #endif
  3003.     {
  3004.         if(GetPlayerAdminLevel(i) >= lvl) SendClientMessage(i, color, msg);
  3005.     }
  3006.     return 1;
  3007. }
  3008.  
  3009. static stock admsys_IsNumeric(const string[])
  3010. {
  3011.     new length = strlen(string);
  3012.     if(length == 0) return 0;
  3013.     for(new i; i < length; i++)
  3014.     {
  3015.         if(!('0' <= string[i] <= '9' || i == 0 && (string[i] == '-' || string[i] == '+'))) return 0;
  3016.     }
  3017.     return 1;
  3018. }
  3019.  
  3020. static IsPlayerSpectating(playerid) return IsPlayerConnected(AdmSysInfo[playerid][asSpecID]);
  3021.  
  3022. static StartSpectating(playerid, specid)
  3023. {
  3024.     if(!IsPlayerConnected(playerid) || !IsPlayerConnected(specid)) return 0;
  3025.     if(playerid == specid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You can't spectate yourself");
  3026.     if(IsPlayerSpectating(specid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is in spectator mode");
  3027.     if(AdmSysInfo[playerid][asSpecID] == specid) return UpdateSpectating(playerid);
  3028.     if(!AdmSysInfo[specid][asIsSpawned] && !AdmSysInfo[specid][asIsDead])
  3029.         return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player is not spawned");
  3030.     if(!IsPlayerSpectating(playerid))
  3031.     {
  3032.         for(new i = 12; i >= 0; --i)
  3033.             GetPlayerWeaponData(playerid, i, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]);
  3034.         GetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0],
  3035.         AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]);
  3036.         AdmSysInfo[playerid][asLastSpec] = (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING);
  3037.         GetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]);
  3038.         AdmSysInfo[playerid][asLastVW] = GetPlayerVirtualWorld(playerid);
  3039.         AdmSysInfo[playerid][asLastInt] = GetPlayerInterior(playerid);
  3040.     }
  3041.     AdmSysInfo[playerid][asLastSpecID] = AdmSysInfo[playerid][asSpecID];
  3042.     TogglePlayerSpectating(playerid, 1);
  3043.     if(AdmSysInfo[specid][asIsDead]) SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Player has died");
  3044.     SetPlayerInterior(playerid, GetPlayerInterior(specid));
  3045.     SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid));
  3046.     if(IsPlayerInAnyVehicle(specid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
  3047.     else PlayerSpectatePlayer(playerid, specid);
  3048.     AdmSysInfo[playerid][asSpecID] = specid;
  3049.     UpdateSpecInfo(playerid);
  3050.     return 1;
  3051. }
  3052.  
  3053. static UpdateSpectating(playerid)
  3054. {
  3055.     if(!IsPlayerConnected(playerid)) return 0;
  3056.     if(AdmSysInfo[playerid][asSpecID] == INVALID_PLAYER_ID)
  3057.         return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in spectator mode");
  3058.     if(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID])) return StopSpectating(playerid);
  3059.     TogglePlayerSpectating(playerid, 1);
  3060.     SetPlayerInterior(playerid, GetPlayerInterior(AdmSysInfo[playerid][asSpecID]));
  3061.     SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID]));
  3062.     if(IsPlayerInAnyVehicle(AdmSysInfo[playerid][asSpecID]))
  3063.         PlayerSpectateVehicle(playerid, GetPlayerVehicleID(AdmSysInfo[playerid][asSpecID]));
  3064.     else PlayerSpectatePlayer(playerid, AdmSysInfo[playerid][asSpecID]);
  3065.     return 1;
  3066. }
  3067.  
  3068. static StopSpectating(playerid)
  3069. {
  3070.     if(!IsPlayerConnected(playerid)) return 0;
  3071.     if(AdmSysInfo[playerid][asSpecID] == INVALID_PLAYER_ID)
  3072.         return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "You are not in spectator mode");
  3073.     if(AdmSysInfo[playerid][asLastSpecID] == INVALID_PLAYER_ID || AdmSysInfo[playerid][asLastSpecID] == AdmSysInfo[playerid][asSpecID])
  3074.     {
  3075.         AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID;
  3076.         AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID;
  3077.         TogglePlayerSpectating(playerid, AdmSysInfo[playerid][asLastSpec]);
  3078.         KillTimer(AdmSysInfo[playerid][asUpdTimer]);
  3079.     }
  3080.     else
  3081.     {
  3082.         AdmSysInfo[playerid][asSpecID] = AdmSysInfo[playerid][asLastSpecID];
  3083.         AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID;
  3084.         UpdateSpectating(playerid);
  3085.     }
  3086.     return 1;
  3087. }
  3088.  
  3089. #undef ADMSYS_SEND_ACTION_MSGS_TO_ALL
  3090. #undef ADMSYS_SEND_CONNECT_MSGS_TO_ADM
  3091. #undef ADMSYS_SHOW_KILL_LIST_FOR_ADM
  3092.  
  3093. #undef ADMSYS_DEFAULT_COLOR
  3094.  
  3095. #undef ADMSYS_MAX_WARNS
  3096. #undef ADMSYS_MAX_TAB_INPUT
  3097. #undef ADMSYS_MAX_SUSPECTS_IN_TABLE
  3098. #undef ADMSYS_MAX_GIVE_PLAYERS_IN_CMD
  3099.  
  3100. #undef admsys_isnull
  3101. #undef admsys_fpublic
Add Comment
Please, Sign In to add comment