Re: [建议] 副本相关

楼主: laechan (挥泪斩马云)   2014-03-25 09:50:00
※ 引述《justinj (黑旋风)》之铭言:
: 1.例如我要设定[千蛛洞副本]
: 但有普通副本,困难副本,地狱副本
: 任务1:打死普通副本boss
: 任务2:打死困难副本boss
: .
: .
: 当然可以再创一只boss,不过还是可以将原本的boss血量做变化就好了..
依目前 init_instance 的做法
if(instance_mobs[files])
{
tmps=instance_mobs[files];
foreach(tmp in tmps)
{
mob=clone_object(instance_mob_datas[tmp]["files"]);
"/adm/daemons/mob_d"->Create(mob);
tmps2=keys(instance_mob_datas[tmp]);
foreach(tmp2 in tmps2)
if(tmp2!="files")
mob->set(tmp2,instance_mob_datas[tmp][tmp2]);
所以如果有底下设定资料:
instanec_mob_datas["xxx"]["hp"]=1000000000;
则该 mob 的血量就是 10 亿。
(不过标红色字的那一行事实上其所在位置是有问题的)
那假设你的副本分为三个难度,个人认为最简单的做法就是写
001.c、002.c、003.c“三个副本物件”,幻想就是这样写的,
而它这样写的原因是因为“三种难度连区域大小、BOSS 配置
也不太一样”,然后就可以在玩家欲进入的是哪一个副本那里
做相对应的副本物件呼叫,玩家便可依此进入不同副本。
: 2.随机出现隐藏boss
这个就类似幻想打副本有时会出现随机元神,这个我比较建议
你“自写怪物”,比方你的副本下共有 n 种怪,大家都follow
同一样本
int die()
{
int random_boss;
object env=environment(this_object());
string names=env->query("instance_names");
if(random(a)==b) // 符合机率时
{
mixed usr;
object ppl,env;
foreach(ppl in usr)
if(ppl && environment(ppl))
if(environment(ppl)->query("instance_names")==names)
if(ppl->query_temp("xxx")>0)
random_boss=1;
if(random_boss<1) // 打这个副本的玩家都还打没过 boss
{
clone_object(boss档)->env;
foreach(ppl in usr)
if(ppl && environment(ppl))
if(environment(ppl)->query("instance_names")==names)
ppl->set_temp("xxx",1);
}
}
::die();
return 1;
}
当然实际上这东西本来就可以样本化,例如写成
/std/new_ob/instance/instance_boss.c
: 3.之前有人推文说过的..首杀,或过关时间排行
: 还有一种 任务:在30分钟内过完千蛛洞普通副本。
计时副本有提过了。
首杀....做这个没意义,容易有争议。
过关时间排行理论上可以做,它的前提就是要能先产生过关时间,
这牵涉到过关时间的判定是“杀死 BOSS”还是“开完宝箱”还是
“确实通过出口离开副本”。
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com