守襄阳任务

先谈谈这个任务的流程吧
刚开始想到做这个任务时，是出于一时的发神经病
看到大家都在做quest和job！我就想换一个方法来构造job

首先是设想，如果你希望敌人每几十秒出现一个在地图上，你会用什么法子呢？
做一个定时生成npc的程序放在/adm/daemons下？（就象定时发礼物或是定时出现天气描述）做一个npc，一问这个npc就用new的方法生成敌人？（就象西游记的灭妖？）做一个房间，让这个房间定时生成一些目标npc？（太不科学了吧）
..............
也许你还有很多方法，但当时我第一个想到了毒

毒这东西正好是几十秒会发作一次的东西，那么我何不利用毒发作的时候来生成一个npc呢？这样就可以节约很多的时间去搞定时的部份。

于是有了sxy-job.c这个文件，这是一种毒，放在/kungfu/condition下。大家打开sxy-job.c来看看吧。我在这种毒里取消掉让人减气血的部份，然后加入了一个大大的数组，用这个数组来把襄阳城里的room都记录在里面。然后，请看这一段：
      tell_object(me, HIB "忽然城里有人大呼，蒙古兵打到" + sxy["sxy"] + "来了！\n" NOR );
      ob = new("/quest/sxy/menggubing");
      ob->move(sxywhere);
当毒每次发作时，玩家就看到一句话，这句话告诉玩家npc出现的地名，然后，用new的方法生成npc，再move到想要的地方去。

然后大家再看menggubing.c这个文件，这个文件的意义就在于，蒙古兵如果没有人打他的话，就应该消失掉，不然襄阳城就会太热闹了，所以当蒙古兵没有处于战斗时，就会被dest！

至于guo.c嘛，其实换谁都一样，我就是喜欢郭靖这家伙，所以把他拿来做戏。他的意义就在于事后统计一下玩家的功劳，以及当玩家ask guo about job的时候，让玩家中守襄阳之毒，这个毒会发作八次（也就是出现八个蒙古兵）

这个job最麻烦的事莫过于杀死蒙古兵的计数问题了。所以我动用到了combatd.c
大家看combatd.c最后的一段：

	if(killer->query("job/sxy") >= 1 && victim->query("sxy") >= 1)
	{
	   tell_object(killer,"你杀死了一个蒙古兵，你的功绩提高了！\n");
	   killer->add("job/gong",1);   
        }

在这一段里，判断当一个杀手身上有job/sxy这个变量，而且被杀者身上有sxy这个变量时，给杀手增加1的job/gong这个变量。

听起来满麻烦的！其实很简单，当玩家ask guo about job的时候，给玩家身上设一个job/sxy这个变量，并且在蒙古兵身上设一个sxy变量，这样当玩家在做任务时杀掉蒙古兵，就得到一个job/gong这个变量，最后，当玩家回头象guo要求奖励的时候，guo就按照玩家身上有几个job/gong这个变量来计算玩家应该得到多少奖励。

好了，流程讲完了。

下面是这个任务的使用方法：
1，在/quest下建一个sxy目录，把menggubing.c放在/quest/sxy下面
2，把sxy-job.c这个毒药（笑）放进/kungfu/condition下面
3，打开combatd.c把最后一段:

//下面是守襄阳任务
//星星（lywin）增加于2000年9月6日
	if(killer->query("job/sxy") >= 1 && victim->query("sxy") >= 1)
	{
	   tell_object(killer,"你杀死了一个蒙古兵，你的功绩提高了！\n");
	   killer->add("job/gong",1);   
        }

放到你的mud的combatd.c的
void killer_reward(object killer, object victim)
{
}
之间（如果这一步有困难的话，参照一下我放在压缩包里的combatd.c的最后）

4，随便找个什么房间，把guo.c放到那个房间里

5，把sxy这个没有后缀的文件放到你的mud的/doc/help下面（这样你就可以用help sxy来得到帮助）

好了，完成了，你可以试试about guo about job了！呵呵！祝你愉快


接着谈谈移植这个任务的问题

如果你的mudlib不是海洋，也不是侠客行100！那么你完全有可能没有襄阳这个城市（廃话）
那该怎么才好呢？

1，首先，你必须对sxy-job.c这个文件里面的数组大动手脚，把数组里的房间完全改成你想要的城市
2，然后，蒙古兵的问题也必须正视，你必须把蒙古兵改成另外一种东西吧，比如西游记里不能再叫蒙古兵，怎么说也得改成小妖怪吧！呵呵！小妖怪用的武器和穿的衣服也要改改。
3，你的combatd.c是用的killer还表示杀手，用victim来表示被杀者吗？这个你也必须注意

如果你注意了以上方面，就可以移进别的mud！我的朋友无为已成功移进了西部风云，运行无问题！

好了！就此打住，大家快乐。

星星写于2001年2月4日凌晨

星月传奇提供下载
http://www.lywin.com
中国泥巴资源下载第一站
