[CONSULTA] Operadores de condiciуn en format -
santi.arg - 17.03.2012
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(msg, charsmax(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(playerid, COLOR_BLANCO, "Tu sexo seleccionado es {FF8080}femenino");
else
SendClientMessage(playerid, COLOR_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?
Respuesta: [CONSULTA] Operadores de condiciуn en format -
OTACON - 17.03.2012
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);
Respuesta: [CONSULTA] Operadores de condiciуn en format -
TheChaoz - 17.03.2012
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).
Respuesta: [CONSULTA] Operadores de condiciуn en format -
santi.arg - 17.03.2012
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
Respuesta: [CONSULTA] Operadores de condiciуn en format -
OTACON - 17.03.2012
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
?
Respuesta: [CONSULTA] Operadores de condiciуn en format -
TheChaoz - 17.03.2012
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")));
Respuesta: [CONSULTA] Operadores de condiciуn en format -
santi.arg - 17.03.2012
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
.
Respuesta: [CONSULTA] Operadores de condiciуn en format -
TheChaoz - 17.03.2012
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.
Respuesta: [CONSULTA] Operadores de condiciуn en format -
Kurama - 18.03.2012
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;
}