Advertisement
elrooT

¡rAdmin! ~ 0.2!

Sep 21st, 2011
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 77.16 KB | None | 0 0
  1. #include <a_samp>
  2. #include <Dini>
  3. #include <dudb>
  4. #include <zcmd>
  5. #include <sscanf2>
  6.  
  7. #pragma tabsize 0
  8.  
  9. #undef MAX_PLAYERS
  10. #define MAX_PLAYERS     50
  11.  
  12. //===============================NEWS Y MAS=====================================
  13.  
  14. new str[128],
  15.     pname[MAX_PLAYER_NAME],
  16.     Car[MAX_PLAYERS],
  17.     Car2[MAX_PLAYERS],
  18.     cpid,
  19.     Clicked;
  20. new archivo[128];
  21.  
  22. enum pInfo
  23. {
  24.     Registrado,
  25.     Logueado,
  26.     Admin,
  27.     Baneado,
  28.     Muteado,
  29.     Congelado,
  30.     Warnings,
  31.     Reports,
  32.     MuteWarns
  33. };
  34. new aInfo[MAX_PLAYERS][pInfo];
  35.  
  36. new RandomColors[400] = {
  37. 0x4F5152D4,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0xEE82EEFF,0xFF1493FF,
  38. 0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0xF4A460FF,
  39. 0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,
  40. 0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,0x3D0A4FFF,
  41. 0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,
  42. 0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
  43. 0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
  44. 0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,
  45. 0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,
  46. 0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,
  47. 0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
  48. 0xD8C762FF,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,
  49. 0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,
  50. 0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,
  51. 0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,
  52. 0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
  53. 0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,
  54. 0x18F71FFF,0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,
  55. 0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,
  56. 0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,
  57. 0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,
  58. 0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,
  59. 0xD8C762FF,0xD8C762FF,0x4F5152D4,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,
  60. 0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0xF4A460FF,
  61. 0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,
  62. 0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,0x3D0A4FFF,
  63. 0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,
  64. 0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
  65. 0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
  66. 0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,
  67. 0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,
  68. 0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,
  69. 0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
  70. 0xD8C762FF,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,
  71. 0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,
  72. 0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,
  73. 0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,
  74. 0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
  75. 0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,
  76. 0x18F71FFF,0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,
  77. 0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,
  78. 0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,
  79. 0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,
  80. 0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,
  81. 0xD8C762FF,0xD8C762FF,0xEE82EEFF,0xFF1493FF
  82. };
  83.  
  84. //===============================DEFINES========================================
  85.  
  86. #define Users "rAdmin/Users/%s.ini"
  87. #define Logs "rAdmin/Logs/%s.ini"
  88. #define Cfg "rAdmin/Cfg/%s.ini"
  89. #define MaxLevel        5                  // Cambia este valor por el valor que desees que sea el nivel
  90.                                            // de administracion maximo ~
  91.                                            
  92. #define MAX_WARNINGS    3                  // Cambia este valor por el valor que desees que sea la maxima cantidad
  93.                                            // de Warnings antes de que el usuario sea kickeado. ~
  94.                                            
  95. #define MAX_MUTEWARNS   5                  // Cambia este valor por el valor que desees que sea la maxima cantidad
  96.                                            // de MuteWarnings antes de que el usuario sea kickeado. ~
  97.                                            
  98. #define MAX_REPORTS     3                  // Cambia este valor para cambiar la cantidad maxima de reportes
  99.                                            // que puede tener cada usuario antes de ser kickeado. ~
  100.  
  101. #define Click 100                          // DialogID del dialogo de OnPlayerClickPlayer ~
  102.  
  103. #define COLOR_KANE          0xED5A00FF
  104. #define COLOR_GREY          0xAFAFAFAA
  105. #define COLOR_RED           0xFF0000AA
  106. #define COLOR_YELLOW        0xFFFF00AA
  107. #define COLOR_GREEN         0x66CC99AA
  108. #define COLOR_BLUE          0x0000BBAA
  109. #define COLOR_LIGHTBLUE     0x91C8FF
  110. #define COLOR_MEDBLUE       0x0091FFFF
  111. #define COLOR_LIGHTGREEN    0x38FF06FF
  112. #define COLOR_ORANGE        0xF97804FF
  113.  
  114. //================================FORWARDS======================================
  115.  
  116. forward SpawnKick(playerid);
  117. forward MessageToAdmins(color,const string[]);
  118. forward SalvarDatos(playerid);
  119. forward VehicleOccupied(vehicleid);
  120. forward GMR();
  121. forward SaveIn(filename[],text[]);
  122. forward Carpetas();
  123.  
  124. //==============================================================================
  125.  
  126.  
  127. public OnFilterScriptInit()
  128. {
  129.     print("----------------------------------------");
  130.     print("---Sistema de Administracion by rooT.---");
  131.     print("-----------------Loaded-----------------");
  132.     print("----------------------------------------");
  133.     SetTimer("Carpetas", 500, 0);
  134.     return 1;
  135. }
  136.  
  137. public OnFilterScriptExit()
  138. {
  139.     print("----------------------------------------");
  140.     print("---Sistema de Administracion by rooT.---");
  141.     print("----------------Unloaded----------------");
  142.     print("----------------------------------------");
  143.     return 1;
  144. }
  145.  
  146. public OnPlayerConnect(playerid)
  147. {
  148.     aInfo[playerid][Registrado] = 0;
  149.     aInfo[playerid][Logueado] = 0;
  150.     aInfo[playerid][Admin] = 0;
  151.     aInfo[playerid][Baneado] = 0;
  152.     aInfo[playerid][Muteado] = 0;
  153.     aInfo[playerid][Congelado] = 0;
  154.     aInfo[playerid][Warnings] = 0;
  155.     aInfo[playerid][Reports] = 0;
  156.     aInfo[playerid][MuteWarns] = 0;
  157.     SetPlayerColor(playerid, random(RandomColors[200]));
  158.    
  159.     GetPlayerName(playerid, pname, sizeof(pname));
  160.     format(archivo, sizeof(archivo), Users, udb_encode(pname));
  161.    
  162.     if(!dini_Exists(archivo))
  163.     {
  164.         format(str, sizeof(str), "Bienvenido %s! Tu cuenta no esta registrada! Utiliza /registrar para registrarla!", pname);
  165.         SendClientMessage(playerid, COLOR_YELLOW, str);
  166.         aInfo[playerid][Registrado] = 0;
  167.     }
  168.     else
  169.     {
  170.         if(dini_Int(archivo, "Baneado") == 1)
  171.         {
  172.             SendClientMessage(playerid, COLOR_RED, "Estas baneado en el servidor!");
  173.             return Kick(playerid);
  174.         }
  175.        
  176.         format(str, sizeof(str), "Bienvenido %s! Utiliza /login para ingresar a tu cuenta", pname);
  177.         SendClientMessage(playerid, COLOR_LIGHTGREEN, str);
  178.         aInfo[playerid][Registrado] = 1;
  179.        
  180.     }
  181.     format(str, sizeof(str), "%s Ingreso al servidor!", pname);
  182.     SendClientMessageToAll(COLOR_LIGHTGREEN, str);
  183.     return 1;
  184. }
  185.  
  186.  
  187. public OnPlayerSpawn(playerid)
  188. {
  189.     if(aInfo[playerid][Registrado] == 0)
  190.     {
  191.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "Tienes 60 segundos para registrarte o seras kickeado!");
  192.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "Utiliza /registrar para hacerlo");
  193.         SetTimerEx("SpawnKick", 60000, 0, "i", playerid);
  194.         TogglePlayerControllable(playerid, 0);
  195.         return 0;
  196.     }
  197.  
  198.     if(aInfo[playerid][Logueado] == 0)
  199.     {
  200.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "Tienes 60 segundos para loguear o seras kickeado!");
  201.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "Utiliza /login para hacerlo");
  202.         SetTimerEx("SpawnKick", 60000, 0, "i", playerid);
  203.         TogglePlayerControllable(playerid, 0);
  204.         return 0;
  205.     }
  206.     return 1;
  207. }
  208.  
  209. public OnPlayerDisconnect(playerid, reason)
  210. {
  211.     GetPlayerName(playerid, pname, sizeof(pname));
  212.     switch(reason)
  213.     {
  214.         case 0: format(str, sizeof(str), "%s dejo el servidor. (Crash)", pname);
  215.         case 1: format(str, sizeof(str), "%s dejo el servidor. (Salio)", pname);
  216.         case 2: format(str, sizeof(str), "%s dejo el servidor. (Kickeado/Baneado)", pname);
  217.     }
  218.     SendClientMessageToAll(COLOR_GREEN, str);
  219.    
  220.     format(archivo, sizeof(archivo), Users, udb_encode(pname));
  221.     if(dini_Exists(archivo))
  222.     {
  223.         dini_IntSet(archivo, "Admin", aInfo[playerid][Admin]);
  224.         dini_IntSet(archivo, "Baneado", aInfo[playerid][Baneado]);
  225.         dini_IntSet(archivo, "Muteado", aInfo[playerid][Muteado]);
  226.         dini_IntSet(archivo, "Congelado", aInfo[playerid][Congelado]);
  227.     }
  228.    
  229.     aInfo[playerid][Registrado] = 0;
  230.     aInfo[playerid][Logueado] = 0;
  231.     aInfo[playerid][Admin] = 0;
  232.     aInfo[playerid][Baneado] = 0;
  233.     aInfo[playerid][Muteado] = 0;
  234.     aInfo[playerid][Congelado] = 0;
  235.     aInfo[playerid][Warnings] = 0;
  236.     aInfo[playerid][Reports] = 0;
  237.     aInfo[playerid][MuteWarns] = 0;
  238.     return 1;
  239. }
  240.  
  241. /*==============================================================================
  242. ================================================================================
  243. ===========================rAdmin Player Commands!==============================
  244. ================================================================================
  245. ==============================================================================*/
  246.  
  247. /*
  248.   //==========================================================================\\
  249.  //============================================================================\\
  250. ||==============================Registrar || Login==============================||
  251.  \\============================================================================//
  252.   \\==========================================================================//
  253. */
  254.  
  255. CMD:registrar(playerid, params[])
  256. {
  257.     if(aInfo[playerid][Registrado] == 1) return SendClientMessage(playerid, COLOR_YELLOW, "Esta cuenta esta registrada! Utiliza /login para ingresar");
  258.     GetPlayerName(playerid, pname, sizeof(pname));
  259.     format(archivo, sizeof(archivo), Users, udb_encode(pname));
  260.     if(strlen(params) > 4 && strlen(params) < 24)
  261.     {
  262.         dini_Create(archivo);
  263.         dini_IntSet(archivo, "pass", udb_hash(params));
  264.         dini_IntSet(archivo, "Admin", 0);
  265.         dini_IntSet(archivo, "Baneado", 0);
  266.         dini_IntSet(archivo, "Muteado", 0);
  267.         dini_IntSet(archivo, "Congelado", 0);
  268.         dini_IntSet(archivo, "Vehicle", 0);
  269.        
  270.         format(str, sizeof(str), "[rAdmin] Registraste el nombre %s bajo la contraseña %s. Fuiste logueado automaticamente!", pname, params);
  271.         SendClientMessage(playerid, COLOR_LIGHTGREEN, str);
  272.        
  273.         aInfo[playerid][Logueado] = 1;
  274.         aInfo[playerid][Registrado] = 1;
  275.         TogglePlayerControllable(playerid, 1);
  276.     }
  277.     else
  278.     {
  279.         SendClientMessage(playerid, COLOR_RED, "Uso: /registrar <contraseña>");
  280.         return SendClientMessage(playerid, COLOR_ORANGE, "Recuerda que tu contraseña debe tener entre 4 & 24 caracteres!");
  281.     }
  282.     return 1;
  283. }
  284.  
  285. CMD:login(playerid, params[])
  286. {
  287.     if(aInfo[playerid][Registrado] == 0) return SendClientMessage(playerid, COLOR_YELLOW, "Esta cuenta no esta registrada! Utiliza /registrar para registrarla!");
  288.     if(aInfo[playerid][Logueado] == 1) return SendClientMessage(playerid, COLOR_YELLOW, "Ya estas logueado!");
  289.     GetPlayerName(playerid, pname, sizeof(pname));
  290.     format(archivo, sizeof(archivo), Users, udb_encode(pname));
  291.  
  292.     if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Uso: /login <password>");
  293.    
  294.     if(udb_hash(params) != dini_Int(archivo, "pass"))
  295.     {
  296.         format(str, sizeof(str), "La contraseña que ingresaste es incorrecta!");
  297.         SendClientMessage(playerid, COLOR_RED, str);
  298.     }
  299.     else
  300.     {
  301.         aInfo[playerid][Admin] = dini_Int(archivo, "Admin");
  302.         aInfo[playerid][Baneado] = dini_Int(archivo, "Baneado");
  303.         aInfo[playerid][Muteado] = dini_Int(archivo, "Muteado");
  304.         aInfo[playerid][Congelado] = dini_Int(archivo, "Congelado");
  305.         aInfo[playerid][Logueado] = 1;
  306.        
  307.         if(aInfo[playerid][Admin] > 0)
  308.         {
  309.             format(str, sizeof(str), "Bienvenido %s! Admin Level: %d.! Utiliza /acmds para ver tus comandos de administracion!", pname, aInfo[playerid][Admin]);
  310.             SendClientMessage(playerid, COLOR_LIGHTGREEN, str);
  311.             SendClientMessage(playerid, COLOR_RED, "[rAdmin] Logueado satisfactoriamente!");
  312.         }
  313.         else
  314.         {
  315.             format(str, sizeof(str), "Bienvenido %s! Utiliza /comandos para ver los comandos disponibles!", pname);
  316.             SendClientMessage(playerid, COLOR_YELLOW, str);
  317.             SendClientMessage(playerid, COLOR_RED, "[rAdmin] Logueado satisfactoriamente!");
  318.         }
  319.         TogglePlayerControllable(playerid, 1);
  320.     }
  321.     return 1;
  322. }
  323.  
  324. /*
  325.   //==========================================================================\\
  326.  //============================================================================\\
  327. ||============================CambiarPass || Reportar===========================||
  328.  \\============================================================================//
  329.   \\==========================================================================//
  330. */
  331.  
  332. CMD:cambiarpass(playerid, params[])
  333. {
  334.     if(aInfo[playerid][Registrado] == 0 || aInfo[playerid][Logueado] == 0) return SendClientMessage(playerid, COLOR_YELLOW, "Debes loguearte/registrarte antes de cambiar tu password!");
  335.     GetPlayerName(playerid, pname, sizeof(pname));
  336.     format(archivo, sizeof(archivo), Users, udb_encode(pname));
  337.    
  338.     if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Uso: /cambiarpass <password>");
  339.    
  340.     if(strlen(params) >= 4 && strlen(params) <= 24)
  341.     {
  342.         dini_IntSet(archivo, "pass", udb_hash(params));
  343.         format(str, sizeof(str), "[rAdmin] Cambiaste tu contraseña a %s. No la olvides!", pname, params);
  344.         SendClientMessage(playerid, COLOR_LIGHTGREEN, str);
  345.     }
  346.     else
  347.     {
  348.         SendClientMessage(playerid, COLOR_RED, "Uso: /registrar <contraseña>");
  349.         return SendClientMessage(playerid, COLOR_ORANGE, "Recuerda que tu contraseña debe tener entre 4 & 24 caracteres!");
  350.     }
  351.    
  352.    
  353.     return 1;
  354. }
  355.  
  356. CMD:reportar(playerid, params[])
  357. {
  358.     new playerid2, pname2[MAX_PLAYER_NAME], reason[128];
  359.     if(!sscanf(params, "rs[128]", playerid2, reason))
  360.     {
  361.         if(aInfo[playerid2][Admin] != MaxLevel)
  362.         {
  363.             if(playerid2 == playerid) return SendClientMessage(playerid, COLOR_GREEN, "No te puedes reportar:D");
  364.             GetPlayerName(playerid, pname, sizeof(pname));
  365.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  366.  
  367.             format(str, sizeof(str), "El jugador %s [ID: %d] ha reportado a %s [ID: %d] ~ Razon: %s", pname, playerid, pname2, playerid2, reason);
  368.             MessageToAdmins(COLOR_YELLOW, str);
  369.             aInfo[playerid2][Reports] ++;
  370.            
  371.             if(aInfo[playerid2][Reports] >= MAX_REPORTS)
  372.             {
  373.                 format(str, sizeof(str), "El jugador %s [ID: %d] fue kickeado por acumular %d reportes.", pname2, playerid2, MAX_REPORTS);
  374.                 SendClientMessageToAll(COLOR_ORANGE, str);
  375.                 Kick(playerid2);
  376.             }
  377.         }
  378.         else return SendClientMessage(playerid, COLOR_RED, "Este usuario no puede ser reportado!");
  379.     }
  380.     else return SendClientMessage(playerid, COLOR_RED, "Uso: /reportar <playerid> <razon>");
  381.     return 1;
  382. }
  383.  
  384. /*==============================================================================
  385. ================================================================================
  386. ===========================rAdmin Admin Commands!===============================
  387. ================================================================================
  388. ==============================================================================*/
  389.  
  390.  
  391.  
  392. /*==============================================================================
  393. ================================================================================
  394. ============================rAdmin Admin Nivel 1================================
  395. ================================================================================
  396. ==============================================================================*/
  397.  
  398. /*
  399.   //==========================================================================\\
  400.  //============================================================================\\
  401. ||====================================aCMDS!====================================||
  402. ||====================================gInfo!====================================||
  403.  \\============================================================================//
  404.   \\==========================================================================//
  405. */
  406.  
  407. CMD:acmds(playerid, params[])
  408. {
  409.     if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins!");
  410.     if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Uso: /acmds <nivel>");
  411.    
  412.    
  413.     if(strval(params) == 1)
  414.     {
  415.         if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins Nivel 1");
  416.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  417.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 1: /kick || /warn || /slap || /asay");
  418.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 1: /setskin || /saveskin || /useskin");
  419.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 1: /ginfo || /acmds");
  420.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  421.     }
  422.     else if(strval(params) == 2)
  423.     {
  424.         if(aInfo[playerid][Admin] < 2) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins Nivel 2");
  425.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  426.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 2: /mute || /unmute || /freeze");
  427.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 2: /unfreeze || /ann || /abike");
  428.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 2: /acar || /gmiauto || /miauto");
  429.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  430.     }
  431.     else if(strval(params) == 3)
  432.     {
  433.         if(aInfo[playerid][Admin] < 3) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins Nivel 3");
  434.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  435.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 3: /sethealth || /setarmour");
  436.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 3: /spawn || /akill");
  437.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  438.     }
  439.     else if(strval(params) == 4)
  440.     {
  441.         if(aInfo[playerid][Admin] < 4) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins Nivel 4");
  442.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  443.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 4: /ban || /clearchat || /rcars");
  444.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  445.     }
  446.     else if(strval(params) == 5)
  447.     {
  448.         if(aInfo[playerid][Admin] < 5) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins Nivel 5");
  449.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  450.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 5: /setlevel || /gmx || /passwd");
  451.         SendClientMessage(playerid, COLOR_YELLOW, "|- Level 5: /spasswd");
  452.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  453.     }
  454.     else if(strval(params) > MaxLevel) return SendClientMessage(playerid, COLOR_RED, "Ese nivel de administracion no existe!");
  455.     GetPlayerName(playerid, pname, sizeof(pname));
  456.     format(str, sizeof(str), "El administrador %s utilizo el comando: ginfo", pname);
  457.     SaveIn("AdminLog", str);
  458.     return 1;
  459. }
  460.  
  461. /*
  462.   //==========================================================================\\
  463.  //============================================================================\\
  464. ||====================================gInfo!====================================||
  465.  \\============================================================================//
  466.   \\==========================================================================//
  467. */
  468.  
  469. CMD:ginfo(playerid, params[])
  470. {
  471.     if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins!");
  472.     new playerid2;
  473.        
  474.     if(!sscanf(params, "r", playerid2))
  475.     {
  476.         new pname2[MAX_PLAYER_NAME],
  477.             pIP[16],
  478.             Float:vida,
  479.             Float:chaleco;
  480.         GetPlayerName(playerid2, pname2, sizeof(pname2));
  481.         GetPlayerIp(playerid2, pIP, sizeof(pIP));
  482.         GetPlayerHealth(playerid2, vida);
  483.         GetPlayerArmour(playerid2, chaleco);
  484.         format(archivo, sizeof(archivo), Users, udb_encode(pname));
  485.        
  486.         if(aInfo[playerid][Admin] == 1)
  487.         {
  488.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  489.             format(str, sizeof(str), "Jugador: %s || Registrado: %d || Logueado: %d", pname2, aInfo[playerid2][Registrado], aInfo[playerid2][Logueado]);
  490.             SendClientMessage(playerid, COLOR_YELLOW, str);
  491.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  492.         }
  493.         else if(aInfo[playerid][Admin] == 2)
  494.         {
  495.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  496.             format(str, sizeof(str), "Jugador: %s || Registrado: %d || Logueado: %d", pname2, aInfo[playerid2][Registrado], aInfo[playerid2][Logueado]);
  497.             SendClientMessage(playerid, COLOR_YELLOW, str);
  498.  
  499.             format(str, sizeof(str), "IP: %s || Admin Level: %d || Muteado: %d || Congelado: %d", pIP, aInfo[playerid2][Admin], aInfo[playerid2][Muteado], aInfo[playerid2][Congelado]);
  500.             SendClientMessage(playerid, COLOR_YELLOW, str);
  501.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  502.         }
  503.         else if(aInfo[playerid][Admin] == 3)
  504.         {
  505.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  506.             format(str, sizeof(str), "Jugador: %s || Registrado: %d || Logueado: %d", pname2, aInfo[playerid2][Registrado], aInfo[playerid2][Logueado]);
  507.             SendClientMessage(playerid, COLOR_YELLOW, str);
  508.  
  509.             format(str, sizeof(str), "IP: %s || Admin Level: %d || Muteado: %d || Congelado: %d", pIP, aInfo[playerid2][Admin], aInfo[playerid2][Muteado], aInfo[playerid2][Congelado]);
  510.             SendClientMessage(playerid, COLOR_YELLOW, str);
  511.            
  512.             format(str, sizeof(str), "Interior: %d || VirtualWorld: %d || Vida: %d || Chaleco: %d", GetPlayerInterior(playerid2), GetPlayerVirtualWorld(playerid2), floatround(vida), floatround(chaleco));
  513.             SendClientMessage(playerid, COLOR_YELLOW, str);
  514.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  515.         }
  516.         else if(aInfo[playerid][Admin] == 4)
  517.         {
  518.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  519.             format(str, sizeof(str), "Jugador: %s || Registrado: %d || Logueado: %d", pname2, aInfo[playerid2][Registrado], aInfo[playerid2][Logueado]);
  520.             SendClientMessage(playerid, COLOR_YELLOW, str);
  521.  
  522.             format(str, sizeof(str), "IP: %s || Admin Level: %d || Muteado: %d || Congelado: %d", pIP, aInfo[playerid2][Admin], aInfo[playerid2][Muteado], aInfo[playerid2][Congelado]);
  523.             SendClientMessage(playerid, COLOR_YELLOW, str);
  524.  
  525.             format(str, sizeof(str), "Interior: %d || VirtualWorld: %d || Vida: %d || Chaleco: %d", GetPlayerInterior(playerid2), GetPlayerVirtualWorld(playerid2), floatround(vida), floatround(chaleco));
  526.             SendClientMessage(playerid, COLOR_YELLOW, str);
  527.            
  528.             format(str, sizeof(str), "Warnings: %d || Reportes: %d || Skin: %d || VehicleSaved: %d", aInfo[playerid2][Warnings], aInfo[playerid2][Reports], GetPlayerSkin(playerid2), dini_Int(archivo, "Vehicle"));
  529.             SendClientMessage(playerid, COLOR_YELLOW, str);
  530.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  531.         }
  532.         else if(aInfo[playerid][Admin] == 5)
  533.         {
  534.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  535.             format(str, sizeof(str), "Jugador: %s || Registrado: %d || Logueado: %d", pname2, aInfo[playerid2][Registrado], aInfo[playerid2][Logueado]);
  536.             SendClientMessage(playerid, COLOR_YELLOW, str);
  537.  
  538.             format(str, sizeof(str), "IP: %s || Admin Level: %d || Muteado: %d || Congelado: %d", pIP, aInfo[playerid2][Admin], aInfo[playerid2][Muteado], aInfo[playerid2][Congelado]);
  539.             SendClientMessage(playerid, COLOR_YELLOW, str);
  540.  
  541.             format(str, sizeof(str), "Interior: %d || VirtualWorld: %d || Vida: %d || Chaleco: %d", GetPlayerInterior(playerid2), GetPlayerVirtualWorld(playerid2), floatround(vida), floatround(chaleco));
  542.             SendClientMessage(playerid, COLOR_YELLOW, str);
  543.  
  544.             format(str, sizeof(str), "Warnings: %d || Reportes: %d || Skin: %d || VehicleSaved: %d", aInfo[playerid2][Warnings], aInfo[playerid2][Reports], GetPlayerSkin(playerid2), dini_Int(archivo, "Vehicle"));
  545.             SendClientMessage(playerid, COLOR_YELLOW, str);
  546.            
  547.             format(str, sizeof(str), "Rcon Login: %d", IsPlayerAdmin(playerid2));
  548.             SendClientMessage(playerid, COLOR_YELLOW, str);
  549.             SendClientMessage(playerid, COLOR_LIGHTGREEN, "|===========================================|");
  550.         }
  551.     }
  552.     else return SendClientMessage(playerid, COLOR_RED, "Uso: /ginfo <playerid>");
  553.     return 1;
  554. }
  555.  
  556. /*
  557.   //==========================================================================\\
  558.  //============================================================================\\
  559. ||==============================Kick, Warn, Slap!===============================||
  560.  \\============================================================================//
  561.   \\==========================================================================//
  562. */
  563.  
  564. CMD:kick(playerid, params[])
  565. {
  566.     new playerid2, pname2[MAX_PLAYER_NAME], reason[128];
  567.     if(aInfo[playerid][Admin] >= 1)
  568.     {
  569.         if(!sscanf(params, "rs[128]", playerid2, reason))
  570.         {
  571.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  572.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  573.             GetPlayerName(playerid, pname, sizeof(pname));
  574.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  575.  
  576.             format(str, sizeof(str), "El jugador %s [ID: %d] fue kickeado por el administrador %s ~ Razon: %s", pname2,  playerid2, pname, reason);
  577.             SendClientMessageToAll(COLOR_YELLOW, str);
  578.             Kick(playerid2);
  579.             format(str, sizeof(str), "El jugador %s fue kickeado por %s, razon: %s", pname2, pname, reason);
  580.             SaveIn("KickLog", str);
  581.            
  582.             format(str, sizeof(str), "El administrador %s utilizo el comando: kick", pname);
  583.             SaveIn("AdminLog", str);
  584.            
  585.            
  586.         }
  587.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /kick <playerid> <razon>");
  588.     }
  589.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  590.     return 1;
  591. }
  592.  
  593. CMD:warn(playerid, params[])
  594. {
  595.     new playerid2, pname2[MAX_PLAYER_NAME], reason[128], string[128];
  596.     if(aInfo[playerid][Admin] >= 1)
  597.     {
  598.         if(!sscanf(params, "rs[128]", playerid2, reason))
  599.         {
  600.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  601.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  602.             GetPlayerName(playerid, pname, sizeof(pname));
  603.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  604.             format(str, sizeof(str), "El administrador %s utilizo el comando: warn", pname);
  605.             SaveIn("AdminLog", str);
  606.  
  607.             aInfo[playerid2][Warnings]++;
  608.            
  609.             if(aInfo[playerid2][Warnings] < MAX_WARNINGS)
  610.             {
  611.                 format(string, sizeof(string), "El usuario %s [ID: %d] fue warneado por el Administrador %s ~ Razon: %s (Warnings: %d/%d) -|", pname2, playerid2, pname, reason, aInfo[playerid2][Warnings], MAX_WARNINGS);
  612.                 return SendClientMessageToAll(COLOR_YELLOW, string);
  613.             }
  614.             else
  615.             {
  616.                 format(string, sizeof(string), "El usuario %s [ID: %d] fue kickeado por el Administrador %s ~ Razon: %s (Warnings: %d/%d)", pname2, playerid2, pname, reason, aInfo[playerid2][Warnings], MAX_WARNINGS);
  617.                 SendClientMessageToAll(COLOR_YELLOW, string);
  618.                 Kick(playerid2);
  619.                 GetPlayerName(playerid2, pname2, sizeof(pname2));
  620.                 format(str, sizeof(str), "El usuario %s fue kickeado por tener %d warns", pname2, MAX_WARNINGS);
  621.                 SaveIn("KickLog", str);
  622.                 return aInfo[playerid2][Warnings] = 0;
  623.             }
  624.         }
  625.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /warn <playerid> <razon>");
  626.     }
  627.     else
  628.     {
  629.         SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  630.     }
  631.     return 1;
  632. }
  633.  
  634. CMD:slap(playerid, params[])
  635. {
  636.     new playerid2;
  637.     if(aInfo[playerid][Admin] >= 1)
  638.     {
  639.         if(!sscanf(params, "rs[128]", playerid2))
  640.         {
  641.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  642.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  643.             GetPlayerName(playerid, pname, sizeof(pname));
  644.             new Float:X[MAX_PLAYERS], Float:Y[MAX_PLAYERS], Float:Z[MAX_PLAYERS];
  645.  
  646.             GetPlayerPos(playerid2, X[playerid2], Y[playerid2], Z[playerid2]);
  647.             SetPlayerPos(playerid2, X[playerid2], Y[playerid2], Z[playerid2]+10);
  648.             new Float:health;
  649.             GetPlayerHealth(playerid2, health);
  650.             SetPlayerHealth(playerid2, health-10);
  651.             format(str, sizeof(str), "El Administrador %s [ID: %d] te ha slapeado!", pname, playerid);
  652.             SendClientMessage(playerid2, COLOR_BLUE, str);
  653.             GetPlayerName(playerid, pname, sizeof(pname));
  654.             format(str, sizeof(str), "El administrador %s utilizo el comando: slap", pname);
  655.             SaveIn("AdminLog", str);
  656.            
  657.         }
  658.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /slap <playerid>");
  659.     }
  660.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  661.     return 1;
  662. }
  663.  
  664. /*
  665.   //==========================================================================\\
  666.  //============================================================================\\
  667. ||=====================================Asay=====================================||
  668.  \\============================================================================//
  669.   \\==========================================================================//
  670. */
  671.  
  672. CMD:asay(playerid, params[])
  673. {
  674.     if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Uso: /asay <texto>");
  675.     if(aInfo[playerid][Admin] >= 1)
  676.     {
  677.         GetPlayerName(playerid, pname, sizeof(pname));
  678.         format(str, sizeof(str), "|- Admin %s: %s", pname, params);
  679.         SendClientMessageToAll(COLOR_YELLOW, str);
  680.         GetPlayerName(playerid, pname, sizeof(pname));
  681.         format(str, sizeof(str), "El administrador %s utilizo el comando: asay", pname);
  682.         SaveIn("AdminLog", str);
  683.        
  684.     }
  685.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  686.     return 1;
  687. }
  688.  
  689. /*
  690.   //==========================================================================\\
  691.  //============================================================================\\
  692. ||===================================SetSkin====================================||
  693.  \\============================================================================//
  694.   \\==========================================================================//
  695. */
  696.  
  697. CMD:setskin(playerid, params[])
  698. {
  699.     new playerid2, pname2[MAX_PLAYER_NAME], skin;
  700.     if(aInfo[playerid][Admin] >= 1)
  701.     {
  702.         if(!sscanf(params, "rd", playerid2, skin))
  703.         {
  704.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  705.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  706.             GetPlayerName(playerid, pname, sizeof(pname));
  707.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  708.  
  709.             format(str, sizeof(str), "El administrador %s [ID: %d] cambio tu skin al %d", pname, playerid, skin);
  710.             SendClientMessage(playerid2, COLOR_YELLOW, str);
  711.             SetPlayerSkin(playerid2, skin);
  712.             GetPlayerName(playerid, pname, sizeof(pname));
  713.             format(str, sizeof(str), "El administrador %s utilizo el comando: setskin", pname);
  714.             SaveIn("AdminLog", str);
  715.  
  716.         }
  717.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /setskin <playerid> <skin>");
  718.     }
  719.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  720.     return 1;
  721. }
  722.  
  723. /*
  724.   //==========================================================================\\
  725.  //============================================================================\\
  726. ||===================================UseSkin====================================||
  727.  \\============================================================================//
  728.   \\==========================================================================//
  729. */
  730.  
  731. CMD:useskin(playerid, params[])
  732. {
  733.     if(aInfo[playerid][Admin] >= 1)
  734.     {
  735.         GetPlayerName(playerid, pname, sizeof(pname));
  736.         format(archivo, sizeof(archivo), Users, udb_encode(pname));
  737.        
  738.         SendClientMessage(playerid, COLOR_YELLOW, "Ahora estas usando tu skin guardado!");
  739.         SetPlayerSkin(playerid, dini_Int(archivo, "SavedSkin"));
  740.         GetPlayerName(playerid, pname, sizeof(pname));
  741.         format(str, sizeof(str), "El administrador %s utilizo el comando: useskin", pname);
  742.         SaveIn("AdminLog", str);
  743.     }
  744.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  745.     return 1;
  746. }
  747.  
  748. /*
  749.   //==========================================================================\\
  750.  //============================================================================\\
  751. ||==================================SaveSkin====================================||
  752.  \\============================================================================//
  753.   \\==========================================================================//
  754. */
  755.  
  756. CMD:saveskin(playerid, params[])
  757. {
  758.     if(aInfo[playerid][Admin] >= 1)
  759.     {
  760.         new skin;
  761.         if(!sscanf(params, "d", skin))
  762.         {
  763.             GetPlayerName(playerid, pname, sizeof(pname));
  764.             format(archivo, sizeof(archivo), Users, udb_encode(pname));
  765.            
  766.             format(str, sizeof(str), "Guardaste el Skin %d!", skin);
  767.             SendClientMessage(playerid, COLOR_YELLOW, str);
  768.            
  769.             dini_IntSet(archivo, "SavedSkin", skin);
  770.             SetPlayerSkin(playerid, dini_Int(archivo, "SavedSkin"));
  771.             GetPlayerName(playerid, pname, sizeof(pname));
  772.             format(str, sizeof(str), "El administrador %s utilizo el comando: saveskin", pname);
  773.             SaveIn("AdminLog", str);
  774.         }
  775.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /saveskin <skinid>");
  776.     }
  777.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  778.     return 1;
  779. }
  780.  
  781. /*==============================================================================
  782. ================================================================================
  783. ============================rAdmin Admin Nivel 2================================
  784. ================================================================================
  785. ==============================================================================*/
  786.  
  787.  
  788. /*
  789.   //==========================================================================\\
  790.  //============================================================================\\
  791. ||================================Mute || Unmute!===============================||
  792.  \\============================================================================//
  793.   \\==========================================================================//
  794. */
  795.  
  796. CMD:mute(playerid, params[])
  797. {
  798.     new playerid2, pname2[MAX_PLAYER_NAME];
  799.     if(aInfo[playerid][Admin] >= 2)
  800.     {
  801.         if(!sscanf(params, "r", playerid2))
  802.         {
  803.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  804.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  805.             GetPlayerName(playerid, pname, sizeof(pname));
  806.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  807.            
  808.             format(str, sizeof(str), "El jugador %s [ID: %d] fue muteado por el administrador %s.", pname2,  playerid2, pname);
  809.             if(aInfo[playerid2][Muteado] == 1) return SendClientMessage(playerid, COLOR_MEDBLUE, "Este jugador ya esta Silenciado!");
  810.             SendClientMessageToAll(COLOR_YELLOW, str);
  811.             aInfo[playerid2][Muteado] = 1;
  812.             GetPlayerName(playerid, pname, sizeof(pname));
  813.             format(str, sizeof(str), "El administrador %s utilizo el comando: mute", pname);
  814.             SaveIn("AdminLog", str);
  815.            
  816.         }
  817.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /mute <playerid> <razon>");
  818.     }
  819.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  820.     return 1;
  821. }
  822.  
  823. CMD:unmute(playerid, params[])
  824. {
  825.     new playerid2, pname2[MAX_PLAYER_NAME];
  826.     if(aInfo[playerid][Admin] >= 2)
  827.     {
  828.         if(!sscanf(params, "r", playerid2))
  829.         {
  830.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  831.             GetPlayerName(playerid, pname, sizeof(pname));
  832.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  833.  
  834.             format(str, sizeof(str), "El jugador %s [ID: %d] fue desmuteado por el administrador %s.", pname2,  playerid2, pname);
  835.             if(aInfo[playerid2][Muteado] == 0) return SendClientMessage(playerid, COLOR_MEDBLUE, "Este jugador no esta Silenciado!");
  836.             SendClientMessageToAll(COLOR_YELLOW, str);
  837.             aInfo[playerid2][Muteado] = 0;
  838.             GetPlayerName(playerid, pname, sizeof(pname));
  839.             format(str, sizeof(str), "El administrador %s utilizo el comando: unmute", pname);
  840.             SaveIn("AdminLog", str);
  841.            
  842.         }
  843.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /unmute <playerid> <razon>");
  844.     }
  845.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  846.     return 1;
  847. }
  848.  
  849. /*
  850.   //==========================================================================\\
  851.  //============================================================================\\
  852. ||=================================Abike || Acar================================||
  853.  \\============================================================================//
  854.   \\==========================================================================//
  855. */
  856.  
  857. CMD:abike(playerid, params[])
  858. {
  859.     if(aInfo[playerid][Admin] >= 2)
  860.     {
  861.         if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Ya estas en un vehiculo!");
  862.         new Float:x, Float:y, Float:z, Float:a;
  863.         GetPlayerPos(playerid, x, y, z);
  864.         GetPlayerFacingAngle(playerid, a);
  865.         if(Car2[playerid] == 1) return DestroyVehicle(Car[playerid]);
  866.         Car2[playerid] = 1;
  867.         Car[playerid] = CreateVehicle(522, x, y, z+1, a, 0, 126, 600000);
  868.         PutPlayerInVehicle(playerid, Car[playerid], 0);
  869.         GetPlayerName(playerid, pname, sizeof(pname));
  870.         format(str, sizeof(str), "El administrador %s utilizo el comando: abike", pname);
  871.         SaveIn("AdminLog", str);
  872.        
  873.     }
  874.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins.");
  875.     return 1;
  876. }
  877.  
  878. CMD:acar(playerid, params[])
  879. {
  880.     if(aInfo[playerid][Admin] >= 2)
  881.     {
  882.         if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Ya estas en un vehiculo!");
  883.         new Float:x, Float:y, Float:z, Float:a;
  884.         GetPlayerPos(playerid, x, y, z);
  885.         GetPlayerFacingAngle(playerid, a);
  886.         if(Car2[playerid] == 1) return DestroyVehicle(Car[playerid]);
  887.         Car2[playerid] = 1;
  888.         Car[playerid] = CreateVehicle(541, x, y, z+1, a, 0, 126, 600000);
  889.         PutPlayerInVehicle(playerid, Car[playerid], 0);
  890.         GetPlayerName(playerid, pname, sizeof(pname));
  891.         format(str, sizeof(str), "El administrador %s utilizo el comando: acar", pname);
  892.         SaveIn("AdminLog", str);
  893.        
  894.     }
  895.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins.");
  896.     return 1;
  897. }
  898.  
  899. CMD:miauto(playerid, params[])
  900. {
  901.     if(aInfo[playerid][Admin] >= 2)
  902.     {
  903.         GetPlayerName(playerid, pname, sizeof(pname));
  904.         format(archivo, sizeof(archivo), Users, udb_encode(pname));
  905.        
  906.         if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Ya estas en un vehiculo!");
  907.         if(dini_Int(archivo, "Vehicle") == 0) return SendClientMessage(playerid, COLOR_RED, "No has guardado un vehiculo! Utiliza /gmiauto <vehicleid>");
  908.         new Float:x, Float:y, Float:z, Float:a;
  909.         GetPlayerPos(playerid, x, y, z);
  910.         GetPlayerFacingAngle(playerid, a);
  911.         if(Car2[playerid] == 1) return DestroyVehicle(Car[playerid]);
  912.         Car2[playerid] = 1;
  913.         Car[playerid] = CreateVehicle(dini_Int(archivo, "Vehicle"), x, y, z+1, a, 0, 126, 600000);
  914.         PutPlayerInVehicle(playerid, Car[playerid], 0);
  915.         format(str, sizeof(str), "El administrador %s utilizo el comando: miauto", pname);
  916.         SaveIn("AdminLog", str);
  917.        
  918.     }
  919.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins.");
  920.     return 1;
  921. }
  922.  
  923. CMD:gmiauto(playerid, params[])
  924. {
  925.     if(aInfo[playerid][Admin] >= 2)
  926.     {
  927.         new vehicleid;
  928.         if(!sscanf(params, "i", vehicleid))
  929.         {
  930.             GetPlayerName(playerid, pname, sizeof(pname));
  931.             format(archivo, sizeof(archivo), Users, udb_encode(pname));
  932.             dini_IntSet(archivo, "Vehicle", vehicleid);
  933.             format(str, sizeof(str), "Has guardado como vehiculo el Vehiculo %d", vehicleid);
  934.             SendClientMessage(playerid, COLOR_YELLOW, str);
  935.            
  936.             new Float:x, Float:y, Float:z, Float:a;
  937.             GetPlayerPos(playerid, x, y, z);
  938.             GetPlayerFacingAngle(playerid, a);
  939.             if(Car2[playerid] == 1) return DestroyVehicle(Car[playerid]);
  940.             Car2[playerid] = 1;
  941.             Car[playerid] = CreateVehicle(dini_Int(archivo, "Vehicle"), x, y, z+1, a, 0, 126, 600000);
  942.             PutPlayerInVehicle(playerid, Car[playerid], 0);
  943.             format(str, sizeof(str), "El administrador %s utilizo el comando: gmiauto", pname);
  944.             SaveIn("AdminLog", str);
  945.  
  946.         }
  947.         else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins.");
  948.     }
  949.     return 1;
  950. }
  951.  
  952. /*
  953.   //==========================================================================\\
  954.  //============================================================================\\
  955. ||==============================Freeze || Unfreeze!=============================||
  956.  \\============================================================================//
  957.   \\==========================================================================//
  958. */
  959.  
  960. CMD:freeze(playerid, params[])
  961. {
  962.     new playerid2, pname2[MAX_PLAYER_NAME];
  963.     if(aInfo[playerid][Admin] >= 2)
  964.     {
  965.         if(!sscanf(params, "r", playerid2))
  966.         {
  967.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  968.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  969.             GetPlayerName(playerid, pname, sizeof(pname));
  970.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  971.  
  972.             format(str, sizeof(str), "El jugador %s [ID: %d] fue congelado por el administrador %s.", pname2,  playerid2, pname);
  973.             if(aInfo[playerid2][Congelado] == 1) return SendClientMessage(playerid, COLOR_MEDBLUE, "Este jugador ya esta Congelado!");
  974.             aInfo[playerid2][Congelado] = 1;
  975.             SendClientMessageToAll(COLOR_YELLOW, str);
  976.             TogglePlayerControllable(playerid2, 0);
  977.             format(str, sizeof(str), "El administrador %s utilizo el comando: freeze", pname);
  978.             SaveIn("AdminLog", str);
  979.            
  980.         }
  981.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /freeze <playerid>");
  982.     }
  983.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  984.     return 1;
  985. }
  986.  
  987. CMD:unfreeze(playerid, params[])
  988. {
  989.     new playerid2, pname2[MAX_PLAYER_NAME];
  990.     if(aInfo[playerid][Admin] >= 2)
  991.     {
  992.         if(!sscanf(params, "r", playerid2))
  993.         {
  994.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  995.             GetPlayerName(playerid, pname, sizeof(pname));
  996.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  997.  
  998.             format(str, sizeof(str), "El jugador %s [ID: %d] fue descongelado por el administrador %s.", pname2,  playerid2, pname);
  999.             if(aInfo[playerid2][Congelado] == 0) return SendClientMessage(playerid, COLOR_MEDBLUE, "Este jugador no esta Congelado!");
  1000.             aInfo[playerid2][Congelado] = 0;
  1001.             SendClientMessageToAll(COLOR_YELLOW, str);
  1002.             TogglePlayerControllable(playerid2, 1);
  1003.             format(str, sizeof(str), "El administrador %s utilizo el comando: unfreeze", pname);
  1004.             SaveIn("AdminLog", str);
  1005.            
  1006.         }
  1007.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /unfreeze <playerid>");
  1008.     }
  1009.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1010.     return 1;
  1011. }
  1012.  
  1013. /*
  1014.   //==========================================================================\\
  1015.  //============================================================================\\
  1016. ||==================================Anuncios====================================||
  1017.  \\============================================================================//
  1018.   \\==========================================================================//
  1019. */
  1020.  
  1021. CMD:ann(playerid, params[])
  1022. {
  1023.     if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "Uso: /ann <texto>");
  1024.     if(aInfo[playerid][Admin] >= 2)
  1025.     {
  1026.         format(str, sizeof(str), "%s", params);
  1027.         GameTextForAll(str, 5000, 1);
  1028.        
  1029.         GetPlayerName(playerid, pname, sizeof(pname));
  1030.         format(str, sizeof(str), "El administrador %s utilizo el comando: ann", pname);
  1031.         SaveIn("AdminLog", str);
  1032.        
  1033.     }
  1034.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1035.     return 1;
  1036. }
  1037.  
  1038. /*==============================================================================
  1039. ================================================================================
  1040. ============================rAdmin Admin Nivel 3================================
  1041. ================================================================================
  1042. ==============================================================================*/
  1043.  
  1044. /*
  1045.   //==========================================================================\\
  1046.  //============================================================================\\
  1047. ||============================Sethealth || Setarmour============================||
  1048.  \\============================================================================//
  1049.   \\==========================================================================//
  1050. */
  1051.  
  1052. CMD:sethealth(playerid, params[])
  1053. {
  1054.     new playerid2, pname2[MAX_PLAYER_NAME], health;
  1055.     if(aInfo[playerid][Admin] >= 3)
  1056.     {
  1057.         if(!sscanf(params, "ri", playerid2, health))
  1058.         {
  1059.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1060.             GetPlayerName(playerid, pname, sizeof(pname));
  1061.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1062.            
  1063.             SetPlayerHealth(playerid2, health);
  1064.             format(str, sizeof(str), "El Administrador %s [ID: %d] cambio tu vida a %d.", pname,  playerid, health);
  1065.             SendClientMessage(playerid2, COLOR_YELLOW, str);
  1066.             format(str, sizeof(str), "El administrador %s utilizo el comando: sethealth", pname);
  1067.             SaveIn("AdminLog", str);
  1068.            
  1069.         }
  1070.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /sethealth <playerid> <vida>");
  1071.     }
  1072.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1073.     return 1;
  1074. }
  1075.  
  1076. CMD:setarmour(playerid, params[])
  1077. {
  1078.     new playerid2, pname2[MAX_PLAYER_NAME], armour;
  1079.     if(aInfo[playerid][Admin] >= 3)
  1080.     {
  1081.         if(!sscanf(params, "ri", playerid2, armour))
  1082.         {
  1083.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1084.             GetPlayerName(playerid, pname, sizeof(pname));
  1085.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1086.            
  1087.             SetPlayerArmour(playerid2, armour);
  1088.             format(str, sizeof(str), "El Administrador %s [ID: %d] cambio tu Armadura a %d.", pname,  playerid, armour);
  1089.             SendClientMessage(playerid2, COLOR_YELLOW, str);
  1090.             format(str, sizeof(str), "El administrador %s utilizo el comando: setarmour", pname);
  1091.             SaveIn("AdminLog", str);
  1092.            
  1093.         }
  1094.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /setarmour <playerid> <chaleco>");
  1095.     }
  1096.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1097.     return 1;
  1098. }
  1099.  
  1100. /*
  1101.   //==========================================================================\\
  1102.  //============================================================================\\
  1103. ||=====================================Spawn====================================||
  1104.  \\============================================================================//
  1105.   \\==========================================================================//
  1106. */
  1107.  
  1108. CMD:spawn(playerid, params[])
  1109. {
  1110.     new playerid2, pname2[MAX_PLAYER_NAME];
  1111.     if(aInfo[playerid][Admin] >= 3)
  1112.     {
  1113.         if(!sscanf(params, "r", playerid2))
  1114.         {
  1115.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1116.             GetPlayerName(playerid, pname, sizeof(pname));
  1117.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1118.            
  1119.             format(str, sizeof(str), "El jugador %s [ID: %d] fue spawneado por el administrador %s.", pname2,  playerid2, pname);
  1120.             SendClientMessageToAll(COLOR_YELLOW, str);
  1121.             SpawnPlayer(playerid2);
  1122.             format(str, sizeof(str), "El administrador %s utilizo el comando: spawn", pname);
  1123.             SaveIn("AdminLog", str);
  1124.         }
  1125.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /spawn <playerid>");
  1126.     }
  1127.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1128.     return 1;
  1129. }
  1130.  
  1131. /*
  1132.   //==========================================================================\\
  1133.  //============================================================================\\
  1134. ||=====================================Akill====================================||
  1135.  \\============================================================================//
  1136.   \\==========================================================================//
  1137. */
  1138.  
  1139. CMD:akill(playerid, params[])
  1140. {
  1141.     new playerid2, pname2[MAX_PLAYER_NAME];
  1142.     if(aInfo[playerid][Admin] >= 3)
  1143.     {
  1144.         if(!sscanf(params, "r", playerid2))
  1145.         {
  1146.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1147.             GetPlayerName(playerid, pname, sizeof(pname));
  1148.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1149.  
  1150.             format(str, sizeof(str), "El jugador %s [ID: %d] fue asesinado por el administrador %s.", pname2,  playerid2, pname);
  1151.             SendClientMessageToAll(COLOR_YELLOW, str);
  1152.             SetPlayerHealth(playerid2, 0);
  1153.             SetPlayerArmour(playerid2, 0);
  1154.             format(str, sizeof(str), "El administrador %s utilizo el comando: akill", pname);
  1155.             SaveIn("AdminLog", str);
  1156.         }
  1157.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /akill <playerid>");
  1158.     }
  1159.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1160.     return 1;
  1161. }
  1162.  
  1163. /*==============================================================================
  1164. ================================================================================
  1165. ============================rAdmin Admin Nivel 4================================
  1166. ================================================================================
  1167. ==============================================================================*/
  1168.  
  1169. /*
  1170.   //==========================================================================\\
  1171.  //============================================================================\\
  1172. ||======================================Ban=====================================||
  1173.  \\============================================================================//
  1174.   \\==========================================================================//
  1175. */
  1176.  
  1177. CMD:ban(playerid, params[])
  1178. {
  1179.     new playerid2, pname2[MAX_PLAYER_NAME], reason[128];
  1180.     if(aInfo[playerid][Admin] >= 4)
  1181.     {
  1182.         if(!sscanf(params, "rs[128]", playerid2, reason))
  1183.         {
  1184.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1185.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  1186.             GetPlayerName(playerid, pname, sizeof(pname));
  1187.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1188.  
  1189.             format(str, sizeof(str), "El jugador %s [ID: %d] fue baneado por el administrador %s ~ Razon: %s", pname2,  playerid2, pname, reason);
  1190.             SendClientMessageToAll(COLOR_YELLOW, str);
  1191.             aInfo[playerid2][Baneado] = 1;
  1192.             BanEx(playerid2, reason);
  1193.             format(str, sizeof(str), "El administrador %s utilizo el comando: ban", pname);
  1194.             SaveIn("AdminLog", str);
  1195.             format(str, sizeof(str), "El administrador %s baneo a %s por %s", pname, pname2, reason);
  1196.             SaveIn("BanLog", str);
  1197.         }
  1198.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /ban <playerid> <razon>");
  1199.     }
  1200.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1201.     return 1;
  1202. }
  1203.  
  1204. /*
  1205.   //==========================================================================\\
  1206.  //============================================================================\\
  1207. ||==================================ClearChat===================================||
  1208.  \\============================================================================//
  1209.   \\==========================================================================//
  1210. */
  1211.  
  1212. CMD:clearchat(playerid, params[])
  1213. {
  1214.     if(aInfo[playerid][Admin] >= 4)
  1215.     {
  1216.         GetPlayerName(playerid, pname, sizeof(pname));
  1217.         for(new i = 0; i < 100; i++)
  1218.         {
  1219.             format(str, sizeof(str), "  ");
  1220.             SendClientMessageToAll(COLOR_LIGHTGREEN, str);
  1221.         }
  1222.         format(str, sizeof(str), "El Administrador %s [ID: %d] limpio el chat..", pname,  playerid);
  1223.         SendClientMessageToAll(COLOR_YELLOW, str);
  1224.         format(str, sizeof(str), "El administrador %s utilizo el comando: clearchat", pname);
  1225.         SaveIn("AdminLog", str);
  1226.     }
  1227.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1228.     return 1;
  1229. }
  1230.  
  1231. /*
  1232.   //==========================================================================\\
  1233.  //============================================================================\\
  1234. ||==================================Resp Cars===================================||
  1235.  \\============================================================================//
  1236.   \\==========================================================================//
  1237. */
  1238.  
  1239. CMD:rcars(playerid, params[])
  1240. {
  1241.     if(aInfo[playerid][Admin] >= 4 || IsPlayerAdmin(playerid))
  1242.     {
  1243.         SendClientMessage(playerid, COLOR_LIGHTGREEN, "Respawneaste todos los vehiculos desocupados!");
  1244.         GameTextForAll("~n~~n~~n~~n~~n~~n~~r~Vehiculos ~g~Respawneados!", 3000,3);
  1245.  
  1246.         for(new cars=0; cars<MAX_VEHICLES; cars++)
  1247.         {
  1248.             if(!VehicleOccupied(cars))
  1249.             {
  1250.                 SetVehicleToRespawn(cars);
  1251.             }
  1252.         }
  1253.         GetPlayerName(playerid, pname, sizeof(pname));
  1254.         format(str, sizeof(str), "El administrador %s utilizo el comando: rcars", pname);
  1255.         SaveIn("AdminLog", str);
  1256.     }
  1257.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins");
  1258.     return 1;
  1259. }
  1260.  
  1261. /*==============================================================================
  1262. ================================================================================
  1263. ============================rAdmin Admin Nivel 5================================
  1264. ================================================================================
  1265. ==============================================================================*/
  1266.  
  1267. /*
  1268.   //==========================================================================\\
  1269.  //============================================================================\\
  1270. ||===================================SetLevel===================================||
  1271.  \\============================================================================//
  1272.   \\==========================================================================//
  1273. */
  1274.  
  1275. CMD:setlevel(playerid, params[])
  1276. {
  1277.     new playerid2, pname2[MAX_PLAYER_NAME], admlevel;
  1278.     if(aInfo[playerid][Admin] >= MaxLevel || IsPlayerAdmin(playerid))
  1279.     {
  1280.         if(!sscanf(params, "rd", playerid2, admlevel))
  1281.         {
  1282.             if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "ID Incorrecto.");
  1283.             if(aInfo[playerid2][Admin] > aInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_RED, "Imposible afectar a un admin de mayor nivel!");
  1284.             GetPlayerName(playerid, pname, sizeof(pname));
  1285.             GetPlayerName(playerid2, pname2, sizeof(pname2));
  1286.  
  1287.             aInfo[playerid2][Admin] = admlevel;
  1288.             format(str, sizeof(str), "El Administrador %s [ID: %d] te dio nivel %d.", pname,  playerid, admlevel);
  1289.             SendClientMessage(playerid2, COLOR_YELLOW, str);
  1290.            
  1291.             format(str, sizeof(str), "El administrador %s le dio nivel %d a %s", pname, admlevel, pname2);
  1292.             SaveIn("AdminLog", str);
  1293.         }
  1294.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /setlevel <playerid> <nivel>");
  1295.     }
  1296.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins del Maximo Nivel.");
  1297.     return 1;
  1298. }
  1299.  
  1300. /*
  1301.   //==========================================================================\\
  1302.  //============================================================================\\
  1303. ||==================================SvRestart===================================||
  1304.  \\============================================================================//
  1305.   \\==========================================================================//
  1306. */
  1307.  
  1308. CMD:gmx(playerid, params[])
  1309. {
  1310.     if(aInfo[playerid][Admin] == MaxLevel || IsPlayerAdmin(playerid))
  1311.     {
  1312.         SendClientMessage(playerid, COLOR_YELLOW, "El servidor sera reiniciado en 5 segundos!");
  1313.         SetTimer("GMR", 5000, false);
  1314.         format(str, sizeof(str), "El administrador %s utilizo el comando: gmx", pname);
  1315.         SaveIn("AdminLog", str);
  1316.     }
  1317.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins del Maximo Nivel.");
  1318.     return 1;
  1319. }
  1320.  
  1321. /*
  1322.   //==========================================================================\\
  1323.  //============================================================================\\
  1324. ||===================================SvPasswd===================================||
  1325.  \\============================================================================//
  1326.   \\==========================================================================//
  1327. */
  1328.  
  1329. CMD:passwd(playerid, params[])
  1330. {
  1331.     if(aInfo[playerid][Admin] == MaxLevel || IsPlayerAdmin(playerid))
  1332.     {
  1333.         new passwd[12];
  1334.         if(!sscanf(params, "s[12]", passwd))
  1335.         {
  1336.             if(strlen(passwd) < 4 || strlen(passwd) > 12) return SendClientMessage(playerid, COLOR_RED, "La password debe tener entre 4 y 12 caracteres!");
  1337.             format(str, sizeof(str), "La password del servidor ahora es \"%s!\"", passwd);
  1338.             SendClientMessage(playerid, COLOR_YELLOW, str);
  1339.             format(str, sizeof(str), "password %s", passwd);
  1340.             SendRconCommand(str);
  1341.             GetPlayerName(playerid, pname, sizeof(pname));
  1342.             format(str, sizeof(str), "El administrador %s utilizo el comando: passwd", pname);
  1343.             SaveIn("AdminLog", str);
  1344.         }
  1345.         else return SendClientMessage(playerid, COLOR_RED, "Uso: /passwd <password>");
  1346.     }
  1347.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins del Maximo Nivel.");
  1348.     return 1;
  1349. }
  1350.  
  1351. CMD:spasswd(playerid, params[])
  1352. {
  1353.     if(aInfo[playerid][Admin] == MaxLevel || IsPlayerAdmin(playerid))
  1354.     {
  1355.         SendRconCommand("password 0");
  1356.         SendClientMessage(playerid, COLOR_YELLOW, "Removiste la password!");
  1357.         GetPlayerName(playerid, pname, sizeof(pname));
  1358.         format(str, sizeof(str), "El administrador %s utilizo el comando: spasswd", pname);
  1359.         SaveIn("AdminLog", str);
  1360.     }
  1361.     else return SendClientMessage(playerid, COLOR_RED, "Este comando es solo para Admins del Maximo Nivel.");
  1362.     return 1;
  1363. }
  1364.  
  1365. /*==============================================================================
  1366. ================================================================================
  1367. =================================OnPlayerText!==================================
  1368. ================================================================================
  1369. ==============================================================================*/
  1370.  
  1371. public OnPlayerText(playerid, text[])
  1372. {
  1373.     new string[128];
  1374.     GetPlayerName(playerid, pname, sizeof(pname));
  1375.     format(string, sizeof(string), "%s [%d]:{FFFFFF} %s", pname, playerid, text);
  1376.    
  1377.     if(BuscarIPs(text))
  1378.     {
  1379.         format(str, sizeof(str), "El jugador %s [ID: %d] intento spamear la IP %s", pname, playerid, text);
  1380.         MessageToAdmins(COLOR_LIGHTGREEN, str);
  1381.         SendClientMessage(playerid, COLOR_GREEN, "Se ha detectado spam en su mensaje. Usted ha sido kickeado!");
  1382.         SendClientMessage(playerid, COLOR_GREEN, "La IP ha sido enviada a los admins para que la investiguen!");
  1383.        
  1384.         format(str, sizeof(str), "El usuario %s [ID: %d] intento hacer spam y fue kickeado!", pname, playerid);
  1385.         SendClientMessageToAll(COLOR_MEDBLUE, str);
  1386.         Kick(playerid);
  1387.         format(str, sizeof(str), "El usuario %s fue kickeado por intentar spamear la IP %s", pname, text);
  1388.         SaveIn("KickLog", str);
  1389.         return 0;
  1390.     }
  1391.            
  1392.     if(aInfo[playerid][Muteado] == 1)
  1393.     {
  1394.         aInfo[playerid][MuteWarns] ++;
  1395.         if(aInfo[playerid][MuteWarns] < MAX_MUTEWARNS)
  1396.         {
  1397.             format(str, sizeof(str), "Has sido warneado por intentar hablar! Warnings: %d/%d", aInfo[playerid][MuteWarns], MAX_MUTEWARNS);
  1398.             SendClientMessage(playerid, COLOR_RED, str);
  1399.         }
  1400.         if(aInfo[playerid][MuteWarns] >= MAX_MUTEWARNS)
  1401.         {
  1402.             format(str, sizeof(str), "Has sido kickeado por intentar hablar! Warnings: %d/%d", aInfo[playerid][MuteWarns], MAX_MUTEWARNS);
  1403.             SendClientMessage(playerid, COLOR_RED, str);
  1404.             Kick(playerid);
  1405.             format(str, sizeof(str), "El usuario %s fue kickeado por hablar estando muteado.", pname, text);
  1406.             SaveIn("KickLog", str);
  1407.         }
  1408.         return 0;
  1409.     }
  1410.    
  1411.     if(text[0] == '#' && aInfo[playerid][Admin] > 0)
  1412.     {
  1413.         format(str, sizeof(str), "*%s: %s", pname, text[1]);
  1414.         printf("%s", text[0]);
  1415.         for(new i = 0; i < MAX_PLAYERS; i++)
  1416.         {
  1417.             if(IsPlayerConnected(i))
  1418.             {
  1419.                 if(aInfo[i][Admin] != 0)
  1420.                 MessageToAdmins(COLOR_LIGHTGREEN, str);
  1421.             }
  1422.         }
  1423.         SaveIn("AdmChatLog", str);
  1424.     }
  1425.     else
  1426.     {
  1427.         SendClientMessageToAll(GetPlayerColor(playerid), string);
  1428.         format(str, sizeof(str), "%s: %s", pname, text);
  1429.         SaveIn("ChatLog", str);
  1430.     }
  1431.    
  1432.     return 0;
  1433. }
  1434.  
  1435. /*==============================================================================
  1436. ================================================================================
  1437. =============================OnPlayerClickPlayer================================
  1438. ====================================System======================================
  1439. ================================================================================
  1440. ==============================================================================*/
  1441.  
  1442. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1443. {
  1444.     if(Clicked == 1) return SendClientMessage(playerid, COLOR_RED, "El menú ya esta siendo usado!");
  1445.     if(aInfo[playerid][Admin] == 0 || aInfo[playerid][Admin] < aInfo[cpid][Admin]) return 0;
  1446.     Clicked = 1;
  1447.     cpid = clickedplayerid;
  1448.     GetPlayerName(playerid, pname, sizeof(pname));
  1449.     ShowPlayerDialog(playerid, Click, DIALOG_STYLE_LIST, "rAdmin! [Player Menu]", "Freeze | Unfreeze Player\nMute | Unmute Player\nWarn Player\nKick Player\nBan Player\nSlap Player\nSpawn Player\nKill Player", "Aceptar", "Cancelar");
  1450.     format(str, sizeof(str), "El Administrador %s abrio el menu.", pname);
  1451.     SaveIn("AdminLog", str);
  1452.     return 1;
  1453. }
  1454.  
  1455. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1456. {
  1457.     switch(dialogid) // Lookup the dialogid
  1458.     {
  1459.         case Click:
  1460.         {
  1461.             if(response == 0) return 0;
  1462.             switch(listitem) // This is far more efficient than using an if-elseif-else structure
  1463.             {
  1464.                 case 0: // Listitems start with 0, not 1
  1465.                 {
  1466.                     if(aInfo[playerid][Admin] < 2) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 2");
  1467.                     if(aInfo[cpid][Congelado] == 1)
  1468.                     {
  1469.                         aInfo[cpid][Congelado] = 0;
  1470.                         SendClientMessage(playerid, COLOR_YELLOW, "Has descongelado a este jugador.");
  1471.                         SendClientMessage(cpid, COLOR_RED, "Has sido descongelado desde el Admin Panel!");
  1472.                         TogglePlayerControllable(cpid, 1);
  1473.                         Clicked = 0;
  1474.                     }
  1475.                     else
  1476.                     {
  1477.                         aInfo[cpid][Congelado] = 1;
  1478.                         SendClientMessage(playerid, COLOR_YELLOW, "Has congelado a este jugador.");
  1479.                         SendClientMessage(cpid, COLOR_RED, "Has sido congelado desde el Admin Panel!");
  1480.                         TogglePlayerControllable(cpid, 0);
  1481.                         Clicked = 0;
  1482.                     }
  1483.                 }
  1484.                 case 1:
  1485.                 {
  1486.                     if(aInfo[playerid][Admin] < 2) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 2");
  1487.                     if(aInfo[cpid][Muteado] == 1)
  1488.                     {
  1489.                         aInfo[cpid][Muteado] = 0;
  1490.                         SendClientMessage(playerid, COLOR_YELLOW, "Has desmuteado a este jugador.");
  1491.                         SendClientMessage(cpid, COLOR_RED, "Has sido desmuteado desde el Admin Panel!");
  1492.                         Clicked = 0;
  1493.                     }
  1494.                     else
  1495.                     {
  1496.                         aInfo[cpid][Muteado] = 1;
  1497.                         SendClientMessage(playerid, COLOR_YELLOW, "Has muteado a este jugador.");
  1498.                         SendClientMessage(cpid, COLOR_RED, "Has sido muteado desde el Admin Panel!");
  1499.                         Clicked = 0;
  1500.                     }
  1501.                 }
  1502.                 case 2:
  1503.                 {
  1504.                     if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 1");
  1505.                     aInfo[cpid][Warnings] ++;
  1506.                     new pname2[MAX_PLAYER_NAME], string[128];
  1507.  
  1508.                     GetPlayerName(playerid, pname, sizeof(pname));
  1509.                     GetPlayerName(cpid, pname2, sizeof(pname2));
  1510.  
  1511.                     if(aInfo[cpid][Warnings] < MAX_WARNINGS)
  1512.                     {
  1513.                         format(string, sizeof(string), "El usuario %s [ID: %d] fue warneado por el Administrador %s. (Warnings: %d/%d) -|", pname2, cpid, pname, aInfo[cpid][Warnings], MAX_WARNINGS);
  1514.                         SendClientMessageToAll(COLOR_YELLOW, string);
  1515.                         Clicked = 0;
  1516.                     }
  1517.                     else
  1518.                     {
  1519.                         format(string, sizeof(string), "El usuario %s [ID: %d] fue kickeado por el Administrador %s. (Warnings: %d/%d)", pname2, cpid, pname, aInfo[cpid][Warnings], MAX_WARNINGS);
  1520.                         SendClientMessageToAll(COLOR_YELLOW, string);
  1521.                         Kick(cpid);
  1522.                         aInfo[cpid][Warnings] = 0;
  1523.                         Clicked = 0;
  1524.                     }
  1525.                 }
  1526.                 case 3:
  1527.                 {
  1528.                     if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 1");
  1529.                     new pname2[MAX_PLAYER_NAME];
  1530.                     GetPlayerName(playerid, pname, sizeof(pname));
  1531.                     GetPlayerName(cpid, pname2, sizeof(pname2));
  1532.  
  1533.                     format(str, sizeof(str), "El jugador %s [ID: %d] fue kickeado por el administrador %s.", pname2,  cpid, pname);
  1534.                     SendClientMessageToAll(COLOR_YELLOW, str);
  1535.                     Kick(cpid);
  1536.                     Clicked = 0;
  1537.                 }
  1538.                 case 4:
  1539.                 {
  1540.                     if(aInfo[playerid][Admin] < 4) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 4");
  1541.                     new pname2[MAX_PLAYER_NAME];
  1542.                     GetPlayerName(playerid, pname, sizeof(pname));
  1543.                     GetPlayerName(cpid, pname2, sizeof(pname2));
  1544.  
  1545.                     format(str, sizeof(str), "El jugador %s [ID: %d] fue baneado por el administrador %s.", pname2,  cpid, pname);
  1546.                     SendClientMessageToAll(COLOR_YELLOW, str);
  1547.                     aInfo[cpid][Baneado] = 1;
  1548.                     BanEx(cpid, "Baneado desde el Admin Panel");
  1549.                     SaveIn("BanLog", str);
  1550.                     Clicked = 0;
  1551.                 }
  1552.                 case 5:
  1553.                 {
  1554.                     if(aInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 1");
  1555.                     GetPlayerName(playerid, pname, sizeof(pname));
  1556.                     new Float:X[MAX_PLAYERS], Float:Y[MAX_PLAYERS], Float:Z[MAX_PLAYERS];
  1557.  
  1558.                     GetPlayerPos(cpid, X[cpid], Y[cpid], Z[cpid]);
  1559.                     SetPlayerPos(cpid, X[cpid], Y[cpid], Z[cpid]+10);
  1560.                     new Float:health;
  1561.                     GetPlayerHealth(cpid, health);
  1562.                     SetPlayerHealth(cpid, health-10);
  1563.                     format(str, sizeof(str), "El Administrador %s [ID: %d] te ha slapeado!", pname, playerid);
  1564.                     SendClientMessage(cpid, COLOR_YELLOW, str);
  1565.                     Clicked = 0;
  1566.                 }
  1567.                 case 6:
  1568.                 {
  1569.                     if(aInfo[playerid][Admin] < 3) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 3");
  1570.                     new pname2[MAX_PLAYER_NAME];
  1571.                     GetPlayerName(playerid, pname, sizeof(pname));
  1572.                     GetPlayerName(cpid, pname2, sizeof(pname2));
  1573.  
  1574.                     format(str, sizeof(str), "El jugador %s [ID: %d] fue spawneado por el administrador %s.", pname2,  cpid, pname);
  1575.                     SendClientMessageToAll(COLOR_YELLOW, str);
  1576.                     SpawnPlayer(cpid);
  1577.                     Clicked = 0;
  1578.                 }
  1579.                 case 7:
  1580.                 {
  1581.                     if(aInfo[playerid][Admin] < 3) return SendClientMessage(playerid, COLOR_RED, "Esta accion es solo para Admins Nivel 3");
  1582.                     new pname2[MAX_PLAYER_NAME];
  1583.                     GetPlayerName(playerid, pname, sizeof(pname));
  1584.                     GetPlayerName(cpid, pname2, sizeof(pname2));
  1585.  
  1586.                     format(str, sizeof(str), "El jugador %s [ID: %d] fue asesinado por el administrador %s.", pname2,  cpid, pname);
  1587.                     SendClientMessageToAll(COLOR_YELLOW, str);
  1588.                     SetPlayerHealth(cpid, 0);
  1589.                     SetPlayerArmour(cpid, 0);
  1590.                     Clicked = 0;
  1591.                 }
  1592.             }
  1593.         }
  1594.     }
  1595.     return 0;
  1596. }
  1597.  
  1598. /*==============================================================================
  1599. ================================================================================
  1600. =====================================Otros======================================
  1601. ================================================================================
  1602. ==============================================================================*/
  1603.  
  1604. public SpawnKick(playerid)
  1605. {
  1606.     if(aInfo[playerid][Registrado] == 0 || aInfo[playerid][Logueado] == 0)
  1607.     {
  1608.         GetPlayerName(playerid, pname, sizeof(pname));
  1609.         SendClientMessage(playerid, COLOR_RED, "[rAdmin] Fuiste kickeado por no registrarte/loguearte en los primeros 60 segundos!");
  1610.         Kick(playerid);
  1611.         format(str, sizeof(str), "El usuario %s fue kickeado por no registrarse/loguear en los primeros 60 segs", pname);
  1612.         SaveIn("KickLog", str);
  1613.     }
  1614.     return 1;
  1615. }
  1616.  
  1617. /*
  1618.   //==========================================================================\\
  1619.  //============================================================================\\
  1620. ||==============================MessageToAdmins=================================||
  1621.  \\============================================================================//
  1622.   \\==========================================================================//
  1623. */
  1624.  
  1625. public MessageToAdmins(color, const string[])
  1626. {
  1627.     for(new i = 0; i < MAX_PLAYERS; i++)
  1628.     {
  1629.         if(IsPlayerConnected(i) == 1)
  1630.         {
  1631.             if(aInfo[i][Admin] != 0)
  1632.             {
  1633.                 SendClientMessage(i, color, string);
  1634.             }
  1635.         }
  1636.     }
  1637.     return 1;
  1638. }
  1639.  
  1640. /*
  1641.   //==========================================================================\\
  1642.  //============================================================================\\
  1643. ||================================VehicleOcuppied===============================||
  1644.  \\============================================================================//
  1645.   \\==========================================================================//
  1646. */
  1647.  
  1648. public VehicleOccupied(vehicleid)
  1649. {
  1650.     for(new i=0;i<MAX_PLAYERS;i++)
  1651.     {
  1652.         if(IsPlayerInVehicle(i,vehicleid)) return 1;
  1653.     }
  1654.     return 0;
  1655. }
  1656.  
  1657. /*
  1658.   //==========================================================================\\
  1659.  //============================================================================\\
  1660. ||=====================================GMR======================================||
  1661.  \\============================================================================//
  1662.   \\==========================================================================//
  1663. */
  1664.  
  1665. public GMR()
  1666. {
  1667.     SendRconCommand("gmx");
  1668. }
  1669.  
  1670. /*
  1671.   //==========================================================================\\
  1672.  //============================================================================\\
  1673. ||==================================SaveInSys===================================||
  1674.  \\============================================================================//
  1675.   \\==========================================================================//
  1676. */
  1677.  
  1678. public SaveIn(filename[],text[])
  1679. {
  1680.     new File:Sfile;
  1681.     new filepath[128];
  1682.     new year, month, day,
  1683.         hour, minute, second;
  1684.  
  1685.     getdate(year, month, day);
  1686.     gettime(hour, minute, second);
  1687.    
  1688.     format(filepath, sizeof(filepath), Logs, filename);
  1689.     Sfile = fopen(filepath, io_append);
  1690.    
  1691.     format(str, sizeof(str), "[%02d/%02d/%02d | %02d:%02d:%02d] %s\r\n", day, month, year, hour, minute, second, text);
  1692.     fwrite(Sfile, str);
  1693.     fclose(Sfile);
  1694.     return 1;
  1695. }
  1696.  
  1697. /*
  1698.   //==========================================================================\\
  1699.  //============================================================================\\
  1700. ||===================================Carpetas===================================||
  1701.  \\============================================================================//
  1702.   \\==========================================================================//
  1703. */
  1704.  
  1705. public Carpetas()
  1706. {
  1707.     if(!fexist("rAdmin/"))
  1708.     {
  1709.         print("\nERROR!");
  1710.         print("Carpeta rAdmin no encontrada.");
  1711.         print("La carpeta debe ser creada.");
  1712.     }
  1713.     if(!fexist("rAdmin/Logs/"))
  1714.     {
  1715.         print("\nERROR!");
  1716.         print("Carpeta rAdmin/Logs no encontrada.");
  1717.         print("La carpeta debe ser creada.");
  1718.     }
  1719.  
  1720.     if(!fexist("rAdmin/Cfg/"))
  1721.     {
  1722.         print("\nERROR!");
  1723.         print("Carpeta rAdmin/Cfg no encontrada.");
  1724.         print("La carpeta debe ser creada.");
  1725.     }
  1726.  
  1727.     if(!fexist("rAdmin/Users/"))
  1728.     {
  1729.         print("\nERROR!");
  1730.         print("Carpeta rAdmin/Users no encontrada.");
  1731.         print("La carpeta debe ser creada.");
  1732.  
  1733.     }
  1734.     return 1;
  1735. }
  1736.  
  1737. /*
  1738.   //==========================================================================\\
  1739.  //============================================================================\\
  1740. ||===================================AntiSpam===================================||
  1741.  \\============================================================================//
  1742.   \\==========================================================================//
  1743. */
  1744.  
  1745. forward split(const strsrc[], strdest[][], delimiter);
  1746.  
  1747. stock BuscarIPs(mensaje[])
  1748. {
  1749.     new encontrados;
  1750.     new Parte[30][64];
  1751.     split(mensaje, Parte, '.');
  1752.     for(new i = 1; i < 5; i++)
  1753.     {
  1754.         if(IsNumeric(Parte[i]))
  1755.         {
  1756.             encontrados ++;
  1757.         }
  1758.     }
  1759.     if(encontrados >= 2)
  1760.     {
  1761.         return 1;
  1762.     }
  1763.     return 0;
  1764. }
  1765.  
  1766. stock IsNumeric(const string[])
  1767. {
  1768.   new length=strlen(string);
  1769.   if (length==0) return false;
  1770.   for (new i = 0; i < length; i++)
  1771.     {
  1772.       if (
  1773.             (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
  1774.              || (string[i]=='-' && i!=0)                                             // A '-' but not at first.
  1775.              || (string[i]=='+' && i!=0)                                             // A '+' but not at first.
  1776.          ) return false;
  1777.     }
  1778.   if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
  1779.   return true;
  1780. }
  1781.  
  1782. public split(const strsrc[], strdest[][], delimiter)
  1783. {
  1784.     new i, li;
  1785.     new aNum;
  1786.     new len;
  1787.     while(i <= strlen(strsrc))
  1788.     {
  1789.         if(strsrc[i]==delimiter || i==strlen(strsrc))
  1790.         {
  1791.             len = strmid(strdest[aNum], strsrc, li, i, 128);
  1792.             strdest[aNum][len] = 0;
  1793.             li = i+1;
  1794.             aNum++;
  1795.         }
  1796.         i++;
  1797.     }
  1798.     return 1;
  1799. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement