SA-MP Forums Archive
Operador IF: multiple en una linea - 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: Operador IF: multiple en una linea (/showthread.php?tid=641500)



Operador IF: multiple en una linea - iSanchez - 16.09.2017

Hola, tengo una pregunta, їHay forma de hacer lo siguiente?

Код:
if(PlayerData[playerid][level] != LEVEL_ADMIN | LEVEL_VIP | LEVEL_MOD)
{
     return 0;
}
їEs posible hacer que PlayerData[playerid][level] pueda verificar si no es igual a los 3 valores en una misma linea sin necesidad de hacer esto?

Код:
if(PlayerData[playerid][level] != LEVEL_ADMIN && PlayerData[playerid][level] != LEVEL_VIP && PlayerData[playerid][level] != LEVEL_MOD)
{
     return 0;
}
Gracias


Re: Operador IF: multiple en una linea - Unrea1 - 16.09.2017

Podrнas usar switch y ir directamente al valor que quieres que se ejecute la funciуn.

PHP код:
switch(PlayerData[i][level])
{
    case 
LEVEL_ADMINLEVEL_VIPLEVEL_MOD:
    {
        
/* Funciones */
        
return true;
    }
    default: return 
false;




Respuesta: Re: Operador IF: multiple en una linea - iSanchez - 16.09.2017

Quote:
Originally Posted by Unrea1
Посмотреть сообщение
Podrнas usar switch y ir directamente al valor que quieres que se ejecute la funciуn.

PHP код:
switch(PlayerData[i][level])
{
    case 
LEVEL_ADMINLEVEL_VIPLEVEL_MOD:
    {
        
/* Funciones */
        
return true;
    }
    default: return 
false;

La idea era ahorrar cуdigo en una linea xd.

їNo hay otra forma?


Re: Operador IF: multiple en una linea - Unrea1 - 16.09.2017

їCrees que con ahorrar lнneas irб mбs rбpido?, ja.

Haz las pruebas de velocidad y mira quй es mбs rбpido, si el if/else if o switch.


Respuesta: Re: Operador IF: multiple en una linea - iSanchez - 16.09.2017

Quote:
Originally Posted by Unrea1
Посмотреть сообщение
їCrees que con ahorrar lнneas irб mбs rбpido?, ja.

Haz las pruebas de velocidad y mira quй es mбs rбpido, si el if/else if o switch.
Yo no mencione la velocidad, ja. (xD)

Lo quiero en una linea para editar mбs rбpido el cуdigo en caso de ser necesario y para que pueda ser mas legible para mi, mбs prбctico.

.-.


Re: Respuesta: Re: Operador IF: multiple en una linea - Unrea1 - 16.09.2017

Quote:
Originally Posted by iSanchez
Посмотреть сообщение
Yo no mencione la velocidad, ja. (xD)

Lo quiero en una linea para editar mбs rбpido el cуdigo en caso de ser necesario y para que pueda ser mas legible para mi, mбs prбctico.

.-.
PHP код:
IsAdminValid(playeridlevel)
{
    switch(
PlayerData[playerid][level]) 
    { 
        case 
LEVEL_ADMINLEVEL_VIPLEVEL_MOD
        { 
            return 
true
        } 
        default: return 
false
    }  
}
// ** Uso:
if (IsAdminValid(playeridLEVEL_ADMIN))
{
    return 
true;
}
else
    return 
false
Tambiйn puedes eliminar el tag "level" para que identifique de una vez si pertenece a los niveles que quieras personalizar.


Re: Operador IF: multiple en una linea - realgantzyo - 16.09.2017

Код:
if(PlayerData[playerid][level] != LEVEL_ADMIN || LEVEL_VIP || LEVEL_MOD)
{
     return 0;
}
Usб el operador || para ver comprobar distintos valores.


Respuesta: Operador IF: multiple en una linea - x3378 - 17.09.2017

Quote:
Originally Posted by Unrea1
Посмотреть сообщение
їCrees que con ahorrar lнneas irб mбs rбpido?, ja.

Haz las pruebas de velocidad y mira quй es mбs rбpido, si el if/else if o switch.
Es necesario mencionar que la diferencia entre uno y otro, son micro-segundos, todos estos operadores funcionan en menos tiempo del que te imaginas, bбsicamente no tiene sentido la velocidad en esta situaciуn.

Quote:
Originally Posted by Unrea1
Посмотреть сообщение
IsAdminValid(playerid, level)..

Tambiйn puedes eliminar el tag "level" para que identifique de una vez si pertenece a los niveles que quieras personalizar.
Serнa "IsValidAdmin" y utilizar una funciуn extra para saber si es administrador o no; es un consejo que йl deberнa tomar, sin embargo tambiйn podrнas ahorrar mбs lineas o tambiйn podrнa utilizar el operador IF de otra manera.


Mйtodo #1 (Agregar una funciуn para comprobar si tiene un nivel (o mayor)


Код:
bool:IsValidAdmin(playerid, admin_level) // La funciуn (devuelve true si tiene nivel)
{
	if (PlayerData[playerid][level] >= admin_level) return true;
	return false;
}

if (IsValidAdmin(playerid, level)) // Asн serнan tus condiciones
{
}
Mйtodo #2 (Utilizar el operador IF rбpido y sencillo)

Код:
if (!(1 <= PlayerData[playerid][level] <= 10))
{
    //  No es nivel 1 a 10, sуlo cambiarнas los nъmeros (1 por el nivel menor y 10 por el nivel mayor)
}


// Y podrнas utilizarlo asн
if (!(LEVEL_VIP <= PlayerData[playerid][level] <= LEVEL_ADMIN))
    return SendClientMessage(playerid, 0xFFFFFFFF, "ERROR: No eres un miembro VIP o Administrador");