add_action(3)         LPC 系統函數         add_action(3)

名稱
     add_action() - 把命令的動詞對應到函數去

語法
     void add_action( string | function fun, string  |  string  *
     cmd, int flag );

描述
     當玩家輸入一個命令時, 把它對應到適當的局部函數(lfuns). 該局部
     函數的參數應該是玩家的命令動詞之後的字串, 也就是在該局部函數
     中, 應該自行分析參數的意義. 當命令失敗, 應該傳回 0, 成功則傳
     回非 0.

     假如第二個參數是陣列的話, 則該陣列中出現的命令動詞都會對應到同
     一個函數去. 想在該局部函數要查出是用什麼命令呼叫該函數的方法是:
     使用 query_verb() 這個系統函數. query_verb() 可以用來防止別人
     亂 call_other().

     假如該函數傳回 0, 也就是失敗的意思, 則系統的命令分析器會繼續搜
     尋適合的命令, 直到找完所有可能, 或者是有某個命令成功為止.

     通常, add_action() 會在 init() 中使用. 如此一來, add_action()
     所在的物件只要在玩家身上, 或者是該玩家本身, 或者是該玩家所在的
     房間, 或者是跟該玩家同一間房間內的物件都可以用由 add_action()
     所定義出來的命令. 通常這是用來定義局部的, 特殊的命令用的, 也可
     以用來蓋過系統命令(定義在 /cmds 下).

     假如 <flag> 的值是 1, 則只要命令動詞的前導字元等於 <cmd> 就會
     呼叫 add_action() 所定義的函數, 而 query_verb() 傳回 <cmd>,
     至於 <arg> 則同於 <flag> 的值是 0 的時候.
     如果 <flag> 的值是 2, 則大部份都跟 <flag> 的值是 1 的情況, 唯
     一不同的是 <arg> 則會把命令動詞跟 <cmds> 比起來多餘的部份也加
     入 <arg> 中.

請參考
     query_verb(3), remove_action(3), init(4)

MudOS                Last change: 5 Sep 1994                    1

