· 7 years ago · Sep 17, 2018, 04:42 PM
1/*
2| INFORMACIÓN |
3
4# Este PLUGIN ha sido creado por Chema.
5*/
6
7#include < amxmodx >
8#include < amxmisc >
9#include < mysqlt >
10
11
12const MESES_MAX = 12;
13
14enum _:adminData {
15
16 NOMBRE[ 25 ],
17 COSTO
18}
19
20enum _:adminTimeData {
21
22 ACCESO,
23 TIEMPO
24}
25
26new const g_szAdminsData[ 3 ][ adminData ] = {
27
28 { "VIP", 20 },
29
30 { "ADMIN", 30 },
31
32 { "SÚPER ADMIN", 45 }
33}
34
35new CHAT_PREFIX[ ] = "!g[ BG ]!y";
36new CONSOLE_PREFIX[ ] = "[ BG ]";
37
38new const g_szFile[ ] = "pedidos.log";
39
40new const g_szEmails[ ][ ] = {
41
42 "@live.com",
43
44 "@gmail.com",
45
46 "@hotmail.com",
47
48 "@live.com.ar",
49
50 "@gmail.com.ar",
51
52 "@hotmail.es",
53
54 "@hotmail.com.ar",
55
56 "@yahoo.com.ar"
57};
58
59new const Datos_MySQL [ ] [ ] = {
60 "breakingaming.com", //Web
61 "aizonenf_servers", //User
62 "TAQ7C6Ohu", //Pass
63 "aizonenf_servers" //Db
64};
65
66new Handle:g_iHost;
67new Handle:g_iConnect;
68
69new szQuery[256];
70new const szTable[] = "compras_pedido";
71
72new g_szText[ 300 ],
73g_iSent[ 33 ],
74g_szHotmail[ 33 ][ 34 ],
75g_iContador[ 33 ][ adminTimeData ];
76
77new g_iLen;
78
79new g_iKeys = MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5;
80
81/* *** GUARDADO *** */
82
83
84new g_szPlayerName[ 33 ];
85
86public plugin_init( ) {
87
88 register_plugin( "Pedido de ADMINS", "1.0", "Chema MySQL heNK'" );
89
90 register_clcmd( "say /pedido", "SM_Pedido" );
91
92
93 register_clcmd( "REGISTER_CONTACT", "register_contact" );
94
95 register_menu( "PEDIDO", g_iKeys, "HM_Pedido");
96 register_menu( "CONFIRMACION", g_iKeys, "HM_Confirmacion");
97
98 new errnum, error[33];
99
100 g_iHost = mysql_makehost(Datos_MySQL[0], Datos_MySQL[1], Datos_MySQL[2], Datos_MySQL[3]);
101 if(errnum){
102 log_to_file("MySQLt_Admins_Init.log", "ERROR1: [%d] [%s]", errnum, error);
103 return pause("a");
104 }
105 g_iConnect = mysql_connect(g_iHost, errnum, error, 32);
106
107 mysql_performance(15, 15, 1);
108
109
110 return PLUGIN_CONTINUE;
111}
112
113public client_putinserver( id ) {
114
115 g_iContador[ id ][ ACCESO ] = 0;
116 g_iContador[ id ][ TIEMPO ] = 0;
117
118 g_iSent[ id ] = 0;
119
120 g_szHotmail[ id ][ 0 ] = 0;
121
122 get_user_name( id, g_szPlayerName[ id ], sizeof( g_szPlayerName ) );
123
124 new iData[1];
125 iData[0] = id;
126
127 formatex(szQuery, charsmax(szQuery), "SELECT * FROM %s WHERE player_name=^"%s^"", szTable, g_szPlayerName[id]);
128 mysql_query(g_iConnect, "DataHandler", szQuery, iData, sizeof(iData));
129
130 //Load_Data( id );
131}
132
133public client_disconnect( id ) {
134
135 g_szHotmail[ id ][ 0 ] = 0;
136
137 new iData[1];
138 iData[0] = id;
139
140 formatex(szQuery, charsmax(szQuery), "UPDATE %s SET player_name=^"%s^", pedido='%d'",szTable, g_szPlayerName[id], g_iSent[id]);
141 mysql_query(g_iConnect, "DataHandler", szQuery, iData, sizeof(iData));
142 //Save_Data( id );
143}
144
145public SM_Pedido( id ) {
146
147 if( g_iSent[ id ] == 1 ) {
148
149 ColorChat( id, "Ya has enviado un pedido de compra." );
150 return PLUGIN_HANDLED;
151 }
152
153 g_iLen = 0;
154
155 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r[BG]\y COMPRAR ADMINISTRADOR^n^n" );
156
157 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r1. \wTIPO: \d[ \r%s \d]^n", g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ NOMBRE ] );
158 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r2. \wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContador[ id ][ TIEMPO ] + 1 ),( g_iContador[ id ][ TIEMPO ] == 0 ? "" : "ES" ) );
159 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "COSTO: \d[ \y$%d \d]^n^n",( g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ COSTO ] * ( g_iContador[ id ][ TIEMPO ] + 1 ) ) );
160
161 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r3. \wE-Mail: \d[ \y%s\d ]^n^n", g_szHotmail[ id ][ 0 ] == 0 ? "\dIngresa tú E-Mail." : g_szHotmail[ id ] );
162
163 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r4. \wEnviar pedido^n^n" );
164
165 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r0. \wSalir" );
166
167 show_menu( id, g_iKeys, g_szText, -1, "PEDIDO" );
168
169 return PLUGIN_HANDLED;
170}
171
172public HM_Pedido( id, keys, menu ) {
173
174 switch( keys ) {
175
176 case 0: {
177
178 if( ++g_iContador[ id ][ ACCESO ] == 3 )
179 g_iContador[ id ][ ACCESO ] = 0;
180
181 SM_Pedido( id );
182 }
183
184 case 1: {
185
186 if( ++g_iContador[ id ][ TIEMPO ] == MESES_MAX )
187 g_iContador[ id ][ TIEMPO ] = 0;
188
189 SM_Pedido( id );
190 }
191
192 case 2: {
193
194 client_cmd( id, "messagemode REGISTER_CONTACT" );
195 }
196
197 case 3: {
198
199 if( g_szHotmail[ id ][ 0 ] == 0 ) {
200
201 g_iContador[ id ][ ACCESO ] = 0;
202 g_iContador[ id ][ TIEMPO ] = 0;
203
204 client_cmd( id, "spk buttons/button2.wav" );
205 ColorChat( id, "Debes ingresar un E-Mail." );
206 SM_Pedido( id );
207
208 return PLUGIN_HANDLED;
209 }
210
211 SM_Confirmacion( id );
212 }
213 }
214
215 return PLUGIN_HANDLED;
216}
217
218public SM_Confirmacion( id ) {
219
220 if( g_iSent[ id ] == 1 ) {
221
222 ColorChat( id, "Ya has enviado un pedido de compra." );
223 return;
224 }
225
226 g_iLen = 0;
227
228 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r[BG]\y ¿ESTA SEGURO QUE DESEA ENVIAR EL PEDIDO?^n^n" );
229
230 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\wTIPO: \d[ \r%s \d]^n", g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ NOMBRE ] );
231 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContador[ id ][ TIEMPO ] + 1 ),( g_iContador[ id ][ TIEMPO ] == 0 ? "" : "ES" ) );
232 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\wCOSTO: \d[ \y$%d \d]^n^n",( g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ COSTO ] * ( g_iContador[ id ][ TIEMPO ] + 1 ) ) );
233
234 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\wE-Mail: \d[ \y%s\d ]^n^n", g_szHotmail[ id ][ 0 ] == 0 ? "\dIngresa tú E-Mail." : g_szHotmail[ id ] );
235
236 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r1. \wConfirmar pedido^n^n" );
237
238 g_iLen += formatex( g_szText[ g_iLen ], sizeof g_szText - 1 - g_iLen, "\r0. \wSalir" );
239
240 show_menu( id, g_iKeys, g_szText, -1, "CONFIRMACION" );
241}
242
243public HM_Confirmacion( id, keys, menu ) {
244
245 switch( keys ) {
246
247 case 0: {
248
249 ColorChat( id, "El pedido ha sido enviado con éxito." );
250
251 console_print( id, "%s El pedido ha sido enviado con éxito.", CONSOLE_PREFIX );
252
253 ColorChat( id, "TIPO: !g%s!y !t|!y TIEMPO !g%d MES%s !t|!y COSTO: !g$%d!y.", g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ NOMBRE ], ( g_iContador[ id ][ TIEMPO ] + 1 ),( g_iContador[ id ][ TIEMPO ] == 0 ? "" : "ES" ), ( g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ COSTO ] * ( g_iContador[ id ][ TIEMPO ] + 1 ) ) );
254
255 g_iSent[ id ] = 1;
256
257 get_user_name( id, g_szPlayerName[ id ], sizeof( g_szPlayerName ) );
258
259 log_to_file( g_szFile, "NOMBRE: %s | TIPO %s | TIEMPO %d MES%s | COSTO $%d | E-Mail: %s", g_szPlayerName[ id ], g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ NOMBRE ], ( g_iContador[ id ][ TIEMPO ] + 1 ),( g_iContador[ id ][ TIEMPO ] == 0 ? "" : "ES" ), ( g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ COSTO ] * ( g_iContador[ id ][ TIEMPO ] + 1 ) ), g_szHotmail[ id ] )
260
261 new iData[1];
262 iData[0] = id;
263
264 formatex(szQuery, charsmax(szQuery), "INSERT INTO %s (player_name, tipo, tiempo, costo, email, pedido) VALUES (^"%s^", ^"%s^", '%d', '$%d', ^"%s^", '%d')",
265 szTable, g_szPlayerName[ id ], g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ NOMBRE ], ( g_iContador[ id ][ TIEMPO ] + 1 ),
266 ( g_szAdminsData[ g_iContador[ id ][ ACCESO ] ][ COSTO ] * ( g_iContador[ id ][ TIEMPO ] + 1 ) ), g_szHotmail[ id ], g_iSent[id] );
267
268 mysql_query(g_iConnect, "DataHandler", szQuery, iData, sizeof(iData));
269
270 //Save_Data( id );
271 }
272 }
273
274 return PLUGIN_HANDLED;
275}
276
277public register_contact( id ) {
278
279 read_args( g_szHotmail[ id ], charsmax( g_szHotmail[ ] ) );
280 remove_quotes( g_szHotmail[ id ] );
281 trim( g_szHotmail[ id ] );
282
283 new iArroba = contain( g_szHotmail[ id ], "@");
284 new bool:bValid = false
285
286 if( iArroba > 0 && strlen( g_szHotmail[ id ] ) > 7 ) {
287
288 for( new i = 0; i < sizeof ( g_szEmails ); i++) {
289
290 if( equali( g_szHotmail[ id ][ iArroba ], g_szEmails[ i ] ) ) {
291
292 SM_Pedido( id );
293
294 client_cmd( id, "spk buttons/button3.wav" );
295
296 bValid = true;
297 break;
298 }
299 }
300 }
301
302 if ( !bValid ) {
303
304 g_szHotmail[ id ][ 0 ] = 0;
305
306 SM_Pedido( id );
307 ColorChat ( id, "Dirección de correo electrónico inválido." );
308
309 client_cmd( id, "spk buttons/button2.wav" );
310 }
311
312 return PLUGIN_HANDLED;
313}
314
315public DataHandler(failstate, error[], errnum, data[], size, Float:queuetime){
316 if(failstate != TQUERY_SUCCESS){
317 log_to_file("MySQLt_Handler_Compras.log", "ERROR2: [%d][%s][%s]", errnum, error, data);
318 return PLUGIN_HANDLED;
319 }
320
321 static id;
322 id = data[0];
323
324
325 if(mysql_num_results()){
326 new PlayerName = mysql_fieldnametonum("player_name");
327 new Tipo = mysql_fieldnametonum("tipo");
328 new Tiempo = mysql_fieldnametonum("tiempo");
329 new Costo = mysql_fieldnametonum("costo");
330 new Email = mysql_fieldnametonum("email");
331 new Pedido = mysql_fieldnametonum("pedido");
332
333 new szPlayerName[33], szTipo[33], szTime[33], szCosto[33], szEmail[64];
334
335 mysql_read_result(PlayerName, szPlayerName, charsmax(szPlayerName));
336 mysql_read_result(Tipo, szTipo, charsmax(szTipo));
337 szTime[id] = mysql_read_result(Tiempo);
338 szCosto[id] = mysql_read_result(Costo);
339 mysql_read_result(Email, szEmail, charsmax(szEmail));
340 g_iSent[id] = mysql_read_result(Pedido);
341 }
342
343 return PLUGIN_CONTINUE;
344}
345
346
347stock ColorChat( const id, const Text[ ], any:... ) {
348
349 new count = 1, players[ 32 ];
350 static msg[ 191 ], len, i;
351
352 len = formatex( msg, charsmax(msg), "%s ", CHAT_PREFIX );
353 vformat( msg[ len ], 190 - len, Text, 3 );
354
355 replace_all( msg, 190, "!g", "^4" );
356 replace_all( msg, 190, "!y", "^1" );
357 replace_all( msg, 190, "!t", "^3" );
358
359 static iLen = sizeof( msg );
360
361 replace_all( msg, iLen, "á", "á" );
362 replace_all( msg, iLen, "Ã", "Ã" );
363 replace_all( msg, iLen, "é", "é" );
364 replace_all( msg, iLen, "É", "É" );
365 replace_all( msg, iLen, "Ã", "Ã*" );
366 replace_all( msg, iLen, "Ã", "Ã" );
367 replace_all( msg, iLen, "ó", "ó" );
368 replace_all( msg, iLen, "Ó", "Ó" );
369 replace_all( msg, iLen, "ú", "ú" );
370 replace_all( msg, iLen, "Ú", "Ú" );
371 replace_all( msg, iLen, "ñ", "ñ" );
372 replace_all( msg, iLen, "Ñ", "Ñ" );
373
374
375 if(id)
376 players[ 0 ] = id;
377 else
378 get_players( players, count, "ch" );
379
380 for( i = 0; i < count; ++i) {
381
382 if( is_user_connected( players[ i ] ) )
383 writeMessage( players[ i ], msg );
384 }
385}
386
387stock writeMessage( player, message[ ] ) {
388
389 message_begin( MSG_ONE, get_user_msgid( "SayText" ), { 0, 0, 0 }, player );
390 write_byte( player );
391 write_string( message );
392 message_end( );
393}