作者laechan (小太保)
看板mud_sanc
标题[wizs] 阳春型任务店的简易做法
时间Thu Oct 20 12:42:46 2011
底下先贴出我今天试写的脚本。
repeat=1## 当有这个参数时, 玩家执行该任务将不会被设定任何任务资料
而且会自动无视 times 的设定(预设可重覆解)
(正常来说这不是正式的设定,所以日後还会再修改)
另外 stepX_check 跟 stepX_end 是可以在 others 区自订的,只要
在写脚本时不要给上面两个参数即可。
那麽,因为是「
阳春型」,所以不建议各位使用,只是如果你真的很
急的话就先用没关系。
正式版的杀怪型任务店脚本不会这麽长,有空
我就会写出来。
最後,我的意思就是,新版 quest 系统可以做的事是很多的,要怎麽
使用它,完全依靠你的想像力跟创造力。我举个例子,自体护盾就是
dfire/dragondoll 想出来的东西,依护盾的原设定 obj 栏放的应该
是「护盾物件」,将护盾物件改成「怪物本身」就是一种创意。
==================================================================
/open/cmds/quest/l/l005
==================================================================
title=小骑士的杀怪委托##
date=2011/10/20##
author=laechan##
key=kill-rabbit;kill-worm;spot's quest##
steps=1##
test=1##
repeat=1##
step1_npc=/u/l/laechan/area/sisdic/room/020##
step1_msg=
小骑士的杀怪委托任务一览表:++
================================================++
quest here to kill-rabbit 杀死邪恶兔子的委托++
quest here to kill-worm 杀死邪恶虫虫的委托++
================================================##
others=
int step1_end(object ppl,object npc,string key);
// 先宣告它让 check 可呼叫
int step1_check(object ppl,object npc,string key)
{
// 传 关键字 给 stepX_check, 则每一个 key 就可设定不同的结果
// 这样就可以让一个任务脚本实际上可依关键字多寡设立 n 个子任务
if(key=="spot's quest")
{
write(query_quest_msg(1,1)+"\n");
return 1;
}
// 玩家没有 quest 过 kill-xxx 时会先执行底下
if(!ppl->query_temp("quest_temp/spot_l005_"+key+"_accept"))
{
ppl->set_temp("quest_temp/spot_l005_"+key+"_accept",1);
write("你接受了小骑士委托的 "+key+" 任务.\n");
return 1;
}
// 玩家若 quest 过 kill-xxx 就会执行底下
if(key=="kill-rabbit")
{
// 当杀死的只数未满足时
if(ppl->query_temp("quest_temp/spot_l005_"+key)<30)
write("小骑士: 这项任务你已经杀了 "+
ppl->query_temp("quest_temp/spot_l005_"+key)+" / 30 只怪罗.\n"+
" 请继续努力 ^_^\n");
// 当杀死的只数满足时
else
step1_end(ppl,npc,key);
return 1;
}
if(key=="kill-worm")
{
if(ppl->query_temp("quest_temp/spot_l005_"+key)<50)
write("小骑士: 这项任务你已经杀了 "+
ppl->query_temp("quest_temp/spot_l005_"+key)+" / 50 只怪罗.\n"+
" 请继续努力 ^_^\n");
else
step1_end(ppl,npc,key);
return 1;
}
return 1;
}
int step1_end(object ppl,object npc,string key)
{
int exp;
exp=ppl->query("lv_up_exp");
// 先消掉任务标记
ppl->delete_temp("quest_temp/spot_l005_"+key+"_accept");
ppl->delete_temp("quest_temp/spot_l005_"+key);
// 再依关键字的不同设定不同的报酬
if(key=="kill-rabbit")
{
write("小骑士: 辛苦罗, 来, 这是给你的奖赏.\n"+
"[ 你得到了 10% 经验值的奖励. ]\n");
exp=exp/10;
ppl->add_exp(exp);
return 1;
}
if(key=="kill-worm")
{
write("小骑士: 辛苦罗, 来, 这是给你的奖赏.\n"+
"[ 你得到了 20% 经验值的奖励. ]\n");
exp=exp/5;
ppl->add_exp(exp);
return 1;
}
return 1;
}##
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 101.13.186.111 (10/20 13:00)
※ 编辑: laechan 来自: 101.13.186.111 (10/20 16:02)
※ 编辑: laechan 来自: 101.13.186.111 (10/20 16:04)
1F:推 GTR34 :建议挂在 /dsessws 旅店下 10/25 14:27
2F:→ laechan :目前暂定在各区域的旅馆、旅店、酒吧等地 10/25 15:30