Re: [wizs] 使用問題及其它效果問題...
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間15年前 (2010/08/17 22:10)推噓0(0推 0噓 0→)留言0則, 0人參與討論串5/5 (看更多)
※ 引述《justinj (闇冥)》之銘言:
: 問題3..例如..中遲緩的這段時間(120sec)內
: 玩家按enter(或test)後5秒內不能動...5秒後此指令執行,且可以再次按
: 這樣經過24次後..此效果結束....
玩家「只」按 enter 嗎?我假設你設定 120 sec 內最多
只允許玩家下 24 次指令,而且間隔至少 5 秒。
int cmd_hook(string str)
{
object ppl=this_player();
int t=time();
string verbs=query_verb();
if(!verbs || verbs=="")
return 1;
if(query("can_cmds"))
{
delete("can_cmds");
return 0; // 執行原先的效果
}
if(query("cant_cmd")>t)
ppl->receive(""); // 不管下什麼指令都傳回空字串
// 這裡也可以設定提示訊息告知無法下指令
else
{
set("cant_cmd",5+t);
call_out("delay_cmds",5,ppl,query_verb()+" "+str);
}
return 1;
}
int delay_cmds(object ppl,string cmds)
{
if(ppl)
{
set("can_cmds",1);
// 玩家在 force_me 的瞬間又會 call cmd_hook
// 這時 cmd_hook 會判斷到有 query("can_cmds")
ppl->force_me(cmds);
}
return 1;
}
這樣玩家只要在能被允許下指令的時候「下了一個指令」..
一、這個指令 5 秒後才會有作用。
二、這 5 秒內他無法下其它的指令。
:
: 問題1..玩家跑到某房間時add_action()增加指令,remove_action()移除指令
: 這2個只能玩家本身去觸發嗎?
add_action() 最常被寫在 void init() 函數中的原因,
在於 init() 函數通常都是由玩家去呼叫的。
例如進入一個有噴水池可 drink 的房間...
玩家→呼叫房間的 init()→再呼叫到 add_action()
這時就相當於玩家為「呼叫主體」。
void add_action( string | function fun, string | string
*cmd, int flag );
無回傳值 add_action( 字串 或 函數 fun, 字串 或 字串
*cmd, 整數 flag );
由上可知它無法模擬「由他人呼叫,然後讓目標玩家可下
什麼指令」的情況,這是因為玩家能下什麼指令,是儲存
在玩家本身的物件資料中的,那個資料只有玩家自己能動
所以,同樣的,例如有一行..
call_out("ooxx",5,......)
這個 call_out 「同樣也是由玩家本身」去 call 的,所
以當 5 秒後 ooxx 函數執行時..
int ooxx()
{
write("test.\n");
this_player() 就會看到 "test" 訊息的原因就在這裡。
呼叫主體的概念最常被用在「攻擊的反擊」上,因為當怪
物對玩家施展攻擊時如下..
mob->shut(ppl) ->check_combat(mob,ppl)
->check_counter(mob,ppl)-> ppl->shut(mob)
這一連串的動作通通都是由 mob->shut(ppl) 開始的,因
此到 ppl->shut(mob) 時,實際上並不是 ppl->shut(mob)
而是 mob->shut(mob) 變成 mob 自己殺自己。
這就是獨孤、反擊、熾光障壁初期 bug 的由來。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.3.82
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
47
79
6
15
4
12
21
33