Switch dentro de otro switch?
#1
Hola, estoy intentando hacer un shop por enumeradores...

Pero utilizo 2 enumeradores para el shop en general, y otra para el arma al azar..

Código PHP:
enum _:DATA_SHOP{
 
    
NOMBRE_ITEM[40],
    
COST_ITEM,
    
FRAG_ITEM,
    
ITEM_LIMIT
 
}

//***ARMA AL AZAR
new weapon_shop[33]

enum _:SHOP_WEAPONS{
    
WEAPON[33],
    
CSW,
    
BALAS,
    
CARGADOR
}

new const 
items_weapons[][SHOP_WEAPONS]={
    {
"weapon_deagle"CSW_DEAGLE10},
    {
"weapon_awp"CSW_AWP10}
}
//***ARMA AL AZAR

enum _:ITEMS{
    
HE,
    
SG,
    
GRAV,
    
PASOS,
    
VEL,
    
AZAR,
    
CAMU
}
 
new const 
items_del_shop[][DATA_SHOP]={
    {
"Granada HE"30001},
    {
"Granada congeladora"4000,1},
    {
"Gravedad"10,1},
    {
"Pasos silenciosos"10,1},
    {
"Velocidad"10,1},
    {
"Arma de 1 bala"10,1},
    {
"Camuflaje"10,1

Quiero dar un arma al azar cuando compre en el shop.

Código PHP:
public menu_tienda(idmenuitem) {
 
    
weapon_shop[id] = random_num(0sizeof items_weapons)
   
    switch(
item)
    {
        case 
HE: {
            
give_item(id"weapon_hegrenade")
            
        }
        
        case 
SG: {
            
give_item(id"weapon_smokegrenade")
        }
        
        case 
GRAV:{
            
set_user_gravity(idFloat0.4)
            
set_task(10.0"remove_grav"id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !ggravedad!"PREFIX)
        }
        
        case 
PASOS:{
            
set_user_footsteps(id0);
        }
        
        case 
VEL: {
            
set_user_maxspeed(idFloat300.0)
            
set_task(10.0"remove_vel",id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !gvelocidad!"PREFIX)
        }
        
        
        
        switch(
random_num(015)
        {
            case 
AZAR:{
                
cs_set_weapon_ammo(give_item(iditems_weapons[weapon_shop[id]][WEAPON]), items_weapons[weapon_shop[id]][BALAS])
                
cs_set_user_bpammo(iditems_weapons[weapon_shop[id]][CSW], items_weapons[weapon_shop[id]][CARGADOR])
                    
                    
            }
        }

        case 
CAMU:{
            
                
            if(
cs_get_user_team(id) == CS_TEAM_T){
                
cs_set_user_model(id"urban")
            }
            else{
                
cs_set_user_model(id"leet");
            }
            
set_task(30.0"remove_camuflaje",id)
            
chatcolor(id"%s !yAhora tienes !g30 !ysegundos de !gcamuflaje! !yNadie sospechara de ti"PREFIX)
        }
        
        
        
    }
    
    
chatcolor(id"%s !yCompraste !g%s !ypor !g$%d!"PREFIXitems_del_shop[item][NOMBRE_ITEM],items_del_shop[item][COST_ITEM])
    
limite_de_compra[id][item]++
    
cs_set_user_money(idcs_get_user_money(id) - items_del_shop[item][COST_ITEM]);


Pero no puedo hacer un switch dentro de otro, me tira error al compilar... Como es la manera correcta de hacerlo?
Responder
#2
Código PHP:
switch(random_num(015)
>>>
switch(
random_num(015)) 

Creo que ese es el problema
Responder
#3
(10/07/2019, 09:35 PM)sinaloense escribió:
Código PHP:
switch(random_num(015)
>>>
switch(
random_num(015)) 

Creo que ese es el problema

No, no es ese el error!
Responder
#4
Te tira error porque esta esperando un CASE y le estas metiendo un switch cuando esta esperando un entero como KEY.

Lo que tendrias que hacer es agregar case AZAR: y ahi dentro hacer el un random num igualandolo al id del item. Probá si te funciona.

Código PHP:
public menu_tienda(idmenuitem) {
    
weapon_shop[id] = random_num(0sizeof items_weapons)
   
    switch(
item)
    {
        case 
HEgive_item(id"weapon_hegrenade")       
        case 
SGgive_item(id"weapon_smokegrenade")
        case 
GRAV: {
            
set_user_gravity(idFloat0.4)
            
set_task(10.0"remove_grav"id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !ggravedad!"PREFIX)
        }
        case 
PASOSset_user_footsteps(id0);        
        case 
VEL: {
            
set_user_maxspeed(idFloat300.0)
            
set_task(10.0"remove_vel",id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !gvelocidad!"PREFIX)
        }
        case 
AZAR: {
            if(
random_num(015) == AZAR) {
                
cs_set_weapon_ammo(give_item(iditems_weapons[weapon_shop[id]][WEAPON]), items_weapons[weapon_shop[id]][BALAS]);
                
cs_set_user_bpammo(iditems_weapons[weapon_shop[id]][CSW], items_weapons[weapon_shop[id]][CARGADOR]);
            }
        }
        case 
CAMU: {
            if(
cs_get_user_team(id) == CS_TEAM_T)
                
cs_set_user_model(id"urban")
            else
                
cs_set_user_model(id"leet");

            
set_task(30.0"remove_camuflaje",id)
            
chatcolor(id"%s !yAhora tienes !g30 !ysegundos de !gcamuflaje! !yNadie sospechara de ti"PREFIX)
        }        
    }
    
    
chatcolor(id"%s !yCompraste !g%s !ypor !g$%d!"PREFIXitems_del_shop[item][NOMBRE_ITEM],items_del_shop[item][COST_ITEM])
    
limite_de_compra[id][item]++
    
cs_set_user_money(idcs_get_user_money(id) - items_del_shop[item][COST_ITEM]);

Responder
#5
(10/07/2019, 09:43 PM)INTIFADA escribió: Te tira error porque esta esperando un CASE y le estas metiendo un switch cuando esta esperando un entero como KEY.

Lo que tendrias que hacer es agregar case AZAR: y ahi dentro hacer el un random num igualandolo al id del item. Probá si te funciona.

Código PHP:
public menu_tienda(idmenuitem) {
    
weapon_shop[id] = random_num(0sizeof items_weapons)
   
    switch(
item)
    {
        case 
HEgive_item(id"weapon_hegrenade")       
        case 
SGgive_item(id"weapon_smokegrenade")
        case 
GRAV: {
            
set_user_gravity(idFloat0.4)
            
set_task(10.0"remove_grav"id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !ggravedad!"PREFIX)
        }
        case 
PASOSset_user_footsteps(id0);        
        case 
VEL: {
            
set_user_maxspeed(idFloat300.0)
            
set_task(10.0"remove_vel",id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !gvelocidad!"PREFIX)
        }
        case 
AZAR: {
            if(
random_num(015) == AZAR) {
                
cs_set_weapon_ammo(give_item(iditems_weapons[weapon_shop[id]][WEAPON]), items_weapons[weapon_shop[id]][BALAS]);
                
cs_set_user_bpammo(iditems_weapons[weapon_shop[id]][CSW], items_weapons[weapon_shop[id]][CARGADOR]);
            }
        }
        case 
CAMU: {
            if(
cs_get_user_team(id) == CS_TEAM_T)
                
cs_set_user_model(id"urban")
            else
                
cs_set_user_model(id"leet");

            
set_task(30.0"remove_camuflaje",id)
            
chatcolor(id"%s !yAhora tienes !g30 !ysegundos de !gcamuflaje! !yNadie sospechara de ti"PREFIX)
        }        
    }
    
    
chatcolor(id"%s !yCompraste !g%s !ypor !g$%d!"PREFIXitems_del_shop[item][NOMBRE_ITEM],items_del_shop[item][COST_ITEM])
    
limite_de_compra[id][item]++
    
cs_set_user_money(idcs_get_user_money(id) - items_del_shop[item][COST_ITEM]);


Ahí complió pero no funciona, no me setea el arma!
Responder
#6
No te da el arma porque es random, es decir, puede o no darte el arma, si vos querias que te de un arma, pero que sea random el tipo de arma usalo así:

Código PHP:
public menu_tienda(idmenuitem) {
    switch(
item)
    {
        case 
HEgive_item(id"weapon_hegrenade")       
        case 
SGgive_item(id"weapon_smokegrenade")
        case 
GRAV: {
            
set_user_gravity(idFloat0.4)
            
set_task(10.0"remove_grav"id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !ggravedad!"PREFIX)
        }
        case 
PASOSset_user_footsteps(id0);        
        case 
VEL: {
            
set_user_maxspeed(idFloat300.0)
            
set_task(10.0"remove_vel",id)
            
chatcolor(id"%s !yAhora tienes !g10 !ysegundos de !gvelocidad!"PREFIX)
        }
        case 
AZAR: {
            
weapon_shop[id] = random_num(0charsmax(items_weapons));

            
cs_set_weapon_ammo(give_item(iditems_weapons[weapon_shop[id]][WEAPON]), items_weapons[weapon_shop[id]][BALAS]);
               
cs_set_user_bpammo(iditems_weapons[weapon_shop[id]][CSW], items_weapons[weapon_shop[id]][CARGADOR]);
        }
        case 
CAMU: {
            if(
cs_get_user_team(id) == CS_TEAM_T)
                
cs_set_user_model(id"urban")
            else
                
cs_set_user_model(id"leet");

            
set_task(30.0"remove_camuflaje",id)
            
chatcolor(id"%s !yAhora tienes !g30 !ysegundos de !gcamuflaje! !yNadie sospechara de ti"PREFIX)
        }        
    }
    
    
chatcolor(id"%s !yCompraste !g%s !ypor !g$%d!"PREFIXitems_del_shop[item][NOMBRE_ITEM],items_del_shop[item][COST_ITEM])
    
limite_de_compra[id][item]++
    
cs_set_user_money(idcs_get_user_money(id) - items_del_shop[item][COST_ITEM]);

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)