作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 使用问题及其它效果问题...
时间Mon Aug 16 13:28:29 2010
※ 引述《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