View Single Post
Alucard^
AMXX Moderator: Others
Join Date: Sep 2007
Location: Street
Old 09-19-2009 , 16:30   Re: [ES] Recopilacion de Tutoriales v3.4
#180

Condition operator aka ? and :

Estos operadores de condiciones (si es que eso significa en espaņol =p corrijanme si esta mal) pueden ser muy utiles en muchas ocaciones. Tienen algo de similitud con los "if" (por algo son condiciones)... Asi que si ya estas acostumbrado a usar condiciones, no creo que te resulte muy dificil usar este metodo.

PHP Code:
condicion expresion1 expresion2 
1) Si la condicion dada es verdadera (true), la funcion usara la expresion1.
2) Al contrario, si la condicion dada es falsa (false), la funcion usara la expresion2.

Ejemplo:

PHP Code:
is_user_alive(index) ? /* vivo */ /* muerto */

// if statement
if(is_user_alive(index))
      
/* Si el usuario esta vivo */
else
      
/* Si el usuario esta muerto */ 
Un ejemplo haciendo un plugin entero (que funcione claro):

PHP Code:
#include <amxmodx>

#define PLUGIN    "Condition Operator Example"
#define AUTHOR    "Alucard"
#define VERSION    "1.0"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /estado""HookCmdEstado")
}

public 
HookCmdEstado(id)
{
    
client_print(idprint_chat"En este momento estas %s"is_user_alive(id) ? "vivo" "muerto")
    return 
PLUGIN_HANDLED

Si hubieramos usado las condiciones normales (if):

PHP Code:
#include <amxmodx>

#define PLUGIN    "Condition Operator Example"
#define AUTHOR    "Alucard"
#define VERSION    "1.0"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /estado""HookCmdEstado")
}

public 
HookCmdEstado(id)
{
    if(
is_user_alive(id) )
        
client_print(idprint_chat"En este momento estas vivo")
    else
        
client_print(idprint_chat"En este momento estas muerto")
    
    return 
PUGIN_HANDLED

O si hubieramos usado switch:

PHP Code:
#include <amxmodx>

#define PLUGIN    "Condition Operator Example"
#define AUTHOR    "Alucard"
#define VERSION    "1.0"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /estado""HookCmdEstado")
}

public 
HookCmdEstado(id)
{
    switch(
is_user_alive(id) )
    {
        case 
0:
        
client_print(idprint_chat"En este momento estas muerto")
        case 
1:
        
client_print(idprint_chat"En este momento estas vivo")
    }
    
    return 
PUGIN_HANDLED

Y no solo lo pueden usar en client_prints obviamete, se puede usar en muchos lugares y depende de lo que se quiera hacer, por ej....

PHP Code:
#include <amxmodx>

#define PLUGIN    "Condition Operator Example"
#define AUTHOR    "Alucard"
#define VERSION    "1.0"

new p_ChangeReturn

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /estado""HookCmdEstado")
    
    
p_ChangeReturn register_cvar("show_command""1")
}

public 
HookCmdEstado(id)
{
    
client_print(idprint_chat"En este momento estas %s"is_user_alive(id) ? "vivo" "muerto")
    return 
get_pcvar_num(p_ChangeReturn) ? PLUGIN_CONTINUE PLUGIN_HANDLED

Si la cvar show_command esta en 1... cuando el usuario use el comando /estado, en el chat va a aparecer "/estado" escrito por dicho usuario. En cambio si la cvar esta en 0... no va aparecer en el chat que uso tal comando.

Thread Original: http://forums.alliedmods.net/showthread.php?t=79543

PD: Despues doy ejemplos un poco mas complejos. Pero la base principal es esta y no son para nada dificiles de usar. Y a veces realmente resultan muy utiles.
__________________
Approved Plugins - Steam Profile

Public non-terminated projects:
All Admins Menu, HLTV parameters, Subnick,
Second Password (cool style), InfoZone,
Binary C4 plant/defuse, and more...

Private projects:
NoSpec (+menu), NV Surf Management,
PM Adanved System, KZ longjump2, and more...
Alucard^ is offline
Send a message via Skype™ to Alucard^