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(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /estado", "HookCmdEstado")
}
public HookCmdEstado(id)
{
client_print(id, print_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(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /estado", "HookCmdEstado")
}
public HookCmdEstado(id)
{
if(is_user_alive(id) )
client_print(id, print_chat, "En este momento estas vivo")
else
client_print(id, print_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(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /estado", "HookCmdEstado")
}
public HookCmdEstado(id)
{
switch(is_user_alive(id) )
{
case 0:
client_print(id, print_chat, "En este momento estas muerto")
case 1:
client_print(id, print_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(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /estado", "HookCmdEstado")
p_ChangeReturn = register_cvar("show_command", "1")
}
public HookCmdEstado(id)
{
client_print(id, print_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.
__________________