Re: [情报] 罪恶城及其周边区域开放。

楼主: laechan (挥泪斩马云)   2015-11-14 15:17:41
※ 引述《hlead (希多)》之铭言:
: → hlead : 掉落物与新型态防具还要在特别看一下怎么弄。 11/14 11:13
: → hlead : 预计都会弄成虚拟物品及未鉴定装备之类。 11/14 11:14
: → hlead : 话说 recall -record 用途是啥?.. 11/14 11:15
: → hlead : 设了后看不懂实际用途。...xd 11/14 11:15
> vobjs -mob_drop
怪物掉落物设定选单:
================================
1.创建新目录
2.删除某目录(laechan 限定)
3.列出所有目录
4.列出某一目录下的所有设定
5.列出所有目录下的所有设定
6.进入某一目录做细部设定
7.离开
================================
请选择: 5
cd .
cd /d/aty/bird/mob
vobjs -mob_drop zombie1 set m068 = 500
vobjs -mob_drop corpse3 set m068 = 500
vobjs -mob_drop corpse2 set m068 = 500
vobjs -mob_drop wraithzombie1 set m068 = 500
cd /d/blood/mob
vobjs -mob_drop mob2 set m824 = 50
vobjs -mob_drop mob2 set m829 = 10
vobjs -mob_drop mob6 set m802 = 100
.
.
上面列出来的的东西,意思是说将它们原封不动地“复制”,再
“贴上”,就会去执行每一行“指令”。
(每一行都代表一个指令,也就是 vobjs -mob_drop 支援 quick 模式)
一、先 cd 到要设定的目录
二、vobjs -mob_drop zombie1 set m068 = 500
↑     ↑   ↑
│     │   └─掉落机率 50.0%
           │     │
           │     └──── m068这项虚拟物品(也可接实体物品档)
           │
           └──────────该目录下的 zombie1.c 这个怪物档
这样玩家打死这只怪物,呼叫了 /adm/daemons/mob_d.c 的 die 函数时就
会去执行掉落物的判断。
===========================================================================
未鉴定装备的设定主要在 /std/new_ob/
> ls
4 area_mob.h 1 cape_set.c 1 mask_set.c
1 arm.c 1 cloth.c 1 medicine.c
1 arm_set.c 1 cloth_set.c 1 misc.c
1 armor.c felid/ 1 misc_set.c
1 armor.h 1 foot.c 1 necklace.c
5 boat.20130910 1 foot_set.c 1 necklace_set.c
6*boat.c 1*gmonster.c 1*npc.c
1 boss.c instance/ 1 set_d.c
1 bracelet.c 4*instance_room.c 1 smonster.c
1 bracelet_set.c map/ syt/
1 cape.c 1 mask.c vobjs/
例如最近泰帕依区域会掉 necklace 类的防具,more necklace_set.c
> more necklace_set.c
inherit __DIR__+"set_d.c";
mixed return_ob_effect(string ftype)
{
switch(ftype)
{
case "克迷伦":
return ({"kemi" ,"精美小墬炼", 10, 10, 10, 10, 10, 10, 0});
case "黔闇城":
return ({"dark" ,"黑夜项链", 20, 20, 20, 20, 20, 20, 0});
case "泰帕依":
switch(random(3))
{
case 0: return ({"tapay" ,"黑魔项链", 60, 0, 0,-20, 30, 50, 0});
case 1: return ({"tapay" ,"黑晶坠炼", 40, 0, 0,-20, 35, 60, 0});
case 2: return ({"tapay" ,"闇芒之炼", 55, 0, 0,-20, 40, 55, 0});
}
default: return ({"sanc" ,"圣殿项链", 50,-50, 50, 0, 0, 0, 0});
}
}
然后再去 /u/p/ppl/hiei/tapay/tapay1/mob 去 da mob5
(我在 /u/p/ppl/hiei/tapay/tapay1/area.h 设定只有 mob5 会掉 necklace)
> da mob5
Object : 怪物(blackwitch /u/p/ppl/hiei/tapay/tapay1/mob/mob5)
drop_types :({ "necklace" })
ftype : "泰帕依"
从上面就可判断,只要 area.h 有设定资料,area_room.c 就会将该资料
设定到怪物的 drop_types 字段;而 ftype 字段则是 gmonster.c的统一
设定:
> more gmonster.c
:::::::::::::: /u/p/ppl/hiei/tapay/tapay1/gmonster.c ::::::::::::::
inherit "/std/new_ob/gmonster.c";
void create()
{
::create();
seteuid(getuid(this_object()));
set("drop_rate",1);
set("ftype","泰帕依");
}
上面可看到该档继承 /std/new_ob/gmonster.c,这个档就自订了 die 函
数(而且视情况它依旧会做 ::die(ppl))
其 die 函数的部份内容就如下:
r=random(sizeof(drop_types));
// 叫出相对映的 /std/new_ob/防具型态.c
if(catch(ob=clone_object(__DIR__+drop_types[r])))
{
::die(ppl);
return 1;
}
换言之,刚呼叫出来时就只是该型态的防具,要等鉴定了,才会去做
switch(random(n)) 的动作,来决定鉴定出来的是底下的哪一件:
case "泰帕依":
switch(random(3))
{
case 0: return ({"tapay" ,"黑魔项链", 60, 0, 0,-20, 30, 50, 0});
case 1: return ({"tapay" ,"黑晶坠炼", 40, 0, 0,-20, 35, 60, 0});
case 2: return ({"tapay" ,"闇芒之炼", 55, 0, 0,-20, 40, 55, 0});
}
比方玩家可能得到 黑魔项链 或是 黑晶坠炼 或是 闇芒之炼:
一、负值代表玩家鉴定完该防具时,可能有哪些属性会是负属性
二、0 值代表玩家鉴定完该防具时,哪些属性不可能出现
三、数字以 fel str dex air con mag int 顺序排列
四、一定要有“负值”及“0 值”,以及 int 值通常为 0
新增或修改了 /std/new_ob/ 下的档案时要说一下,以及遵循新型态
防具的属性设定原则:
===================================================================
// Laechan@Sanc add in 2013/08/13
if(str && str=="-record")
{
write("你纪录了 recall 点。\n");
me->set_temp("crystal_broken_env",base_name(env));
}
> grep -n s001 user_d.c
[/adm/daemons/user_d.c]
433:object s001;
443: if(!s001)
444: s001=find_object_or_load("/adm/daemons/eq/s001");
536: if(me->query_vobjs("s001")>0)
555: call_other(s001,"pre_die",me,killer);
所以 more /adm/daemons/eq/s001.c
tell_object(me,HIC"\n你的生命水晶在你即将阵亡时爆了开来!\n\n"NOR);
// Laechan@Sanc add in 2013/08/13
// 增加登录阵亡地点
me->set_temp("crystal_broken_env",base_name(environment(me)));
好像有一个机制是,可以让玩家爆水晶→重新领水晶→依 crystal_broken_env
的设定回到阵亡点再战→如果又爆水晶→重复上面
然后如果不想使用该机制了就用 recall -record 盖掉原本的阵亡点即可。
那这个机制倒是衍生了其它想法例如“储存重生点”,也就是说比方玩家担
心进某区域可能会挂掉爆水晶,那先用 recall -record 纪录一下重生点这
类的,等爆水晶→领完水晶→再利用某种方式回到纪录的重生点,就可以省
下再走区域的时间这样。
(然后应该是因故没有实装其它的东西啦我猜,有可能是 SAO 计划的一环)
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com