经验猪的触发机制依赖四个文件的协同配置。怪物数据库负责定义经验猪这个怪物的存在,QFunction-0.txt负责定义砍猪后发生什么,MapInfo.txt负责告诉引擎在哪张地图上触发这个脚本,MonGen.txt负责在地图上把猪刷出来。四个文件缺任何一个,功能都不会生效。
## 怪物数据库中添加经验猪记录
打开服务端DB目录下的Monster.DB文件,用DBC2000或引擎自带的数据库编辑器打开。新增一条怪物记录,可以直接复制白野猪或黑野猪的数据行,然后把名字字段改为“经验猪”。以下是一条可直接导入的经验猪数据:
```plaintext
经验猪;120;18;27;999;0;0;0;100;0;0;0;0;0;0;0;0;0;-1;0;0;0;;;;;
```
各字段含义按顺序为:名称、等级、体力、攻击力、防御、魔御、经验值、速度等。关键点在于体力值设为999但实际不会被击杀,因为后续脚本不会执行死亡逻辑。防御值设为零,确保玩家每一刀都能命中并触发脚本。外观字段可以沿用野猪的素材外观,也可以在Appr字段中填入其他怪物编号来改变外观。记录添加完成后保存数据库文件,重启DBServer使修改生效。
## QFunction-0.txt中添加触发脚本
打开`Mir200\Envir\Market_Def\QFunction-0.txt`,在文件末尾或任意空白区域添加以下脚本段:
```plaintext
[@JINGYANZHU]
#IF
CHECKHITMONNAME 经验猪
CHECKGAMEGOLD > 6
#ACT
CHANGEEXP + 100000
GAMEGOLD - 5
SENDMSG 6 提示:打我一下需要收费5元宝,给你10万经验作为回报!
#ELSEACT
SENDMSG 6 你元宝不足5个,不要拿我出气了。
BREAK
```
`@JINGYANZHU`是标签名,可以自定义,但必须与MapInfo.txt中填写的标签名完全一致,包括大小写。`CHECKHITMONNAME`命令检测当前攻击的怪物名称是否与参数匹配,这里的“经验猪”必须与Monster.DB中的名称完全一致,多一个空格都会导致脚本不触发。
`CHECKGAMEGOLD > 6`检测玩家元宝数量。写大于6而不是大于等于5,是因为引擎在边界值上的处理有差异,写大一位更稳妥。`CHANGEEXP + 100000`给玩家增加10万经验,这个数值可以根据版本需要调整。`GAMEGOLD - 5`扣除5个元宝,如果不需要收费模式,把这一行和上面的CHECKGAMEGOLD检测一起删除即可。
如果希望不同等级段获得不同经验,可以叠加多个条件判断:
```plaintext
[@JINGYANZHU]
#IF
CHECKHITMONNAME 经验猪
CHECKLEVELEX < 60
#ACT
CHANGEEXP + 50000
BREAK
#IF
CHECKHITMONNAME 经验猪
CHECKLEVELEX > 59
CHECKLEVELEX < 68
#ACT
CHANGEEXP + 100000
BREAK
#IF
CHECKHITMONNAME 经验猪
CHECKLEVELEX > 67
#ACT
CHANGEEXP + 200000
BREAK
```
三个判断段从上到下依次执行,每个段末尾用BREAK终止,防止继续判断后续分支。低等级玩家获得较少经验,高等级玩家获得更多经验,避免低等级玩家通过经验猪快速升级破坏游戏平衡。
## MapInfo.txt中配置地图触发参数
打开`Mir200\Envir\MapInfo.txt`,找到盟重省的地图配置行。盟重省的地图编号为3,配置格式如下:
```plaintext
[3 盟重省] NORECALL NOPOSITIONMOVE RUNMON QUIZ MUSIC(600) NOTALLOWUSEMAGIC(火墙) MyShop HITMON(@JINGYANZHU)
```
关键是在地图参数末尾添加`HITMON(@JINGYANZHU)`。HITMON是地图攻击触发参数,括号内的标签名必须与QFunction-0.txt中的标签名一致。如果该地图原本已经有HITMON参数,不要重复添加,直接在已有的HITMON括号内增加新的标签或者将多个标签用逗号分隔。
`CHECKQUEST`等参数不要与此参数混用。HITMON只控制攻击怪物时的触发行为,玩家在这张地图攻击任何怪物都会走这个触发通道,但脚本内的`CHECKHITMONNAME`会过滤掉非经验猪的目标,所以不会影响正常打怪。
## MonGen.txt中设置经验猪刷怪
打开`Mir200\Envir\MonGen.txt`,添加刷怪配置行:
```plaintext
3 350 325 经验猪 0 1 1
3 350 322 经验猪 0 1 1
3 347 325 经验猪 0 1 1
```
每行的格式为:地图编号、X坐标、Y坐标、怪物名称、范围、数量、间隔时间。地图编号3对应盟重省,350和325是刷怪坐标点,可以根据土药附近的实际位置调整。范围参数0表示怪物不移动,固定在刷出坐标上,这样玩家不用追着猪跑。数量1表示每次只刷一只,间隔1表示每分钟刷新一次。
坐标点建议在游戏中用GM命令`@move`或`@position`确认实际位置,确保刷出的经验猪在安全区外但离土药不远。如果经验猪刷在安全区内,玩家攻击时会受到安全区保护限制,无法触发脚本。
## 完整配置的验证与测试
四个文件全部修改完成后,按顺序重启服务端。先重启DBServer使怪物数据库的修改生效,再重启M2Server使脚本和地图配置生效。进入游戏后用GM账号传送到盟重省,走到经验猪附近攻击一刀,观察是否弹出提示信息。如果没有任何反应,按以下顺序排查。
经验猪在游戏中看不到,通常是Monster.DB中的外观字段设置错误或刷怪坐标写错。先用GM命令`@mob 经验猪`手动刷一只出来,如果手动刷出的猪能看到但MonGen刷的不出现,检查MonGen.txt中的坐标是否在可行走区域内。
能看到猪但攻击后不触发脚本,首先检查MapInfo.txt中盟重省的地图参数是否正确添加了HITMON(@标签名)。其次检查QFunction-0.txt中的标签名是否与HITMON括号内的名称完全一致,大小写和标点符号都不能有差异。最后检查CHECKHITMONNAME后面的怪物名称是否与Monster.DB中的名称完全一致。
攻击后触发了脚本但不加经验,检查CHECKGAMEGOLD的条件是否满足。如果玩家元宝不足,脚本会走ELSEACT分支只发提示不扣元宝也不加经验。可以在测试时将CHECKGAMEGOLD的条件暂时去掉,确认经验增加命令本身是否正常工作。
## 经验猪的进阶玩法配置
在基础功能之上,可以增加几项扩展设置。在MonSayMsg.txt中为经验猪添加挨打时的台词,格式为:概率 间隔 颜色 怪物名 台词内容。例如:
```plaintext
1 30 3 经验猪 %d不要总欺负我,否则晚上钻你被窝
2 1 3 经验猪 %d不瞑目啊不瞑目~我要画个圆圆诅咒你
3 1 3 经验猪 %d终于跑出猪圈了,这是哪?那么多人
```
第一列数字是触发的概率权重,第二列是间隔秒数,第三列是字体颜色代码,后面依次是怪物名和台词模板,`%d`会被替换为攻击者的角色名。
如果希望经验猪只对特定等级段的玩家生效,可以在QFunction-0.txt中增加等级判断。也可以结合武器检测,比如只有手持特定武器的玩家砍经验猪才能获得全额经验,其他武器只获得少量经验。在CHECKHITMONNAME之前增加`CHECKITEMW`命令即可实现。
元宝扣除和经验增加的数值建议不要设置得过于极端。如果一刀给50万经验而只扣5元宝,玩家会通过连续砍猪快速升级,导致等级体系失控。合理的比例是根据版本的经验曲线来定,通常一刀的经验量控制在当前等级升级所需经验的1%到3%之间比较合适。
传奇土城经验猪触发脚本完整配置范例与命令详解
来源:
作者:
点击:

