· 9 years ago · Jan 22, 2017, 02:38 AM
1// Badmin v1.0 por bruunosoniico
2// Post oficial: http://www.pawnoscripting.com/foro/viewtopic.php?f=15&t=1023
3// Comentarios del autor:
4// Doy derecho a editar este script siempre y cuando no se modifiquen los creditos.
5// bruunosoniico
6// Gracias a:
7// Gantzyo - Ayuda en la compilacion del script.
8// DracoBlue - Dini include.
9// Pawno Scripting - Apoyo durante el proyecto.
10
11
12/* Sistema de Administracion de Bruno Sonico convertida a MYSQL
13
14 Puedes utilizar el sistema, editarlo.
15 Puedes agregarlo a tu servidor.
16
17 Pero por favor, no quites lo creditos.
18 Si lo usas en tu servidor agrega los creditos respectivos ah:
19
20 Bruunosoniico por el sistema de administracion.
21 ShooterGT por la conversion a mysql.
22 zeex por el include "zcmd".
23 Emmet_ por el plugin "sscanf".
24 BlueG Por el plugin mysql.
25 DracoBlue por el udb_hash.
26
27 Sin mas que decir que disfrutes el sistema.
28*/
29#include <a_samp>
30#include <zcmd>
31#include <sscanf2>
32#include <a_mysql>
33
34#define MySQL_Servidor "localhost" //Agregar el servidor de sql
35#define MySQL_Usuario "root" //Agregar el usuario de sql
36#define MySQL_BD "" //Agregar la base de datos
37#define MySQL_Clave "" //Agregas contraseña si es que existe
38
39#define LOGIN (1000)
40#define REGISTRO (1001)
41#define STATS (1002)
42
43#define MSGBOX (1100)
44
45#define rojo 0xFF0000FF
46#define rojo_temp "{FF0000}"
47#define verde 0x00AA00FF
48#define verde_temp "{00AA00}"
49#define azul 0x0000FFFF
50#define azul_temp "{0000FF}"
51#define amarillo 0xFFFF00FF
52#define amarillo_temp "{FF000}"
53#define naranja 0xFF8000FF
54#define naranja_temp "{FF8000}"
55#define rosa 0xFF80D7FF
56#define rosa_temp "{FF80D7}"
57#define celeste 0x009FFFFF
58#define celeste_temp "{009FFF}"
59#define cafe 0x9E4400FF
60#define cafe_temp "{9E4400}"
61#define blanco 0xFFFFFFFF
62#define blanco_temp "{FFFFFF}"
63#define negro 0x000000FF
64#define negro_temp "{000000}"
65#define gris 0x6B6B6BFF
66#define gris_temp "{6B6B6B}"
67#define morado 0x9E009DFF
68#define morado_temp "{9E009D}"
69#define dorado 0xFFCC00FF
70#define dorado_temp "{FFCC00}"
71
72new formatstring[128];
73#define SendFormatMessage(%0,%1,%2,%3) format(formatstring, sizeof(formatstring),%2,%3) && SendClientMessage(%0, %1, formatstring)
74#define SendFormatMessageToAll(%0,%1,%2) format(formatstring, sizeof(formatstring),%1,%2) && SendClientMessageToAll(%0, formatstring)
75
76enum JugadorDatos
77{
78 jid,
79 jip[16],
80 jnombre[MAX_PLAYER_NAME],
81 jcontra,
82 jbaneado,
83 jnivel,
84 jasesinatos,
85 jmuertes,
86 jpuntos,
87 jdinero,
88 Float:jposx,
89 Float:jposy,
90 Float:jposz,
91 Float:jposa,
92};
93
94new jugador[MAX_PLAYERS][JugadorDatos];
95new Coneccion;
96new Espiando[MAX_PLAYERS];
97new Congelado[MAX_PLAYERS];
98new Advertido[MAX_PLAYERS];
99new Callado[MAX_PLAYERS];
100new Encarcelado[MAX_PLAYERS];
101new Dios[MAX_PLAYERS];
102new VDios[MAX_PLAYERS];
103//new Autos[MAX_PLAYERS];
104
105new ktvdios;
106new ktdescongelar;
107new ktdesencarcelar;
108
109new Vehiculos[212][] = {
110 "Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
111 "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
112 "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
113 "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
114 "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
115 "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
116 "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
117 "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
118 "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
119 "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
120 "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
121 "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
122 "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
123 "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
124 "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
125 "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
126 "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
127};
128
129main()
130{
131}
132
133public OnGameModeInit()
134{
135 printf("Iniciando conexión MySQL: (Servidor: '%s', Usuario: '%s', Clave: '%s', Base de Datos: '%s')", MySQL_Servidor, MySQL_Usuario, MySQL_Clave, MySQL_BD);
136 Coneccion = mysql_connect(MySQL_Servidor, MySQL_Usuario, MySQL_BD,MySQL_Clave);
137 mysql_debug(1);
138 if(mysql_ping() == 1){
139 printf("Conexión a la base de datos realizada correctamente");
140 mysql_function_query(Coneccion, "CREATE TABLE IF NOT EXISTS `jugadores` ( `id` INT NOT NULL AUTO_INCREMENT ,`ip` VARCHAR(16) NOT NULL ,`nombre` VARCHAR(24) NOT NULL ,`contraseña` INT(11) NOT NULL ,`baneado` INT(11) NOT NULL ,`nivel` INT(11) NOT NULL ,`asesinatos` INT(11) NOT NULL ,`muertes` INT(11) NOT NULL ,`puntos` INT(11) NOT NULL ,`dinero` INT(11) NOT NULL ,`posx` FLOAT NOT NULL,`posy` FLOAT NOT NULL,`posz` FLOAT NOT NULL,`posa` FLOAT NOT NULL,PRIMARY KEY (`id`)) ENGINE = InnoDB;", true, "", "");
141 }else{
142 print("Conexión a la base de datos no realizada.");
143 mysql_close(1);
144 SendRconCommand("exit");
145 }
146 return 1;
147}
148
149public OnGameModeExit()
150{
151 return 1;
152}
153
154public OnPlayerRequestClass(playerid, classid)
155{
156 SetSpawnInfo(playerid, NO_TEAM, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid);
157 return 1;
158}
159
160public OnPlayerConnect(playerid)
161{
162 new Consulta[256];
163 mysql_format(Coneccion, Consulta, "SELECT `contraseña` FROM `jugadores` WHERE `nombre`='%s' LIMIT 1", RetornarNombre(playerid));
164 mysql_function_query(Coneccion, Consulta, true, "ComprobarRegistroJugador", "i", playerid);
165
166 SendFormatMessageToAll(rojo, "%s "gris_temp"entro al servidor", RetornarNombre(playerid));
167 return 1;
168}
169
170public OnPlayerDisconnect(playerid, reason)
171{
172 new Consulta[200];
173 mysql_format(Coneccion, Consulta, "UPDATE `jugadores` SET `baneado`='%d', `nivel`='%d', `asesinatos`='%d', `muertes`='%d', `puntos`='%d', `dinero`='%d', `posx`='%f', `posy`='%f', `posz`='%f', `posa`='%f' WHERE `nombre`='%s'",
174 jugador[playerid][jbaneado], jugador[playerid][jnivel], jugador[playerid][jasesinatos], jugador[playerid][jmuertes], GetPlayerScore(playerid), GetPlayerMoney(playerid), jugador[playerid][jposx], jugador[playerid][jposy], jugador[playerid][jposz], jugador[playerid][jposa], RetornarNombre(playerid));
175 mysql_function_query(Coneccion, Consulta, true, "", "");
176
177 switch(reason){
178 case 0: SendFormatMessageToAll(rojo, "%s "gris_temp"se desconecto Razon: Timeout/Crash", RetornarNombre(playerid));
179 case 1: SendFormatMessageToAll(rojo, "%s "gris_temp"se desconecto Razon: Salio", RetornarNombre(playerid));
180 case 2: SendFormatMessageToAll(rojo, "%s "gris_temp"se desconecto Razon: Ban/Kick", RetornarNombre(playerid));
181 }
182 return 1;
183}
184
185public OnPlayerSpawn(playerid)
186{
187 return 1;
188}
189
190public OnPlayerDeath(playerid, killerid, reason)
191{
192 SendDeathMessage(playerid, killerid, reason);
193
194 if(killerid != INVALID_PLAYER_ID){
195 jugador[killerid][jasesinatos]++;
196 GivePlayerMoney(killerid, 1000);
197 SetPlayerScore(killerid, GetPlayerScore(killerid) + 2);
198 }
199
200 jugador[playerid][jmuertes]++;
201 if(GetPlayerMoney(playerid) <= 500) return ResetPlayerMoney(playerid);
202 GivePlayerMoney(playerid, -500);
203 SetPlayerScore(playerid, GetPlayerScore(playerid) - 1);
204 return 1;
205}
206
207public OnPlayerText(playerid, text[])
208{
209 if(Callado[playerid] == 1) return SendClientMessage(playerid, rojo, "No puedes hablar porque has sido callado por un administrados.");
210 return 0;
211}
212
213public OnPlayerCommandPerformed(playerid, cmdtext[], success)
214{
215 if(!success) return SendClientMessage(playerid, rojo, "ERROR: Este comando no existe. Utiliza /comandos para mayor informacion");
216 return 1;
217}
218
219CMD:ayuda(playerid, params[])
220{
221 new ayuda[1024];
222 strcat(ayuda, "\n");
223 ShowPlayerDialog(playerid, MSGBOX, DIALOG_STYLE_MSGBOX, "Ayuda", ayuda, "Aceptar", "");
224 return 1;
225}
226
227CMD:estadisticas(playerid, params[])
228{
229 new stats[1024], str[128];
230 format(str, sizeof(str), "Tu usuario es %s y tus datos son los siguiente:\n", RetornarNombre(playerid));
231 strcat(stats, str);
232 strcat(stats, "Tu contraseña se guarda cifrada con el sistema de udb_hash by DracoBlue (http://dracoblue.net)");
233 format(str, sizeof(str), "Nivel: %d\n", jugador[playerid][jnivel]);
234 strcat(stats, str);
235 format(str, sizeof(str), "Asesinatos: %d\n", jugador[playerid][jasesinatos]);
236 strcat(stats, str);
237 format(str, sizeof(str), "Muertes: %d\n", jugador[playerid][jmuertes]);
238 strcat(stats, str);
239 format(str, sizeof(str), "Puntos: %d\n", GetPlayerScore(playerid));
240 strcat(stats, str);
241 format(str, sizeof(str), "Dinero: %d\n", GetPlayerMoney(playerid));
242 strcat(stats, str);
243 format(str, sizeof(str), "Posicion Guardad: %f, %f, %f, %f", jugador[playerid][jposx], jugador[playerid][jposy], jugador[playerid][jposz], jugador[playerid][jposa]);
244 strcat(stats, str);
245 ShowPlayerDialog(playerid, MSGBOX, DIALOG_STYLE_MSGBOX, "Estadisticas", stats, "Aceptar", "");
246 return 1;
247}
248
249CMD:reportar(playerid, params[])
250{
251 new reportado, razon[50], reporte[128];
252 if(sscanf(params, "us[50]", reportado, razon)) return SendClientMessage(playerid, rojo, "Uso: /reportar [ID] [Razon]");
253 if(IsPlayerConnected(reportado)){
254 format(reporte, sizeof(reporte), "El usuario [%d]%s ha reportado al usuario [%d]%s Razon: [%s]", playerid, RetornarNombre(playerid), reportado, RetornarNombre(reportado), razon);
255 EnviarMensajeAdmin(rojo, reporte);
256 SendClientMessage(playerid, verde, "Tu mensaje ah sido enviado con exito a los administradores conectados");
257 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
258 return 1;
259}
260
261CMD:admins(playerid, params[])
262{
263 new cantidad;
264 SendClientMessage(playerid, rojo, "Administradores");
265 for(new i=0; i<MAX_PLAYERS; i++){
266 if(jugador[i][jnivel] > 0 && IsPlayerConnected(i)){
267 SendFormatMessage(playerid, verde, "Administrado: %s || nivel %d", RetornarNombre(i), jugador[i][jnivel]);
268 cantidad++;
269 }
270 }
271 if(cantidad == 0) return SendClientMessage(playerid, rojo, "No hay administradores conectados");
272 return 1;
273}
274
275CMD:guardarpos(playerid, params[])
276{
277 GetPlayerPos(playerid, jugador[playerid][jposx], jugador[playerid][jposy], jugador[playerid][jposz]);
278 GetPlayerFacingAngle(playerid, jugador[playerid][jposa]);
279 SendClientMessage(playerid, verde, "Posicion guardada exitosamente");
280 return 1;
281}
282
283CMD:cargarpos(playerid, params[])
284{
285 new vehiculo = GetPlayerVehicleID(playerid);
286 SetPlayerPos(playerid, jugador[playerid][jposx], jugador[playerid][jposy], jugador[playerid][jposz]);
287 if(IsPlayerInAnyVehicle(playerid)){
288 SetVehiclePos(vehiculo, jugador[playerid][jposx], jugador[playerid][jposy], jugador[playerid][jposz]+1);
289 PutPlayerInVehicle(playerid, vehiculo, 0);
290 }
291 SetPlayerFacingAngle(playerid, jugador[playerid][jposa]);
292 SetCameraBehindPlayer(playerid);
293 SendClientMessage(playerid, verde, "Posicion cargada exitosamente");
294 return 1;
295}
296
297CMD:cambiarcontra(playerid, params[])
298{
299 new contra[30];
300 if(sscanf(params, "s[30]", contra)) return SendClientMessage(playerid, rojo, "Uso: /cambiarcontra [Nueva Contraseña]");
301 if(strlen(contra) < 8 || strlen(contra) > 30) return SendClientMessage(playerid, rojo, "Tu contraseña debe contener entre 8 y 30 catacteres.");
302 jugador[playerid][jcontra] = encriptado(contra);
303 SendClientMessage(playerid, verde, "Tu Contraseña a sido cambiada con exito.");
304 return 1;
305}
306
307CMD:v(playerid, params[])
308{
309 new vehiculo[50], modelid, color1, color2, Float:x, Float:y, Float:z, Float:a, idvehicle;
310 if(sscanf(params, "s[50]dd", color1, color2)) return SendClientMessage(playerid, rojo, "Uso: /v [Vehiculo ID/Nombre Vehiculo] [Color1] [Color2]");
311 GetPlayerPos(playerid, x, y, z);
312 GetPlayerFacingAngle(playerid, a);
313 if(IsPlayerInAnyVehicle(playerid)){
314 modelid = GetPlayerVehicleID(playerid);
315 RemovePlayerFromVehicle(playerid);
316 DestroyVehicle(modelid);
317 }
318 if(IsNumeric(vehiculo)){
319 modelid = strval(vehiculo);
320 }else{
321 modelid = GetVehicleModelIDFromName(vehiculo);
322 }
323 if(modelid >= 400 && modelid <= 611){
324 idvehicle = CreateVehicle(modelid, x, y, z, a, color1, color2, 0);
325 PutPlayerInVehicle(playerid, idvehicle, 0);
326 SendFormatMessage(playerid, verde, "Has obtenido un vehiculo color1[ %d ], color2[ %d ]", color1, color2);
327 }else return SendClientMessage(playerid, rojo, "Vehiculo Incorrecto");
328 return 1;
329}
330
331CMD:skin(playerid, params[])
332{
333 new skinid;
334 if(sscanf(params, "d", skinid)) return SendClientMessage(playerid, rojo, "Uso: /skin [Skin]");
335 SetPlayerSkin(playerid, skinid);
336 SendFormatMessage(playerid, verde, "Has cambido tu skin por el skinid %d", skinid);
337 return 1;
338}
339
340/*-------------------->[Comandos de administradores] <------------------------*/
341CMD:acomandos(playerid, params[])
342{
343 switch(jugador[playerid][jnivel]){
344 case 1:{
345 SendClientMessage(playerid, azul, "Comandos de administrador:");
346 SendClientMessage(playerid, azul, "Administrador nivel 1: /adecir, /vida, /blindaje, /darpuntos, /dardinero, /dararma, /color.");
347 }
348 case 2:{
349 SendClientMessage(playerid, azul, "Comandos de administrador:");
350 SendClientMessage(playerid, azul, "Administrador nivel 1: /adecir, /vida, /blindaje, /darpuntos, /dardinero, /dararma, /color.");
351 SendClientMessage(playerid, azul, "Administrador nivel 2: /anuncio, /vvida, /vreparar, /vdestruir, /vnitro, /vcolor.");
352 }
353 case 3:{
354 SendClientMessage(playerid, azul, "Comandos de administrador:");
355 SendClientMessage(playerid, azul, "Administrador nivel 1: /adecir, /vida, /blindaje, /darpuntos, /dardinero, /dararma, /color.");
356 SendClientMessage(playerid, azul, "Administrador nivel 2: /anuncio, /vvida, /vreparar, /vdestruir, /vnitro, /vcolor.");
357 SendClientMessage(playerid, azul, "Administrador nivel 3: /vidatodos, /blindajetodos, /espiar, /congelar, /descongelar, /ir, /traer, /limpiar, /mundo, /cambiarinterior, /encarcelar, /desencarcelar.");
358 }
359 case 4:{
360 SendClientMessage(playerid, azul, "Comandos de administrador:");
361 SendClientMessage(playerid, azul, "Administrador nivel 1: /adecir, /vida, /blindaje, /darpuntos, /dardinero, /dararma, /color.");
362 SendClientMessage(playerid, azul, "Administrador nivel 2: /anuncio, /vvida, /vreparar, /vdestruir, /vnitro, /vcolor.");
363 SendClientMessage(playerid, azul, "Administrador nivel 3: /espiar, /congelar, /descongelar, /ir, /traer, /limpiar, /mundo, /cambiarinterior, /encarcelar, /desencarcelar.");
364 SendClientMessage(playerid, azul, "Administrador nivel 4: /kick, /advertir, /callar, /hora, /clima.");
365 }
366 case 5:{
367 SendClientMessage(playerid, azul, "Comandos de administrador:");
368 SendClientMessage(playerid, azul, "Administrador nivel 1: /adecir, /vida, /blindaje, /darpuntos, /dardinero, /dararma, /color.");
369 SendClientMessage(playerid, azul, "Administrador nivel 2: /anuncio, /vvida, /vreparar, /vdestruir, /vnitro, /vcolor.");
370 SendClientMessage(playerid, azul, "Administrador nivel 3: /espiar, /congelar, /descongelar, /ir, /traer, /limpiar, /mundo, /cambiarinterior, /encarcelar, /desencarcelar.");
371 SendClientMessage(playerid, azul, "Administrador nivel 4: /advertir, /callar, /v, /skin, /hora, /clima.");
372 SendClientMessage(playerid, azul, "Administrador nivel 5: /ban, /darnivel, /dios, /vdios, /nombre.");
373 }
374 default:{ SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando"); }
375 }
376 return 1;
377}
378
379CMD:adecir(playerid, params[])
380{
381 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
382 new texto[128];
383 if(sscanf(params, "s[128]", texto)) return SendClientMessage(playerid, rojo, "Uso: /adecir [Texto]");
384 SendFormatMessageToAll(azul, "[Admin: %s Nivel: %d]:%s", RetornarNombre(playerid), playerid, texto);
385 MensajeAdmin(playerid, "/adecir");
386 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
387 return 1;
388}
389
390CMD:vida(playerid, params[])
391{
392 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
393 new Float:vida, id;
394 if(sscanf(params, "uf", id, vida)) return SendClientMessage(playerid, rojo, "Uso: /vida [ID] [Cantidad]");
395 if(IsPlayerConnected(id)){
396 SetPlayerHealth(id, vida);
397 SendFormatMessage(id, verde, "El administrador %s a cambiado tu vida", RetornarNombre(playerid));
398 SendFormatMessage(playerid, verde, "Has cambiado con exito la vida de %s", RetornarNombre(id));
399 MensajeAdmin(playerid, "/vida");
400 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
401 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
402 return 1;
403}
404
405CMD:blindaje(playerid, params[])
406{
407 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
408 new Float:blindaje, id;
409 if(sscanf(params, "uf", id, blindaje)) return SendClientMessage(playerid, rojo, "Uso: /blindaje [ID] [Cantidad]");
410 if(IsPlayerConnected(id)){
411 SetPlayerArmour(id, blindaje);
412 SendFormatMessage(id, verde, "El administrador %s a cambiado tu blindaje", RetornarNombre(playerid));
413 SendFormatMessage(playerid, verde, "Has cambiado con exito el blindaje de %s", RetornarNombre(id));
414 MensajeAdmin(playerid, "/blindaje");
415 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
416 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
417 return 1;
418}
419
420CMD:darpuntos(playerid, params[])
421{
422 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
423 new puntaje, id;
424 if(sscanf(params, "ud", id, puntaje)) return SendClientMessage(playerid, rojo, "Uso: /darpuntos [ID] [Cantidad]");
425 if(IsPlayerConnected(id)){
426 SetPlayerScore(id, GetPlayerScore(id) + puntaje);
427 SendFormatMessage(id, verde, "El administrador %s te a dado %d puntos", RetornarNombre(playerid), puntaje);
428 SendFormatMessage(playerid, verde, "Has dado con exito el monto de %d puntos a %s", puntaje, RetornarNombre(id));
429 MensajeAdmin(playerid, "/darpuntos");
430 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
431 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
432 return 1;
433}
434
435CMD:dardinero(playerid, params[])
436{
437 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
438 new dinero, id;
439 if(sscanf(params, "ud", id, dinero)) return SendClientMessage(playerid, rojo, "Uso: /dardinero [ID] [Cantidad]");
440 if(IsPlayerConnected(id)){
441 GivePlayerMoney(id, dinero);
442 SendFormatMessage(id, verde, "El administrador %s te a dado %d dolares", RetornarNombre(playerid), dinero);
443 SendFormatMessage(playerid, verde, "Has dado con exito el monto de %d dolares a %s", dinero, RetornarNombre(id));
444 MensajeAdmin(playerid, "/dardinero");
445 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
446 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
447 return 1;
448}
449
450CMD:dararma(playerid, params[])
451{
452 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 1){
453 new arma[30], id, municiones, arma2;
454 if(sscanf(params, "us[30]d", id, arma, municiones)) return SendClientMessage(playerid, rojo, "Uso: /dararma [ID] [Id Arma/Nombre Arma] [Municiones]");
455 if(IsPlayerConnected(id)){
456 if(IsNumeric(arma)){
457 arma2 = strval(arma);
458 }else{
459 arma2 = GetWeaponIDFromName(arma);
460 }
461 if(arma2 < 47){
462 GivePlayerWeapon(id, arma2, municiones);
463 SendFormatMessage(id, verde, "El administrador %s te a dado una arma (ID: %d Muncion: %s", RetornarNombre(playerid), arma2);
464 SendFormatMessage(playerid, verde, "Has dado con exito el arma ID %d a %s", arma2, RetornarNombre(id));
465 MensajeAdmin(playerid, "/dararma");
466 }else return SendClientMessage(playerid, rojo, "Arma ID Incorrecta");
467 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
468 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
469 return 1;
470}
471
472CMD:color(playerid, params[])
473{
474 SendClientMessage(playerid, rojo, "Este comando esta desabilitado");
475 return 1;
476}
477
478CMD:anuncio(playerid, params[])
479{
480 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
481 new texto[128];
482 if(sscanf(params, "s[128]", texto)) return SendClientMessage(playerid, rojo, "Uso: /anuncio [Texto]");
483 GameTextForAll(texto, 5000, 5);
484 MensajeAdmin(playerid, "/anuncio");
485 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
486 return 1;
487}
488
489CMD:vvida(playerid, params[])
490{
491 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
492 new id, Float:cantidad;
493 if(sscanf(params, "uf", id, cantidad)) return SendClientMessage(playerid, rojo, "Uso: /vvida [ID] [Cantidad]");
494 if(IsPlayerConnected(id)){
495 if(IsPlayerInAnyVehicle(id)){
496 SetVehicleHealth(GetPlayerVehicleID(id), cantidad);
497 SendFormatMessage(id, verde, "El administrador %s ah cambiado la vida de tu vehiculo ah %f", RetornarNombre(playerid), cantidad);
498 SendFormatMessage(playerid, verde, "Has cambiado la vida a %f del vehiculo de %s", cantidad, RetornarNombre(playerid));
499 MensajeAdmin(playerid, "/vvida");
500 }else return SendClientMessage(playerid, rojo, "El jugador no esta en un vehiculo");
501 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
502 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
503 return 1;
504}
505
506CMD:vreparar(playerid, params[])
507{
508 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
509 new id;
510 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /vreparar [ID]");
511 if(IsPlayerConnected(id)){
512 if(IsPlayerInAnyVehicle(id)){
513 RepairVehicle(GetPlayerVehicleID(id));
514 SendFormatMessage(id, verde, "El administrador %s ah reparado tu vehiculo.", RetornarNombre(playerid));
515 SendFormatMessage(playerid, verde, "Has reparado el vehiculo de %s", RetornarNombre(id));
516 MensajeAdmin(playerid, "/vreparar");
517 }else return SendClientMessage(playerid, rojo, "El jugador no esta en un vehiculo");
518 }else return SendClientMessage(playerid, rojo, "ID incorrecta");
519 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
520 return 1;
521}
522
523CMD:vdestruir(playerid, params[])
524{
525 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
526 new id;
527 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /vdestruir [ID]");
528 if(IsPlayerConnected(id)){
529 if(IsPlayerInAnyVehicle(id)){
530 DestroyVehicle(GetPlayerVehicleID(id));
531 SendFormatMessage(id, verde, "El administrador %s ah destruido tu vehiculo.", RetornarNombre(playerid));
532 SendFormatMessage(playerid, verde, "Has destruido el vehiculo de %s", RetornarNombre(id));
533 MensajeAdmin(playerid, "/vdestruir");
534 }else return SendClientMessage(playerid, rojo, "El jugador no esta en un vehiculo");
535 }else return SendClientMessage(playerid, rojo, "ID incorrecta");
536 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
537 return 1;
538}
539
540CMD:vnitro(playerid, params[])
541{
542 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
543 new id;
544 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /vnitro [ID]");
545 if(IsPlayerConnected(id)){
546 if(IsPlayerInAnyVehicle(id)){
547 DestroyVehicle(GetPlayerVehicleID(id));
548 SendFormatMessage(id, verde, "El administrador %s a dado nitro a tu vehiculo.", RetornarNombre(playerid));
549 SendFormatMessage(playerid, verde, "Has dado nitro al vehiculo de %s", RetornarNombre(id));
550 AddVehicleComponent(GetPlayerVehicleID(id), 1010);
551 MensajeAdmin(playerid, "/vnitro");
552 }else return SendClientMessage(playerid, rojo, "El jugador no esta en un vehiculo");
553 }else return SendClientMessage(playerid, rojo, "ID incorrecta");
554 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
555 return 1;
556}
557
558CMD:vcolor(playerid, params[])
559{
560 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 2){
561 new id, color1, color2;
562 if(sscanf(params, "udd", id, color1, color2)) return SendClientMessage(playerid, rojo, "Uso: /vcolor [ID] [Color1] [Color2]");
563 if(IsPlayerConnected(id)){
564 if(IsPlayerInAnyVehicle(id)){
565 DestroyVehicle(GetPlayerVehicleID(id));
566 SendFormatMessage(id, verde, "El administrador %s a cambiado el color de tu vehiculo. [Color1: %d] [Color2: %d]", RetornarNombre(playerid), color1, color2);
567 SendFormatMessage(playerid, verde, "Has cambiado el color del vehiculo de %s. [Color1: %d] [Color2: %d]", RetornarNombre(id), color1, color2);
568 ChangeVehicleColor(GetPlayerVehicleID(id), color1, color2);
569 MensajeAdmin(playerid, "/vcolor");
570 }else return SendClientMessage(playerid, rojo, "El jugador no esta en un vehiculo");
571 }else return SendClientMessage(playerid, rojo, "ID incorrecta");
572 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
573 return 1;
574}
575
576CMD:espiar(playerid, params[])
577{
578 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
579 new id, Float:x, Float:y, Float:z, Float:a;
580 if(Espiando[playerid] == 0){
581 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /espiar [ID]. Para dejar de espiar usa /espiar nuevamente.");
582 if(IsPlayerConnected(id)){
583 Espiando[playerid] = 1;
584 GetPlayerPos(playerid, x, y, z);
585 GetPlayerFacingAngle(playerid, a);
586 TogglePlayerSpectating(playerid, true);
587 PlayerSpectatePlayer(playerid, id, SPECTATE_MODE_NORMAL);
588 MensajeAdmin(playerid, "/espiar Activado");
589 }
590 }else if(Espiando[playerid] == 1){
591 Espiando[playerid] = 0;
592 TogglePlayerSpectating(playerid, false);
593 SetPlayerPos(playerid, x, y, z);
594 SetPlayerFacingAngle(playerid, a);
595 SetCameraBehindPlayer(playerid);
596 MensajeAdmin(playerid, "/espiar Desactivado");
597 }
598 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
599 return 1;
600}
601
602CMD:congelar(playerid, params[])
603{
604 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
605 new id, minutos, razon[50];
606 if(sscanf(params, "uds[50]", id, minutos, razon)) return SendClientMessage(playerid, rojo, "Uso: /congelar [ID] [Minutos] [Razon]");
607 if(IsPlayerConnected(id)){
608 if(Congelado[id] == 1) return SendClientMessage(playerid, rojo, "El jugador se encuentra conectado");
609 Congelado[id] = 1;
610 SendFormatMessageToAll(verde, "%s a sido congelado durante %d minutos. [Razon: %s]", RetornarNombre(id), minutos, razon);
611 SendFormatMessage(id, verde, "Has sido congelado por %s durante %d minutos. [Razon: %s]", RetornarNombre(playerid), minutos, razon);
612 SendFormatMessage(playerid, verde, "Has congelado a %s durante %d minutos. [Razon: %s]", RetornarNombre(id), minutos, razon);
613 TogglePlayerControllable(id, false);
614 SetCameraBehindPlayer(id);
615 ktdescongelar = SetTimerEx("tdescongelar", minutos*60000, false, "d", id);
616 MensajeAdmin(playerid, "/congelar");
617 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
618 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
619 return 1;
620}
621
622CMD:descongelar(playerid, params[])
623{
624 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
625 new id;
626 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /descongelar [ID]");
627 if(IsPlayerConnected(id)){
628 Congelado[id] = 0;
629 if(Congelado[id] == 0) return SendClientMessage(playerid, rojo, "El jugador no se encuentra congelado.");
630 SendFormatMessageToAll(verde, "%s a sido descongelado.", RetornarNombre(id));
631 SendFormatMessage(id, verde, "Has sido descongelado por %s.", RetornarNombre(playerid));
632 SendFormatMessage(playerid, verde, "Has descongelado a %s.", RetornarNombre(id));
633 TogglePlayerControllable(id, true);
634 SetCameraBehindPlayer(id);
635 KillTimer(ktdescongelar);
636 MensajeAdmin(playerid, "/descongelar");
637 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
638 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
639 return 1;
640}
641
642CMD:ir(playerid, params[])
643{
644 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
645 new id, Float:x, Float:y, Float:z, Float:a;
646 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /ir [ID]");
647 if(IsPlayerConnected(id)){
648 /*if(IsPlayerInAnyVehicle(playerid)){
649 RemovePlayerFromVehicle(playerid);
650 }*/
651 GetPlayerPos(id, x, y, z);
652 GetPlayerFacingAngle(id, a);
653 SetPlayerPos(playerid, x, y, z);
654 SetPlayerFacingAngle(playerid, a);
655 SendFormatMessage(id, verde, "El administrador %s se ah teletransportado a tu posicion", RetornarNombre(playerid));
656 SendFormatMessage(playerid, verde, "Te has teletransportado a la posicion de %s", RetornarNombre(id));
657 MensajeAdmin(playerid, "/ir");
658 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
659 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
660 return 1;
661}
662
663CMD:traer(playerid, params[])
664{
665 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
666 new id, Float:x, Float:y, Float:z, Float:a;
667 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /traer [ID]");
668 if(IsPlayerConnected(id)){
669 /*if(IsPlayerInAnyVehicle(id)){
670 RemovePlayerFromVehicle(id);
671 }*/
672 GetPlayerPos(playerid, x, y, z);
673 GetPlayerFacingAngle(playerid, a);
674 SetPlayerPos(id, x, y, z);
675 SetPlayerFacingAngle(id, a);
676 SendFormatMessage(id, verde, "El administrador %s te a teletransportado a su posicion", RetornarNombre(playerid));
677 SendFormatMessage(playerid, verde, "Has traido a tu posicion al usuario %s", RetornarNombre(id));
678 MensajeAdmin(playerid, "/traer");
679 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
680 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
681 return 1;
682}
683
684CMD:limpiar(playerid, params[])
685{
686 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
687 for(new i=0; i<16; i++){
688 SendClientMessageToAll(blanco, " ");
689 }
690 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
691 return 1;
692}
693
694CMD:mundo(playerid, params[])
695{
696 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
697 new id, mundo;
698 if(sscanf(params, "ud", id, mundo)) return SendClientMessage(playerid, rojo, "Uso: /mundo [ID] [MundoID]");
699 if(IsPlayerConnected(id)){
700 SetPlayerVirtualWorld(id, mundo);
701 SendFormatMessage(id, verde, "El administrador %s te ah cambiado al mundo %d", RetornarNombre(playerid), mundo);
702 SendFormatMessage(playerid, verde, "Has cambiado al jugador %s al mundo %d", RetornarNombre(id), mundo);
703 MensajeAdmin(playerid, "/mundo");
704 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
705 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
706 return 1;
707}
708
709CMD:advertir(playerid, params[])
710{
711 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
712 new id, razon[50];
713 if(sscanf(params, "us[50]", id, razon)) return SendClientMessage(playerid, rojo, "Uso: /advertir [ID] [Razon]");
714 if(IsPlayerConnected(id)){
715 switch(Advertido[id]){
716 case 0:{
717 SendFormatMessageToAll(amarillo, "%s a sido advertido por el administrador %s [1/3] [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
718 SendFormatMessage(playerid, verde, "Has advertido a %s [1/3] [Razon: %s]", RetornarNombre(id), razon);
719 MensajeAdmin(playerid, "/advertir [1]");
720 Advertido[id] = 1;
721 }
722 case 1:{
723 SendFormatMessageToAll(amarillo, "%s a sido advertido por el administrador %s [2/3] [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
724 SendFormatMessage(playerid, verde, "Has advertido a %s [2/3] [Razon: %s]", RetornarNombre(id), razon);
725 MensajeAdmin(playerid, "/advertir [2]");
726 Advertido[id] = 2;
727 }
728 case 2:{
729 SendFormatMessageToAll(amarillo, "%s a sido advertido y kickeado por el administrador %s [3/3] [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
730 SendFormatMessage(playerid, verde, "Has advertido y kickeado a %s [3/3] [Razon: %s]", RetornarNombre(id), razon);
731 MensajeAdmin(playerid, "/advertir [3]");
732 Kick(id);
733 }
734 }
735 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
736 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
737 return 1;
738}
739
740CMD:callar(playerid, params[])
741{
742 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
743 new id, razon[50];
744 if(!sscanf(params, "us[50]", id, razon)){
745 if(IsPlayerConnected(id)){
746 Callado[id] = 1;
747 SendFormatMessageToAll(verde, "%s a sido callado por el administrador %s. [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
748 SendFormatMessage(playerid, verde, "Has callado a %s. [Razon: %s]", RetornarNombre(id), razon);
749 MensajeAdmin(playerid, "/callar Activado");
750 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
751 }else if(!sscanf(params, "u", id)){
752 if(IsPlayerConnected(id)){
753 Callado[id] = 0;
754 SendFormatMessageToAll(verde, "Se ah dejado hablar a %s por el administrador %s.", RetornarNombre(id), RetornarNombre(playerid));
755 SendFormatMessage(playerid, verde, "Has dejado hablar a %s. ", RetornarNombre(id));
756 MensajeAdmin(playerid, "/callar desactivado");
757 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
758 }else return SendClientMessage(playerid, rojo, "Uso: /callar [ID] [Razon]. Para dejarlo hablar utilizar de nuevo /callar [ID]");
759 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
760 return 1;
761}
762
763CMD:kick(playerid, params[])
764{
765 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
766 new id, razon[50];
767 if(sscanf(params, "us[50]", id, razon)) return SendClientMessage(playerid, rojo, "Uso: /Kick [ID] [Razon]");
768 if(IsPlayerConnected(id)){
769 SetTimerEx("KickPlayer", 1000, false, "d", id);
770 SendFormatMessageToAll(verde, "%s a sido kickeado por el administrador %s. [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
771 SendFormatMessage(playerid, verde, "Has kickeado a %s. [Razon: %s]", RetornarNombre(id), razon);
772 MensajeAdmin(playerid, "/Kick");
773 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
774 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
775 return 1;
776}
777
778CMD:encarcelar(playerid, params[])
779{
780 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
781 new id, minutos, razon[50];
782 if(sscanf(params, "uds[50]", id, minutos, razon)) return SendClientMessage(playerid, rojo, "Uso: /encarcelar [ID] [Minutos] [Razon]");
783 if(IsPlayerConnected(id)){
784 Encarcelado[id] = 1;
785 SendFormatMessageToAll(naranja, "%s ah sido encarcelado durante %s [Razon: %s]", RetornarNombre(id), minutos, razon);
786 SendFormatMessage(id, verde, "Has sido encarcelado por %s durante %d [Razon: %s]", minutos, razon);
787 SendFormatMessage(playerid, verde, "Has encarcelado a %s durante %d [Razon: %s]", RetornarNombre(id), minutos, razon);
788 SetPlayerPos(id, 264.3726, 77.2826, 1001.0391);
789 SetPlayerFacingAngle(id, 269.9999);
790 SetPlayerInterior(id, 6);
791 SetCameraBehindPlayer(id);
792 ktdesencarcelar = SetTimerEx("tdesencarcelar", minutos*60000, false, "d", id);
793 MensajeAdmin(playerid, "/encarcelar");
794 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
795 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
796 return 1;
797}
798
799CMD:desencarcelar(playerid, params[])
800{
801 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
802 new id;
803 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /desencarcelar [ID]");
804 if(IsPlayerConnected(id)){
805 if(Encarcelado[id] == 0) return SendClientMessage(playerid, rojo, "El jugador no se encuentra encarcelado");
806 Encarcelado[id] = 0;
807 SendFormatMessageToAll(verde, "%s ah sido desencarcelado por el administrador %s", RetornarNombre(id), RetornarNombre(playerid));
808 SendFormatMessage(id, verde, "Has sido desencarcelado por el administrador %s", RetornarNombre(playerid));
809 SendFormatMessage(playerid, verde, "Has desencarcelado a %s", RetornarNombre(id));
810 KillTimer(ktdesencarcelar);
811 SpawnPlayer(playerid);
812 MensajeAdmin(playerid, "/desencarcelar");
813 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
814 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
815 return 1;
816}
817
818CMD:cambiarinterior(playerid, params[])
819{
820 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 3){
821 new id, interior;
822 if(sscanf(params, "ud", id, interior)) return SendClientMessage(playerid, rojo, "USo: /cambiarinterior [ID] [Interior]");
823 if(IsPlayerConnected(id)){
824 SendFormatMessage(id, verde, "El administrador %s te a puesto en el interior %d", RetornarNombre(id), interior);
825 SendFormatMessage(playerid, verde, "Has puesto a %s en el interior %d", RetornarNombre(id), interior);
826 SetPlayerInterior(id, interior);
827 MensajeAdmin(playerid, "/cambiarinterior");
828 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
829 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
830 return 1;
831}
832
833CMD:hora(playerid, params[])
834{
835 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
836 new hora, minutos;
837 if(sscanf(params, "dd", hora, minutos)) return SendClientMessage(playerid, rojo, "Uso: /hora [Hora] [Minutos]");
838 SendFormatMessageToAll(naranja, "El administrador a cambiado la hora ah Hora: %d Minutos: %d", hora, minutos);
839 MensajeAdmin(playerid, "/hora");
840 for(new i=0; i < MAX_PLAYERS; i++){
841 if(IsPlayerConnected(i)){
842 SetPlayerTime(i, hora, minutos);
843 }
844 }
845 }else return SendClientMessage(playerid, rojo, "Necesitas ser un administrador para usar este comando");
846 return 1;
847}
848
849CMD:clima(playerid, params[])
850{
851 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
852 new clima;
853 if(sscanf(params, "d", clima)) return SendClientMessage(playerid, rojo, "Uso: /hora [Clima]");
854 SendFormatMessageToAll(naranja, "El administrador a cambiado el clima. Clima: %d", clima);
855 MensajeAdmin(playerid, "/clima");
856 for(new i=0; i < MAX_PLAYERS; i++){
857 if(IsPlayerConnected(i)){
858 SetPlayerWeather(i, clima);
859 }
860 }
861 }else return SendClientMessage(playerid, rojo, "Necesitas ser un administrador para usar este comando");
862 return 1;
863}
864
865CMD:ban(playerid, params[])
866{
867 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 4){
868 new id, razon[50];
869 if(sscanf(params, "us[50]", id, razon)) return SendClientMessage(playerid, rojo, "Uso: /ban [ID] [Razon]");
870 if(IsPlayerConnected(id)){
871 SendFormatMessageToAll(verde, "%s a sido baneado por el administrador %s. [Razon: %s]", RetornarNombre(id), RetornarNombre(playerid), razon);
872 SendFormatMessage(playerid, verde, "Has baneado a %s. [Razon: %s]", RetornarNombre(id), razon);
873 jugador[playerid][jbaneado] = 1;
874 MensajeAdmin(playerid, "/ban");
875 SetTimerEx("BanPlayer", 1000, false, "ds[50]", id, razon);
876 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
877 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
878 return 1;
879}
880CMD:unban(playerid, params[])
881{
882 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >=5){
883 new ip[16], rcon[256];
884 if(sscanf(params, "s[16]", ip)) return SendClientMessage(playerid, rojo, "Uso: /unban [IP]");
885 format(rcon, sizeof(rcon), "/rcon unbanip %s", ip);
886 SendRconCommand(rcon);
887 SendRconCommand("/rcon reloadbans");
888 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
889 return 1;
890}
891
892/*CMD:(playerid, params[])
893{
894 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= ){
895 if(IsPlayerConnected(id){
896 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
897 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
898 return 1;
899}*/
900
901CMD:darnivel(playerid, params[])
902{
903 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 5){
904 new id, nivel;
905 if(sscanf(params, "ud", id, nivel)) return SendClientMessage(playerid, rojo, "Uso: /darnivel [ID] [Nivel]");
906 if(IsPlayerConnected(id)){
907 if(jugador[id][jnivel] < 5){
908 jugador[id][jnivel] = nivel;
909 SendFormatMessage(playerid, verde, "El administrador %s te ah nombrado administrador nivel %d", RetornarNombre(playerid), nivel);
910 SendFormatMessage(playerid, verde, "Has dado con exito el nivel %d a %s", nivel, RetornarNombre(id));
911 MensajeAdmin(playerid, "/darnivel");
912 }else SendClientMessage(playerid, rojo, "No tienes el nivel suficiente para ejecutar este comando sobre este usuario");
913 }else return SendClientMessage(playerid, rojo, "El jugador no se encuentra conectado");
914 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
915 return 1;
916}
917
918CMD:dios(playerid, params[])
919{
920 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 5){
921 new id, Float:vida;
922 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Uso: /dios [ID] , Para desactivar el modo dios, usa /dios [ID] nuevamente.");
923 if(IsPlayerConnected(id)){
924 GetPlayerHealth(id, vida);
925 if(Dios[id] == 0){
926 SendFormatMessage(id, verde, "El administrador %s te a hecho inmortal.", RetornarNombre(playerid));
927 SendFormatMessage(playerid, verde, "Has hecho inmortal a %s", RetornarNombre(id));
928 SetPlayerHealth(id, 100000);
929 MensajeAdmin(playerid, "/dios Activado");
930 }else if(Dios[id] == 1){
931 SendFormatMessage(id, verde, "El administrador %s te a hecho quitado la inmortal.", RetornarNombre(playerid));
932 SendFormatMessage(playerid, verde, "Has quitado la inmortal a %s", RetornarNombre(id));
933 SetPlayerHealth(id, vida);
934 MensajeAdmin(playerid, "/dios Desactivado");
935 }
936 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
937 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
938 return 1;
939}
940
941CMD:vdios(playerid, params[])
942{
943 if(IsPlayerAdmin(playerid) || jugador[playerid][jnivel] >= 5){
944 new id, Float:vida;
945 if(sscanf(params, "u", id)) return SendClientMessage(playerid, rojo, "Usa: /vdios [ID]. Para desactivar el modo dios, usa /vdios [ID] nuevamente.");
946 GetVehicleHealth(GetPlayerVehicleID(id), vida);
947 if(IsPlayerConnected(id)){
948 if(VDios[id] == 0){
949 SendFormatMessage(id, verde, "El administradro %s a hecho indestructible tu vehiculo", RetornarNombre(playerid));
950 SendFormatMessage(playerid, verde, "Has hecho indestructible el vehiculo de %s", RetornarNombre(id));
951 ktvdios = SetTimerEx("tvdios", 0, true, "d", id);
952 MensajeAdmin(playerid, "/vdios Activado");
953 }else if(VDios[id] == 1){
954 SendFormatMessage(id, verde, "El administradro %s restauro a la normalidad tu vehiculo", RetornarNombre(playerid));
955 SendFormatMessage(playerid, verde, "Has restaurado a la normalidad el vehiculo de %s", RetornarNombre(id));
956 KillTimer(ktvdios);
957 MensajeAdmin(playerid, "/vdios Desactivado");
958 }
959 }else return SendClientMessage(playerid, rojo, "ID Incorrecta");
960 }else return SendClientMessage(playerid, rojo, "Necesitas ser administrador para usar este comando");
961 return 1;
962}
963
964public OnPlayerUpdate(playerid)
965{
966 return 1;
967}
968
969public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
970{
971//ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Loging", "", "Aceptar", "Auto Kick");
972//ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "", "Aceptar", "Auto Kick");
973 switch(dialogid){
974 case LOGIN:{
975 if(!response) return Kick(playerid);
976 if(jugador[playerid][jcontra] == encriptado(inputtext)){
977 new contenido[20];
978 cache_get_field_content(0, "id", contenido); jugador[playerid][jid] = strval(contenido);
979 cache_get_field_content(0, "ip", jugador[playerid][jip]);
980 cache_get_field_content(0 , "nivel", contenido); jugador[playerid][jnivel] = strval(contenido);
981 cache_get_field_content(0 , "asesinatos", contenido); jugador[playerid][jasesinatos] = strval(contenido);
982 cache_get_field_content(0 , "muertes", contenido); jugador[playerid][jmuertes] = strval(contenido);
983 cache_get_field_content(0 , "puntos", contenido); jugador[playerid][jpuntos] = strval(contenido);
984 cache_get_field_content(0 , "dinero", contenido); jugador[playerid][jdinero] = strval(contenido);
985 cache_get_field_content(0 , "posx", contenido); jugador[playerid][jposx] = strval(contenido);
986 cache_get_field_content(0 , "posy", contenido); jugador[playerid][jposy] = strval(contenido);
987 cache_get_field_content(0 , "posz", contenido); jugador[playerid][jposz] = strval(contenido);
988 cache_get_field_content(0 , "posa", contenido); jugador[playerid][jposa] = strval(contenido);
989 SendFormatMessage(playerid, verde, "%s te has logueado exitosamente. (Nivel: %d)", RetornarNombre(playerid), jugador[playerid][jnivel]);
990 SetPlayerScore(playerid, jugador[playerid][jpuntos]);
991 GivePlayerMoney(playerid, jugador[playerid][jdinero]);
992 }else return ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Loging", "Contraseña Incorrecta.", "Aceptar", "Auto Kick");
993 }
994 case REGISTRO:{
995 if(!response) return Kick(playerid);
996 new Consulta[256];
997 mysql_format(Coneccion, Consulta, "INSERT INTO `jugadores` (`ip`, `nombre`, `contraseña`, `baneado`, `nivel`, `asesinatos`, `muertes`, `puntos`, `dinero`, `posx`, `posy`, `posz`, `posa`) VALUES ('%s', '%s', '%d', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)", RetornarIp(playerid), RetornarNombre(playerid), encriptado(inputtext));
998 mysql_function_query(Coneccion, Consulta, true, "", "");
999 new contenido[20];
1000 cache_get_field_content(0, "id", contenido); jugador[playerid][jid] = strval(contenido);
1001 SendFormatMessage(playerid, verde, "Bienvenido a SMM. %s te has registrado exitosamente. (ID en BD: %d)", RetornarNombre(playerid), jugador[playerid][jid]);
1002 }
1003 }
1004 return 1;
1005}
1006
1007forward ComprobarRegistroJugador(playerid);
1008public ComprobarRegistroJugador(playerid)
1009{
1010 new rows, field;
1011 cache_get_data(rows, field, 1);
1012 if(rows){
1013 new contenido[20];
1014 cache_get_field_content(0 , "baneado", contenido); jugador[playerid][jbaneado] = strval(contenido);
1015 if(jugador[playerid][jbaneado] == 1) return SetTimerEx("BanPlayer", 3000, false, "ds[50]", playerid, "Baneado");
1016
1017 cache_get_field_content(0, "contraseña", contenido); jugador[playerid][jcontra] = strval(contenido);
1018 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Loging", "Bienvenidos al Servidor Oficial de SMM\nTu Cuenta Esta Registrada.\nIngresa Tu Contraseña", "Aceptar", "Auto Kick");
1019 }else{
1020 ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "Bienvenido al Servidor Oficial de SMM\nTu Cuenta No Esta Registrada.\nIngresa Una Contraseña", "Registrar", "Auto Kick");
1021 }
1022 return 1;
1023}
1024
1025forward OnQueryError(errorid, error[], callback[], query[], connectionHandle );
1026public OnQueryError(errorid, error[], callback[], query[], connectionHandle )
1027{
1028 printf("[ERROR] ID: %d - Error: %s - Callback - %s - Query: %s", errorid, error, callback, query); //Imprimimos el mensaje en la consola
1029 return 1;
1030}
1031
1032/*forward EnviarMensajeBan(playerid);
1033public EnviarMensajeBan(playerid)
1034{
1035 SendFormatMessage(playerid, rojo, "%s te encuentras baneado. Seras expulsado del servidor en 3 segundos", RetornarNombre(playerid));
1036 Kick(playerid);
1037 return 1;
1038}*/
1039
1040forward EnviarMensajeAdmin(color, const string[]);
1041public EnviarMensajeAdmin(color, const string[])
1042{
1043 for(new i=0; i<MAX_PLAYERS; i++){
1044 if(jugador[i][jnivel] > 0){
1045 SendClientMessage(i, color, string);
1046 }
1047 }
1048 return 1;
1049}
1050
1051forward MensajeAdmin(playerid, const string[]);
1052public MensajeAdmin(playerid, const string[])
1053{
1054 for(new i=0; i<MAX_PLAYERS; i++){
1055 if(jugador[i][jnivel] > 0){
1056 SendFormatMessage(i, azul, "%s ejecuto el comando %s", RetornarNombre(playerid), string);
1057 }
1058 }
1059 return 1;
1060}
1061
1062forward KickPlayer(playerid);
1063public KickPlayer(playerid)
1064{
1065 Kick(playerid);
1066 return 1;
1067}
1068
1069forward BanPlayer(playerid);
1070public BanPlayer(playerid)
1071{
1072 new rcon[128];
1073 printf("%d Baneado", playerid);
1074 format(rcon, sizeof(rcon), "/rcon banip %s", RetornarNombre(playerid));
1075 SendRconCommand(rcon);
1076 return 1;
1077}
1078
1079forward tdescongelar(playerid);
1080public tdescongelar(playerid)
1081{
1082 Congelado[playerid] = 0;
1083 TogglePlayerControllable(playerid, true);
1084 SetCameraBehindPlayer(playerid);
1085 return 1;
1086}
1087
1088forward tdesencarcelar(playerid);
1089public tdesencarcelar(playerid)
1090{
1091 Encarcelado[playerid] = 0;
1092 SpawnPlayer(playerid);
1093 return 1;
1094}
1095
1096forward tvdios(playerid);
1097public tvdios(playerid)
1098{
1099 if (IsPlayerInAnyVehicle(playerid))
1100 {
1101 RepairVehicle(GetPlayerVehicleID(playerid));
1102 }
1103 return 1;
1104}
1105
1106stock RetornarNombre(playerid)
1107{
1108 new nombre[MAX_PLAYER_NAME];
1109 GetPlayerName(playerid, nombre, sizeof(nombre));
1110 return nombre;
1111}
1112
1113stock RetornarIp(playerid)
1114{
1115 new ip[16];
1116 GetPlayerIp(playerid, ip, sizeof(ip));
1117 return ip;
1118}
1119
1120stock GetVehicleModelIDFromName(vname[])
1121{
1122 for(new i = 0; i < 211; i++)
1123 {
1124 if ( strfind(Vehiculos[i], vname, true) != -1 )
1125 return i + 400;
1126 }
1127 return -1;
1128}
1129
1130stock GetWeaponIDFromName(WeaponName[])
1131{
1132 if(strfind("molotov",WeaponName,true)!=-1) return 18;
1133 for(new i = 0; i <= 46; i++)
1134 {
1135 switch(i)
1136 {
1137 case 0,19,20,21,44,45: continue;
1138 default:
1139 {
1140 new name[32]; GetWeaponName(i,name,32);
1141 if(strfind(name,WeaponName,true) != -1) return i;
1142 }
1143 }
1144 }
1145 return -1;
1146}
1147
1148stock IsValidWeapon(weaponid)
1149{
1150 if (weaponid > 0 && weaponid < 19 || weaponid > 21 && weaponid < 47) return 1;
1151 return 0;
1152}
1153
1154stock IsNumeric(string[])
1155{
1156 for (new i = 0, j = strlen(string); i < j; i++)
1157 {
1158 if (string[i] > '9' || string[i] < '0') return 0;
1159 }
1160 return 1;
1161}
1162
1163/*----------------------------------------------------------------------------*/
1164//udb_hash by DracoBlue (http://dracoblue.net)
1165stock encriptado(buf[]) {
1166 new length=strlen(buf);
1167 new s1 = 1;
1168 new s2 = 0;
1169 new n;
1170 for (n=0; n<length; n++)
1171 {
1172 s1 = (s1 + buf[n]) % 65521;
1173 s2 = (s2 + s1) % 65521;
1174 }
1175 return (s2 << 16) + s1;
1176}