当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇穿戴触发脚本编写方法与引擎适配详解

热度:
穿戴触发脚本的核心是让角色在穿上或脱下指定装备时自动执行预设命令。脚本存放在服务端QFunction-0.txt文件中,通过装备位置代码区分触发对象,同一位置可配置多件装备的独立触发逻辑。

##脚本存放位置与文件结构

穿戴触发脚本统一写入服务端脚本目录下的QFunction-0.txt文件,完整路径为mirserver\Mir200\Envir\Market_Def\QFunction-0.txt。该文件是全局触发脚本,所有角色的穿戴行为都会经过此文件处理。打开文件后无需删除原有内容,在末尾追加新的触发段即可。部分引擎版本将该文件放在QuestDiary文件夹下,配置前需确认实际路径。

##装备位置代码对照

每个装备栏位对应固定的位置代码,脚本通过位置代码识别触发来源。常用代码包括:衣服为0、武器为1、蜡烛为2、项链为3、头盔为4、左手镯为5、右手镯为6、左戒指为7、右戒指为8、护符为9、腰带为10、鞋子为11、宝石为12。编写脚本时,[@TakeOnX]中的X替换为对应位置数字,例如武器触发写为[@TakeOn1],衣服触发写为[@TakeOn0]。

##穿戴触发脚本基本格式

穿戴触发使用[@TakeOnX]作为函数头,配合#IF条件判断和#ACT执行命令。同一位置代码下可以写入多组条件判断,实现多件装备共用同一触发入口。

以武器位置为例,检测穿戴屠龙后学习魔法盾,穿戴井中月后学习冰咆哮:

```
[@TakeOn1]
#IF
checkitemw屠龙
#ACT
ADDSKILL魔法盾
#IF
checkitemw井中月
#ACT
ADDSKILL冰咆哮
```

checkitemw命令用于检测当前角色是否佩戴指定物品。该命令支持无限数量的装备检测,同一位置可以配置任意多件装备的独立触发效果。利用这个特性,还可以解决衣服分男女的问题——在[@TakeOn0]段中分别检测男款和女款装备名称,各自执行不同命令。

##脱下触发脚本

脱下触发使用[@TakeOffX]作为函数头,X同样对应装备位置代码。脱下时通常需要撤销穿戴时施加的效果,例如移除技能、扣除属性加成。检测是否脱下指定装备使用CheckTakeOffItem命令。

```
[@TakeOff1]
#if
CheckTakeOffItem屠龙
#ACT
DELSKILL魔法盾
#if
CheckTakeOffItem井中月
#ACT
DELSKILL冰咆哮
```

脱下触发与穿戴触发的结构完全一致,区别在于函数头和检测命令不同。穿戴用checkitemw检测是否佩戴,脱下用CheckTakeOffItem检测是否取下。

##触发命令的实际用途

穿戴触发可执行的操作类型没有限制,凡是脚本支持的ACT命令都可以使用。常见用途包括学习技能(ADDSKILL)、删除技能(DELSKILL)、增加属性(ADDHP、ADDMP、ADDAC)、传送(MapMove)、发送消息(SENDMSG)、触发特效(ShowEffect)等。

属性加成类命令适合制作穿戴装备后临时提升属性的效果,例如穿戴传送戒指后增加魔法值上限。技能类命令适合制作装备附带技能的效果,例如穿戴特定武器后自动学会某个技能。消息类命令适合制作提示效果,例如穿戴稀有装备后全服公告。

##引擎差异与命令适配

不同引擎对穿戴触发的支持存在差异。GOM引擎支持穿戴前和脱下前触发,并提供LINKPICKUPITEM命令关联修改属性。GEE引擎支持更复杂的变量嵌套和Text变量循环,适合实现随机套装属性统计。BLUE引擎和SKYM2引擎在极品判定和属性修改命令上存在差异,SKYM2用CheckItemSuper检测极品,BLUE用CheckItemIsBest替代。

时装首饰的穿戴触发使用独立的位置代码段。GOM引擎配合ESP插件时,时装首饰位置代码为1001至1012,分别对应项链、手镯、戒指、头盔、盾牌、腰带、鞋子、军鼓、宝石、马牌。时装触发使用[@ESPTAKEON]和[@ESPTAKEOFF]函数头,与常规装备触发分开处理。

##条件判断的扩展

穿戴触发脚本的#IF段可以叠加多个条件,实现更精细的控制。除检测装备名称外,还可以加入等级检测(CHECKLEVELEX)、职业检测(CHECKJOB)、变量检测(CHECKVAR)等条件。例如限定只有战士且等级达到40级时,穿戴某件武器才触发额外效果。

多条件叠加时需要注意命令的兼容性。部分引擎要求条件命令逐行书写,每条命令独占一行,不能将多个条件写在同一行内。条件之间的逻辑关系默认为“且”,即所有条件全部满足时才执行#ACT段。

##脚本生效与测试

脚本修改后需要重新加载NPC或重启服务端才能生效。测试时先在游戏中穿戴目标装备,观察是否触发了预期的命令效果。如果无反应,检查装备名称是否与服务端Item.txt文件中的名称完全一致,包括空格和符号。名称不匹配是触发失败最常见的原因。

变量类触发效果需要确认变量已在登录脚本中声明并加载,未声明的变量在脚本中调用时不会报错,但实际效果为0。保存变量时使用SAVEVAR命令将变量写入文本文件,否则玩家下线后变量值会丢失。
[顶部]