· 7 years ago · Dec 26, 2018, 12:06 AM
1// INCLUDES
2
3#include <a_samp>
4#include <a_mysql>
5#include <zcmd>
6#include <sscanf>
7#include <foreach>
8
9stock SendClientMessageEx(playerid, colour, const format[], va_args<>)
10{
11 new str[144];
12 va_format(str, sizeof (str), format, va_start<3>);
13 return SendClientMessage(playerid, colour, str);
14}
15
16// Sistema grupos
17
18new gTeam[MAX_PLAYERS];//Esta variable llamara los equipos
19new gPlayerClass[MAX_PLAYERS];
20//teams
21#define TEAM_MILITAR 0
22#define TEAM_POLICIA 0
23#define TEAM_ALQAEDA 1
24#define TEAM_HACKERS 1
25
26//MP
27
28new bool:BloqMP[MAX_PLAYERS];
29
30//textdraws
31
32new Text:textdraw_0[MAX_PLAYERS];
33new Text:textdraw_1[MAX_PLAYERS];
34new Text:textdraw_2[MAX_PLAYERS];
35new Text:textdraw_3[MAX_PLAYERS];
36new Text:textdraw_4[MAX_PLAYERS];
37
38// COLORES
39
40#define COLOR_ORANGE 0xF69521AA
41#define COLOR_GRAD2 0xF692054AA
42#define COLOR_AQUAMARINE 0x7FFFD4FF
43#define COLOR_AZURE 0xF0FFFFFF
44
45// sist.admin
46
47new bool:AdminDuty[MAX_PLAYERS];
48#define cmd_admin if(Cuenta[playerid][cAdmin] < 1) return SendClientMessage(playerid, COLOR_GRAD2, "Error: No eres Admin");
49// REGISTRO
50
51#define Callback:%0(%1) forward %0(%1); public %0(%1)//Definimos la funcion Callback para ahorrarnos Forward & Public.
52
53#define DIALOG_REGISTRO 1
54#define DIALOG_LOGIN 2
55
56new MySQL:Conexion;
57
58#define HOST "localhost"
59#define USUARIO "root"
60#define DATABASE "samp"
61#define CONTRA ""
62
63enum datosdeUsuario {
64Nombre[64],
65cLlave[24],
66cDinero,
67cAsesinatos,
68cMuertes,
69cAdmin,
70cVip,
71bool:cRegistrado
72}
73
74new Cuenta[MAX_PLAYERS][datosdeUsuario];//Donde se almacenan los datos
75
76stock Log(event[])
77{
78 new File:log = fopen("Reportes.txt", io_append);
79 fwrite(log, event);
80 fwrite(log, "\n");
81 fclose(log);
82}
83
84forward MensajeParaAdmins(color,const string[]);
85public MensajeParaAdmins(color,const string[])
86{
87 for(new i = 0; i < MAX_PLAYERS; i++)
88 {
89 if(IsPlayerConnected(i))
90 {
91 if (Cuenta[i][cAdmin] >= 1)
92 {
93 SendClientMessage(i, color, string);
94 }
95 }
96 }
97 return 1;
98} /*cerramos*/
99
100stock udb_hash(buf[])
101{
102 new length=strlen(buf),s1 = 1,s2 = 0,n;
103 for (n=0; n<length; n++){
104 s1 = (s1 + buf[n]) % 65521,
105 s2 = (s2 + s1) % 65521;
106 }
107 return (s2 << 16) + s1;
108}
109
110
111Callback:CargarCuentas(playerid)
112{
113 cache_get_value_int(0, "Nombre", Cuenta[playerid][Nombre]);
114 cache_get_value_int(0, "Dinero", Cuenta[playerid][cDinero]);
115 cache_get_value_int(0, "Admin", Cuenta[playerid][cAdmin]);
116 cache_get_value_int(0, "Vip", Cuenta[playerid][cVip]);
117 cache_get_value_int(0, "Asesinatos", Cuenta[playerid][cAsesinatos]);
118 cache_get_value_int(0, "Muertes", Cuenta[playerid][cMuertes]);
119
120 CargarDatos(playerid);
121 return 1;
122}
123
124stock RegistrarDatos(playerid)
125{
126 Cuenta[playerid][cDinero] = 5000;
127 Cuenta[playerid][cAdmin] = 0;
128 Cuenta[playerid][cVip] = 1;
129 Cuenta[playerid][cAsesinatos] = 0;
130 Cuenta[playerid][cMuertes] = 0;
131 CargarDatos(playerid);
132 return 1;
133}
134
135stock CargarDatos(playerid)
136{
137 Cuenta[playerid][cRegistrado] = true;
138 GivePlayerMoney(playerid, Cuenta[playerid][cDinero]);
139 return 1;
140}
141
142stock SalvarDatos(playerid)
143{
144 Cuenta[playerid][cDinero] = GetPlayerMoney(playerid);
145 new Query[350];
146 mysql_format(Conexion, Query, sizeof(Query), "UPDATE `Cuentas` SET `Nombre`='%s', `Vip`=%d, `Admin`=%d, `Asesinatos`=%d, `Muertes`=%d, `Dinero`=%d, `Registrado`=%d",
147 Cuenta[playerid][Nombre],
148 Cuenta[playerid][cVip],
149 Cuenta[playerid][cAdmin],
150 Cuenta[playerid][cAsesinatos],
151 Cuenta[playerid][cMuertes],
152 Cuenta[playerid][cDinero],
153 Cuenta[playerid][cRegistrado]);
154
155 Cuenta[playerid][cAsesinatos] = 0;
156 Cuenta[playerid][cMuertes] = 0;
157 Cuenta[playerid][cDinero] = 0;
158 Cuenta[playerid][cAdmin] = 0;
159 Cuenta[playerid][cVip] = 0;
160 Cuenta[playerid][cRegistrado] = false;
161 return 1;
162}
163
164Callback:VerificarCuentas(playerid)
165{
166 new Dialog[240];
167
168 if(cache_num_rows() > 0)
169 {
170
171 cache_get_value(0, "Contraseña", Cuenta[playerid][cLlave], 24);
172
173 format(Dialog, sizeof(Dialog),"{F8F8FF}Bienvenido a MoonExtreme {058AFF}%s{F8F8FF}\n\nTienes una cuenta registrada\n\nDigite su contraseña para ingresar\n\nEstado: {1E90FF}Registrado{F8F8FF}", Cuenta[playerid][Nombre]);
174 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Ingresar", "Cancelar");
175
176 } else {
177
178 format(Dialog, sizeof(Dialog),"{F8F8FF}Bienvenido a MoonExtreme {058AFF}%s{F8F8FF}\n\nNo tienes una cuenta registrada\n\nDigite su contraseña para registrarlo\n\nEstado: {058AFF}N/A Registrado{F8F8FF}", Cuenta[playerid][Nombre]);
179 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
180 }
181 return 1;
182}
183
184
185//Kickear al Usuario.
186Callback:KickearJugador(playerid){
187Kick(playerid);
188return 1;}
189
190Callback:DatosRegistrados(playerid)
191{
192 printf("-> Nueva cuenta registrada: %s", Cuenta[playerid][Nombre]);
193 return 1;
194}
195
196main(){
197SetGameModeText("TDM / Guerra de Clanes");
198SendRconCommand("hostname MoonExtreme");
199SendRconCommand("mapname San Andreas");
200SendRconCommand("weburl PROXIMAMENTE.com");
201SendRconCommand("language Español - Spanish");
202}
203
204//Guardar cuentas en caso de que el servidor sufra un apagon (evitar perdida de datos)
205public OnGameModeExit(){
206for(new i = 0; i < MAX_PLAYERS; i++) SalvarDatos(i);
207return 1;}
208
209public OnGameModeInit()
210{
211AddPlayerClass(280,2161.5742,1905.0181,10.8203,35.7537,0,0,0,0,0,0); // poli
212AddPlayerClass(281,2496.5444,-1670.4746,13.3359,84.2291,0,0,0,0,0,0); // poli
213AddPlayerClass(284,2496.5444,-1670.4746,13.3359,84.2291,0,0,0,0,0,0); // poli
214AddPlayerClass(287,800.7412,-1394.9552,13.4432,336.0926,0,0,0,0,0,0); // militar
215AddPlayerClass(285,2485.0122,-1677.2888,13.3373,110.6219,0,0,0,0,0,0); // militar
216AddPlayerClass(288,800.7412,-1394.9552,13.4432,336.0926,0,0,0,0,0,0); // militar
217
218AddStaticVehicleEx(520,179.50000000,1834.90002441,25.00000000,0.00000000,-1,-1,350); //Hydra
219AddStaticVehicleEx(520,197.00000000,1834.90002441,25.00000000,0.00000000,-1,-1,350); //Hydra
220AddStaticVehicleEx(548,197.50000000,1931.09997559,25.10000038,180.00000000,-1,-1,350); //Cargobob
221AddStaticVehicleEx(548,216.60000610,1931.69995117,25.10000038,180.00000000,-1,-1,350); //Cargobob
222AddStaticVehicleEx(470,193.39999390,1920.09997559,17.79999924,180.00000000,-1,-1,350); //Patriot
223AddStaticVehicleEx(470,220.30000305,1920.09997559,17.79999924,180.00000000,-1,-1,350); //Patriot
224AddStaticVehicleEx(433,202.39999390,1917.80004883,18.20000076,180.00000000,-1,-1,350); //Barracks
225AddStaticVehicleEx(433,211.89999390,1917.90002441,18.20000076,180.00000000,-1,-1,350); //Barracks
226AddStaticVehicleEx(432,277.10000610,1951.09997559,17.70000076,270.00000000,-1,-1,350); //Rhino
227AddStaticVehicleEx(432,277.10000610,1959.40002441,17.70000076,270.00000000,-1,-1,350); //Rhino
228AddStaticVehicleEx(476,281.29998779,1989.69995117,18.79999924,270.00000000,-1,-1,350); //Rustler
229AddStaticVehicleEx(432,281.20001221,2019.00000000,17.70000076,270.00000000,-1,-1,350); //Rhino
230AddStaticVehicleEx(432,281.39999390,2027.59997559,17.70000076,270.00000000,-1,-1,350); //Rhino
231AddStaticVehicleEx(432,221.80000305,1856.80004883,13.19999981,0.00000000,-1,-1,350); //Rhino
232AddStaticVehicleEx(432,214.19999695,1856.59997559,13.19999981,0.00000000,-1,-1,350); //Rhino
233AddStaticVehicleEx(490,206.10000610,1863.09997559,13.50000000,270.00000000,-1,-1,350); //FBI Rancher
234AddStaticVehicleEx(490,205.89999390,1870.80004883,13.50000000,270.00000000,-1,-1,350); //FBI Rancher
235AddStaticVehicleEx(425,348.79998779,1926.59997559,19.10000038,90.00000000,-1,-1,350); //Hunter
236AddStaticVehicleEx(425,348.79998779,1986.30004883,19.29999924,90.00000000,-1,-1,350); //Hunter
237
238Conexion = mysql_connect(HOST, USUARIO, CONTRA, DATABASE);
239
240mysql_query(Conexion, "CREATE TABLE IF NOT EXISTS `Usuarios`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nombre`varchar(24) NOT NULL,`Contraseña` varchar(20) NOT NULL,`Asesinatos` int(20) NOT NULL,`Muertes` int(10) NOT NULL,`Vip` int(10) NOT NULL,`Admin` int(10) NOT NULL,`Dinero` int(20) NOT NULL)", false);
241
242if(mysql_errno(Conexion) != 0)
243{
244 print("Error");
245} else {
246 print("Conexion Exitosa");
247}
248
249DisableInteriorEnterExits();
250return 1;
251}
252
253//Checaremos si la cuenta del Usuario existe en la ruta de Cuentas.
254public OnPlayerConnect(playerid){
255GetPlayerName(playerid, Cuenta[playerid][Nombre], 24);
256
257new Query[90];
258mysql_format(Conexion, Query, sizeof(Query), "SELECT `Contraseña`, `ID` FROM `Cuentas` WHERE `Nombre`='%s'", Cuenta[playerid][Nombre]);
259mysql_tquery(Conexion, Query, "VerificarCuentas", "i", playerid);
260
261BloqMP[playerid] = false;
262//TEXTDRAWS
263textdraw_0[playerid] = TextDrawCreate(323.000000, 425.000000, "_");
264TextDrawFont(textdraw_0[playerid], 1);
265TextDrawLetterSize(textdraw_0[playerid], 0.612500, 2.350007);
266TextDrawTextSize(textdraw_0[playerid], 319.500000, 655.500000);
267TextDrawSetOutline(textdraw_0[playerid], 1);
268TextDrawSetShadow(textdraw_0[playerid], 0);
269TextDrawAlignment(textdraw_0[playerid], 2);
270TextDrawColor(textdraw_0[playerid], -1);
271TextDrawBackgroundColor(textdraw_0[playerid], 255);
272TextDrawBoxColor(textdraw_0[playerid], 135);
273TextDrawUseBox(textdraw_0[playerid], 1);
274TextDrawSetProportional(textdraw_0[playerid], 1);
275TextDrawSetSelectable(textdraw_0[playerid], 0);
276
277textdraw_1[playerid] = TextDrawCreate(502.000000, 100.000000, "MoonExtreme");
278TextDrawFont(textdraw_1[playerid], 0);
279TextDrawLetterSize(textdraw_1[playerid], 0.600000, 2.000000);
280TextDrawTextSize(textdraw_1[playerid], 400.000000, 17.000000);
281TextDrawSetOutline(textdraw_1[playerid], 1);
282TextDrawSetShadow(textdraw_1[playerid], 0);
283TextDrawAlignment(textdraw_1[playerid], 1);
284TextDrawColor(textdraw_1[playerid], 16711935);
285TextDrawBackgroundColor(textdraw_1[playerid], 255);
286TextDrawBoxColor(textdraw_1[playerid], 0);
287TextDrawUseBox(textdraw_1[playerid], 1);
288TextDrawSetProportional(textdraw_1[playerid], 1);
289TextDrawSetSelectable(textdraw_1[playerid], 0);
290
291textdraw_2[playerid] = TextDrawCreate(319.000000, 354.000000, "_");
292TextDrawFont(textdraw_2[playerid], 1);
293TextDrawLetterSize(textdraw_2[playerid], 0.654166, 10.200002);
294TextDrawTextSize(textdraw_2[playerid], 301.500000, 635.500000);
295TextDrawSetOutline(textdraw_2[playerid], 1);
296TextDrawSetShadow(textdraw_2[playerid], 0);
297TextDrawAlignment(textdraw_2[playerid], 2);
298TextDrawColor(textdraw_2[playerid], -1);
299TextDrawBackgroundColor(textdraw_2[playerid], 255);
300TextDrawBoxColor(textdraw_2[playerid], 135);
301TextDrawUseBox(textdraw_2[playerid], 1);
302TextDrawSetProportional(textdraw_2[playerid], 1);
303TextDrawSetSelectable(textdraw_2[playerid], 0);
304
305textdraw_3[playerid] = TextDrawCreate(319.000000, 1.000000, "_");
306TextDrawFont(textdraw_3[playerid], 1);
307TextDrawLetterSize(textdraw_3[playerid], 0.654166, 10.200002);
308TextDrawTextSize(textdraw_3[playerid], 301.500000, 635.500000);
309TextDrawSetOutline(textdraw_3[playerid], 1);
310TextDrawSetShadow(textdraw_3[playerid], 0);
311TextDrawAlignment(textdraw_3[playerid], 2);
312TextDrawColor(textdraw_3[playerid], -1);
313TextDrawBackgroundColor(textdraw_3[playerid], 255);
314TextDrawBoxColor(textdraw_3[playerid], 135);
315TextDrawUseBox(textdraw_3[playerid], 1);
316TextDrawSetProportional(textdraw_3[playerid], 1);
317TextDrawSetSelectable(textdraw_3[playerid], 0);
318
319textdraw_4[playerid] = TextDrawCreate(262.000000, 351.000000, "MoonExtreme");
320TextDrawFont(textdraw_4[playerid], 0);
321TextDrawLetterSize(textdraw_4[playerid], 0.600000, 2.000000);
322TextDrawTextSize(textdraw_4[playerid], 400.000000, 17.000000);
323TextDrawSetOutline(textdraw_4[playerid], 1);
324TextDrawSetShadow(textdraw_4[playerid], 0);
325TextDrawAlignment(textdraw_4[playerid], 1);
326TextDrawColor(textdraw_4[playerid], 16711935);
327TextDrawBackgroundColor(textdraw_4[playerid], 255);
328TextDrawBoxColor(textdraw_4[playerid], 50);
329TextDrawUseBox(textdraw_4[playerid], 0);
330TextDrawSetProportional(textdraw_4[playerid], 1);
331TextDrawSetSelectable(textdraw_4[playerid], 0);
332
333TextDrawShowForPlayer(playerid, textdraw_2[playerid]);
334TextDrawShowForPlayer(playerid, textdraw_3[playerid]);
335TextDrawShowForPlayer(playerid, textdraw_4[playerid]);
336return 1;}
337
338//Guardar cuenta del Usuario.
339public OnPlayerDisconnect(playerid){
340BloqMP[playerid] = false;
341SalvarDatos(playerid);
342SendClientMessage(playerid,-1,"Sus datos fueron guardados.");
343return 1;
344}
345
346public OnPlayerSpawn(playerid)
347{
348TextDrawShowForPlayer(playerid, textdraw_0[playerid]);
349TextDrawShowForPlayer(playerid, textdraw_1[playerid]);
350TextDrawHideForPlayer(playerid, textdraw_2[playerid]);
351TextDrawHideForPlayer(playerid, textdraw_3[playerid]);
352TextDrawHideForPlayer(playerid, textdraw_4[playerid]);
353if(gTeam[playerid] == TEAM_POLICIA)//si el jugador es policia...
354{
355SetPlayerArmour(playerid,100);
356SetPlayerPos(playerid,1545.34,-1675.66,13.56);//marcamos su zona de spawn,en este caso LSPD
357SetPlayerColor(playerid, 0x0080C0FF);//le damos un color
358GivePlayerWeapon(playerid, 23,2000);//silenciada pistola
359GivePlayerWeapon(playerid, 27,2000);//esco de combate
360GivePlayerWeapon(playerid, 29,2000);//mp5
361GivePlayerWeapon(playerid, 31,2000);//m4
362GivePlayerWeapon(playerid, 34,500);//sniper
363GivePlayerWeapon(playerid, 39,5);//c4
364GivePlayerWeapon(playerid, 3,1);//palo policia
365SetPlayerFightingStyle(playerid, FIGHT_STYLE_BOXING);//le damos un estilo de pelea
366SetPlayerInterior(playerid,0);
367}
368if(gTeam[playerid] == TEAM_MILITAR)
369{
370SetPlayerArmour(playerid,100);
371SetPlayerColor(playerid, 0x0080C0FF);//le damos un color
372SetPlayerPos(playerid, 2526.5264,-1667.4340,15.1687);//le damos un spawn a los militares
373GivePlayerWeapon(playerid, 35, 10);//rpg
374GivePlayerWeapon(playerid, 18, 5);//molotov
375GivePlayerWeapon(playerid, 22, 2000);//9mm
376GivePlayerWeapon(playerid, 25, 500);//escopeta
377GivePlayerWeapon(playerid, 30, 2500);//ak47
378GivePlayerWeapon(playerid, 31, 2000);//m4
379GivePlayerWeapon(playerid, 38, 50);// minigun
380GivePlayerWeapon(playerid, 41, 1000);//lata de gas
381GivePlayerWeapon(playerid, 34, 500);//sniper
382GivePlayerWeapon(playerid,1,1);
383SetPlayerFightingStyle(playerid, FIGHT_STYLE_KUNGFU);
384SetPlayerInterior(playerid, 0);
385}
386if(gTeam[playerid] == TEAM_ALQAEDA)
387{
388
389}
390SetPlayerTeam(playerid, gTeam[playerid]);//Importante,esto hace que los de un mismo equipo no se puedan matar
391return 1;
392}
393
394public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
395{
396 switch(dialogid)
397 {
398 case DIALOG_REGISTRO:
399 {
400 if(!response) return Kick(playerid);
401
402 if(strlen(inputtext) < 4 || strlen(inputtext) > 24)
403 {
404 SendClientMessage(playerid, -1, "ERROR:{FFFFFF} La contraseña debe tener de 4 a 24 charácteres");
405
406 new Dialog[240];
407 format(Dialog, sizeof(Dialog),"{F8F8FF}Bienvenido a MoonExtreme {058AFF}%s{F8F8FF}\n\nNo estás registrado\n\nDigite su contraseña para registrarlo\n\nEstado: {058AFF}N/A Registrado{F8F8FF}", Cuenta[playerid][Nombre]);
408 ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
409
410 } else {
411
412 new Query[100];
413 mysql_format(Conexion, Query, sizeof(Query), "INSERT INTO `Cuentas`(`Nombre`, `Contraseña`) VALUES ('%s', '%s')", Cuenta[playerid][Nombre], inputtext);
414 mysql_tquery(Conexion, Query, "DatosRegistrados", "i", playerid);
415
416 RegistrarDatos(playerid);
417 }
418 }
419
420 case DIALOG_LOGIN:
421 {
422 if(!response) return Kick(playerid);
423 if(!strlen(inputtext))
424 {
425 SendClientMessage(playerid, -1, "ERROR:{FFFFFF} No ingresaste tu contraseña!");
426 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite su contraseña", "Digite su contraseña para ingresar", "Ingresar", "Salir");
427 return 1;
428 }
429 if(!strcmp(Cuenta[playerid][cLlave], inputtext, true, 24))
430 {
431
432 new Query[70];
433 mysql_format(Conexion, Query, sizeof(Query), "SELECT * FROM `Cuentas` WHERE Nombre='%s'", Cuenta[playerid][Nombre]);
434 mysql_tquery(Conexion, Query, "CargarCuentas", "d", playerid);
435
436
437 } else {
438
439 SendClientMessage(playerid, -1, "ERROR:{FFFFFF} Contraseña incorrecta");
440 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite su contraseña:", "Digite su contraseña para ingresar", "Ingresar", "Salir");
441 }
442 }
443 }
444 return 1;
445}
446
447public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
448{
449new Float:px,Float:py,Float:pz;
450GetPlayerPos(issuerid, px, py, pz);
451PlayerPlaySound(issuerid, 5202, px, py, pz);
452return 1;
453}
454
455public OnPlayerDeath(playerid, killerid, reason)
456{
457Cuenta[playerid][cMuertes]++;
458Cuenta[killerid][cAsesinatos]++;
459new Float:px,Float:py,Float:pz;
460GetPlayerPos(playerid, px, py, pz);
461PlayerPlaySound(playerid, 5206, px, py, pz);
462new Float:ptx,Float:pty,Float:ptz;
463GetPlayerPos(killerid, ptx, pty, ptz);
464PlayerPlaySound(killerid, 5205, ptx, pty, ptz);
465return 1;
466}
467public OnPlayerRequestClass(playerid, classid)
468{
469gPlayerClass[playerid] = classid;//Le daremos una "Class" a los skins,estas "Class" seran los teams
470
471switch (classid)
472{
473case 0:
474{
475 gTeam[playerid] = TEAM_POLICIA;
476 SetPlayerSkin(playerid, 280);
477}
478case 1:
479{
480 gTeam[playerid] = TEAM_POLICIA;
481 SetPlayerSkin(playerid, 281);
482}
483case 2:
484{
485 gTeam[playerid] = TEAM_POLICIA;
486 SetPlayerSkin(playerid, 284);
487}
488
489
490case 3:
491{
492 gTeam[playerid] = TEAM_MILITAR;
493 SetPlayerSkin(playerid, 287);
494}
495case 4:
496{
497 gTeam[playerid] = TEAM_MILITAR;
498 SetPlayerSkin(playerid, 285);
499}
500case 5:
501{
502 gTeam[playerid] = TEAM_MILITAR;
503 SetPlayerSkin(playerid, 288);
504}
505}//cerramos el switch
506SetPlayerPos(playerid, 489.8416,-72.4437,999.2266);//esto sera la posicion que ve el player cuando esta elijiendo equipo.
507SetPlayerFacingAngle( playerid, 2.3616 );
508SetPlayerCameraPos(playerid, 491.6849,-72.3607,999.2117);
509SetPlayerCameraLookAt(playerid, 489.8416,-72.4437,999.2266);
510SetPlayerInterior(playerid, 11);
511return 1;
512}
513
514//Dar el Dinero & Score del Usuario.
515public OnPlayerUpdate(playerid){
516//Su dinero
517if(GetPlayerMoney(playerid) != Cuenta[playerid][cDinero]){
518ResetPlayerMoney(playerid);
519//Su score
520GivePlayerMoney(playerid,Cuenta[playerid][cDinero]);}
521if(GetPlayerScore(playerid) != Cuenta[playerid][cAsesinatos]){
522SetPlayerScore(playerid,Cuenta[playerid][cAsesinatos]);}
523return 1;}
524
525//Comando para dar administracion
526COMMAND:daradmin(playerid,params[]){
527if(Cuenta[playerid][cAdmin] >= 10 || IsPlayerAdmin(playerid)){
528new Jugador,Nivel;
529if(sscanf(params,"ud",Jugador,Nivel))return SendClientMessage(playerid,-1,"Usa: /daradmin [Jugador] [Nivel]");
530if(IsPlayerConnected(Jugador)){
531if(Nivel >= 0){
532Cuenta[Jugador][cAdmin] = Nivel;
533SendClientMessageEx(Jugador,-1,"El administrador %s te dio nivel %d de administracion.",GetPlayerName(playerid),Nivel);
534SendClientMessageEx(playerid,-1,"Le has dado nivel %d de administracion a %s",Nivel,GetPlayerName(Jugador));
535}else return SendClientMessage(playerid,-1,"ERROR: Nivel minimo es 0.");
536}else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
537}else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
538return 1;}
539
540//Comando para dar VIP
541COMMAND:darvip(playerid,params[]){
542if(Cuenta[playerid][cAdmin] >= 10 || IsPlayerAdmin(playerid)){
543new Jugador,Nivel;
544if(sscanf(params,"ud",Jugador,Nivel))return SendClientMessage(playerid,-1,"Usa: /darvip [Jugador] [Nivel]");
545if(IsPlayerConnected(Jugador)){
546if(Nivel >= 0){
547Cuenta[Jugador][cVip] = Nivel;
548SendClientMessageEx(Jugador,-1,"El administrador %s te dio VIP nivel %d",GetPlayerName(playerid),Nivel);
549SendClientMessageEx(playerid,-1,"Le has dado VIP Nivel %d a %s",Nivel,GetPlayerName(Jugador));
550}else return SendClientMessage(playerid,-1,"ERROR: Nivel minimo es 0.");
551}else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
552}else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
553return 1;}
554
555//Comando para dar dinero
556COMMAND:darcash(playerid,params[]){
557if(Cuenta[playerid][cAdmin] >= 10 || IsPlayerAdmin(playerid)){
558new Jugador,Dinero;
559if(sscanf(params,"ud",Jugador,Dinero))return SendClientMessage(playerid,-1,"Usa: /darcash [Jugador] [Dinero]");
560if(IsPlayerConnected(Jugador)){
561Cuenta[Jugador][cDinero] += Dinero;
562SendClientMessageEx(Jugador,-1,"El administrador %s te dio $%d dolares.",GetPlayerName(playerid),Dinero);
563SendClientMessageEx(playerid,-1,"Le has dado $%d dolares a %s",Dinero,GetPlayerName(Jugador));
564}else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
565}else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
566return 1;}
567
568//Comando para dar score
569COMMAND:darscore(playerid,params[]){
570if(Cuenta[playerid][cAdmin] >= 10 || IsPlayerAdmin(playerid)){
571new Jugador,Score;
572if(sscanf(params,"ud",Jugador,Score))return SendClientMessage(playerid,-1,"Usa: /darscore [Jugador] [Score]");
573if(IsPlayerConnected(Jugador)){
574Cuenta[Jugador][cAsesinatos] += Score;
575SendClientMessageEx(Jugador,-1,"El administrador %s te a dado %d de Score.",GetPlayerName(playerid),Score);
576SendClientMessageEx(playerid,-1,"Le has dado %d de score a %s",Score,GetPlayerName(Jugador));
577}else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
578}else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
579return 1;}
580
581CMD:r(playerid, params[])
582{
583new text[128], names[60];
584if(sscanf(params, "s", text)) SendClientMessage(playerid, 0xFFFF00FF, "USA: /R <texto>");
585else
586{
587 new string[322];
588 GetPlayerName(playerid, names, 60);
589 format(string, 322, "(%s) (Radio): %s", names, text);
590 for(new i=0;i<MAX_PLAYERS;i++)
591 {
592if(IsPlayerConnected(i))
593{
594if(gTeam[i] == gTeam[playerid])
595{
596SendClientMessage(i, 0xFF0080FF, string);
597}
598}
599}
600}
601return 1;
602}
603// comandos casas
604
605// COMANDOS
606
607zcmd(adminduty, playerid, params[])
608{
609cmd_admin
610new string[100];
611new name[MAX_PLAYER_NAME];
612GetPlayerName(playerid, name, 24);
613if(!AdminDuty[playerid]){
614 AdminDuty[playerid] = true;
615 SetPlayerArmour(playerid, 100);
616 SetPlayerHealth(playerid, 100);
617 SetPlayerSkin(playerid, 217);
618 SendClientMessageToAll(COLOR_ORANGE, "***=MoonExtreme=***");
619 format(string, sizeof(string), "Nuestro Administrador %s está conectado.", name);
620 SendClientMessageToAll(0xFFFFA4FF,string);
621 return SendClientMessageToAll(COLOR_ORANGE, "****************************");
622 }
623 else
624 {
625 AdminDuty[playerid] = false;
626 SetPlayerArmour(playerid, 100);
627 SetPlayerHealth(playerid, 100);
628 SendClientMessageToAll(COLOR_ORANGE, "***=MoonExtreme=***");
629 format(string, sizeof(string), "Nuestro Administrador %s está offduty ya no atendera las dudas o reportes.", name);
630 SendClientMessageToAll(0xAA3333AA,string);
631 return SendClientMessageToAll(COLOR_ORANGE, "****************************");
632 }
633}
634CMD:jetpack(playerid,params[])
635{
636 cmd_admin
637 SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK);
638 return 1;
639}
640CMD:irpos(playerid, params[])
641{
642cmd_admin
643new Float:_Pos[3],interior,world;
644if(sscanf(params, "p<,>fffdd", _Pos[0], _Pos[1], _Pos[2],interior,world)) return SendClientMessage(playerid,-1, "/irpos [x] [y] [z] [interior] [world]");
645SetPlayerPos(playerid, _Pos[0], _Pos[1], _Pos[2]);
646SetPlayerInterior(playerid, interior);
647SetPlayerVirtualWorld(playerid, world);
648return 1;
649}
650/*CMD:creditos(playerid, params[])
651{
652PlayerPlaySound(playerid,1139, 0, 0, 0);
653return 1;
654}*/
655
656CMD:reportar(playerid, params[])
657{
658new nombrejugador[MAX_PLAYER_NAME], nombrereportado[MAX_PLAYER_NAME], string[256], Razon[128], reportadoid;
659if(sscanf(params, "us[128]", reportadoid, Razon))return SendClientMessage(playerid, COLOR_AQUAMARINE, "Usa: /reportar [ID] [Razon]");
660if(!IsPlayerConnected(reportadoid)) return 0;
661GetPlayerName(playerid, nombrejugador, sizeof(nombrejugador));
662GetPlayerName(reportadoid, nombrereportado, sizeof(nombrereportado));
663PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
664format(string, sizeof(string), "El usuario %s [%d] ha reportado al usuario %s [%d] por %s.", nombrejugador, playerid, nombrereportado, reportadoid, Razon);
665SendClientMessage(playerid, COLOR_AQUAMARINE, "Tu reporte fue enviado a los administradores conectados.");
666Log(string);
667MensajeParaAdmins(COLOR_AZURE, string);
668return 1;
669}
670
671CMD:mp(playerid,params[])
672{
673 new temp_string[3][60],message[50],name[2][30],reciver;
674 GetPlayerName(playerid,name[0],30);
675 if(BloqMP[playerid] == true) return SendClientMessage(playerid,-1,"No puedes mandar Mensajes Privados,Usa el comando /bmp");
676 if(sscanf(params,"ds",reciver,message)) return SendClientMessage(playerid,-1,"/mp [id] [Mensaje]");
677 if(reciver == playerid) return SendClientMessage(playerid,-1,"No puedes enviarte un mensaje privado a ti mismo");
678 if(BloqMP[reciver] == true) return SendClientMessage(playerid,-1,"Ese persona tiene bloqueado sus Mensajes Privados");
679 if(!IsPlayerConnected(reciver)) return SendClientMessage(playerid,-1,"El jugador especificado no está conectado");
680 GameTextForPlayer(playerid,"~y~Mensaje privado enviado.",(3 * 1000),3);
681 format(temp_string[0],60,"~y~Mensaje privado de ~w~ %s(%d)",name,playerid);
682 GameTextForPlayer(reciver,temp_string[0],(3 * 1000),3);
683 format(temp_string[1],60,"{7B0FAA}MP: Recibido de %s[%d]{FFFFFF}: %s",name[0],playerid,message);
684 SendClientMessage(reciver,-1,temp_string[1]);
685 GetPlayerName(reciver,name[1],30);
686 format(temp_string[2],60,"{7B0FAA}MP Enviado a %s[%d]{FFFFFF}: %s",name[1],reciver,message);
687 SendClientMessage(playerid,-1,temp_string[2]);
688 return 1;
689}
690CMD:bmp(playerid,params[])
691{
692 if(BloqMP[playerid] == true)
693 {
694 BloqMP[playerid] = false;
695 SendClientMessage(playerid,-1,"{7B0FAA}Bloqueo de mensajes privados: Desactivado{FFFFFF},A hora podrás recibir y enviar mensajes privados");
696 return 1;
697 }
698 else
699 {
700 BloqMP[playerid] = true;
701 SendClientMessage(playerid,-1,"{7B0FAA}Bloqueo de mensajes privados: Activo{FFFFFF},A hora no podrás mandar ni recibir mensajes privados");
702 }
703 return 1;
704}