[CONSULTA] Operadores de condiciуn en format
#1

Hola, empecй a codear con el SAMP ayer y estoy realizando codeando el registro en base de datos y entonces para no setear tantos strings decidн que la edad se guarde en 0 si es masculino y 1 si es femenino, pero al querer mostrar un print del sexo seleccionado de la siguiente forma:

PHP код:
format(msgcharsmax(msg), "Tu sexo seleccionado es %s"g_sexo[playerid] ? "{0080C0C8}masculino" "{FF8080C8}femenino"); 
Me da el error de:
Код:
error 001: expected token: "-string end-", but found "-identifier-"
Lo cual me obliga a tener que trabajar de la sig forma:
PHP код:
            if (g_sexo[playerid])
                
SendClientMessage(playeridCOLOR_BLANCO"Tu sexo seleccionado es {FF8080}femenino");
            else    
                
SendClientMessage(playeridCOLOR_BLANCO"Tu sexo seleccionado es {0080C0}masculino"); 
Pero realmente es muy incуmodo ya que al querer mostrar un print poniйndole la condiciуn directamente me ahorrarнa el trabajo de poner muchos ifs y muchos else.

Hay alguna forma de hacer lo que quiero hacer?
Reply
#2

yo te Recomiendo que lo hagas asi :

pawn Код:
if(g_sexo[playerid] == 1) SendClientMessage(playerid, COLOR_BLANCO, "Tu sexo seleccionado es {FF8080}femenino");
else if(g_sexo[playerid] == 2) SendClientMessage(playerid, COLOR_BLANCO, "Tu sexo seleccionado es {0080C0}masculino");
pawn Код:
new Text[128];
if(g_sexo[playerid] == 1) Text = "'Hombre'";
else if(g_sexo[playerid] == 2) Text = "'Mujer'";
format(string, sizeof(string), "Tu sexo seleccionado es %s", Text);
Reply
#3

pawn Код:
format(msg, sizeof(msg), "Tu sexo seleccionado es %s", ((g_sexo[playerid]) ? ("{0080C0C8}masculino") : ("{FF8080C8}femenino")));
PD: Seguro que hace 2 dias que scripteas pawn? (yo realmente lo dudo).
Reply
#4

Quote:
Originally Posted by bytytus
Посмотреть сообщение
yo te Recomiendo que lo hagas asi :

pawn Код:
if(g_sexo[playerid] == 1) SendClientMessage(playerid, COLOR_BLANCO, "Tu sexo seleccionado es {FF8080}femenino");
else if(g_sexo[playerid] == 2) SendClientMessage(playerid, COLOR_BLANCO, "Tu sexo seleccionado es {0080C0}masculino");
pawn Код:
new Text[128];
if(g_sexo[playerid] == 1) Text = "'Hombre'";
else if(g_sexo[playerid] == 2) Text = "'Mujer'";
format(string, sizeof(string), "Tu sexo seleccionado es %s", Text);
Es una alternativa que pensй crear una variable temporal para almacenar el string.

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
pawn Код:
format(msg, sizeof(msg), "Tu sexo seleccionado es %s", ((g_sexo[playerid]) ? ("{0080C0C8}masculino") : ("{FF8080C8}femenino")));
PD: Seguro que hace 2 dias que scripteas pawn? (yo realmente lo dudo).
Pawn hace 2 dнas no. Tengo experiencia con pawn ya que codeo tambiйn para servidores de CS (AMX Mod X).

PD: Uso charsmax que es un macro que estoy acostumbrado a usar en AMX Mod X :P
Reply
#5

Prgunto, sa Linea Esta bien?

pawn Код:
format(msg, sizeof(msg), "Tu sexo seleccionado es %s", ((g_sexo[playerid]) ? ("{0080C0C8}masculino") : ("{FF8080C8}femenino")));
Pregunto por que es la primera Vz Ke lo veo asi :S.

y si esta bien que funcion esta cumpliendo el ?
Reply
#6

Quote:
Originally Posted by santi.arg
Посмотреть сообщение
Pawn hace 2 dнas no. Tengo experiencia con pawn ya que codeo tambiйn para servidores de CS (AMX Mod X).

PD: Uso charsmax que es un macro que estoy acostumbrado a usar en AMX Mod X :P
Eso explica bastante.


Quote:
Originally Posted by bytytus
Посмотреть сообщение
Prgunto, sa Linea Esta bien?

pawn Код:
format(msg, sizeof(msg), "Tu sexo seleccionado es %s", ((g_sexo[playerid]) ? ("{0080C0C8}masculino") : ("{FF8080C8}femenino")));
Pregunto por que es la primera Vz Ke lo veo asi :S.

y si esta bien que funcion esta cumpliendo el ?
Si, la linea esta bien, "? :" es un operador (llamado ternario) el cual realiza una comparaciуn, dicho burdamente es = que una linea de if:
Modo de uso:
pawn Код:
(criterio) ? (valor_verdadero) : (valor_falso)
ej:
pawn Код:
new tmp = random(2);
printf("Si tmp es igual a 0, printearemos un \"NO\", caso contrario, printearemos un \"SI\". Valor: %s", ((tmp==0) ? ("NO") : ("SI")));
Reply
#7

Si querйs verificar un valor de 1 y 0 es innecesario hacer tmp == 0... directamente

PHP код:
new tmp random(2);
printf("Si tmp es igual a 0, printearemos un \"NO\", caso contrario, printearemos un \"SI\". Valor: %s"tmp "SI" "NO"); 
Por otro lado siempre acostumbro a separar los strings con el strtok definiendo cuбl es el "token", veo que en el SAMP usan el " " como token .
Reply
#8

Quote:
Originally Posted by santi.arg
Посмотреть сообщение
Si querйs verificar un valor de 1 y 0 es innecesario hacer tmp == 0... directamente

PHP код:
new tmp random(2);
printf("Si tmp es igual a 0, printearemos un \"NO\", caso contrario, printearemos un \"SI\". Valor: %s"tmp "SI" "NO"); 
Por otro lado siempre acostumbro a separar los strings con el strtok definiendo cuбl es el "token", veo que en el SAMP usan el " " como token .
ya lo se, de hecho utilizo ! para verificar valores a 0 y nada para valores a 1, pero para que el ejemplo sea claro, intente hacerlo de otra forma, ya que no todos los usuarios saben esto.
Reply
#9

pawn Код:
strtok(const string[], &index, character = ' ')
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= character))
    {
        index++;
    }
 
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > character) && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)