SA-MP Forums Archive
Switch y Case - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Switch y Case (/showthread.php?tid=614352)



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