[API] Tienda Avanzada v1.6
#1
[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(iditem)

/**
 * 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(PLUGINVERSIONAUTHOR)
    
    
// 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(iditem)
{
    
// 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(PLUGINVERSIONAUTHOR)
}

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:
[Imagen: unknown.png]

- 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)


Archivos adjuntos
.inc   tienda_avanzada.inc (Tamaño: 1.44 KB / Descargas: 24)
.sma   Descargar AMXX / tienda_avanzada.sma (Tamaño: 4.08 KB / Descargas: 35)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)