· 7 years ago · Oct 09, 2018, 07:14 PM
1////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2//////////////////////////////S E R V I D O R M E J O R Q U E E L .ES///////////////////////////////////////////////////
3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4//INCLUDES//
5#include <a_samp>
6#include <a_mysql>
7#include <Pawn.CMD>
8#include <sscanf2>
9//INCRIPTACIÓN(MACROS Y NATIVES)//
10native WP_Hash(buffer[], len, const str[]);
11//DEFINES//
12new MySQL:DATABASE;
13#define MYSQL_HOST "localhost" //Nuestro host MySQL
14#define MYSQL_USER "root" //El usuario MySQL
15#define MYSQL_DATABASE "miserver0" //El nombre que le dimos a nuestra base de datos anteriormente
16#define MYSQL_PASSWORD "" //La contraseña del servidor MySQL, dejala en blanco
17#undef MAX_PLAYERS
18#define MAX_PLAYERS 101 //Cambiar por los slots de tu servidor.
19//////DIALOGOS///////
20#define DIALOGO_CORREO 1
21#define DIALOGO_INGRESO 2 //+2
22#define DIALOGO_PERSONAJES 3
23//FORWARD'S//
24forward VerificarUsuario(playerid);
25//ENUM'S//
26enum DatosJugador
27{
28 ID,
29 Correo[32],
30 Contra[129],
31 IP[16],
32 bool:Logeado,
33 Personajes[3]
34};
35enum DatosPersonajes
36{
37 pID,
38 pNombre[MAX_PLAYER_NAME],
39 pAdmin,
40 pNivel,
41 pDinero,
42 pEdad,
43 pSexo,
44 pDineroBanco,
45 pRopa,
46 Float:pVida,
47 Float:pChaleco,
48 Float:pPosx,
49 Float:pPosy,
50 Float:pPosz,
51 //Temporales
52 Intentos
53};
54
55//NEW'S//
56new Jugador[MAX_PLAYERS][DatosJugador];
57new Cuenta[MAX_PLAYERS][DatosPersonajes];
58new _@PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
59//Demas
60CuentaExistente(correo[])
61{
62 new query[(42+24)];
63 mysql_format(DATABASE,query,sizeof(query),"SELECT * FROM Usuarios WHERE Correo = '%e'",correo);
64 new Cache:R = mysql_query(DATABASE,query,true);
65 if(cache_num_rows()){return true;}
66 cache_delete(R);
67 return false;
68}
69//PUBLIC'S Y DEMÃS//
70main()
71{
72 DATABASE = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
73 mysql_log(ALL);
74 if(!mysql_errno())
75 {
76 mysql_query(DATABASE, "CREATE TABLE IF NOT EXISTS Usuarios (ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Correo VARCHAR(32), Contra VARCHAR(129) NOT NULL, IP VARCHAR(16))", false);
77 mysql_query(DATABASE, "CREATE TABLE IF NOT EXISTS Personajes (pID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, pNombre VARCHAR(24), pAdmin DEFAULT 0, pNivel DEFAULT 1, pDinero DEFAULT 0, pDineroBanco DEFAULT 0, pRopa INT DEFAULT 0, pPosX FLOAT DEFAULT 0.0, pPosY FLOAT DEFAULT 0.0, pPosZ FLOAT DEFAULT 0.0, pPosA FLOAT DEFAULT 0.0, pVida FLOAT DEFAULT 100.0, pChaleco FLOAT DEFAULT 0.0)", false);
78 printf("[MySQL] La conexión no se ha podido realizar.");
79 SendRconCommand("exit"); // cerramos el servidor para evitar problemas
80 }
81 else
82 {
83 printf("[MySQL] La conexión se ha realizado correctamente.");
84 }
85 return 1;
86}
87public OnGameModeInit()
88{
89 /* Funciones Básicas para RP */
90 LimitPlayerMarkerRadius(20.0);
91 DisableInteriorEnterExits();
92 EnableStuntBonusForAll(0);
93 ShowNameTags(1);
94 UsePlayerPedAnims();
95 SendRconCommand("password");
96 SetGameModeText("Base RolePlay v0.1");
97 SendRconCommand("hostname » [BR] Base RolePlay en español");
98 return 1;
99}
100
101public OnGameModeExit()
102{
103 return 1;
104}
105
106public OnPlayerRequestClass(playerid, classid)
107{
108 return 1;
109}
110public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
111{
112 switch(dialogid)
113 {
114 case DIALOGO_CORREO:
115 {
116 if(!response) return SendClientMessage(playerid, -1, "Piensatelo bien y vuelve más tarde.");
117 if(response)
118 {
119 new error[128], contrasena[128];
120 format(error, sizeof(error), "El correo electronico (%s) no existe\nPor favor indica uno que exista.", inputtext);
121 if(strval(inputtext) < 5 || strval(inputtext) > 32) return ShowPlayerDialog(playerid, DIALOGO_CORREO, DIALOG_STYLE_INPUT, "Inicio de sesión", "No se encontro el correo en la base de datos(5 a 32 caracteres)\nPor favor pon algo que exista.", "Iniciar", "Salir");
122 if(!CuentaExistente(inputtext))return ShowPlayerDialog(playerid, DIALOGO_CORREO, DIALOG_STYLE_INPUT, "Inicio de sesión", error , "Iniciar", "Salir");
123 format(contrasena, sizeof(contrasena), "Ingresa la contraseña de tu correo (%s)\n¡ES HORA DE JUGAR, ¿QUÉ ESPERAS?!", inputtext);
124 ShowPlayerDialog(playerid, DIALOGO_INGRESO, DIALOG_STYLE_PASSWORD, "Incio de sesión", contrasena, "Entrar", "Cancelar");
125 }
126 }
127 case DIALOGO_INGRESO:
128 {
129 if(!response) return SendClientMessage(playerid, -1,"Piensatelo bien y vuelve más tarde.");
130 if(response)
131 {
132 if(strval(inputtext) < 5 || strval(inputtext) > 32) return ShowPlayerDialog(playerid, DIALOGO_INGRESO, DIALOG_STYLE_PASSWORD, "Inicio de sesión", "No se encontro la contraseña en el sistema(5 a 32 caracteres)\nPor favor pon algo que exista.", "Iniciar", "Salir");
133 }
134 }
135 }
136 return 1;
137}
138public OnPlayerConnect(playerid)
139{
140 GetPlayerName(playerid, _@PlayerName[playerid], MAX_PLAYER_NAME);
141 new str[15]; format(str, sizeof(str), "Conectando_%d", playerid);
142 SetPlayerName(playerid, str);
143 Jugador[playerid][Logeado] = false;
144 ShowPlayerDialog(playerid, DIALOGO_CORREO, DIALOG_STYLE_INPUT, "Inicio de sesión", "¡BIENVENIDO A LA-RP.ES!\nPor favor indica un correo electronico para ingresar a tu cuenta", "Iniciar", "Cancelar");
145 return 1;
146}
147
148public OnPlayerDisconnect(playerid, reason)
149{
150 return 1;
151}
152
153public OnPlayerSpawn(playerid)
154{
155 if(!Jugador[playerid][Logeado]){
156 Jugador[playerid][Logeado] = true;
157 SetPlayerName(playerid, _@PlayerName[playerid]);
158 }
159 return 1;
160}
161
162public OnPlayerDeath(playerid, killerid, reason)
163{
164 return 1;
165}
166
167public OnVehicleSpawn(vehicleid)
168{
169 return 1;
170}
171
172public OnVehicleDeath(vehicleid, killerid)
173{
174 return 1;
175}
176
177public OnPlayerText(playerid, text[]) //Comando después del * BY: HERMES (Uso: escribes algo en el chat ejemplo - hola como estas *dice mirando al sujeto*)
178{
179
180 return 0;
181}
182
183public OnPlayerCommandText(playerid, cmdtext[])
184{
185 return 1;
186}
187/////////////////
188CamaraInicio(playerid)
189{
190 SetPlayerCameraPos(playerid, 1533.2587, -1763.7717, 73.6204);
191 SetPlayerCameraLookAt(playerid, 1532.9288, -1762.8286, 73.0504);
192 SetPlayerPos(playerid,1513.4531, -1782.2853, 68.0610);
193 TogglePlayerControllable(playerid,0);
194 return 1;
195}