作者laechan (小太保)
看板mud_sanc
标题[wizs] questing("obj_record")
时间Fri Sep 13 11:56:47 2013
比方现在在任务店接某任务如下:
> receive b004
你成功地接取了这项任务,请加油!
> quest demo
『寻找传说中的金色便便(b004)』 黄金便便 ( 0 / 15 )
这是做底下的呼叫
questing("obj_record","set","b004",({ppl,"任务描述","物品档案1",所需数量,
"物品档案2",所需数量,
.
. }));
所以我做了底下的修改
quest_data.c 的 quested 函数的 switch("obj_record") 段
修改 set 区、query 区、finish/check_finish 区。
我加上了判断虚拟物品的相关设定及规则,同样的,一般来说
wiz 不需知道这里改了什麽,只要知道如何呼叫即可。
修改时忘了做备份,蛮危险的。
改好了之後用 running code 做测试
questing("obj_record","set","x999",({me,"测试搜集虚拟物品",
"m001",50,"/d/auc/blarket/ob18",10,
"m002",50}));
上面是虚拟跟实体物品混在一起的情况。
> quest demo
----------------------------------------------------------------------
『测试搜集虚拟物品(x999)』 腐臭花 ( 0 / 50 )
『测试搜集虚拟物品(x999)』 技能值补正券 ( 1 / 10 )
『测试搜集虚拟物品(x999)』 哀唱草 ( 0 / 50 )
『寻找传说中的金色便便(b004)』 黄金便便 ( 0 / 15 )
然後更动自己身上的腐臭花数量为
10 再 quest demo:
> quest demo
----------------------------------------------------------------------
『测试搜集虚拟物品(x999)』 腐臭花 ( 0 / 50 )
『测试搜集虚拟物品(x999)』 技能值补正券 ( 1 / 10 )
『测试搜集虚拟物品(x999)』 哀唱草 (
10 / 50 )
『寻找传说中的金色便便(b004)』 黄金便便 ( 0 / 15 )
======================================================================
假设某任务的某一步骤,希望玩家去打某怪物以收集某虚拟物品,
而且只有当玩家接到该步骤时才会掉。
现阶段支援的其中一种做法,
是修改该怪物,增加 mob_drop_rate
函数。以任务编号
x999 第
n 步骤掉编号
q100 物品为例..
int mob_drop_rate(object ppl)
{
string names=ppl->query("name");
int n=questing("check",names,
"x999",({"steps"}));
if(n==5)
{
return ([
"q100":500]); // 满足条件才有掉落率
}
else
return ([
"q100":0]); // 不然该物品掉落率就是 0
}
然後我们可以设定玩家可 sell(drop) 该物品,但是不能 trade,
则玩家 sell 该物就形同不让该物品占空间(即便没有放弃任务),
设定不能 trade 玩家就无法转让,而没有满足 mob_drop_rate 的
条件就不会继续掉该物品,当玩家在 ob view q100 时,则直接在
q100 的 desc 里面备注这是哪个任务的相关物品即可,例如..
> ob view q100
白色的透布(物品编号: q100)
────────────────────────────
贩卖:可
交换:
不可
任务:菲里德古堡寻亲任务相关物品 <= 这是 desc
────────────────────────────
这是最简易的做法也是推荐的做法。
(其它做法都需要额外读参数,没必要)
以上,看 norr 与 justin 有无问题,若还有需要修改的部份再跟
我说。目前唯一的问题就是 mob_record 及 obj_record 都是设定
在玩家的 temp_data 区,也就是说当玩家接了某一任务跑到某一
步骤,stepX_end 才设定 mob_record 及 obj_record,结果玩家
却 quit 了(或 shutdown),那如何让玩家可重接?
目前的暂定做法就是自订 stepX_check 函数来因应,我个人是支
持这样的做法「因为 mob_record 及 obj_record 还是以任务店为
主」,以 quest npc 或 quest here 的做法就自订函数,如同上面
自定 mob_drop_rate 函数的精神一样。
我目前则会在近日,在罗德斯找一只 npc,来模拟类似幻想神域的
任务进行方式,它的特色是...
一、该任务为复合型任务集合,每一步骤都要求玩家要做什麽
二、quest demo 可看到每一步骤的要求项目
1.杀怪
2.收集物品
3.找谁对话再回来
.
.
三、每一步骤都会给玩家奖励,玩家达成所有步骤给最多奖励
後续 quest show 的支援部份则比较复杂,因为目前只有针对最後
一个步骤做分析,而且分析方法还蛮笨的。我思考的解决方法是新
增一个 stepX_award 函数,玩家在接任务时会跟 stepX_end 一起
呼叫,但是在做 quest show 时它就会单独只呼叫 stepX_award,
而它的内定型式如下
varargs stepX_award(object ppl,object npc,string key,
string var)
当有参数 var 时,它回传的将是设定内容,这个会找时间加进去
并公告用法及相关测试结果。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.61.157.53