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