作者laechan (挥泪斩马云)
看板mud_sanc
标题[wizs] /cmds/std/_quest.c 修改
时间Sun Dec 24 10:11:25 2017
主要修改 quest ooo about xxx 的部份,在大部份的判断之前
增加以下两行:
if(function_exists("step0_check",quest_ob))
quest_ob->step0_check(me,mob,key);
这部份可以在 /open/cmds/quest/l/l008 档案内看到:
others=
int step0_check(object ppl,object npc,string keyword)
{
if(!ppl->query_temp("heal_time/2017圣诞buff"))
{
ppl->temp_several_same_mod(({"stat/fel","stat/str","stat/air","stat/mag",
"stat/int","stat/dex"}),99,"2017圣诞buff",30);
write(HIR"圣诞老人"NOR"帮你施了强力法术。「"HIW"圣诞节快乐唷 ^_^"NOR"」\n");
}
return 1;
}
只要任务脚本档有 step0_check 这个函数,就会呼叫。
这可以让 quest 所问的目标额外做一些处理,它不会受到已解次数
已到极限、或是写在 step1_check 内的限制,例如以 l008 为例,
它有等级需大於 20 级才能解该任务的限制,但是 step0_check 可
跳过该限制。
需要先了解的一点是,step0_check 定位类似写在 quest 目标物上
的 init 函数,不同的地方只是必须透过 quest 指令来触发而已,
其它其实都跟 init 函数类似----所以撰写时也必须以这个来做为考
量,它跟 stepX_check 基本上是一起呼叫的,玩家不管执行到任务
的第几步骤都会呼叫该函数,所以该函数的撰写必须小心为之,只要
留意这一点,它其实就是很好用的函数。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.106.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1514081489.A.1A0.html
1F:→ laechan : 这函数的後续修改就是是否只允许在呼叫step1_check 12/25 11:57
2F:→ laechan : 时才呼叫,我後来想了一下应该是不用 12/25 11:57