Wednesday, June 4, 2014

[TUT/INFO] Condition operator aka ? and :

Ok. Tôi thấy vài scripters sử dụng chức năng này vì vậy tôi quyết định thực hiện hướng dẫn.

GIới Thiệu.
? và : có thể là một chức năng rất hữu ích ... Tôi sẽ giải thích một chút:

Code:
condition ? expresion1 : expresion2
1. Nếu condition là true, Thì sẽ thực hiện biểu thức expresion1
2. Nếu condition là False, Thì sẽ thực hiện biểu thức expresion2

Ví Dụ:
PHP Code:
// Toán tử điều kiệnis_user_alive(index) ? /* Sống */ /* Chết */

// Câu lệnh If
if(is_user_alive(index))
      
/* Sống */else

      
/* Chết */  

Làm thế nào để sử dụng chức năng này trong mã
1 Một ví dụ để in một giết / chết:
PHP Code:
new g_Kills[33];

public 
plugin_init()
    
register_event("DeathMsg","hook_death","a");

public 
hook_death()
{
    new 
read_data);
    
g_Kills[k]++;
   
    static 
kname[32];
    
get_user_name(kknamesizeof kname 1);
   

      
// Biểu thức điều kiện
    
server_print("%s: %d kill%s"knameg_Kills[k] == "" "s");

      
// Câu lệnh If
    
if(g_Kills[k] == 1)
             
server_print("%s: %d kill"knameg_Kills[k]);
    else
             
server_print("%s: %d kills"knameg_Kills[k]);
}  
Nếu anh ta giết được mạng đầu tiên thì nó sẽ in: "Player: 1 kill", nếu không "Player: 5 kills"

2. Tùy thuộc vào hoạt động quản trị viên cvar:
PHP Code:
new pointer;

public 
plugin_init()
{
    
register_concmd("amx_example","example"ADMIN_BAN);
    
pointer get_cvar_pointer("amx_show_activity");
}

public 
example(id)
{
    if(!
access(id,ADMIN_BAN))
        return 
PLUGIN_HANDLED;
   
    new 
name[32];
    
get_user_name(idnamesizeof name 1);
   
    
// condition operator
    
client_print(0print_chat,"ADMIN %s: Shows an example",get_pcvar_num(pointer) == name "");
  
     
// if statement
    
if(get_pcvar_num(pointer) == 2)
              
client_print(0print_chat,"ADMIN %s: Shows an example",name);
    else if(
get_pcvar_num(pointer) == 1)
              
client_print(0print_chat,"ADMIN : Shows an example");

    
// switch statement
    
switch(get_pcvar_num(pointer))
    {
              case 
2client_print(0print_chat,"ADMIN %s: Shows an example",name);
              case 
1client_print(0print_chat,"ADMIN : Shows an example");
    }

    return 
PLUGIN_HANDLED;
}  
"ADMIN Player: Shows an example" hoặc "ADMIN : Shows an example"

3. Tôi thấy kịch bản được đăng khoảng một tuần trước đây mà sẽ không cho phép một người chơi sử dụng 'say' lệnh:
PHP Code:
new bool:g_Gag[33];

public 
plugin_init()
    
register_clcmd("say","hook_say");
   
public 
hook_say(id)
{
    if(
g_Gag[id])
        return 
PLUGIN_HANDLED;
    return 
PLUGIN_CONTINUE;
}  
Điều này có thể được viết đơn giản hơn, như thế này:
PHP Code:
new bool:g_Gag[33];

public 
plugin_init()
    
register_clcmd("say","hook_say");
   
public 
hook_say(id)
        return 
g_Gag[id] ? PLUGIN_HANDLED PLUGIN_CONTINUE;  

0 nhận xét:

Post a Comment