25/04/2021, 11:21 PM
[API] Tienda Avanzada v1.6
Descripción:
- - Esta api tienda te permite vender cualquier cosa mediante un menú
- - Similar uso al zp_register_extra_item
- - ¿Qué diferencia a esta tienda de las otras?: Puedes usar tu propia variable como moneda si lo deseas
- - Requisito: AmxModX 1.9.0
Cambios de esta nueva versión:
- Optimización de la tienda
- Se renombró todo el include anterior
- Ahora la tienda funciona de forma similar a zp_register_extra_item
Cvars:
- amx_store_name "\y[API] Tienda Avanzada v1.6 by [N]drs" - Titulo del menú de la tienda
- amx_store_tag "^4[Tienda Avanzada]" - Prefix que saldrá en el chat al comprar un item
- amx_store_money "Dinero" - Nombre de la moneda a usar
- amx_store_moneyprefix "$" - Abreviatura de la moneda a usar
- amx_store_custom "0" - 0 -> Usa la moneda del cs; 1 -> Usa tu variable como moneda de la tienda
Comando de chat:
- /store - Abre el menú de la tienda
Comando:
- amx_store_open - Abre el menú de la tienda -> esto por si deseas abrir la tienda a través de un menú principal
Contenido del include:
Código PHP:
// Ignora la compra del item
#define BUY_IGNORE -1
// Cancela la compra del item
#define BUY_STOP 0
// Continua con la compra del item
#define BUY_CONTINUE 1
/**
* Agrega un item a la tienda.
*
* @nota Se recomienda usar dentro de plugin_init()
*
* @param szItem Nombre del item en el menu
* @param iMoney Precio del item
*
* @return Item Index
*/
native store_register_item(const szItem[], const iMoney = 0)
/**
* Llamado cuando un usuario seleccione un item de la tienda.
*
* @param id Indice del cliente
* @param item Item que el usuario seleccionó
*
* @nota Obligatoriamente debes retornar una las definiciones de BUY_
*
* @noreturn
*/
forward store_item_selected(id, item)
/**
* Llamado cuando la tienda necesite obtener el dinero del usuario.
*
* @nota Solo es llamado si la cvar amx_store_custom es 1
*
* @param id Indice del cliente
*
* @nota Obligatoriamente debes retornar tu variable moneda
*/
forward store_get_money(id)
/**
* Llamado cuando la tienda cambie el valor del dinero del usuario
*
* @nota Solo es llamado si la cvar amx_store_custom es 1
*
* @param id Indice del cliente
* @param iNewMoney Nuevo valor del dinero del usuario
*
* @nota Obligatoriamente se debe igualar iNewMoney a tu variable moneda
*/
forward store_set_money(id, const iNewMoney)
Ejemplo - Agregar item a la tienda:
Código PHP:
#include <amxmodx>
#include <fun>
#include <tienda_avanzada>
#define PLUGIN "Ejemplo de uso Tienda avanzada v1.6"
#define VERSION "1.6"
#define AUTHOR "[N]drs"
new g_item
//new g_item2
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
// Nombre del item en el menú
// Precio del item
g_item = store_register_item("M4A1 Dorada", 100)
//g_item2 = store_register_item("AK47 Dorada", 200)
}
/* SIMPLE */
// Cuando alguien seleccione un item en la tienda se llamará esta forward
public store_item_selected(id, item)
{
// If el item seleccionado no es el que registramos,
//le indicamos a la tienda que el item selecionado no es de este plugin
if(g_item != item)
return BUY_IGNORE
// Le damos el item
give_item(id, "weapon_m4a1")
// Le indicamos a la tienda que continue con la compra del item
return BUY_CONTINUE
}
/* CONDICIONAL */
/* Si deseas gestionar la compra del item
public store_item_selected(id, item)
{
// If el item seleccionado no es el que registramos,
//le indicamos a la tienda que el item selecionado no es de este plugin
if(g_item != item)
return BUY_IGNORE
// Si el usuario está vivo
if(is_user_alive(id))
{
// Le damos el item
give_item(id, "weapon_m4a1")
// Le indicamos a la tienda que continue con la compra del item
return BUY_CONTINUE
}
// Si no está vivo
// Le indicamos al usuario el motivo de por qué no puede comprarlo
client_print(id, print_chat, "Para comprarlo debes estar vivo")
// Le indicamos a la tienda que cancele la compra del item
return BUY_STOP
}*/
/* VARIOS ITEMS EN UN MISMO PLUGIN */
/*// Cuando alguien seleccione un item en la tienda se llamará esta forward
public store_item_selected(id, item)
{
if(item == g_item)
{
give_item(id, "weapon_m4a1")
return BUY_CONTINUE
}
else if(item == g_item2)
{
give_item(id, "weapon_ak47")
return BUY_CONTINUE
}
// Si el item selecionado no es ninguno de los que registramos
// Le indicamos a la tienda que el item selecionado no es de este plugin
return BUY_IGNORE
}*/
Ejemplo - Usar mi variable como moneda:
Código PHP:
#include <amxmodx>
#include <tienda_avanzada>
#define PLUGIN "Ejemplo Moneda Propia Tienda Avanzada"
#define VERSION "1.0"
#define AUTHOR "[N]drs"
/* Digamos que no queremos usar el dinero del cs, sino nuestra propia moneda */
/* Como hago para usar mi propia moneda en el sistema de Tienda Avanzada? */
/* Supongamos que la variable de nuestra propia moneda sea: g_iMoney[id] */
// Varible de nuestra moneda
new g_iMoney[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public client_putinserver(id)
{
// Para el ejemplo le dare 1100 al usuario
g_iMoney[id] = 1100
}
// La tienda llamará esta funcion cuando necesite saber el dinero del usuario
public store_get_money(id)
{
// Es obligatorio retornarle a la función el valor de nuestra variable moneda
return g_iMoney[id]
}
// La tienda llamará esta función depues de haberse realizado la compra del item
public store_set_money(id, const iNewMoney)
{
// Es obligatorio igualar el nuevo valor del dinero a nuestra variable moneda
g_iMoney[id] = iNewMoney
}
Resultado:
- Hice este nuevo thread porque la versión anterior queda obsoleta frente a esta
- Si hay apoyo, en la siguiente versión agregaré restricción de items por accesos(Vip/Admin)