[AMXX] Tienda Por Natives 3.1
#1
Tienda por natives v3.1

Información:
A diferencia de las otras tiendas, Una simple tienda por menú que trabaja con una native
para agregar los items al menú, también trabaja con forward para ejecutar la función que se use al ítem.

Changelog:

Código:
[AMXX] Tienda Por Natives v3.1:
          Versión de lanzamiento.

Versiones anteriores:
    [CTF] Tienda por natives.
    [ CTF ] Tienda eSpecial <3

Código :
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define MAX_ITEMS_SHOP    10
#define MAX_NAME_ITEM    32

enum _:DATA_ARRAY {
    
ARRAY_ITEM[MAX_NAME_ITEM],
    
ARRAY_FORWARD,
    
ARRAY_MONEY
};

new 
g_iItems 0;
new 
g_szDataArray[MAX_ITEMS_SHOP+1][DATA_ARRAY];
new 
g_szTag[] = "^4[Alliedmodders-ES]^1";

public 
plugin_init() {
    
register_plugin("[AMXX] Native Shop""v1.0""Alejandro-.");
    
register_clcmd("say /test""DisplayShopItems");
}
public 
DisplayShopItems(index) {
    if (!
g_iItems) {
        
client_print(indexprint_chat"%s No hay items agregados al menu"g_szTag);
        return 
PLUGIN_HANDLED;
    }
    new 
Menu menu_create("\y[AMXX]\w Tienda Por Natives \r3.0\y\R""HandlerShopItems"); 
    new 
szItem[50];
    for(new 
0<MAX_ITEMS_SHOPi++) {
        if (!
g_szDataArray[i][ARRAY_ITEM][0])
            continue;
        
formatex(szItemcharsmax(szItem), "%s\R%s$%d"g_szDataArray[i][ARRAY_ITEM], cs_get_user_money(index) < g_szDataArray[i][ARRAY_MONEY] ? "\d" "\y"g_szDataArray[i][ARRAY_MONEY]);
        
menu_additem(MenuszItem);
    }     
    
menu_setprop(MenuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(MenuMPROP_BACKNAME"Anterior");
    
menu_setprop(MenuMPROP_EXITNAME"Salir");
    
menu_display(indexMenu);
    return 
PLUGIN_HANDLED;
}
public 
HandlerShopItems(indexmenuitem) {
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    if (
cs_get_user_money(index) < g_szDataArray[item][ARRAY_MONEY]) {
        
client_print_color(indexprint_team_default"%s Te hace falta ^4$%d^1 de dinero!"g_szTagg_szDataArray[item][ARRAY_MONEY] - cs_get_user_money(index));
        
DisplayShopItems(index);
        return 
PLUGIN_HANDLED;
    }
    
cs_set_user_money(indexcs_get_user_money(index) - g_szDataArray[item][ARRAY_MONEY]);
    
client_print_color(indexprint_team_default"%s Compraste el item:^3 %s"g_szTagg_szDataArray[item][ARRAY_ITEM]);
    
ExecuteForward(g_szDataArray[item][ARRAY_FORWARD], _index);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}
public 
plugin_natives() {
    
register_native("shop_add_item_menu""add_item_menu");
}
public 
add_item_menu(plpr) {
    new 
szTitle[40];
    
get_string(1szTitlecharsmax(szTitle));
    
trim(szTitle);

    new 
szForward[40];
    
get_string(2szForwardcharsmax(szForward));
    
trim(szForward);

    if (!
szTitle[0]) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de nombre");
        return;
    }

    if (!
szForward[0]) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de funcion");
        return;
    }

    if (
g_iItems == MAX_ITEMS_SHOP) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado, por que el menu llego al maximo de items");
        return;
    }
    
    
formatex(g_szDataArray[g_iItems][ARRAY_ITEM], charsmax(g_szDataArray[][ARRAY_ITEM]), szTitle);
    
g_szDataArray[g_iItems][ARRAY_FORWARD] = CreateMultiForward(szForwardET_IGNOREFP_CELL);
    
g_szDataArray[g_iItems][ARRAY_MONEY] = get_param(3);
    
g_iItems++;


Uso de la native:

Código PHP:
#include <amxmodx>
#include <fun>

native shop_add_item_menu(szTitle[], szForward[], iPrecio);

public 
plugin_init() {
    
register_plugin("[AMXX] Native Shop Test""v1.0""Alejandro-.");

    
shop_add_item_menu("+100 de hp""fwSetHealh"1500);
    
shop_add_item_menu("+100 de chaleco""fwSetArmor"2000);
    
shop_add_item_menu("glow verde""fwSetGlowGreen"3000);
    
shop_add_item_menu("glow azul""fwSetGlowBlue"1023);
}
public 
fwSetHealh(index) {
    
set_user_health(indexget_user_health(index) + 100);
}
public 
fwSetArmor(index) {
    
set_user_armor(indexget_user_armor(index) + 100);
}
public 
fwSetGlowGreen(index) {
    
set_user_rendering(indexkRenderFxGlowShell1025510kRenderNormal10);    

}
public 
fwSetGlowBlue(index) {
    
set_user_rendering(indexkRenderFxGlowShell1010255kRenderNormal10);    



Archivos adjuntos
.sma   Descargar AMXX / AMXX-TiendaDeNatives.sma (Tamaño: 2.87 KB / Descargas: 11)
Responder
#2
Muy bonito y todo pero arregla la tabulaciooononon para poder leer bien jsjs
"Cada golpe es una lección, y cada lección te hace mejor."

[Imagen: b_350_20_000000_8a7300_ffffff_eeff00.png]
[Imagen: 76561198371193937.png]
Responder
#3
(12/10/2020, 08:10 PM)rojedafeik escribió: Muy bonito y todo pero arregla la tabulaciooononon para poder leer bien jsjs

xD La tabulacion es cuestión del foro, ya me ah pasado varias veces pasa cuando tu editas un post.
Pero si descargas el codigo te saldra un codigo bien tabulado xD
Responder
#4
Muy bonito aporte me re gusto el código, ahora faltaría probarlo. c:

esta buenardo como dirían los jóvenes v:
Responder
#5
(12/10/2020, 10:45 PM)gh0st escribió: Muy bonito aporte me re gusto el código, ahora faltaría probarlo. c:

esta buenardo como dirían los jóvenes v:

Gracias papej, pruebalo esta bueno!
Responder
#6
Muy bueno, lo testiamos y me fascina, seguro lo use para algun modo que podria ser el hns+lasers.

Gracias alejandro!
_____________________________________________________________________________
(05/08/2020, 06:47 PM)acetatomil escribió: Vos también sos trolazo por responder, y también me incluyo y el que lo lea también. Bue.

_____________________________________________________________________________
Responder
#7
Esta buenardo, el sistema la verdad me inspira para posibles proyectos, una pregunta ya que veo que te llevas bien con los natives.

Como obtengo un string con un native, ejemplo:

Plugin 1: Sistema hook chat, en el cual quiero poner CC(0,[%s], get_user_rango(id))

Plugin 2: Sistema de obtencion del rango, usando la native get_user_rango(id), exportar la string.
Responder
#8
(17/10/2020, 11:53 AM)alexiways escribió: Esta buenardo, el sistema la verdad me inspira para posibles proyectos, una pregunta ya que veo que te llevas bien con los natives.

Como obtengo un string con un native, ejemplo:

Plugin 1: Sistema hook chat, en el cual quiero poner CC(0,[%s], get_user_rango(id))

Plugin 2: Sistema de obtencion del rango, usando la native get_user_rango(id), exportar la string.

Esto no tiene nada que ver con el tema...
Responder
#9
Hola, gracias por comentar mi posteo, podrias explicarme como funcionaria estos dos codigos?
Dame un ejemplo..
Por lo que entendí las natives deberia poner mis items, pero como seria que el primer código llama al 2do ? o el segundo es un include, de ser asi como funciona realmente los includes..
Responder
#10
Instalas esto:

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define MAX_ITEMS_SHOP    10
#define MAX_NAME_ITEM    32

enum _:DATA_ARRAY {
    
ARRAY_ITEM[MAX_NAME_ITEM],
    
ARRAY_FORWARD,
    
ARRAY_MONEY
};

new 
g_iItems 0;
new 
g_szDataArray[MAX_ITEMS_SHOP+1][DATA_ARRAY];
new 
g_szTag[] = "^4[Alliedmodders-ES]^1";

public 
plugin_init() {
    
register_plugin("[AMXX] Native Shop""v1.0""Alejandro-.");
    
register_clcmd("say /test""DisplayShopItems");
}
public 
DisplayShopItems(index) {
    if (!
g_iItems) {
        
client_print(indexprint_chat"%s No hay items agregados al menu"g_szTag);
        return 
PLUGIN_HANDLED;
    }
    new 
Menu menu_create("\y[AMXX]\w Tienda Por Natives \r3.0\y\R""HandlerShopItems"); 
    new 
szItem[50];
    for(new 
0<MAX_ITEMS_SHOPi++) {
        if (!
g_szDataArray[i][ARRAY_ITEM][0])
            continue;
        
formatex(szItemcharsmax(szItem), "%s\R%s$%d"g_szDataArray[i][ARRAY_ITEM], cs_get_user_money(index) < g_szDataArray[i][ARRAY_MONEY] ? "\d" "\y"g_szDataArray[i][ARRAY_MONEY]);
        
menu_additem(MenuszItem);
    }     
    
menu_setprop(MenuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(MenuMPROP_BACKNAME"Anterior");
    
menu_setprop(MenuMPROP_EXITNAME"Salir");
    
menu_display(indexMenu);
    return 
PLUGIN_HANDLED;
}
public 
HandlerShopItems(indexmenuitem) {
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    if (
cs_get_user_money(index) < g_szDataArray[item][ARRAY_MONEY]) {
        
client_print_color(indexprint_team_default"%s Te hace falta ^4$%d^1 de dinero!"g_szTagg_szDataArray[item][ARRAY_MONEY] - cs_get_user_money(index));
        
DisplayShopItems(index);
        return 
PLUGIN_HANDLED;
    }
    
cs_set_user_money(indexcs_get_user_money(index) - g_szDataArray[item][ARRAY_MONEY]);
    
client_print_color(indexprint_team_default"%s Compraste el item:^3 %s"g_szTagg_szDataArray[item][ARRAY_ITEM]);
    
ExecuteForward(g_szDataArray[item][ARRAY_FORWARD], _index);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}
public 
plugin_natives() {
    
register_native("shop_add_item_menu""add_item_menu");
}
public 
add_item_menu(plpr) {
    new 
szTitle[40];
    
get_string(1szTitlecharsmax(szTitle));
    
trim(szTitle);

    new 
szForward[40];
    
get_string(2szForwardcharsmax(szForward));
    
trim(szForward);

    if (!
szTitle[0]) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de nombre");
        return;
    }

    if (!
szForward[0]) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de funcion");
        return;
    }

    if (
g_iItems == MAX_ITEMS_SHOP) {
        
log_amx("[AMXX-Native Shops v1.0] Item no agregado, por que el menu llego al maximo de items");
        return;
    }
    
    
formatex(g_szDataArray[g_iItems][ARRAY_ITEM], charsmax(g_szDataArray[][ARRAY_ITEM]), szTitle);
    
g_szDataArray[g_iItems][ARRAY_FORWARD] = CreateMultiForward(szForwardET_IGNOREFP_CELL);
    
g_szDataArray[g_iItems][ARRAY_MONEY] = get_param(3);
    
g_iItems++;


Luego dentro del extra item que quieras agregar al meno, osea en el plugin del extra item agregas la native que usaras para agregarlo al menu de extra items
Código PHP:
native shop_add_item_menu(szTitle[], szForward[], iPrecio); 

Luego usas esta native en plugin init de esta forma:
Código PHP:
//titulo del extra item | forward que se ejecuta donde obtiene el extra item | precio del item 
shop_add_item_menu("+100 de hp""fwSetHealh"1500); 

ya con eso agregarias items al menu de extra items
Responder
#11
(16/04/2021, 12:36 AM)Alejandro escribió: Instalas esto:

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define MAX_ITEMS_SHOP    10
#define MAX_NAME_ITEM    32

enum _:DATA_ARRAY {
    ARRAY_ITEM[MAX_NAME_ITEM],
    ARRAY_FORWARD,
    ARRAY_MONEY
};

new 
g_iItems 0;
new 
g_szDataArray[MAX_ITEMS_SHOP+1][DATA_ARRAY];
new 
g_szTag[] = "^4[Alliedmodders-ES]^1";

public 
plugin_init() {
    register_plugin("[AMXX] Native Shop""v1.0""Alejandro-.");
    register_clcmd("say /test""DisplayShopItems");
}
public 
DisplayShopItems(index) {
    if (!g_iItems) {
        client_print(indexprint_chat"%s No hay items agregados al menu"g_szTag);
        return PLUGIN_HANDLED;
    }
    new Menu menu_create("\y[AMXX]\w Tienda Por Natives \r3.0\y\R""HandlerShopItems"); 
    new szItem[50];
    for(new 0<MAX_ITEMS_SHOPi++) {
        if (!g_szDataArray[i][ARRAY_ITEM][0])
            continue;
        formatex(szItemcharsmax(szItem), "%s\R%s$%d"g_szDataArray[i][ARRAY_ITEM], cs_get_user_money(index) < g_szDataArray[i][ARRAY_MONEY] ? "\d" "\y"g_szDataArray[i][ARRAY_MONEY]);
        menu_additem(MenuszItem);
    }    
    menu_setprop
(MenuMPROP_NEXTNAME"Siguiente");
    menu_setprop(MenuMPROP_BACKNAME"Anterior");
    menu_setprop(MenuMPROP_EXITNAME"Salir");
    menu_display(indexMenu);
    return PLUGIN_HANDLED;
}
public 
HandlerShopItems(indexmenuitem) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    if (cs_get_user_money(index) < g_szDataArray[item][ARRAY_MONEY]) {
        client_print_color(indexprint_team_default"%s Te hace falta ^4$%d^1 de dinero!"g_szTagg_szDataArray[item][ARRAY_MONEY] - cs_get_user_money(index));
        DisplayShopItems(index);
        return PLUGIN_HANDLED;
    }
    cs_set_user_money(indexcs_get_user_money(index) - g_szDataArray[item][ARRAY_MONEY]);
    client_print_color(indexprint_team_default"%s Compraste el item:^3 %s"g_szTagg_szDataArray[item][ARRAY_ITEM]);
    ExecuteForward(g_szDataArray[item][ARRAY_FORWARD], _index);
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
public 
plugin_natives() {
    register_native("shop_add_item_menu""add_item_menu");
}
public 
add_item_menu(plpr) {
    new szTitle[40];
    get_string(1szTitlecharsmax(szTitle));
    trim(szTitle);

    new szForward[40];
    get_string(2szForwardcharsmax(szForward));
    trim(szForward);

    if (!szTitle[0]) {
        log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de nombre");
        return;
    }

    if (!szForward[0]) {
        log_amx("[AMXX-Native Shops v1.0] Item no agregado por falta de funcion");
        return;
    }

    if (g_iItems == MAX_ITEMS_SHOP) {
        log_amx("[AMXX-Native Shops v1.0] Item no agregado, por que el menu llego al maximo de items");
        return;
    }
    
    formatex
(g_szDataArray[g_iItems][ARRAY_ITEM], charsmax(g_szDataArray[][ARRAY_ITEM]), szTitle);
    g_szDataArray[g_iItems][ARRAY_FORWARD] = CreateMultiForward(szForwardET_IGNOREFP_CELL);
    g_szDataArray[g_iItems][ARRAY_MONEY] = get_param(3);
    g_iItems++;


Luego dentro del extra item que quieras agregar al meno, osea en el plugin del extra item agregas la native que usaras para agregarlo al menu de extra items
Código PHP:
native shop_add_item_menu(szTitle[], szForward[], iPrecio); 

Luego usas esta native en plugin init de esta forma:
Código PHP:
//titulo del extra item | forward que se ejecuta donde obtiene el extra item | precio del item 
shop_add_item_menu("+100 de hp""fwSetHealh"1500); 

ya con eso agregarias items al menu de extra items

gracias por tomarte el tiempo en responder.. si era como suponia.. son 2 plugins entonces ?
Te consulto me sale este error por lo visto es por la version, debo suponer que en amxmodx deberían estar los archivos para actualizar
Edit: me dice error en las linea 16 y 17
register_plugin("[AMXX] Native Shop", "v1.0", "Alejandro-.");
register_clcmd("say /test", "DisplayShopItems");

[Imagen: 432a3d5cad870e0c0c407b06e9f0159bo.png]

Ya esta, cerre el editor y se solucionó !!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)