Purchase Orders v1.2
#1
Purcharse Orders v1.2


Descripción: Con este plugin puedes hacer un pedido de compra. (Si el plugin tiene apoyo quizás haga una mini página para mostrar todos los pedidos.)

Imágenes:
[Imagen: 7B091C2E1C1EE83E4DFE12AA2D73F23C9EBA202E]
[Imagen: 1B43C762210DEA26E2CB8FD2DC2F40709288A780]
[Imagen: 169B96381A7CE5D10BF4AC115D21ADC74E5D8AF2]

Requisitos:

Código:
[*] AMX Mod X 1.8.3 o superior.

Comandos:

Código:
[*] "say /order" - Abre un menú para hacer un pedido.
[*] "say /myorder" - Abre un menú que muestra tu pedido, te pedirá identificación.

Instalación:
  • Descargar y compilar el plugin.
  • Colocarlo en la carpeta plugins/
  • Activar módulo mysql en configs/modules.ini.
  • Contar con un hosting para la base de datos (MYSQL).

Changelog:

Código:
- 1.2
[*] Reestructuración de todo el código (Ahora solo soporta MySQL): 4 de febrero de 2021.
- 1.1
[*] Arreglado un bug que no guardaba bien el pedido: 23 de septiembre de 2018.
- 1.0
[*] Versión inicial, Fecha de lanzamiento: 16 de septiembre de 2018.

Páginas de soporte oficial en:

Descarga:


Archivos adjuntos
.sma   Descargar AMXX / PurchaseOrders_v1.2.sma (Tamaño: 15.47 KB / Descargas: 26)
Responder
#2
Y si mi email es [email protected]?

Podrías utilizar la API de oldmenu de Destro para que el código sea más legible, cuando se puede simplificar tanto código es genial hacerlo.

Veo muchos espacios ( id ) y así en el resto del código (lo he visto en otras personas también) pero supongo que es parte de cada uno.

Código PHP:
//#include < cstrike >
//#include < engine >
//etc 
Directamente elimina esos comentarios, son útiles?

Lo siguiente como idea aparte:
Código PHP:
/*
    | INFORMACIÓN |

    # Este PLUGIN ha sido creado por Chema.
*/ 
Podría quedarte mejor así ->
Código PHP:
/*
    Copyright (c) 2018 Chema
    https://amxmodx-es.com/Thread-AMXX-Pedidos-de-COMPRA
*/ 
O similar, aunque lo del "Copyright" está de adorno porque necesitarías añadir una licencia pero nadie hace eso en amxx pero te quedaría pro.

Con respecto a las anteriores sugerencias, ya sé que es un aporte pero siempre te sirven para próximos plugins que hagas.
Responder
#3
Excelente Mario
[Imagen: 76561198350936449.png]

Cita:Los precios en la moneda venezolana se fijarán a partir de la reconversión monetaria y valdrá mucho menos de lo que cuesta una Cachapa con queso.
Responder
#4
Cita:EDIT: Tenia pensado hacerlo mediante MySQL Threads ( Destro ) y mostrar toda la información del pedido en una página web pero me dio paja pacman

Uviera sido buena idea que usaras MySQL , porque desde mi punto de vista. El MySQL puede guarda mas archivos y/e información que el adv_vault , porque e visto casos donde el adv_vault ocurren errores o fallas donde el servidor se cae o se reinicia y los datos o información se pierde o se reinicia, Whatever Bueno en mi punto de vista.

Pero seria mejor con MySQL como sugerencia.
[Imagen: jrXxqRT.png]
*Maper Del Cstrike* - *Estudiante De Sistema*
(03/09/2018, 08:32 PM)Skylar escribió: Obviamente, no va a hablar con super pro para que le mueva el thread
(04/01/2019, 05:12 PM)Pan Bimbo (? escribió: QUE HICISTE QUE??????? YO QUERIA LA PLACA DE VIDEO PORQUE LA TIRASTE CTM
(15/01/2019, 04:08 AM)FreDDy escribió:
(15/01/2019, 03:45 AM)Hernandez escribió: Qué más dan las palabras si a donde vayas están en tetas protestando sin sentido

No todas salen en tetas y no todas protestan sin sentido. Estás generalizando algo que sólo unas pocas lo hacen a diferencia de las muchas que realmente tienen un motivo para protestar.
(17/01/2019, 12:34 PM)totopizza escribió: el orden de los factores no altera el producto xD
(23/01/2019, 01:10 AM)GoldenCosta escribió:
Cita:E visto que este ZP , ESTA AQUI EN EL FORO PERO NO ES EL ORIGINAL POR QUE? , LE FALTAN MILES DE COSAS ESTA BUGEADO , LE FALTAN CÓDIGOS NI SE IMAGINAN , BUENO EL MOD ESTE SE VENDE POR 70 DOLARES , ACEPTO PAYPAL Y EN PESOS CHILENOS $42.584
ya esta publicado.... y 70 us en arg son 2625,35 pesos... estas loco con esa guita neel mantiene el foro por 2 años
(23/01/2019, 01:17 AM)Skylar escribió:
(22/01/2019, 10:30 PM)el_juan_fail escribió:
(22/01/2019, 10:03 AM)Neeeeeeeeeel.- escribió: Por favor subir las cosas al foro y no links a blogs externos. Solamente en caso de que haya recursos que no se pudiesen subir por un tema de tamaño, poenr un link de descarga directo (tipo mega) de los recursos y subir los plugins y demás archivos livianos al foro.

deberia ponerle en un link mediante el mediafire o mega o link externo lo que sea pero no es bueno dejar cosa agregada sin descargar solo por el blog no se puede se puede bajar el recurso o que haya sido creado disculpa neeeeel. estaba leyendose las reglas u.uMario

Dijiste lo mismo que dijo Neeel!
(27/02/2019, 08:00 PM)Sugisaki escribió:
(27/02/2019, 05:37 PM)Pan Bimbo (? escribió:
(27/02/2019, 12:06 AM)luxor xD escribió: Hola, si precacheo algo en un plugin, no es necesario precachearlo en otro plugin?

Si yo cargo una caja en un camion, mi amigo puede cargar la MISMA caja en el camion?, y no porque ya esta cargada.
[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
(14/03/2019, 10:26 PM)KrR10VnZl escribió: en Venezuela aprendes a ser desde bombas molotov hasta velas, es algo así como supervivencia al desnudo jaja
(18/04/2019, 11:04 PM)Jose88 escribió:
(18/04/2019, 09:55 PM)Hypnotize escribió: arriba marica

papa me va perdonar pero aquí no sale ningún download. solo sale esto

Código PHP:
PDNiños Ratas eviten sacar el autor jaja.
REMOVIDO POR TUTOR Y SLOWHACK
(21/04/2019, 09:38 AM)SHENK! =D escribió: ASDASD

Si nos organizamos cojemos todos.
(11/08/2019, 05:11 PM)Cr3470r escribió: Todo Software es crackeable ... No importa cuantas validaciones hagan, la ventaja siempre la tenemos nosotros ...
(28/07/2015, 09:34 PM)Nazi.- escribió: :ohgodwhy buen aporte

PD: situación sentimental: Sin internetOh god why

Sigue así Proud

(28/02/2020, 12:23 AM)Skylar escribió:
(27/02/2020, 11:28 PM)4evergaming escribió: Ya me puse como autor y lo subi a mi empresa


Abrazos

FIX
Responder
#5
(16/09/2018, 12:39 PM)El pirucho XP-007 escribió:
Cita:EDIT: Tenia pensado hacerlo mediante MySQL Threads ( Destro ) y mostrar toda la información del pedido en una página web pero me dio paja pacman

Uviera sido buena idea que usaras MySQL , porque desde mi punto de vista. El MySQL puede guarda mas archivos y/e información que el adv_vault , porque e visto casos donde el adv_vault ocurren errores o fallas donde el servidor se cae o se reinicia y los datos o información se pierde o se reinicia, Whatever Bueno en mi punto de vista.

Pero seria mejor con MySQL como sugerencia.

Adv vault es básico. MySQL quedaría bueno sí querés hacerlo a través de foro.. Mira:
http://prntscr.com/kv1od4
Responder
#6
es parecido al mio xd, con lo de compra pacman pero es diferenticimo el mio es sencillo
Responder
#7
(16/09/2018, 01:12 PM)Alejandro escribió: es parecido al mio xd, con lo de compra pacman pero es diferenticimo el mio es sencillo

Hay un diferencia....

El tuyo es de Precios de Admin y este es de Pedidos de COMPRA. , el tuyo es un menú de admin simple y este lo usuarios podrán hacer únicamente un pedido de ADMIN.
Responder
#8
dije que era diferente, solo que trae el menu con precio y eso
Responder
#9
(16/09/2018, 09:48 AM)Chema escribió: Hola buenas; les dejo por acá un plugin que hice hace 1 mes y me olvidé de aportarlo.

El plugin es muy sencillo; pero me pareció genial hacerlo y aportarlo. Gran sonrisa

Sí ven algún error en el código háganmelo saber y lo corregiré en cuanto pueda!.

Requerimientos:

Función: Mediante un menú lo usuarios podrán hacer únicamente un pedido de ADMIN.

EDIT: Tenia pensado hacerlo mediante MySQL Threads ( Destro ) y mostrar toda la información del pedido en una página web pero me dio paja :V

Código:


Código PHP:
/*
 | INFORMACIÓN |

 # Este PLUGIN ha sido creado por Chema.
*/

#include < amxmodx >
#include < amxmisc >
//#include < cstrike >
//#include < engine >
//#include < fakemeta >
//#include < hamsandwich >
//#include < fun >
//#include < xs >
//#include < sqlx >
#include < adv_vault >

const MESES_MAX 12;

enum _:adminData {
 
 
NOMBRE25 ],
 
COSTO
}

enum _:adminTimeData {
 
 
ACCESO,
 
TIEMPO
}

new const 
g_szAdminsData][ adminData ] = {
 
 { 
"VIP"20 },
 
 { 
"ADMIN"30 },
 
 { 
"SÚPER ADMIN"45 }
}

new 
CHAT_PREFIX[ ] = "!g[ BG ]!y";
new 
CONSOLE_PREFIX[ ] = "[ BG ]";

new const 
g_szFile[ ] = "pedidos.log";

new const 
g_szEmails[ ][ ] = {
 
 
"@live.com",
 
 
"@gmail.com",
 
 
"@hotmail.com",
 
 
"@live.com.ar",
 
 
"@gmail.com.ar",
 
 
"@hotmail.es",
 
 
"@hotmail.com.ar",

 
"@yahoo.com.ar"
};

new 
g_szText300 ],
 
g_iSent33 ],
 
g_szHotmail33 ][ 34 ],
 
g_iContador33 ][ adminTimeData ];

new 
g_iLen;

new 
g_iKeys MENU_KEY_0 MENU_KEY_1 MENU_KEY_2 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5;

/* *** GUARDADO *** */

enum {
 
FIELD_SENT,
 
 
MAX_FIELDS
}

new 
g_iFieldsMAX_FIELDS ];
new 
g_iVault;

new 
g_szPlayerName33 ];

public 
plugin_init( ) {
 
 
register_plugin"Pedido de ADMINS""1.0""Chema" );
 
 
register_clcmd"say /pedido""SM_Pedido" );
 
 
register_clcmd"REGISTER_CONTACT""register_contact" );
 
 
register_menu"PEDIDO"g_iKeys"HM_Pedido");
 
register_menu"CONFIRMACION"g_iKeys"HM_Confirmacion");
 
 
AdvancedVault_Init( );
}

public 
AdvancedVault_Init( ) {
 
 
g_iVault adv_vault_open"bg_admincompra"false );
 
 
g_iFieldsFIELD_SENT ]    adv_vault_register_fieldg_iVault"FIELD_SENT" );
 
 
adv_vault_initg_iVault );
}

public 
client_putinserverid ) {
 
 
g_iContadorid ][ ACCESO ] = 0;
 
g_iContadorid ][ TIEMPO ] = 0;

 
g_iSentid ] = 0;
 
 
g_szHotmailid ][ ] = 0;
 
 
get_user_nameidg_szPlayerNameid ], sizeofg_szPlayerName ) );
 
 
Load_Dataid );
}

public 
client_disconnectid ) {

 
g_szHotmailid ][ ] = 0;
 
 
Save_Dataid );
}

public 
SM_Pedidoid ) {
 
 if( 
g_iSentid ] == ) {
 
 
ColorChatid"Ya has enviado un pedido de compra." );
 return 
PLUGIN_HANDLED;
 }
 
 
g_iLen 0;
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r[BG]\y COMPRAR ADMINISTRADOR^n^n" );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r1. \wTIPO: \d[ \r%s \d]^n"g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ] );
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r2. \wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ) );
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"COSTO: \d[ \y$%d \d]^n^n",( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r3. \wE-Mail: \d[ \y%s\d ]^n^n"g_szHotmailid ][ ] == "\dIngresa tú E-Mail." g_szHotmailid ] );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r4. \wEnviar pedido^n^n" );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r0. \wSalir" );
 
 
show_menuidg_iKeysg_szText, -1"PEDIDO" );
 
 return 
PLUGIN_HANDLED;
}

public 
HM_Pedidoidkeysmenu ) {
 
 switch( 
keys ) {
 
 case 
0: {
 
 if( ++
g_iContadorid ][ ACCESO ] == )
 
g_iContadorid ][ ACCESO ] = 0;
 
 
SM_Pedidoid );
 }
 
 case 
1: {
 
 if( ++
g_iContadorid ][ TIEMPO ] == MESES_MAX )
 
g_iContadorid ][ TIEMPO ] = 0;
 
 
SM_Pedidoid );
 }
 
 case 
2: {
 
 
client_cmdid"messagemode REGISTER_CONTACT" );
 }
 
 case 
3: {
 
 if( 
g_szHotmailid ][ ] == ) {
 
 
g_iContadorid ][ ACCESO ] = 0;
 
g_iContadorid ][ TIEMPO ] = 0;
 
 
client_cmdid"spk buttons/button2.wav" );
 
ColorChatid"Debes ingresar un E-Mail." );
 
SM_Pedidoid );
 
 return 
PLUGIN_HANDLED;
 }
 
 
SM_Confirmacionid );
 }
 }
 
 return 
PLUGIN_HANDLED;
}

public 
SM_Confirmacionid ) {
 
 if( 
g_iSentid ] == ) {
 
 
ColorChatid"Ya has enviado un pedido de compra." );
 return;
 }
 
 
g_iLen 0;
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r[BG]\y Â¿ESTA SEGURO QUE DESEA ENVIAR EL PEDIDO?^n^n" );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wTIPO: \d[ \r%s \d]^n"g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ] );
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ) );
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wCOSTO: \d[ \y$%d \d]^n^n",( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wE-Mail: \d[ \y%s\d ]^n^n"g_szHotmailid ][ ] == "\dIngresa tú E-Mail." g_szHotmailid ] );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r1. \wConfirmar pedido^n^n" );
 
 
g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r0. \wSalir" );
 
 
show_menuidg_iKeysg_szText, -1"CONFIRMACION" );
}

public 
HM_Confirmacionidkeysmenu ) {
 
 switch( 
keys ) {
 
 case 
0: {
 
 
ColorChatid"El pedido ha sido enviado con éxito." );
 
 
console_printid"%s El pedido ha sido enviado con Ã©xito."CONSOLE_PREFIX );
 
 
ColorChatid"TIPO: !g%s!y !t|!y TIEMPO !g%d MES%s !t|!y COSTO: !g$%d!y."g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ], ( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ), ( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
 
 
g_iSentid ] = 1;
 
 
get_user_nameidg_szPlayerNameid ], sizeofg_szPlayerName ) );
 
 
log_to_fileg_szFile"NOMBRE: %s | TIPO %s | TIEMPO %d MES%s | COSTO $%d | E-Mail: %s"g_szPlayerNameid ], g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ], ( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ), ( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ), g_szHotmailid ] )
 
 
Save_Dataid );
 }
 }
 
 return 
PLUGIN_HANDLED;
}

public 
register_contactid ) {
 
 
read_argsg_szHotmailid ], charsmaxg_szHotmail[ ] ) );
 
remove_quotesg_szHotmailid ] );
 
trimg_szHotmailid ] );
 
 new 
iArroba containg_szHotmailid ], "@");
 new 
bool:bValid false
 
 
if( iArroba && strleng_szHotmailid ] ) > ) {
 
 for( new 
0sizeof g_szEmails ); i++) {
 
 if( 
equalig_szHotmailid ][ iArroba ], g_szEmails] ) ) {
 
 
SM_Pedidoid );
 
 
client_cmdid"spk buttons/button3.wav" );
 
 
bValid true;
 break;
 }
 }
 }
 
 if ( !
bValid ) {
 
 
g_szHotmailid ][ ] = 0;
 
 
SM_Pedidoid );
 
ColorChat id"Dirección de correo electrónico inválido." );
 
 
client_cmdid"spk buttons/button2.wav" );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
Save_Dataid ) {
 
 if( !
is_user_connectedid ) )
 return;
 
 
adv_vault_set_startg_iVault )

 
adv_vault_set_fieldg_iVaultg_iFieldsFIELD_SENT ], g_iSentid ] );
 
 
adv_vault_set_endg_iVault0g_szPlayerNameid ] );
}

public 
Load_Dataid ) {
 
 if( !
adv_vault_get_prepareg_iVault_g_szPlayerNameid ] ) ) {
 
 return;
 }
 
 
g_iSentid ] = adv_vault_get_fieldg_iVaultg_iFieldsFIELD_SENT ] );
}

stock ColorChat( const id, const Text[ ], any:... ) { 
 
 new 
count 1players32 ];
 static 
msg191 ], leni;
 
 
len formatexmsgcharsmax(msg), "%s "CHAT_PREFIX );
 
vformatmsglen ], 190 lenText);
 
 
replace_allmsg190"!g""^4" );
 
replace_allmsg190"!y""^1" );
 
replace_allmsg190"!t""^3" );
 
 static 
iLen sizeofmsg );
 
 
replace_allmsgiLen"á""á" );
 
replace_allmsgiLen"Á""Ã" );
 
replace_allmsgiLen"é""é" );
 
replace_allmsgiLen"É""É" );
 
replace_allmsgiLen"í""Ã*" );
 
replace_allmsgiLen"Í""Ã" );
 
replace_allmsgiLen"ó""ó" );
 
replace_allmsgiLen"Ó""Ó" );
 
replace_allmsgiLen"ú""ú" );
 
replace_allmsgiLen"Ú""Ú" );
 
replace_allmsgiLen"ñ""ñ" );
 
replace_allmsgiLen"Ñ""Ñ" );
 
 
 if(
id
 
players] = id;
 else 
 
get_playersplayerscount"ch" );
        
 
for( 0count; ++i) {
 
 if( 
is_user_connectedplayers] ) ) 
 
writeMessageplayers], msg ); 
 }
}

stock writeMessageplayermessage[ ] ) {
 
 
message_beginMSG_ONEget_user_msgid"SayText" ), { 00}, player );
 
write_byteplayer );
 
write_stringmessage );
 
message_end( );


Holaa disculpame por revivir esto, pero si alguien quiere comprar un "admin" y pone su correo, envia el pedido. Yo como dueño del server como se quien pidio para comprar admin?
Responder
#10
(08/06/2020, 09:45 PM)El Abuelo Loco escribió: Holaa disculpame por revivir esto, pero si alguien quiere comprar un "admin" y pone su correo, envia el pedido. Yo como dueño del server como se quien pidio para comprar admin?

Se genera un archivo .log en la carpeta logs.
Responder
#11
(08/06/2020, 09:57 PM)Chema escribió: Se genera un archivo .log en la carpeta logs.

ahh gracias y disculpa por la molestia Gran sonrisa y si quiero cancelarle el pedido?
Responder
#12
Código PHP:
new const g_szFile[ ] = "pedidos.log"
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#13
(08/06/2020, 10:10 PM)kikizon2 escribió:
Código PHP:
new const g_szFile[ ] = "pedidos.log"

Elimine la log de pedidos pero al escribir /predido me sale Ya hiciste tu pedido. Me ayudan?  Whatever
Responder
#14
Borra la base de datos en la carpeta data bg_admincompras
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#15
(08/06/2020, 10:51 PM)kikizon2 escribió: Borra la base de datos en la carpeta data bg_admincompras

Muchisisimas Gracias <3

(08/06/2020, 10:51 PM)kikizon2 escribió: Borra la base de datos en la carpeta data bg_admincompras

si quiero que agreguen su numero de telefono antes el Hotmail? como puedo hacer?
Responder
#16
Se viene la versión mysql?

Responder
#17
(09/06/2020, 12:31 AM)Skylar escribió: Se viene la versión mysql?

Create un panel con php para que pueda ver los pedidos Nothingdohere
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#18
Ahí publico lo que habia hecho antes <3
Perdi el php, pero bueno se los dejo a ustedes Sonrisa Se veía algo así https://prnt.sc/kv1od4
Código PHP:
/*
    | INFORMACIÓN |

    # Este PLUGIN ha sido creado por Chema.
*/

#include < amxmodx >
#include < amxmisc >
//#include < cstrike >
//#include < engine >
//#include < fakemeta >
//#include < hamsandwich >
//#include < fun >
//#include < xs >
#include < sqlx >


const MESES_MAX 12;

enum _:adminData {
    
    NOMBRE
25 ],
    COSTO
}

enum _:adminTimeData {
    
    ACCESO
,
    TIEMPO
}

new const 
g_szAdminsData][ adminData ] = {
    
    
"VIP"20 },
    
    
"ADMIN"30 },
    
    
"SÚPER ADMIN"45 }
}

new 
CHAT_PREFIX[ ] = "!g[ BG ]!y";
new 
CONSOLE_PREFIX[ ] = "[ BG ]";

new const 
g_szFile[ ] = "pedidos.log";

new const 
g_szEmails[ ][ ] = {
    
    
"@live.com",
    
    
"@gmail.com",
    
    
"@hotmail.com",
    
    
"@live.com.ar",
    
    
"@gmail.com.ar",
    
    
"@hotmail.es",
    
    
"@hotmail.com.ar",

    "@yahoo.com.ar"
};

new 
g_szText300 ],
    g_iSent33 ],
    g_szHotmail33 ][ 34 ],
    g_iContador33 ][ adminTimeData ];

new 
g_iLen;

new 
g_iKeys MENU_KEY_0 MENU_KEY_1 MENU_KEY_2 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5;

/* *** GUARDADO *** */


#define TABLE_NAME        "pedidos_compra"

new const Datos_MySQL[][] = {
    "",
    "",
    "",
    ""
}

new 
Handle:g_connection;

enum
{
 
CARGAR,
 
INSERTAR
}

new 
g_szPlayerName33 ][32];

stock mysql_initalize()
{
    g_connection SQL_MakeDbTuple(Datos_MySQL[0], Datos_MySQL[1], Datos_MySQL[2], Datos_MySQL[3]);
    
    
if(!g_connection)
    return pause("a");
    
    
new Query[256];
    formatex(Querycharsmax(Query), "CREATE TABLE IF NOT EXISTS %s (PName VARCHAR(32) UNIQUE, TipoAdm VARCHAR(21), TiempoAdm INT(11), Costo INT(11), Email VARCHAR(64), Pedido INT(3), Timestamp INT(11))"TABLE_NAME);
    SQL_ThreadQuery(g_connection"QueryCreateTable"Query);
    
    
return PLUGIN_CONTINUE;
}
public 
plugin_init( ) {
    
    register_plugin
"Pedido de ADMINS""1.0""Chema MySQL by heNK'" );
    
    register_clcmd
"say /pedido""SM_Pedido" );
    
    register_clcmd
"REGISTER_CONTACT""register_contact" );
    
    register_menu
"PEDIDO"g_iKeys"HM_Pedido");
    register_menu"CONFIRMACION"g_iKeys"HM_Confirmacion");
    
    mysql_initalize
( );
}

public 
client_putinserverid ) {
    
    g_iContador
id ][ ACCESO ] = 0;
    g_iContadorid ][ TIEMPO ] = 0;

    g_iSentid ] = 0;
    
    g_szHotmail
id ][ ] = 0;
    
    get_user_name
idg_szPlayerNameid ], sizeofg_szPlayerName[] ) );
    
    
static data[2]; data[0] = iddata[1] = CARGAR;
    SQL_ThreadQuery(g_connection"QueryHandler"fmt("SELECT * FROM %s WHERE PName=^"%s^""TABLE_NAMEg_szPlayerName[id]), datasizeof data);
    
}

public 
client_disconnectedid ) {

    g_szHotmailid ][ ] = 0;
    
  
}

public 
SM_Pedidoid ) {
    
    
if( g_iSentid ] == ) {
        
        ColorChat
id"Ya has enviado un pedido de compra." );
        return PLUGIN_HANDLED;
    }
    
    g_iLen 
0;
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r[BG]\y COMPRAR ADMINISTRADOR^n^n" );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r1. \wTIPO: \d[ \r%s \d]^n"g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ] );
    g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r2. \wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ) );
    g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"COSTO: \d[ \y$%d \d]^n^n",( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r3. \wE-Mail: \d[ \y%s\d ]^n^n"g_szHotmailid ][ ] == "\dIngresa tú E-Mail." g_szHotmailid ] );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r4. \wEnviar pedido^n^n" );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r0. \wSalir" );
    
    show_menu
idg_iKeysg_szText, -1"PEDIDO" );
    
    
return PLUGIN_HANDLED;
}



public 
HM_Pedidoidkeysmenu ) {
    
    
switch( keys ) {
        
        
case 0: {
            
            
if( ++g_iContadorid ][ ACCESO ] == )
                g_iContadorid ][ ACCESO ] = 0;
                
            SM_Pedido
id );
        }
            
        
case 1: {
            
            
if( ++g_iContadorid ][ TIEMPO ] == MESES_MAX )
                g_iContadorid ][ TIEMPO ] = 0;
                
            SM_Pedido
id );
        }
        
        
case 2: {
            
            client_cmd
id"messagemode REGISTER_CONTACT" );
        }
        
        
case 3: {
            
            
if( g_szHotmailid ][ ] == ) {
                
                g_iContador
id ][ ACCESO ] = 0;
                g_iContadorid ][ TIEMPO ] = 0;
    
                client_cmd
id"spk buttons/button2.wav" );
                ColorChatid"Debes ingresar un E-Mail." );
                SM_Pedidoid );
                
                
return PLUGIN_HANDLED;
            }
            
            SM_Confirmacion
id );
        }
    }
    
    
return PLUGIN_HANDLED;
}

public 
SM_Confirmacionid ) {
    
    
if( g_iSentid ] == ) {
        
        ColorChat
id"Ya has enviado un pedido de compra." );
        return;
    }
    
    g_iLen 
0;
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r[BG]\y Â¿ESTA SEGURO QUE DESEA ENVIAR EL PEDIDO?^n^n" );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wTIPO: \d[ \r%s \d]^n"g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ] );
    g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wTIEMPO: \d[ \r%d MES%s \d]^n^n",( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ) );
    g_iLen += formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wCOSTO: \d[ \y$%d \d]^n^n",( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\wE-Mail: \d[ \y%s\d ]^n^n"g_szHotmailid ][ ] == "\dIngresa tú E-Mail." g_szHotmailid ] );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r1. \wConfirmar pedido^n^n" );
    
    g_iLen 
+= formatexg_szTextg_iLen ], sizeof g_szText g_iLen"\r0. \wSalir" );
    
    show_menu
idg_iKeysg_szText, -1"CONFIRMACION" );
}

public 
HM_Confirmacionidkeysmenu ) {
    
    
switch( keys ) {
        
        
case 0: {
            
            ColorChat
id"El pedido ha sido enviado con éxito." );
            
            console_print
id"%s El pedido ha sido enviado con Ã©xito."CONSOLE_PREFIX );
            
            ColorChat
id"TIPO: !g%s!y !t|!y TIEMPO !g%d MES%s !t|!y COSTO: !g$%d!y."g_szAdminsDatag_iContadorid ][ ACCESO ] ][ NOMBRE ], ( g_iContadorid ][ TIEMPO ] + ),( g_iContadorid ][ TIEMPO ] == "" "ES" ), ( g_szAdminsDatag_iContadorid ][ ACCESO ] ][ COSTO ] * ( g_iContadorid ][ TIEMPO ] + ) ) );
            
            g_iSent
id ] = 1;
            
            get_user_name
idg_szPlayerNameid ], sizeofg_szPlayerName[] ) );
      
      
static data[2]; data[0] = iddata[1] = INSERTAR;
      new Query[512];
      formatex(Querycharsmax(Query), "INSERT INTO %s (PName, TipoAdm, TiempoAdm, Costo, Email, Pedido, Timestamp) VALUES (^"%s^", ^"%s^", '%d', '%d', ^%s^"'%d''%d')",
      TABLE_NAME, g_szPlayerName[id], g_szAdminsData[g_iContador[id][ACCESO]][NOMBRE], (g_szAdminsData[g_iContador[id][ACCESO]][COSTO] * (g_iContador[id][TIEMPO] + 1)),
      (g_iContador[id][TIEMPO] + 1), g_szHotmail[id], g_iSent[id], get_systime());;
            SQL_ThreadQuery(g_connection, "
QueryHandler", Query, data, sizeof(data));
        
            log_to_file( g_szFile, "
NOMBRE: %TIPO %TIEMPO %d MES%COSTO $%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 ] )
            
            
        }
    }
    
    return PLUGIN_HANDLED;
}

public register_contact( id ) {
    
    read_args( g_szHotmail[ id ], charsmax( g_szHotmail[ ] ) );
    remove_quotes( g_szHotmail[ id ] );
    trim( g_szHotmail[ id ] );
    
    new iArroba = contain( g_szHotmail[ id ], "
@");
    new bool:bValid = false
    
    if( iArroba > 0 && strlen( g_szHotmail[ id ] ) > 7 ) {
        
        for( new i = 0; i < sizeof ( g_szEmails ); i++) {
            
            if( equali( g_szHotmail[ id ][ iArroba ], g_szEmails[ i ] ) ) {
                
                SM_Pedido( id );
                
                client_cmd( id, "
spk buttons/button3.wav" );
                
                bValid = true;
                break;
            }
        }
    }
    
    if ( !bValid ) {
        
        g_szHotmail[ id ][ 0 ] = 0;
        
        SM_Pedido( id );
        ColorChat ( id, "
Dirección de correo electrónico inválido." );
    
        client_cmd( id, "
spk buttons/button2.wav" );
    }
    
    return PLUGIN_HANDLED;
}

public QueryHandler(failstate, Handle:Query, error[], errnum, data[], size, Float:queuetime) {
    if(failstate != TQUERY_SUCCESS) {
        log_to_file("
SQLx_Error.log", "ERROR: [%d] - [%s]", errnum, error);
        return PLUGIN_HANDLED;
    }
    
    static id; id = data[0];
    
    if(!is_user_connected(id)) return PLUGIN_HANDLED;
    
    switch(data[1]) {
    case INSERTAR: console_print(id, "
Datos insertados");
 case CARGAR: {
 if(SQL_NumResults(Queru)) {
 g_iSent[id] = SQL_ReadResult(Query, SQL_FieldNameToNum("
pedido"));
 }
 }
    }
    
    return PLUGIN_CONTINUE;
}


public QueryCreateTable(failstate,Handle:Query, error[], errnum, data[], size, Float:queuetime) {
    if(failstate != TQUERY_SUCCESS) {
        log_to_file("
SQLx_Error.log", "ERROR2: [%d] - [%s]", error, errnum);
        return PLUGIN_HANDLED;
    }
    return PLUGIN_HANDLED;
}


stock ColorChat( const id, const Text[ ], any:... ) { 
    
    new count = 1, players[ 32 ];
    static msg[ 191 ], len, i;
    
    len = formatex( msg, charsmax(msg), "
%", CHAT_PREFIX );
    vformat( msg[ len ], 190 - len, Text, 3 );
    
    replace_all( msg, 190, "
!g", "^4" );
    replace_all( msg, 190, "
!y", "^1" );
    replace_all( msg, 190, "
!t", "^3" );
    
    static iLen = sizeof( msg );
    
    replace_all( msg, iLen, "
á", "á" );
    replace_all( msg, iLen, "
Á", "Ã" );
    replace_all( msg, iLen, "
é", "é" );
    replace_all( msg, iLen, "
É", "É" );
    replace_all( msg, iLen, "
í", "Ã*" );
    replace_all( msg, iLen, "
Í", "Ã" );
    replace_all( msg, iLen, "
ó", "ó" );
    replace_all( msg, iLen, "
Ó", "Ó" );
    replace_all( msg, iLen, "
ú", "ú" );
    replace_all( msg, iLen, "
Ú", "Ú" );
    replace_all( msg, iLen, "
ñ", "ñ" );
    replace_all( msg, iLen, "
Ñ", "Ñ" );
    
    
    if(id) 
        players[ 0 ] = id;
    else 
        get_players( players, count, "
ch" );
            
    for( i = 0; i < count; ++i) {
        
        if( is_user_connected( players[ i ] ) ) 
            writeMessage( players[ i ], msg );    
    }
}

stock writeMessage( player, message[ ] ) {
    
    message_begin( MSG_ONE, get_user_msgid( "
SayText" ), { 0, 0, 0 }, player );
    write_byte( player );
    write_string( message );
    message_end( );

Responder
#19
Alguien tiene una idea porque no me lo reconoce? ya instale el inc que recomienda #Chema

Cita:#include < adv_vault >
Responder
#20
Actualización!

Código:
Versión 1.2
[*] Reestructuración de todo el código (Ahora solo soporta MySQL): 4 de febrero de 2021.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)