Re: [建议] 副本相关

楼主: laechan (挥泪斩马云)   2014-05-01 09:13:39
今天要做 instance_mobs 的分区,所有的现存副本都要更动,这个
由我来做,另外也要检查 instance_rooms.c 做一些修正,最后就是
龙潭虎穴副本的实装,届时将关闭通往龙潭及虎穴两区域的入口,玩
家需改由接副本的方式进入。
另外考虑到 instance 也有储存资料的能力,instance_temp 的资料
有可能改放到这里,做列表会比较方便,初期会采两边都设定资料的
方式办理。
============================================================
instance_mobs 分区已改好,以 bdlen_dragon.c 为例..
instance_mobs=([
"0":([
"01":({"dragon2","dragon1","dragon1",}),
"02":({"dragon2","dragon5","dragon5",}),
"04":({"dragon2","dragon2","dragon1",}),
"05":({"dragon3","dragon5","dragon5",}),
"06":({"dragon4","dragon1","dragon1",}),
"07":({"dragon4","dragon2","dragon2",}),
"08":({"dragon3","dragon3","dragon2",}),
]),
"1":([
"10":({"dragon1","dragon1","dragon1",}),
"11":({"dragon4","dragon4","dragon5",}),
.
.
像这样子依字头做分区,则以八卦为例,它是 1.c→1000.c 这样的
档名,就能分为至少 9 区,每一区平均 100 多个子 key。而若是以
菲里德 001.c→700.c 这样的档名,也能依 "0" "1" "2" ... "7"来
分区,每一区最多 100 个子 key。
国家区域则虽然多为 r 开头,但是国家都有将其区域做适当的分区
,因此假若副本化其档名量也不会太多。
============================================================
instance -analyze 关于 instance_mobs 的分区的部份也已更动完
成。
> instance -analyze
解析你所在的目录 /d/ppl/bdlen/dragon/ 中...
// 副本各房间生怪资料, 所生的怪在 instance_mob_datas 都要有定义
instance_mobs=([
"0":([
"01":({"dragon2","dragon1","dragon1",}),
"02":({"dragon2","dragon5","dragon5",}),
.
.
]),
"1":([
"10":({"dragon1","dragon1","dragon1",}),
"11":({"dragon4","dragon4","dragon5",}),
.
.
============================================================
instance_rooms.c 备份为 2014/05/01。
我设计了一个 clean_empty_irooms,它可以用来确实清掉该清掉的
副本。
> call 001;create_instance;"laechan";({laechan});"normal";0
[副本]山林小径
你拨开草丛, 隐约地可以看见埋在杂草堆里面的道路, 由此可以
想见这条小径平时应该没有什么人在走动. 据说小径可以通往这
座山的深处, 可是蛮危险的.
明显出口有: north.
> call instance_rooms;clean_empty_irooms
> running
编辑结束并存盘(.). 中途放弃编辑(~q).讯息暂时中断。
__________________________________________________________________
obs=objects();
foreach(ob in obs)
if(ob)
if(base_name(ob)=="/std/new_ob/instance_room")
write(ob->query("short")+" "+base_name(ob)+"\n");
========== 程式执行区 ==========
[副本]石室 /std/new_ob/instance_room
[副本]地底长廊尽头 /std/new_ob/instance_room
[副本]地底长廊 /std/new_ob/instance_room 副本没有被清掉
.
.
> home 然后离开副本
= 天上界 =
> call instance_rooms;clean_empty_irooms
> running
编辑结束并存盘(.). 中途放弃编辑(~q).讯息暂时中断。
__________________________________________________________________
obs=objects();
foreach(ob in obs)
if(ob)
if(base_name(ob)=="/std/new_ob/instance_room")
write(ob->query("short")+" "+base_name(ob)+"\n");
========== 程式执行区 ==========
0 /std/new_ob/instance_room 这样就清掉了
========== 程式执行区 ==========
目前设定系统周期时间每 5 分钟自动清一次。
=============================================================
instance_ob 的副本频道函数 instance_channel 完成。
﹝副本﹞普通难度的龙潭副本的破关纪录产生了!
破关者:laechan 跟他愉快的伙伴们 破关纪录:3分 27秒
通常会建议副本最后一个房间(出口所在房间)要做 instance_check,
再让它呼叫 instance_channel 即可。
相关破关奖励我会弄一个默认的函数去做,wiz 不想依默认的报酬时就
自订报酬即可,唯仍希望呼叫 instance_ob.c 的特定函数执行,这样才
能统一管理及方便修改。(类似 quest 的 set_v 做法)
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com