Switch y Case
#1

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");
Reply
#2

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
Reply
#3

Gracias por tu ayuda
Supongo que voy a usar un if va a ser lo mejor.
Reply
#4

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";
	}
Reply
#5

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] <= ? ("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.
Reply
#6

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
Reply
#7

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")));
Reply
#8

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] <= ? ("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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)