Guest User

Admin System by Nexius v1.9

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