· 6 years ago · Jun 05, 2019, 04:52 AM
1public SQL_Crear(failstate, Handle:query, error[], szerror, data[], szdata, Float:time)
2{
3 static id; id = data[0];
4
5 if (!is_user_connected(id)) return;
6
7 if (failstate == TQUERY_CONNECT_FAILED || failstate == TQUERY_QUERY_FAILED)
8 {
9 // Creamos un log.que indicará donde esta el error.
10 log_to_file("SQL_Error.txt", "Error: [%i] | [%s]", szerror, error);
11 }
12
13 switch(data[1])
14 {
15 case DATA_REG:
16 {
17 if (failstate < TQUERY_SUCCESS) client_print(id, print_chat, "%s: Error al registrarte.", PREFIJO);
18 else
19 {
20 g_estado[id] = LOGUEADO; // Si se registró exitosamente ponemos su estado LOGUEADO.
21 engclient_cmd(id, "jointeam", "5"); // Seleccionamos un equipo al azar.
22 engclient_cmd(id, "joinclass", "5"); // Seleccionamos la clase al azar.
23 cargar(id); // Le cargamos los datos.
24 // Mandamos un print que se registró exitosamente.
25 client_print(id, print_chat, "%s: Registro exitoso! - Nombre: %s - Password: %s", PREFIJO, g_nombre[id], g_password[id]);
26 }
27 }
28 case DATA_LOG:
29 {
30 if (SQL_NumResults(query)) // Si lanza un resultado.
31 {
32 static password[34]; // creamos una variable estatica para comprobar la password.
33
34 SQL_ReadResult(query, 0, password, 33); // Guardamos la variable estatica.
35
36 if (equali(password, g_password[id])) // Si la password es igual a la que puso.
37 {
38 g_estado[id] = LOGUEADO; // Le ponemos el estado logueado.
39 engclient_cmd(id, "jointeam", "5"); // Seleccionamos un equipo al azar.
40 engclient_cmd(id, "joinclass", "5"); // Seleccionamos la clase al azar.
41 cargar(id); // Le cargamos los datos.
42 // Mandamos un print que se logueó exitosamente.
43 client_print(id, print_chat, "%s: Bienvenido %s", PREFIJO, g_nombre[id]);
44 } // Caso contrario le mandamos un print que la password que introdujo no coincide.
45 else
46 {
47 client_print(id, print_chat, "%s: Password Incorrecta", PREFIJO);
48 registro(id);
49 }
50 }
51 else // Si no tira ningún resultado, mandamos un print que el nombre no fue registrado.
52 {
53 client_print(id, print_chat, "%s: Este nombre no fue registrado.", PREFIJO);
54 registro(id);
55 }
56 }
57 case DATA_SAVE:
58 {
59 if (failstate < TQUERY_SUCCESS) client_print(id, print_chat, "%s: Error al guardar datos.", PREFIJO);
60 else client_print(id, print_chat, "%s: Datos guardados con exito!", PREFIJO);
61 }
62 case DATA_LOAD:
63 {
64 if (SQL_NumResults(query)) {
65 static szNVG[30], szN1[10], szN2[10], szN3[10]
66 SQL_ReadResult(query, 0, szNVG, charsmax(szNVG))
67 parse(szNVG, szN1, charsmax(szN1), szN2, charsmax(szN2), szN3, charsmax(szN3))
68
69 static szCH[30], szCH1[10], szCH2[10], szCH3[10]
70 SQL_ReadResult(query, 1, szCH, charsmax(szCH))
71 parse(szCH, szCH1, charsmax(szCH1), szCH2, charsmax(szCH2), szCH3, charsmax(szCH3))
72
73 gLevel[id] = SQL_ReadResult(query, 2); // Le devolvemos el valor de la variable
74 gExp[id] = SQL_ReadResult(query, 3); // Le devolvemos el valor de la variable
75 gReset[id] = SQL_ReadResult(query, 4); // Le devolvemos el valor de la variable
76 gPuntoT[id] = SQL_ReadResult(query, 5); // Le devolvemos el valor de la variable
77 gPuntos[id][0] = SQL_ReadResult(query, 6);
78 gPuntos[id][1] = SQL_ReadResult(query, 7);
79 gGastados[id][0] = SQL_ReadResult(query, 8);
80 gGastados[id][1] = SQL_ReadResult(query, 9);
81 gInfec[id] = SQL_ReadResult(query, 10);
82 gKillsz[id] = SQL_ReadResult(query, 11);
83 SQL_ReadResult(query, 12, Float:gHudPosition[id][0])
84 SQL_ReadResult(query, 13, Float:gHudPosition[id][1])
85
86 gNvgColor[id][0] = str_to_num(szN1)
87 gNvgColor[id][1] = str_to_num(szN2)
88 gNvgColor[id][2] = str_to_num(szN3)
89
90 gHudColor[id][0] = str_to_num(szCH1)
91 gHudColor[id][1] = str_to_num(szCH2)
92 gHudColor[id][2] = str_to_num(szCH3)
93 }
94 else client_print(id, print_chat, "%s: Error al cargar datos.", PREFIJO);
95 }
96 case DATA_CHECK_PJ:
97 {
98 if (SQL_NumResults(query)) // Si tira un resultado.
99 { // Mandamos un print que el nombre ya fue registrado
100 client_print(id, print_chat, "%s: El nombre %s ya esta en uso.", PREFIJO, g_nombre[id]);
101 registro(id);
102 return;
103 }
104 else // Caso contrario hacemos que confirme su password.
105 client_cmd(id, "messagemode CONFIRMAR_PASSWORD");
106 }
107 case DATA_PASSWORD:
108 {
109 if (failstate < TQUERY_SUCCESS) client_print(id, print_chat, "%s: Ocurrio un error al cambiar la password.", PREFIJO);
110 else client_print(id, print_chat, "%s: La password se cambio con exito! - Nueva password: %s", PREFIJO, g_password[id]);
111 }
112 }
113}
114
115public fw_infochanged(id, buffer)
116{
117 if (is_user_connected(id))
118 {
119 static nombre_actual[32], nuevo_nombre[32];
120 get_user_name(id, nombre_actual, charsmax(nombre_actual));
121 engfunc(EngFunc_InfoKeyValue, buffer, "name", nuevo_nombre, charsmax(nuevo_nombre));
122
123 if (equal(nuevo_nombre, nombre_actual))
124 return FMRES_IGNORED
125
126 engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", nombre_actual);
127 client_cmd(id, "name ^"%s^"", nombre_actual)
128 return FMRES_SUPERCEDE
129 }
130
131 return FMRES_IGNORED
132}
133
134public guardar(id)
135{
136 static query[1024], datos[2];
137 datos[0] = id;
138 datos[1] = DATA_SAVE;
139
140 // Le guardamos los datos en la tabla SQL_Datos por su nombre.
141 formatex(query, charsmax(query), "UPDATE SQL_Datos SET Level=^"%d^", Experiencia=^"%d^", Reset=^"%d^", PuntosReset=^"%d^", PuntosHumanos=^"%d^", PuntosZombies=^"%d^", \
142 GastadosHumanos=^"%d^", GastadosZombies=^"%d^", Infectados=^"%d^", ZombieKills=^"%d^", NVG='%d %d %d', ColorHUD='%d %d %d', HudX='%f', HudY='%f', EffectHUD='%d' WHERE Nombre=^"%s^"",
143 gLevel[id], gExp[ id ],gReset[ id ],
144 gPuntoT[id], gPuntos[id][0], gPuntos[id][1],
145 gGastados[id][0], gGastados[id][1], gInfec[id], gKillsz[id],
146 gNvgColor[id][0], gNvgColor[id][1], gNvgColor[id][2],
147 gHudColor[id][0], gHudColor[id][1], gHudColor[id][2],
148 gHudPosition[id][0], gHudPosition[id][1],
149 gHudEffect[id], g_nombre[ id]);
150
151 SQL_ThreadQuery(g_htuple, "SQL_Crear", query, datos, 2);
152}
153
154public cargar(id)
155{
156 static query[1024], datos[2];
157 datos[0] = id;
158 datos[1] = DATA_LOAD;
159
160 // Seleccionamos en su nombre, el nombre de la/s varibale/s que pusimos en guardar(id)
161 formatex(query, charsmax(query), "SELECT Level, Experiencia, Reset, PuntosReset, PuntosHumanos, PuntosZombies, GastadosHumanos, GastadosZombies, Infectados, ZombieKills, NVG, ColorHUD, HudX, HudY, EffectHUD FROM SQL_Datos WHERE Nombre=^"%s^"", g_nombre[id]);
162
163 SQL_ThreadQuery(g_htuple, "SQL_Crear", query, datos, 2);
164}
165
166/* *** INICIAMOS EL SQL *** */
167public sql_inicio()
168{
169 new get_type[12], g_tabla[1024], len;
170
171 SQL_SetAffinity("sqlite"); // Usamos la afinidad para que el modulo a usarse sea "sqlite".
172 SQL_GetAffinity(get_type, sizeof(get_type));
173
174 if (!equali(get_type, "sqlite")) // Si el tipo no es igual a "sqlite".
175 {
176 // Creamos un log que dira: Error de Conexion.
177 log_to_file("SQL_CONEXION.txt", "Error de Conexion");
178 return pause("a"); // Si el modulo sqlite no esta activado le pausamos el plugin.
179 }
180
181 /*
182 NOTA:
183 * En caso de guardar más datos. se deberá agregarla en la columna donde creamos la tabla.
184 * EJEMPLO: Quiero guardar el nivel, Siempre al agregar datos tiene que ir el nombre que pusimos en
185 * guardar/cargar - En este caso yo puse variable='%d, en caso de agregarle cualquier otra cosa sería.
186 * variable='%d', nivel='%d'. <-- Siempre la ultima variable se cierra con un )
187 * len += formatex(g_tabla[len], charsmax(g_tabla), "variable int NOT NULL DEFAULT '0',");
188 * len += formatex(g_tabla[len], charsmax(g_tabla), "nivel int NOT NULL DEFAULT '1')");
189 * Recordar: Al agregar mas variables, se deberá aumentar las celdas de g_tabla y
190 * borrár nuevamente la base de datos.
191 */
192
193 g_htuple = SQL_MakeDbTuple("", "", "", SQL_BASE); // Registramos la Base de Datos
194
195 len = 0;
196 len += formatex(g_tabla[len], charsmax(g_tabla), "CREATE TABLE IF NOT EXISTS SQL_Datos (");
197 len += formatex(g_tabla[len], charsmax(g_tabla), "Nombre varchar(33) NOT NULL DEFAULT '' PRIMARY KEY,"); // Agregamos a la tabla el nombre,
198 len += formatex(g_tabla[len], charsmax(g_tabla), "Password varchar(33) NOT NULL DEFAULT '',"); // Agregamos a la tabla la password,
199 len += formatex(g_tabla[len], charsmax(g_tabla), "Level int NOT NULL DEFAULT '1',");
200 len += formatex(g_tabla[len], charsmax(g_tabla), "Experiencia int NOT NULL DEFAULT '0',");
201 len += formatex(g_tabla[len], charsmax(g_tabla), "Reset int NOT NULL DEFAULT '0',");
202 len += formatex(g_tabla[len], charsmax(g_tabla), "PuntosReset int NOT NULL DEFAULT '0',");
203 len += formatex(g_tabla[len], charsmax(g_tabla), "PuntosHumanos int NOT NULL DEFAULT '0',");
204 len += formatex(g_tabla[len], charsmax(g_tabla), "PuntosZombies int NOT NULL DEFAULT '0',");
205 len += formatex(g_tabla[len], charsmax(g_tabla), "GastadosHumanos int NOT NULL DEFAULT '0',");
206 len += formatex(g_tabla[len], charsmax(g_tabla), "GastadosZombies int NOT NULL DEFAULT '0',");
207 len += formatex(g_tabla[len], charsmax(g_tabla), "Infectados int NOT NULL DEFAULT '0',");
208 len += formatex(g_tabla[len], charsmax(g_tabla), "ZombieKills int NOT NULL DEFAULT '0',");
209 len += formatex(g_tabla[len], charsmax(g_tabla), "NVG varchar(12) NOT NULL DEFAULT '255 255 255',")
210 len += formatex(g_tabla[len], charsmax(g_tabla), "ColorHUD varchar(12) NOT NULL DEFAULT '255 255 255',")
211 len += formatex(g_tabla[len], charsmax(g_tabla), "HudX int(1) NOT NULL DEFAULT '0.03',")
212 len += formatex(g_tabla[len], charsmax(g_tabla), "HudY int(1) NOT NULL DEFAULT '0.03',")
213 len += formatex(g_tabla[len], charsmax(g_tabla), "EffectHud float NOT NULL DEFAULT '0' ) ");
214
215 SQL_ThreadQuery(g_htuple, "SQL_Tabla", g_tabla);
216
217 return PLUGIN_HANDLED;
218}
219
220public SQL_Tabla(failstate, error[], szerror, data[], szdata)
221{
222 switch(failstate)
223 {
224 case TQUERY_CONNECT_FAILED:
225 {
226 log_to_file("SQL_CONECT_TABLA.txt", "Ocurrio un error al conectar la tabla: [%i] | [%s]", szerror, error);
227 }
228 case TQUERY_QUERY_FAILED:
229 {
230 log_to_file("SQL_ERROR_TABLA.txt", "Ocurrio un error al crear la tabla: [%i] | [%s]", szerror, error);
231 }
232 }
233}
234public plugin_end() SQL_FreeHandle(g_htuple);