Re: [wizs] 使用問題及其它效果問題...
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間15年前 (2010/08/16 13:28)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/5 (看更多)
※ 引述《justinj (闇冥)》之銘言:
: 1.add_action(func,cmds)...這個是增加玩家的指令吧,
: 假如某房間裡有a,b,c三位玩家..那我要如何只有a,b這2位玩家有指令,c沒有呢?
有兩種..
一、可下 cmds 指令,但是沒有反應。
二、連 cmds 指令都無法下。
因 add_action 一般是在 void init 函數裡面做運用
(不寫在這個函數裡面也可以),所以..
void init()
{
若你不想讓某位玩家能下 cmds 指令
return ;
else
add_action(func,cmds);
}
另一種是..
int func(string str)
{
若你不想讓某位玩家能正常執行該指令
return 0;
// 通過上面的判斷代表可正常執行底下你寫的程式段
.
.
}
: 2.add_action(func,*cmds)..這個好像也可以用
: 像add_action("go_xxx","east"),add_action("go_xxx","west")
: 可合併成add_action("go_xxx",({"east","west"}))
: 那我的問題是..我要如何判別玩家是按west,還是按east?(放在go_xxx來判斷的)
一、若你用 east 跟 west 當 cmd,那 "go east" 不會被
判斷到;相同的,若你用 go 當 cmd,那 "east" 跟
"west" 不會被判斷到。
所以通常不會這樣做,而會用 set("pre_exit_func/方向","判斷函數");
來做為判斷方式,這樣玩家不管是下 east, e 還是 go east
都會被判斷到。
二、你要「判別玩家是按west,還是按east」的簡單做法就
是像上面寫的那樣。
以上兩個很多區域應該都看的到範例,可自行 more。
: 3.我想到了一種效果叫遲緩,衰老...效果如下
: 遲緩..在一定時間內玩家所按的指令都會延後(為了防止意外,當按第一個指令cmd1
: 後n秒內按的無效,也就是cmd1執行後所按的指令才有效)
: 衰老..除有以上效果外,每個指令都會耗體力(或3p),或3p上限暫時只剩1/3
: 以上2效果要怎麼寫...
: ps....readly_attack是延遲攻擊吧...(還是我記錯了)
簡易自助做法是把某東西 move 到該玩家身上,該物..
void init()
{
add_action("cmd_hook","",1);
}
int cmd_hook(string str)
{
string cmd=query_verb();
.
.
這樣假設你下 say test,則 cmd = say,str = test。
不過我不太懂你遲緩那邊的用意,一定時間內玩家所下
的指令都會延後,簡易做法是弄個 buffer 把玩家下的
指令存起來,一段時間後才執行,但它有個問題,就是
「一段時間後才執行時」又會通過上面的 cmd_hook 判
斷「而再次延後」。
下 say test ← cmd_hook 將該指令延後 5 sec
↓ 5 sec 後
執行 say test ← cmd_hook 又將該指令延後 5 sec
↓ 循環
因為「你下任何指令─包括被延後的」都會經過 cmd_hook
判斷。
所以比較保險的做法,是設 timer,
int cmd_hook(string str)
{
if 在時限內
call_out("delay_exec_cmd",看設幾秒,query_verb()+" "+str);
else
return 0;
}
但是它有兩個缺點..
一、玩家在時限內拼命執行指令,將產生超多 call_out。
二、該物品較難回收。
至於耗體力則是較簡易的做法,上面改一下就有了。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.3.82
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
47
79
6
15
4
12
21
33