Re: [闲聊] 烦啊! 副本

楼主: laechan (挥泪斩马云)   2014-03-02 10:13:09
继续拟定副本架构,今天搞定。
原则上不采脚本方式,因为任务跟副本不同,任务可以用脚本
,副本不行。但即便副本不采脚本,它还是可以很像脚本,也
就是“副本物件”。我希望这个副本物件可以简单到玩家也能
写,因为“希望玩家也有能力参与创作”是既定政策。
根据 #1J2i2_ZT (mud_sanc) [ptt.cc] [闲聊] 烦啊! 副本
这个物件会先宣告纳入的房间范围
static mixed instance_files=({ ... });
以及一个玩家执行副本的暂存资料
static mapping ppl_instance=([]);
当副本产生时,呼叫 create_instance 函数
int create_instance(string ppl_name,mixed usr)
{
1.先生成所有的副本房间;
2.设定每一房间的资料;
3.将副本参与者 usr 移动到副本房间;
}
设定每一房间的资料
可以预见这段程式有底下的程式段
obs=ppl_instance[ppl_name];
foreach(ob in obs)
.
.
从这里就可看出,“每一个副本房间”都有它的设定区,
一般不是用 mixed 就是用 mapping 宣告,后者如下..
static mapping instance_data=
([
"房间1":([
"short":"黑暗洞窟",
"long":"一座阴森森的黑暗洞窟。",
.
.
]),
.
.
]);
到这里,可以 handle 上一篇的大部份设定,包括生怪,
但是却不包括“怪生出来后的设定”,要包括就会变这样
"mobs":([
"怪物1":([
怪物设定;
]),
.
.
]);
问题就在于,如果副本中的其中五格,生出来的怪物其实
都一样,那上面的设定等于做五次,而实际上只需做一次
就已足够(剩下四次都是多做的),所以生怪必须额外做,
而且有些设定必须尽量 follow default 值,才不需做太
多额外设定。
然后就是,玩家每前进一个房间,就必须呼叫该副本物件
一次,用来追加副本的设定。
最后就是 set_npcs 的设定,只要注意相关细节即可。
所以关键在于资料结构、程式运作方式、副本物件的复杂
度、扩充弹性、好不好修改这些。
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com