Re: [wizs] 副本 (多层式副本)

楼主: laechan (挥泪斩马云)   2018-05-14 11:00:06
刚实验,可以了,以下为全档。
// 简单副本
// /std/new_ob/instance/laechan/006.c
// 该副本设定于 /u/l/laechan/workroom, instance -list 后可选
// "测试串接副本" 的单人 or 多人模式, 进入后往南走两格, 杀掉
// 所有 corps, 理论上就会出现 next 的出口,连往第二副本
#include "../instance.h"
inherit INSTANCE_OB;
void create()
{
string tmp;
int i;
::create();
seteuid(getuid(this_object()));
set("pre_clean",1);
instance_cd_times=INSTANCE_CD_TIMES;
// 设定区开始
// 理论上多张地图可画在同一 map2data 中, 重点在新增出口串接
// 同一副本下模拟其为多个副本的适当做法应该就是这样, 结案
// 两个副本写在同一张 map2data 内
// 分隔方式不一定要照下面, 只要确定副本与副本间原本并无出口连接即可
// 微复杂的多层式副本原则上可以照此做法去设定
[email protected]
501
|
502
|
503
504-505-506
LONG
;
instance_names="测试串接副本";
instance_comm=(["xxxxx":1]);
instance_data=([
"503":([
"instance_check":1,
]),
]);
instance_paths="/u/l/laechan/area/felid/room/"; // 副本实际区域目录
instance_ob=base_name(this_object()); // 固定
// 副本区域房间范围, 第一个 room (如083) 固定为起点
instance_files=({
"501","502","503","504","505","506"
});
// 底下固定
foreach(tmp in instance_files)
instance_files[i++]=instance_paths+tmp;
// 怪物资料 files 必备, 其它就是 short, long, ... 等可自订
instance_mob_datas=([
"corps1":(["files":"/u/l/laechan/area/felid/mob/corps1",
"level":150,
]),
]);
// 副本各房间生怪资料, 所生的怪在 instance_mob_datas 都要有定义
instance_mobs=([
"5":([
"501":({"corps1","corps1"}),
"502":({"corps1","corps1"}),
"503":({"corps1","corps1"}),
"504":({"corps1","corps1"}),
"505":({"corps1","corps1"}),
"506":({"corps1","corps1"}),
]),
]);
// 设定区结束
}
int instance_check(string files,object room)
{
mixed ppl_rooms;
int flags,t;
string ppl_names;
object ob;
switch(files)
{
case "503":
flags=(int)room->query("instance_flags");
t=time();
switch(flags)
{
case 0:
// 工兵都被消灭时
if(!present("felid corps",room))
room->set("instance_flags",1);
break;
case 1:
// 先改 flag
room->set("instance_flags",2);
// 读取副本创建者
ppl_names=room->query("instance_player");
// 加载 /std/new_ob/instance_rooms.c 物件
ob=find_object_or_load(INSTANCE_ROOMS);
// 读取该副本下的所有房间, 未来可增加读取特定房间的函数语法
ppl_rooms=ob->ppl_instance("query",ppl_names);
// 设定连往虚拟第二副本的出口
room->set("exits/next",ppl_rooms["/u/l/laechan/area/felid/room/504"]);
break;
}
break;
}
return 1;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com