Re: [建议] 副本相关

楼主: laechan (挥泪斩马云)   2014-03-24 17:46:04
出差刚回来。
※ 引述《justinj (黑旋风)》之铭言:
: 看看能不能拥有这些功能
: 1.限时副本(就是副本只能存活n分钟)
这个在 instance_data 里面新增参数来判断即可,时间一到就是
全员脱出不能再跑。
从这里可以看出还能增加一个 instance_comm 的字段,也就是所
谓的“共通设定”。
: 2.任务:击杀副本的怪几只之类的
假设副本区域房间路线不是单一路径,那上述最简单的做法就是
“自写怪物”,然后这些怪物只在副本出现,杀死这些怪物时
int die()
{
this_player()->add_temp("xxx",1);
::die();
return 1;
}
我会比较建议这样的做法,因为它不管是对“单人”或“多人副
本”来说,都比较好设定,在 die 函数里面统一解决即可,比方
说人就是
string names=environment(this_object())->query("instance_names");
mixed usr=users();
foreach(ppl in usr)
if(ppl && environment(ppl))
if(environment(ppl)->query("instance_names")==names)
ppl->add_temp("xxx",1); // 在同一副本里的玩家都+1
: 3.任务:副本通关
最常见有两种形式(多种也可以)
一、走到这格即通关
在 instance_data 里面新增参数判断即可
二、打死该格某只怪物即通关
用 mob_alldie 来判断即可
: 4.只有在某副本才会掉的物品(ob)(如果可以,增加连接了某任务才会开始掉ob)
这个只要改 mob_drop 即可,怪物可以设定其它资料,因此只要
让 mob_drop 读取这个所谓的“其它资料”,则副本怪就可以比
一般怪(即使档案一样)多掉一些东西。
比方怪物都会设定 instance 相关的东西
if(mob->query(instance相关设定))
才会执行副本额外掉落资料;
: 5.国家副本(只有某国家才能进去),或类似限制之类的
这个简单,等副本稳定再开给玩家写他国家自己的副本即可。
: 6.是否限制只能进入几次(还是限制是否能被邀请)
这可以跟任务结合,因为任务有“你要再接任务要再经过多久”
的设计,也就是接任务→才能进副本,则要再进副本自然要再接
任务,这时就能接受任务的 CD 时间设定。
也就是说,实际上没有这个任务也没关系,例如
questing("i999",names,...
透过 questing 函数,即便没有某个任务也能给任务标记,就能
用 quest_data 来储存玩家的 CD 时间资料。这个以后有空会详
说。
那初期则可透过设在 /std/new_ob/instance/instance_rooms.c
里面的资料来判断,这个适用于“资料不一定要被储存起来,暂
存即可”,因为 instance_rooms.c 不可被update,所以它可以
储存比较长时间的暂存资料。
: 7.是否可自行增加额外限制指令
这个透过 add_action 就可处理,instance_room.c 只要有相对
应的函数来对映即可。
: 8.是否可自行增加一进入副本就会在玩家身上多物品
: (我觉得这样要限制指令或得什么可能比较好加)
: 暂时这样...
这个最好写成虚拟物品,透过 ob use 来控制,则该虚拟物品的
实体物件就能透过 ob_use_func 来控制玩家该指令的使用,例
如在副本里面才能用(environment(ppl)),没有在副本里就不能
用。
这些在回国后都会逐渐实装。趁现在副本系统架构已定,但是还
在撰写中,修改弹性是很大的。等到都写完后要再改,就会比较
难改。
Laechan

Links booklink

Contact Us: admin [ a t ] ucptt.com