Crear un menu que funcione con una variable
#1
Hola tengo un pedido y ayuda a la vez.
Como haria un Menu que funcione con una variable
ejemplo

Menu

1. Comprar
2. Salir

Al elegir comprar se despliegan varias opciones:

1. Comprar 1 esto (x$ de la variable)
2. Comprar 2 esto (x$ de la variable)

En caso de que no tenga suficiente de la variable, no deja comprar y en caso de que si, nadie mas podra comprar el objeto elegido por 60 minutos
Responder
#2
Algo asi? :p

Código PHP:
#include <amxmodx>

new g_Variable1
new g_Variable2

public plugin_init() 
{
    
register_clcmd("say /menu""Cmd_BuyMenu")
}

public 
Cmd_BuyMenu(id)
{
    static 
OPCText[50]
    
    new 
menu menu_create("Menu""Cmd_BuyMenu_Handler");
    
    if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0)
}

public 
Cmd_BuyMenu_Handler(idmenuitem)
{
    if(
item == MENU_EXIT || !is_user_alive(id))
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0:
        {
            if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
            
{
                
client_print(idprint_chat"Compraste esto1")
            }
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
        case 
1:
                {
            if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
            
{
                
client_print(idprint_chat"Compraste esto2")
            }
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
    }
    
    return 
PLUGIN_HANDLED

Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#3
(06/03/2018, 10:45 PM)Juansi Loow escribió: Algo asi? :p

Código PHP:
#include <amxmodx>

new g_Variable1
new g_Variable2

public plugin_init() 
{
    
register_clcmd("say /menu""Cmd_BuyMenu")
}

public 
Cmd_BuyMenu(id)
{
    static 
OPCText[50]
    
    new 
menu menu_create("Menu""Cmd_BuyMenu_Handler");
    
    if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0)
}

public 
Cmd_BuyMenu_Handler(idmenuitem)
{
    if(
item == MENU_EXIT || !is_user_alive(id))
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0:
        {
            if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
            
{
                
client_print(idprint_chat"Compraste esto1")
            }
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
        case 
1:
                {
            if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
            
{
                
client_print(idprint_chat"Compraste esto2")
            }
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
    }
    
    return 
PLUGIN_HANDLED


Holaa, muchas gracias pero funciona parcialmente...

Al comprar una opcion, no quita nada de la variable, por ejemplo probe que quitase 5 de la variable, (Tengo 5 puntos, gaste 5 en la opcion 1, la opcion 1 se ejecuta pero no quita los puntos) otra cosa, las opciones no se "bloquean", te salta el mensaje de "Compraste esto1" y no ejecuta nada ni quita nada de la variable, eso seria mas que nada, lo otro es que falto que cuando un usuario compra cualquiera de las opciones, no se pueda elegir NINGUNA de las opciones por 60 minutos. si es posible y gracias Excitedeyes
Responder
#4
(06/03/2018, 11:25 PM)Renatomon escribió: Holaa, muchas gracias pero funciona parcialmente...

Al comprar una opcion, no quita nada de la variable, por ejemplo probe que quitase 5 de la variable, (Tengo 5 puntos, gaste 5 en la opcion 1, la opcion 1 se ejecuta pero no quita los puntos) otra cosa, las opciones no se "bloquean", te salta el mensaje de "Compraste esto1" y no ejecuta nada ni quita nada de la variable, eso seria mas que nada, lo otro es que falto que cuando un usuario compra cualquiera de las opciones, no se pueda elegir NINGUNA de las opciones por 60 minutos. si es posible y gracias Excitedeyes

Hice lo que pediste en el post.

De todas formas

Lo que quieras que de al elegir una opcion eso debes ponerlo vos, yo no se que querras.

Código PHP:
#include <amxmodx>

new g_Variable1
new g_Variable2
new g_MaxPlayers

new bool:g_BloquearMenu[33]

public 
plugin_init() 
{
    
register_clcmd("say /menu""Cmd_BuyMenu")
    
register_logevent("Round_Start"2"0=World triggered""1=Round_Start")
    
    
g_MaxPlayers get_maxplayers()
}

public 
Round_Start()
{    
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
g_BloquearMenu[id] = false
    
}
}

public 
Cmd_BuyMenu(id)
{
    static 
OPCText[50]
    
    new 
menu menu_create("Menu""Cmd_BuyMenu_Handler");
    
    if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0)
}

public 
Cmd_BuyMenu_Handler(idmenuitem)
{
    if(
item == MENU_EXIT || g_BloquearMenu[id])
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0:
        {
            if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
            
{
                
client_print(idprint_chat"Compraste esto1")
           
g_Variable1 -= 10  // Usa tu variable
           
           
g_BloquearMenu[id] = true
            
}
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
        case 
1:
                {
            if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
            
{
                
client_print(idprint_chat"Compraste esto2")
           
g_Variable1 -= 20 // Usa tu variable
           
           
g_BloquearMenu[id] = true
            
}
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
    }
    
    return 
PLUGIN_HANDLED

Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#5
(07/03/2018, 01:07 AM)Juansi Loow escribió:
(06/03/2018, 11:25 PM)Renatomon escribió: Holaa, muchas gracias pero funciona parcialmente...

Al comprar una opcion, no quita nada de la variable, por ejemplo probe que quitase 5 de la variable, (Tengo 5 puntos, gaste 5 en la opcion 1, la opcion 1 se ejecuta pero no quita los puntos) otra cosa, las opciones no se "bloquean", te salta el mensaje de "Compraste esto1" y no ejecuta nada ni quita nada de la variable, eso seria mas que nada, lo otro es que falto que cuando un usuario compra cualquiera de las opciones, no se pueda elegir NINGUNA de las opciones por 60 minutos. si es posible y gracias Excitedeyes

Hice lo que pediste en el post.

De todas formas

Lo que quieras que de al elegir una opcion eso debes ponerlo vos, yo no se que querras.

Código PHP:
#include <amxmodx>

new g_Variable1
new g_Variable2
new g_MaxPlayers

new bool:g_BloquearMenu[33]

public 
plugin_init() 
{
    
register_clcmd("say /menu""Cmd_BuyMenu")
    
register_logevent("Round_Start"2"0=World triggered""1=Round_Start")
    
    
g_MaxPlayers get_maxplayers()
}

public 
Round_Start()
{    
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
g_BloquearMenu[id] = false
    
}
}

public 
Cmd_BuyMenu(id)
{
    static 
OPCText[50]
    
    new 
menu menu_create("Menu""Cmd_BuyMenu_Handler");
    
    if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 1 esto \r(%d)"g_Variable1)
        
menu_additem(menuOPCText"0")
    }
    if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
    
{
        
formatex(OPCTextcharsmax(OPCText), "Comprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    else 
// Y si no...
    
{
        
formatex(OPCTextcharsmax(OPCText), "\dComprar 2 esto \r(%d)"g_Variable2)
        
menu_additem(menuOPCText"1")
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0)
}

public 
Cmd_BuyMenu_Handler(idmenuitem)
{
    if(
item == MENU_EXIT || g_BloquearMenu[id])
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0:
        {
            if(
g_Variable1 >= 10// Si la variable es mayor o igual a 10
            
{
                
client_print(idprint_chat"Compraste esto1")
           
g_Variable1 -= 10  // Usa tu variable
           
           
g_BloquearMenu[id] = true
            
}
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
        case 
1:
                {
            if(
g_Variable2 >= 20// Si la variable es mayor o igual a 20
            
{
                
client_print(idprint_chat"Compraste esto2")
           
g_Variable1 -= 20 // Usa tu variable
           
           
g_BloquearMenu[id] = true
            
}
            else 
// Y si no...
            
{
                
client_print(idprint_chat"No tenes suficientes ....")
            }
        }
    }
    
    return 
PLUGIN_HANDLED


Gracias probare cuando llegue a mi casa, como dije si me habia funcionado el menu con la variable, solo que tenia esos errores que comente Rainbow

Lo probe, si hago retry me deja comprar normalmente otra vez y queria que si un usuario compra cualquiera de las opciones el menu si se muestre pero las opciones no estaran disponibles hasta pasado los 60 minutos pero la opcion si se ejecuta y si descuenta.
Responder
#6
ayuda porfavor Triste Excitedeyes
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)