物品双击触发脚本不生效?BLUE引擎双击触发配置
摘要:物品双击触发脚本是BLUE引擎里让道具双击后自动执行脚本的配置,核心是物品数据库STDMODE填31、ANICOUNT填触发编号,再在QFUNCTION-0.TXT里写[@STDMODEFUNCX]段。本文按官方CHM文档整理参数对照与字段取位,给出绑定双击脚本的四步实操、开宝箱示例段和双击无反应的排查顺序。…
很多人在问,物品数据库改完STDMODE,进游戏双击那件道具却一点动静都没有。物品双击触发脚本容易配错的地方在于,它由三处设置共同决定:物品数据库里的STDMODE与ANICOUNT、脚本目录下的QFUNCTION-0.TXT、以及段名里的那个数字编号。三处只要缺一处,双击就不会有反应。
本文对照官方CHM帮助文档,把双击触发段的命令格式、物品属性与触发段名的对应关系、双击到脚本执行的完整过程,以及双击脚本配置的落地步骤逐条拆开,最后给出双击无反应时的排查顺序。文中所有编号规则与字段取值都以官方原文为准。

命令格式:双击触发段的写法
双击触发段没有一条单独的执行命令,它由物品数据库设置和QFUNCTION-0.TXT里的脚本段两部分拼成。官方帮助文档把使用方法写成三步:
1、物品数据库设置1:STDMODE字段设置为:31
2、物品数据库设置2:ANICOUNT字段设置为:X
3、\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT下设置
X是1到999之间的数字,它同时决定数据库字段与脚本段名,两处的数字必须完全一致。官方给出的脚本段示例如下:
[@STDMODEFUNCX]
#IF
#ACT
SENDMSG 7 触发成功!!!
注:其中X为物品数据库设置2中的X
段名里的X换成数据库里的编号即可,ANICOUNT填55,段名就写成[@STDMODEFUNC55]。示例里那条SENDMSG是提示消息,测试阶段用它确认脚本确实被触发。段要写在\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT里,而不是QManage.txt,路径放错同样不会执行。

参数讲解:物品属性与触发段名
双击触发涉及四个数据库字段和一个段名,对应关系照着下表核对即可。
| 参数内容 | 参数释义 | 实操用法 |
|---|---|---|
| STDMODE | 物品类型字段,官方规定双击触发类物品填31 | 在物品数据库里把该物品的STDMODE改成31 |
| ANICOUNT | 触发编号,官方写法为X,取值1到999 | 填几,QFUNCTION-0.TXT里就写[@STDMODEFUNC几] |
| RESERVED | 官方示例里双击触发物品填99 | 对照官方示例行,该字段位就是99 |
| DURAMAX | 决定物品持久,官方注明持久根据DURAMAX处控制 | 想让道具能用几次,在这一列控制 |
| 触发段名 | QFUNCTION-0.TXT里的[@STDMODEFUNCX] | X必须与ANICOUNT完全一致 |
RESERVED填99是官方特殊双击物品页的写法,原文写的是:增加StdMode=31,Reserved= 99双击触发脚本物品,使用一次掉一点持久。物品代码表里对31类的注解给出了编号公式:
@StdModeFuncXX,XX可以超过255,公式:XX = Reserved * 256 + AniCount
官方在2015更新说明里又补了一句:Reserved = 99时执行的是[@StdModeFunc+AniCount]。也就是说常规双击触发物品,段名编号直接等于ANICOUNT,不必做乘法;只有编号需要突破255时,才用得上公式里的乘法。物品代码表同时注明,Reserved=99这个值已经被占用。
物品触发段的编号与物品一一对应。官方特殊双击物品页给了四行真实数据:
1084;节日宝箱;31;1;1;55;0;99;1105;500
1085;赤金宝箱;31;1;1;56;0;99;1105;500
1086;白银宝箱;31;1;1;57;0;99;1104;500
1087;紫铜宝箱;31;1;1;58;0;99;1103;500
按分号拆开逐位看:第3位是STDMODE,四行都是31;第6位是ANICOUNT,分别是55、56、57、58;第8位是RESERVED,四行都是99;第9位是LOOKS外观编号;第10位是DURAMAX,四行都写500。同一批道具的编号连着排,段名也就连号写成[@STDMODEFUNC55]到[@STDMODEFUNC58]。
触发流程:双击到脚本执行的过程
把这条链路理清,排查会快很多。双击物品时,引擎先读这件物品的数据库属性,确认STDMODE是31,再取ANICOUNT的值拼成段名,然后到\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT里找同名段,找到就按#IF条件判断、按#ACT执行,找不到就什么都不做。
第一步,读数据库属性。STDMODE不是31的物品根本不会进入双击逻辑,双击只会弹出物品说明。
第二步,取ANICOUNT的数值拼出目标段名,段名的固定格式是[@STDMODEFUNC编号]。
第三步,在QFUNCTION-0.TXT里按段名查找。段名拼错、编号对不上、文件放错位置,都会在这一步查找失败。
第四步,段内#IF条件成立才执行#ACT,条件不成立就走#ELSEACT或者直接结束。
这套流程里没有NPC参与,所以把双击脚本配置写进NPC对话里是无效的,物品触发段只认QFUNCTION-0.TXT这个文件。另外要分清:双击触发类物品用[@STDMODEFUNCX]取段,准星类物品靠右键选中目标触发,段名体系与触发时机都不同,两者的STDMODE不能对调,对调之后双击和右键都会失灵。

配置步骤:给物品绑定双击脚本
我第一次配双击触发的时候,只把物品数据库的STDMODE改成了31,ANICOUNT没填,进游戏双击道具就是没动静;把ANICOUNT补上、又在QFUNCTION-0.TXT里加好同名段之后才正常触发。后来有一次段名里的编号写差了一位,双击又没了反应,重载脚本也不管用,逐字比对才发现是段名和ANICOUNT没对齐。三处设置是我踩出来的经验,下面按配置顺序展开。
第一步,打开物品数据库,找到要做双击触发的道具,把STDMODE改成31,ANICOUNT填一个1到999的编号,RESERVED填99。
第二步,打开\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT,在文件末尾新增一段,段名写成[@STDMODEFUNC编号],编号与ANICOUNT保持一致。
第三步,段内先写#IF,再写#ACT,把双击后要执行的动作写在#ACT下面。官方示例用的是一条SENDMSG提示消息,正式配置里可以换成给物品、开宝箱这一类命令。
第四步,保存QFUNCTION-0.TXT并重载脚本;改过数据库的还要重载物品数据库。两项都生效之后再进游戏测试。
想把双击做成开宝箱,官方宝箱页给的完整段可以直接参考:
[@StdModeFunc29]
#IF
CHECKBAGSIZE 6
#ELSEACT
MESSAGEBOX 你包袱空格不够!你不能开启黄金宝箱!
BREAK
#IF
CHECKITEM 黄金钥匙 1
#ACT
TAKE 黄金钥匙 1
TAKE 黄金宝箱 1
OPENBOX 黄金宝箱
#ELSEACT
MESSAGEBOX 你没有黄金钥匙,不能开启黄金宝箱!
CLOSE
这段里CHECKBAGSIZE判断背包空格,CHECKITEM判断钥匙,TAKE负责扣除,最后用OPENBOX把宝箱打开,宝箱里能开出什么写在BoxItem.txt里。对应的物品数据库行是999;黄金宝箱;31;1;1;29;0;99;1105;5000,ANICOUNT是29,所以段名写成[@StdModeFunc29]。官方对OPENBOX的说明是:第1参数为有效宝箱名称会打开宝箱,第2参数非空可以自动转宝箱,第3参数非空可以在转完宝箱自动获取物品。
故障排查:双击无反应的排查
报错排查:改完数据库双击没反应?
先查STDMODE。官方规定双击触发类物品的STDMODE必须为31,写成其他值,双击只会弹物品说明,不会触发脚本。再查ANICOUNT,留空或者和上一件道具重复都不行,编号重复会让两件道具抢同一个段。最后确认改动之后重载了物品数据库,没有重载,改了什么也读不到。
报错排查:脚本段写了但游戏里没提示?
先查文件与路径,段必须写在\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT里。再查段名,[@STDMODEFUNC编号]里的编号要与ANICOUNT完全一致,差一位就找不到段。最后查段内写法,#IF条件不成立时#ACT不会执行,测试阶段可以先把#IF下面的条件去掉,只留#ACT验证连通性。
报错排查:编号填了但没有对应提示?
编号本身要落在官方给出的1到999范围内,填0或者超出范围都拼不出有效段名。另外查一下这件道具的RESERVED位,官方示例里双击触发物品该位填99,填成其他值会被引擎当成别的类型处理,双击自然不会有动作。
FAQ常见问题
1. 双击物品怎么开宝箱?
把双击做成触发入口,再用开宝箱命令收尾。物品数据库里把宝箱类道具的STDMODE设为31、ANICOUNT填一个编号,QFUNCTION-0.TXT里写[@STDMODEFUNC编号],段内用OPENBOX加宝箱名字把它打开。官方宝箱页给的段还会先用CHECKBAGSIZE和CHECKITEM判断空格与钥匙,编号与段名编号必须一致,否则双击不会有任何反应。(本条问题整理自百度知道真实提问:双击物品怎么开宝箱,2021年1月)
2. 双击脚本配置要写在哪个文件里?
写在\MIR200\ENVIR\MARKET_DEF\QFUNCTION-0.TXT里,不是QManage.txt。QManage管的是登录与NPC相关脚本,双击触发走物品自身的触发段,两个文件不要混放。段名固定为[@STDMODEFUNC编号],编号与物品数据库里的ANICOUNT对应。
3. 双击道具的编号和触发段名怎么对应?
官方写法是编号等于段名里的数字,ANICOUNT填55,段名就写[@STDMODEFUNC55]。编号需要突破255时,官方给了公式,段名编号等于RESERVED乘256再加ANICOUNT;而RESERVED=99时执行的是[@StdModeFunc+ANICOUNT],编号直接等于ANICOUNT。物品代码表注明RESERVED=99已被占用。(本条问题整理自百度知道真实提问:请教传奇服务端高手,2007年5月)
4. STDMODE=31的编号能超过255吗?
可以。官方更新说明里写明31类双击触发物品突破255限制,段名里的XX可以超过255,计算公式是XX等于RESERVED乘256再加ANICOUNT。不过常规双击触发物品的RESERVED位填99,此时段名编号直接取ANICOUNT的值,不需要做乘法,编号控制在1到999之间即可。
5. 双击开宝箱后怎么在游戏里提示?
在开宝箱段的#ACT里加一条SENDMSG提示即可,官方宝箱示例用的就是这种写法,把提示文字换成自己的内容,玩家开箱之后就能在聊天栏看到反馈。提示命令要放在OPENBOX之后,先开箱再提示,顺序反了玩家会先看到字、后看到物品。提示参数不同取值对应不同显示样式,具体以官方命令页说明为准。(本条问题整理自百度知道真实提问:传奇开宝箱提示,2009年1月)
6. 双击触发物品和准星类物品有什么区别?
双击触发类物品的STDMODE是31,靠双击使用,触发段写在QFUNCTION-0.TXT里,段名以[@STDMODEFUNC开头;准星类物品靠右键选中目标生效,触发时机和段名体系都不一样。两者的STDMODE不能对调,对调之后双击与右键选目标都会失灵,排查时要先确认自己配的是哪一类。
7. 双击后物品持久掉得太快怎么办?
持久由DURAMAX列控制,官方特殊双击物品页专门注明持久根据DURAMAX处控制。示例里四件宝箱的DURAMAX都写500,把这一列的数字调大,道具能用的次数就更多。如果想让道具双击后直接收回,可以在#ACT里配合TAKE把物品扣掉。
结束语
物品双击触发脚本的配置其实只有三件事:物品数据库里STDMODE填31、ANICOUNT填编号、QFUNCTION-0.TXT里补一个同名段。三处数字对齐,双击才走得通;哪一处对不上,双击就是没反应。把这三点记牢,物品触发段的排查会快很多。
BLUE引擎物品双击触发脚本的StdMode设置与触发段写法均对照官方CHM帮助文档原文,仅限本地测试学习,线上部署前请自行核对。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。













