Switch y Case -
Mamoru - 07.08.2016
Hola, alguien podrнa ayudarme con esto?
Lo que quiero hacer es poner el nombre "Dinero" en el inventario,
igual a como lo hice con los nombres de las armas.
Pero no sй que nъmero poner en el "case", como poner que si tengo mбs de
$1 aparezca "Dinero" en ves de "Lugar Vacнo", no sй si me entienden, no me sй explicar bien
pawn Код:
new Lugar[2][16], Info[100];
switch(Informacion[playerid][Armas])
{
case 0:Lugar[0]="Lugar Vacнo";
case 22:Lugar[0]="9mm";
case 22:Lugar[0]="9mm silenciada";
case 24:Lugar[0]="Desert Eagle";
}
switch(Informacion[playerid][Dinero])
{
case 0:Lugar[1]="Lugar Vacнo";//Si tengo $0 aparece "Lugar Vacнo" en el dialogo, anda bien.
case 0:Lugar[1]="Dinero";//Pero que poner en este case? si pongo 1 solo aparece "Dinero" si tengo $1.
} //la idea es que aparezca "Dinero" si tengo $1 o mбs.
format(string, sizeof(string), "%s\n", Lugar[0]);
strcat(Info, string);
format(string, sizeof(string), "%s\n", Lugar[1]);
strcat(Info, string);
ShowPlayerDialog(playerid, DIALOGO_INVENTARIO, DIALOG_STYLE_LIST, "Inventario", Info, "Aceptar", "Cancelar");
Respuesta: Switch y Case -
Zume - 07.08.2016
Puedes utilizar default: lo cual es el equivalente a un else en una condiciуn if
case 5:
{
}
default:
{
// cualquier otro
}
sin embargo, en tu caso lo mejor seria un if pues no hay operadores de mayor o menor
Respuesta: Switch y Case -
Mamoru - 07.08.2016
Gracias por tu ayuda
Supongo que voy a usar un if va a ser lo mejor.
Re: Switch y Case -
bm0z - 08.08.2016
Bбsicamente es lo que ha dicho Zume, o usar un if.
Код:
switch(Informacion[playerid][Dinero])
{
case 0:Lugar[1]="Lugar Vacнo";
default:Lugar[1]="Dinero";
}
Re: Switch y Case -
RIDE2DAY - 08.08.2016
Estб resuelto por lo que veo, comento esto por si te interesa aprender algo mбs, podrнas usar operadores ternarios:
PHP код:
Lugar[1] = (Informacion[playerid][Dinero] <= 0 ? ("Lugar vacнo") : ("Dinero"));
/* Es como decir: Informacion[playerid][Dinero] menor o igual a 0 <ENTONCES> ("Lugar vacнo") <DE LO CONTRARIO> ("Dinero") */
Tienes mбs informaciуn
aquн sobre estos operadores.
Un saludo.
Respuesta: Switch y Case -
Zume - 08.08.2016
Creo que la asignaciуn de cadenas de texto mediante ternarios estб bug en el compilador normal, ZeeX lo "fixeу" en su parche, acб hice una prueba:
Sin parche:
Con parche:
Acб el parche:
https://github.com/Zeex/pawn/releases
Y creo yo que si usas YSI tendrбs que hacer algunos cambios al code.
EDIT: Ah nunca lo probй, y pero sн anduvo con los parйntesis
Respuesta: Switch y Case -
Whyd - 09.08.2016
Quote:
Originally Posted by Zume
Creo que la asignaciуn de cadenas de texto mediante ternarios estб bug en el compilador normal, ZeeX lo "fixeу" en su parche, acб hice una prueba:
Acб el parche: https://github.com/Zeex/pawn/releases
Y creo yo que si usas YSI tendrбs que hacer algunos cambios al code..
|
Una opciуn es usar el fix de Zeex pero creo que tambiйn compila de la siguiente manera:
pawn Код:
printf("%s", (IsPlayerConnected(playerid) ? ("Conectado") : ("Desconectado")));
Respuesta: Re: Switch y Case -
Glimma - 09.08.2016
Quote:
Originally Posted by RIDE2DAY
Estб resuelto por lo que veo, comento esto por si te interesa aprender algo mбs, podrнas usar operadores ternarios:
PHP код:
Lugar[1] = (Informacion[playerid][Dinero] <= 0 ? ("Lugar vacнo") : ("Dinero"));
/* Es como decir: Informacion[playerid][Dinero] menor o igual a 0 <ENTONCES> ("Lugar vacнo") <DE LO CONTRARIO> ("Dinero") */
Tienes mбs informaciуn aquн sobre estos operadores.
Un saludo.
|
Concuerdo con esto. No me parece un buen uso de sentencias el hecho de usar un switch para sуlo dos casos. Por esto es conveniente usar un operador ternario.
Ademбs acб:
Код:
switch(Informacion[playerid][Dinero])
{
case 0:Lugar[1]="Lugar Vacнo";
default:Lugar[1]="Dinero";
}
Lugar vacнo deberнa salir tambiйn si se tiene dinero negativo.