作者laechan (小太保)
看板mud_sanc
标题[wizs] ass 的修改
时间Tue Sep 29 11:56:42 2009
假设底下为 ass 档
inherit MONSTER;
int die(object ppl)
{
object horse=this_object();
int trust;
trust=count_trust(ppl,horse); // 所以需要再新增这个函数
if(replace_to_horse(horse,ppl->query("name"),trust))
return 1;
::die();
return 1;
}
由上面的模拟修改可知...
一、需要再新增 count_trust 函数,或者让 trust 的初始值均
为固定值(这个也可行,则所有 horse_data 资料都是固定值
,方便载入)
二、replace_to_horse 若设定预设讯息,则所有座骑的驯服都将
follow 同一讯息;若要自订讯息,则 destruct(horse)的动
作必须挪出 replace_to_horse 之外,容易产生 bug。
这部份我还要再评估。
三、在上述撰写原则下,若 count_trust 函数有了,但是在执行
replace_to_horse 失败时(return 0),将执行怪物原先的
die。
因此,以 /d/crazy/3/mob/horse3.c 为例...
int die(object ppl)
{
string msg,msgs;
object horse=this_object();
// 在这一个区块加入上述判断式如下...
//=====================================================
int trust;
trust=count_trust(ppl,horse); // 所以需要再新增这个函数
if(replace_to_horse(horse,ppl->query("name"),trust))
return 1;
//=====================================================
// 然後若 replace_to_horse 传回 0 就执行原先的自订 die
// 也就是用自订 clone/remove 的方式叫出 HORSE
msg=HIW+"\n荒野草原的王者$O"+HIW+"被$N"+HIW+"打败後, 归顺了$N"+HIW+"!\n\n"+NOR;
msgs=msg;
msgs=substr(msgs,"$N","你");
msgs=substr(msgs,"$O",query("chi_name"));
write(msgs);
msgs=msg;
msgs=substr(msgs,"$N",this_player()->query("chi_name"));
msgs=substr(msgs,"$O",query("chi_name"));
shout(msgs);
horse=clone_object(CM"horse4");
horse->move(environment(this_object()));
remove();
return 1;
}
LAechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.120.118