马牌和天使翼在物品数据库中属于两种独立的特殊物品类型,字段设置规则与普通装备有本质区别。马牌的核心字段是StdMode和Shape,天使翼的核心字段是StdMode和Anicount,两者都依赖客户端补丁素材文件的正确对应。以下从字段设置、素材对应、脚本调用和引擎差异四个维度逐一说明。
## 一、马牌的数据库字段设置规则
马牌的物品类型代码StdMode在不同引擎版本中存在差异。多数通用引擎中马牌的StdMode值为28,178M2等战骑系统引擎中普通坐骑StdMode为32,可攻击坐骑StdMode为33。无论StdMode取何值,马牌在人物装备栏中的位置代码固定为15,脚本中调用的变量为$HORSE。
马牌的外观由Shape字段控制。Shape值决定了角色骑乘时显示的马匹造型,取值范围通常为51至100,51代表第一种马的外观,52代表第二种,依次类推。部分版本中Shape从51开始支持到100,共计50种马匹外观可选。数据库中的Source字段用于记录马的等级,DuraMax字段对应马的饥饿程度上限,骑乘过程中饥饿值消耗至上限时马的等级会提升一级,饥饿值不足时等级下降一级,等级降至零时系统自动收取马牌。
以下是马牌的数据库记录范例,可直接参照格式添加新马牌:
```
580;马牌(黄虎);30;51;1;0;0;0;1090;30000;2;2;2;2;2;2;2;2;2;2;0;1;50000;5;;
581;马牌(蓝虎);30;52;1;0;0;0;1090;30000;2;2;2;2;2;2;2;2;2;2;0;1;50000;5;;
582;马牌(黑熊);30;53;1;0;0;0;1090;30000;2;2;2;2;2;2;2;2;2;2;0;1;50000;5;;
583;马牌(白熊);30;54;1;0;1;0;1090;30000;2;2;2;2;2;2;2;2;2;2;0;1;50000;5;;
```
记录中第三个字段Stdmode取30,第四个字段Shape依次取51至54,对应四种不同的马匹外观。Source字段为1表示马的初始等级,DuraMax为30000表示饥饿上限。马牌没有限定修理,添加完成后需要在M2选项的列表信息二中找到禁止物品设置,将马牌加入禁止修理列表,防止玩家通过修理操作刷取马牌持久。
马牌能否使用骑乘功能还取决于Anicount字段。Anicount等于0时不能骑马,大于0时(例如设置为1、2、3等)可以使用快捷键触发骑乘。部分引擎中使用Ctrl+J骑马,部分使用Ctrl+M,具体按键取决于引擎版本。
## 二、天使翼的数据库字段设置规则
天使翼的物品类型代码StdMode值为29或30,取决于引擎版本。在通用物品代码表中29为天使翼,30为照明物;在GOM等引擎中天使翼的StdMode通常设置为30。天使翼在装备栏中不占用独立位置,其外观效果作为衣服的附加特效存在。
天使翼的Shape字段控制天使外观类型。Shape取值1至10代表不同形态的天使,每个数值对应HumEffect.wil文件中一组独立的翅膀素材。Shape为1时读取第一组天使翅膀图片,Shape为2时读取第二组,以此类推。
数据库记录中天使翼的范例格式如下:
```
600;天使翼(小);30;1;1;0;0;0;1000;20000;0;0;0;0;0;0;0;0;0;0;0;1;30000;5;;
601;天使翼(大);30;2;1;0;0;0;1000;20000;0;0;0;0;0;0;0;0;0;0;0;1;30000;5;;
```
Stdmode为30,Shape依次为1和2,对应两种不同大小的天使翅膀外观。
天使翼的Anicount字段在部分引擎中需要额外设置,用于指定HumEffect.wil文件中具体的翅膀图片组编号。HumEffect.wil中每600张图片为一组,第一组对应编号0至599,在Anicount中填写1;第二组对应编号600至1199,在Anicount中填写2。如果引擎将天使翼作为衣服翅膀处理,则Anicount直接填写对应的组号即可。天使翼也可以作为勋章位置的装备添加,此时需要将Shape字段改为253,Anicount填写对应的翅膀组号。
## 三、马匹素材与HumEffect文件的对应关系
马匹的骑乘外观素材调用L-Horse文件。在服务端Resource\Data目录下存在L-Horse.pak或L-Horse.wil文件,Shape值的计算方式为:Shape =(素材中图片位置编号)/ 600 + 1,整除后舍弃余数。例如480位置除以600等于0.8,舍弃小数后取0,加1得到Shape值为1;1500位置除以600等于2.5,舍弃小数后取2,加1得到Shape值为3。这意味着Shape值1对应素材文件的第1至600张图片,Shape值2对应第601至1200张图片,依次类推。
人物骑上马以后的服装造型存放在Resource\Data\HumHorse.pak文件中,需要在衣服物品的Source字段中设置。Source值的计算方式为:Source =(HumHorse.pak中图片位置编号)/ 640,整除后舍弃余数。例如500除以640等于0.78,取整为0,则该衣服的Source值为0。男女服装使用相同的Source代码。
骑乘状态下的服装翅膀特效存放在Resource\Data\HumEffectHorse.pak文件中。特效代码的读取位置为:(Anicount - 1) × 320。以火龙服装为例,数据库中Anicount设置为3时,读取位置为(3-1)×320=640,即从第640张图片开始读取。女性服装的Anicount在男性基础上加1。
## 四、地图参数与骑乘功能配置
马牌在数据库设置完成后,还需要在服务端地图配置文件中添加参数才能允许骑马。打开Mir200\Envir\MapInfo.txt文件,在需要允许骑马的地图行末尾添加CANHORSE或HORSE参数。例如:
```
[0 比奇省] INCGAMEPOINT(120/1) CANHORSE
```
该配置表示比奇省地图允许骑马。如果地图没有添加此参数,即使角色佩戴了马牌也无法使用骑乘功能,系统会提示当前地图不能骑马。
在M2引擎控制面板中还需要开启骑乘功能。进入M2选项的功能设置,找到特殊功能选项卡,勾选骑乘系统相关选项。部分引擎需要在专用登录器的内挂设置中勾选显示骑马按钮,保存后玩家界面上才会出现骑乘切换按钮。
## 五、脚本中调用马牌与天使翼
马牌在脚本中的装备位置为15,升级属性检测时使用CheckItemAddvalue 15 属性位置 比较条件 数值。天使翼的位置代码取决于具体引擎,多数引擎中天使翼不占用独立装备位置,其属性加成通过衣服物品的Anicount字段间接实现。
马牌的属性升级脚本写法与普通装备类似,区别在于位置参数使用15。以下为马牌攻击属性升级的脚本示例:
```
[@马牌升级]
#IF
CHECKGAMEGOLD > 4999
#ACT
GAMEGOLD - 5000
UPGRADEITEMEX 15 0 0 1 0
SENDMSG 6 马牌攻击属性升级成功
#ELSEACT
MESSAGEBOX 元宝不足
```
天使翼的升级脚本中,位置参数根据引擎使用15或对应天使翼位置的编号。在GOB引擎中,天使翼升级属性位置为16,脚本显示装备名字变量为$FASHION。不同引擎的变量名称和位置编号需要对照引擎自带的物品代码表确认。
## 六、不同引擎的差异说明
178M2引擎的战骑系统采用独立的StdMode体系。普通坐骑StdMode为32,可攻击坐骑为33,坐骑形象Shape按L-Horse.pak中图片位置除以600加1计算。坐骑装备分为五类:缰绳StdMode为34,铃铛为35,马鞍为36,装饰为37,脚钉为38。坐骑装备只有防御、魔御、攻击、准确、敏捷和生命属性有效。
GOM引擎中马牌的StdMode通常为28,天使翼的StdMode为30。GOM引擎的翅膀特效直接在衣服的Anicount字段中设置,例如火龙服装的Anicount为3,雷霆服装的Anicount为1。Anicount设为0表示无翅膀特效。
HERO引擎的马牌位置代码同样为15,但翅膀特效的字段可能为WingID而非Anicount。部分HERO引擎版本中,天使翼作为独立装备时存储在Item.db的WingID字段,需要通过引擎自带的数据库工具确认字段名称。
BLUE引擎中翅膀特效通过HumEffect系列文件实现,HumEffect2.wil中保留编号1000至1024为翅膀区域,第一件翅膀对应编号1002,后续依次递增。在该引擎中Anicount直接填写HumEffect2.wil中的图片编号,而非组号。
## 七、常见设置错误与排查
马牌佩戴后角色不显示坐骑,检查三处:数据库中StdMode值是否与引擎要求一致,Shape值是否在有效范围内且与L-Horse素材文件匹配,地图参数是否已添加CANHORSE或HORSE。
天使翼佩戴后无翅膀效果,首先确认客户端Data目录下存在HumEffect.wil文件,其次检查数据库中Anicount或Shape字段的数值是否指向了正确的图片组,最后确认引擎版本是否将该物品识别为天使翼类型而非普通装备。
马牌可以佩戴但无法骑乘,检查M2选项中的骑乘功能是否开启,Anicount字段是否大于0,以及当前地图的MapInfo.txt中是否配置了允许骑马的参数。部分版本中还需要在M2的功能设置里配置技能要求,即角色需要学习特定的骑乘技能后才能使用马牌。
数据库修改完成后需要重启M2引擎或执行重载物品数据库操作,修改才能生效。客户端补丁文件需要与数据库中的Shape值严格对应,Shape值为51的马牌要求L-Horse素材文件中第一组图片对应的是该马匹的外观,若素材文件中图片顺序与数据库记录不匹配,会出现骑乘显示错误造型的问题。

