Ayuda con Menu
#1
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <expmod>
 
#define PLUGIN "ExpMod Shop"
#define VERSION "1.0"
#define AUTHOR "tomcionek15 & grs4"
#define MAX_ITEMS 50
 
new NombreItem[MAX_ITEMS+1][64];
new 
DescripcionItem[MAX_ITEMS+1][128];
new 
Precio[MAX_ITEMS+1];
new 
Equipo[MAX_ITEMS+1];
 
new 
UnaVezPorRonda[MAX_ITEMS+1];
new 
DesactivarMuerto[MAX_ITEMS+1]
new 
Comprado[33][MAX_ITEMS+1];
 
new 
Numero_Item;
 
new 
Prefijo[] = "[JailBreaK PaiN]"
 
new item_selected;
 
public 
plugin_natives()
{
    
register_native("exp_shop_register_item""shop_register_item"1);
    
register_native("exp_shop_get_prefix""get_prefix"1);
}
 
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
   
    
register_event("HLTV""Nueva_Ronda""a""1=0""2=0")
   
    
register_clcmd("say /tienda""Mostrar_MTienda")
    
register_clcmd("say /shop""Mostrar_MTienda")
   
    
register_clcmd("say /mteam""Mostrar_Equipo")
   
    
item_selected CreateMultiForward("item_selected"ET_CONTINUEFP_CELLFP_CELL);
}
 
public 
Nueva_Ronda()
{
    for(new 
133i++)
    {
        if(!
is_user_connected(i) || is_user_hltv(i))  
            continue;
        for(new 
1<= Numero_Itemj++)
        {
            
Comprado[i][j] = 0;
        }
    }
}
 
public 
Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Textocharsmax(Texto), "Tienes \y%d\w monedas^n\yQue quieres comprar ?"exp_get_user_monets(id))
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        if(
Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS";
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i])
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)
}
 
public 
MenuSklep_Cb(idmenuitem)
{
    new 
Equipo_Actual get_user_team(id)
   
    for(new 
1<= Numero_Item;i++)
    {
        if((
item == i-&& exp_get_user_monets(id) < Precio[i]) || (item == i-&& Comprado[id][i] == 1))
            return 
ITEM_DISABLED;
       
        if(
item == i-&& (DesactivarMuerto[i] == && !is_user_alive(id)))
            return 
ITEM_DISABLED;
       
        if((
item == i-&& Equipo[i] == 1) || (item == i-&& Equipo[i] == 2))
        {
            if((
item == i-&& Equipo_Actual != Equipo[i]))
                return 
ITEM_DISABLED;
        }
    }
   
    return 
ITEM_ENABLED
}
 
new 
temp;
 
public 
Funcion_MTienda(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_CONTINUE
    
}
   
    
item++;
    
temp item;
   
    new 
Texto[256]
    
formatex(Textocharsmax(Texto), "Nombre: \y%s^n\wDescripcion: \y%s^n\wPrecio: \y%d^n\wUno por ronda:\y %s^n\rComprar?"NombreItem[item], DescripcionItem[item], Precio[item], UnaVezPorRonda[item] ? "Si":"No")
   
    new 
menus menu_create(Texto"Funcion_MTienda2")
   
    
menu_additem(menus"Si")
    
menu_additem(menus"No")
   
    
menu_display(idmenus)
   
    return 
PLUGIN_CONTINUE
}
 
public 
Funcion_MTienda2(idmenuitem)
{
    if(
item == MENU_EXIT || item == 1)
    {
        
menu_destroy(menu)
        
temp 0
        
return PLUGIN_CONTINUE
    
}
   
    if(
item == 0)
    {
        
Eligio_Comprar(idtemp)
    }
   
    return 
PLUGIN_CONTINUE
}
 
public 
Eligio_Comprar(iditemid)
{
    new 
iRet;
    
ExecuteForward(item_selectediRetiditemid);
   
    
chatcolor(id"^4%s^1 Compraste: ^4%s"PrefijoNombreItem[itemid])
    
chatcolor(id"^4%s^1 Descripcion: ^4%s"PrefijoDescripcionItem[itemid])
    
chatcolor(id"^4%s^1 Costo:^4 %d ^1monedas"PrefijoPrecio[itemid])
   
    
temp 0;
   
    if(
UnaVezPorRonda[itemid])
    {
        
Comprado[id][itemid] = 1;
    }
   
    
exp_set_user_monets(idexp_get_user_monets(id)-Precio[itemid])
}
 
public 
shop_register_item(const name[], const desc[], priceone_roundif_deadteam)
{
    if(
Numero_Item+MAX_ITEMS+1)
        return 
PLUGIN_CONTINUE
   
    Numero_Item
++
    
param_convert(1)
    
param_convert(2)
    
copy(NombreItem[Numero_Item], 63name)
    
copy(DescripcionItem[Numero_Item], 127desc)
   
    
Precio[Numero_Item] = price
    UnaVezPorRonda
[Numero_Item] = one_round
    DesactivarMuerto
[Numero_Item] = if_dead
   
    Equipo
[Numero_Item] = team
   
    
return Numero_Item;
}
 
public 
get_prefix(dest[], len)
{
    
param_convert(1)
    
copy(destlenPrefijo);
}
 
public 
Mostrar_Equipo(id)
{
    new 
E_Act get_user_team(id)
    
chatcolor(id"^4[%s] ^1Tu equipo actual es: ^3%d"PrefijoE_Act);
}
 
stock chatcolor(id, const input[], any:...)
{
    static 
szMsg[191], msgSayText;
   
    if(!
msgSayText)
        
msgSayText get_user_msgid("SayText");
   
    
vformat(szMsg190input3);
   
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id);
    
write_byte(id id 33);
    
write_string(szMsg);
    
message_end();


-->

Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Textocharsmax(Texto), "Tienes \y%d\w monedas^n\yQue quieres comprar ?"exp_get_user_monets(id))
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        if(
Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS";
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i])
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


Al abrir el Menu, no sale CT, TT ni TODOS, sale 84, 64, etc... y ademas desaparece la opcion 8 y 9, cambiar de pagina y volver atras o salir.

Supuse que era porque

Código PHP:
new Texto[128], Texto2[128

-->

Código PHP:
new Texto[500], Texto2[500

pero sigue igual, alguna forma de arreglarlo?
Responder
#2
Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i

>>>>>>>>>>

Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i

También esto:

Código PHP:
if(Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS"

Seria mejor asi:

Código PHP:
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
Responder
#3
(29/12/2016, 01:29 PM)Chamo. escribió:
Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i

>>>>>>>>>>

Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i

También esto:

Código PHP:
if(Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS"

Seria mejor asi:

Código PHP:
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"


Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i])
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

Error: Undefined symbol "i" on line 61
Error: Undefined symbol "i" on line 61
Error: Number of arguments does not match definition on line 61
Error: Too many error messages on one line on line 61

Compilation aborted.
4 Errors.
Could not locate output file C:\Users\marce\Desktop\exp\scripting\expmod_shop.amx (compile failed).

PD: Numero de linea a modificar?

Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Textocharsmax(Texto), "Tienes \y%d\w monedas^n\yQue quieres comprar ?"exp_get_user_monets(id))
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS")
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i]
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

Warning: Loose indentation on line 68
Error: Undefined symbol "i" on line 68
Error: Number of arguments does not match definition on line 68
Error: Undefined symbol "i" on line 70
Error: Symbol already defined: "menu_display" on line 74

4 Errors.
Could not locate output file C:\Users\marce\Desktop\exp\scripting\expmod_shop.amx (compile failed).
Responder
#4
Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


>>>>>>>>>>

Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)

Responder
#5
(29/12/2016, 01:39 PM)Chamo. escribió:
Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%d\w]"NombreItem[i], Precio[i], Item_NEquipo[i
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


>>>>>>>>>>

Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)


Error: Expected token: ",", but found "-identifier-" on line 72
Responder
#6
Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i

>>>>>>>>>>

Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i]) 

Genius
Responder
#7
(29/12/2016, 01:45 PM)Chamo. escribió:
Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i

>>>>>>>>>>

Código PHP:
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i]) 

Genius

Se arreglo, pero tengo 2 armas en concreto que son para el Equipo CT y las muestra para [TODOS]
[Imagen: b7a3e05953674b28b61c65df4d052502.png]

En este caso, Golden AK y la Golden M4A1 deberia ser CT
Arreglado

Código PHP:
public Mostrar_MTienda(id)
{
    new 
Texto[128], Texto2[128]
    
   
    new 
menu menu_create(Texto"Funcion_MTienda")
    new 
menu_cb menu_makecallback("MenuSklep_Cb")
   
    new 
Item_NEquipo[MAX_ITEMS+1][32]
   
    for(new 
1<= Numero_Itemi++)
    {
        if(
Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS";  
       
        
formatex(Texto2charsmax(Texto2), "%s \w[\r%d\y monedas\w] \w[\rEquipo: \y%s\w]"NombreItem[i], Precio[i], Item_NEquipo[i])
        
menu_additem(menuTexto2__menu_cb)
    }
   
    
menu_display(idmenu)

Responder
#8
Genius

(29/12/2016, 01:29 PM)Chamo. escribió: También esto:

Código PHP:
if(Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS"

Seria mejor asi:

Código PHP:
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"

¿Por qué decís que sería mejor? Cereal
STEAM

(25/07/2016, 11:34 PM)Neeeeeeeeeel.- escribió:
(25/07/2016, 11:33 PM)Web Controller escribió: Este mensaje no se va a ver asi que russel te amo siempre me gustaste :$

Solamente voy a restaurar los datos del template de la db que rompi... no te ilusiones.
Responder
#9
(29/12/2016, 02:22 PM)RusselNight escribió: Genius

(29/12/2016, 01:29 PM)Chamo. escribió: También esto:

Código PHP:
if(Equipo[i] == 1)
            
Item_NEquipo[i] = "TT";
        else if(
Equipo[i] == 2)
            
Item_NEquipo[i] = "CT";
        else
            
Item_NEquipo[i] = "TODOS"

Seria mejor asi:

Código PHP:
formatex(Item_NEquipo[i], charsmax(Item_NEquipo[]), "%s"Equipo[i] == Equipo[i] == "CT" "TT" "TODOS"

¿Por qué decís que sería mejor? Cereal

Me refería a que seria un poco mas 'simple' ( si puede decirse) u ordenado, que hacerlo con múltiples 'ifs'.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)