作者laechan (小太保)
看板mud_sanc
标题[wizs] 本月新增任务统一说明
时间Tue Jul 6 11:13:44 2010
我本月新增的任务,全部都会跟 ask 指令有关。
一、某只 npc(A) 可被 ask
二、另一只同区域的 npc(A) 会提示可 ask npc(A) 什麽
npc(A) 会设定的 ask 相关参数,与 _ask.c 指令内的底
下程式段落有关..
if(mon_obj->query("ask_func"))
{
me->set_temp("time_record/asking",1+times);
if(!mon_obj->query("ask_allow_other_keywords"))
{
keywords=(mixed)mon_obj->query("ask_keywords");
if(member_array(subject,keywords)==-1)
return notify_fail(mon_name+" 一脸茫然的望着你.\n");
}
call_other(mon_obj,(string)mon_obj->query("ask_func"),me,subject);
return 1;
}
比方 mob_obj 做了底下设定..
set("ask_func","ask_laechan");
set("ask_keywords",({"laechan","小宝","罗德斯的大发明家"}));
set("ask_allow_other_keywords",1);
则 mob_obj 的 ask_laechan 函数写法大致是...
void ask_laechan(object me,string subject)
{
if(subject=="影特")
{
write(query("short")+"笑着告诉你:他可是个大名人喔 ^_^\n");
return ;
}
// 同一问题项多种问法
if(member_array((mixed)query("ask_keywords"),subject)==-1)
{
write(query("short")+"一脸茫然的看着你.\n");
return ;
}
// 条件式过滤
if(!me->query_temp("whiletile_helping_babala"))
{
write(query("short")+"对你说道:我不知道你要问的事情喔.\n");
return 1;
}
write(query("short")+"对你说道:bla bla......\n");
.
.
}
上面的做法,好处就是方便过滤,而且同一问题项支援多种
询问关键字,还可以依关键字的不同直接在单一函数内做处
理,例如..
if(subject=="淫魔")
{
write(query("short")+"大喊:老子就是淫魔!淫魔就是你老子!\n");
clone_object(...
本月会新增白瓦镇的神父跑腿任务,有时间时会再新增别的
,所有新增的任务均会以「方便玩家在线上 chat 任务跑法
」为设定原则,方便让玩家口耳相传。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.160.49