这段脚本的逻辑其实很简单,就是双击装备卷 → 判断角色是男是女 → 跳到不同的发放分支 → 男的给男衣服,女的给女衣服。但你贴出来的这份代码里藏了一个致命的错误,女的双击什么都拿不到。下面先把每一行的意思拆开讲,再指出错在哪,最后给出能用的完整版本和数据库配置方法。
一、逐行拆解这段脚本
[@StdModeFunc150]
这是一个触发标签。玩家在背包里双击某件物品时,服务端会去找物品数据库里这件物品的 AniCount(部分引擎叫 Func)字段,读到 150,就跳到 QFunction-0.txt 里对应的 [@StdModeFunc150] 这一段往下执行。150 不是固定的,你设成多少,标签就写多少,两边必须一致。
#iF
gender man
#IF 是条件判断段的开头,#iF 只是大小写不规范的写法,绝大多数引擎不区分大小写,能正常跑。gender man 是性别检测命令,检测当前触发脚本的这个角色是不是男性。是男的条件成立,走 #ACT;不是男的条件失败,走 #ELSEACT。
参数只有两个值:MAN(男)和 WOMAN(女),部分版本也支持写中文"男""女",还有的老版本支持数值形式(0 男、1 女)。
#ACT
goto @ndongs65
条件成立(是男的)时执行。goto 是无条件跳转,跳到 [@ndongs65] 这个标签继续执行。
#ELSEACT
goto @vdongs66
条件失败(是女的)时执行,跳到 [@vdongs66]。
问题就在这两行上。 底下只定义了 [@ndongs65] 和 [@ndongs66] 两个标签,根本不存在 [@vdongs66]。女玩家双击之后,goto 跳到一个不存在的标签,脚本直接中断,一件东西都不发。
[@ndongs66] 这个标签从头到尾没人跳过去,是一段死代码。原作者大概率是打字的时候把 n 打成了 v,改一个字母就通了。
二、两个发放分支
[@ndongs65]
#act
give 火龙神盔 1
give 火龙神链 1
give 火龙神镯 2
give 火龙勋章 1
give 火龙神斩 1
give 火龙神戒 2
give 火龙神甲 1
give 火龙宝石 1
give 火龙神带 1
give 火龙神靴 1
男性分支。give 物品名 数量 是发放命令,一件一件往背包里塞。注意两点:give 火龙神镯 2 和 give 火龙神戒 2 是发 2 个(手镯戒指成对,所以数量写 2);give 火龙神甲 1 这一行是男女分支唯一的差别——男的给火龙神甲。
[@ndongs66]
#act
give 火龙神盔 1
...
give 火龙神袍 1
...
女性分支,除了衣服换成火龙神袍,其余完全一样。
三、这份脚本缺的四样东西
除了上面那个 vdongs66 的拼写错误,还有四个坑,不改掉照样出问题。
第一,没有回收装备卷。 脚本里通篇没有 TAKE 命令,装备卷双击之后不会消失。玩家身上有一张就能无限双击,无限刷火龙套。必须加一行:
TAKE 火龙装备卷 1
第二,没有 break。 部分引擎在执行完一个标签段之后会继续往下走,男性发完 10 件,接着又落到 [@ndongs66] 再发一遍,等于一人拿两套。每个分支结尾加 break 强制结束,能杜绝这个隐患。
第三,没有背包空格检测。 背包剩 3 格的话,give 到第三件就停了,剩下的凭空消失,玩家找你赔都不知道怎么赔。加一行:
#IF
CheckBagSize 12
#ACT
#ELSEACT
SENDMSG 6 背包空格不足12格,请清理后再使用。
BREAK
第四,物品名必须和数据库一字不差。 give 后面写的是物品数据库 Name 字段的原文,多一个空格、括号用全角、写成"火龙神铠"而库里是"火龙神甲",都会发放失败。同理,TAKE 后面那张卷的名字也要一致。
四、修好之后的完整脚本
[@StdModeFunc150]
#IF
CheckBagSize 12
#ACT
TAKE 火龙装备卷 1
GENDER MAN
#IF
GENDER MAN
#ACT
goto @ManEquip
BREAK
#IF
GENDER WOMAN
#ACT
goto @WomanEquip
BREAK
[@ManEquip]
#ACT
give 火龙神盔 1
give 火龙神链 1
give 火龙神镯 2
give 火龙勋章 1
give 火龙神斩 1
give 火龙神戒 2
give 火龙神甲 1
give 火龙宝石 1
give 火龙神带 1
give 火龙神靴 1
SENDMSG 6 恭喜获得火龙套装(男)!
BREAK
[@WomanEquip]
#ACT
give 火龙神盔 1
give 火龙神链 1
give 火龙神镯 2
give 火龙勋章 1
give 火龙神斩 1
give 火龙神戒 2
give 火龙神袍 1
give 火龙宝石 1
give 火龙神带 1
give 火龙神靴 1
SENDMSG 6 恭喜获得火龙套装(女)!
BREAK
这里用了两段独立的 #IF / #ACT / BREAK 而不是 #IF / #ACT / #ELSEACT,原因是这样写容错更好——万一性别检测异常,两个条件都不成立,脚本直接结束,不会错发。
五、引擎差异:GENDER 还是 CHECKGENDER
这是最容易踩的第二个坑,命令各引擎不通用:
• HeroM2 / BLUE 引擎:用 GENDER MAN、GENDER WOMAN。注意 HeroM2 对大小写敏感,必须全大写 GENDER,写成 Gender 或 gender 会报未知命令,条件永远不成立。
• GOM / GEE 引擎:用 CHECKGENDER,参数格式不同,写 CHECKGENDER 0(男)或 CHECKGENDER 1(女)。
• 检测英雄性别:命令前加 HERO. 前缀,写成 HERO.GENDER MAN。
• 检测对面玩家的性别:用 CHECKPOSEGENDER MAN,这条一般不需要两人面对面站着。
贴脚本之前先确认自己用的是哪个引擎,命令名对不上,M2 控制台会刷未知命令的报错。
六、物品数据库怎么配
脚本写好了,物品那头也得对上,否则双击没反应。
打开 DBC2000 里的 StdItems.DB(HERO、GOM 引擎也可能是 Data\StdItems.txt),找到或新建这张装备卷,几个关键字段:
• StdMode:设 31,这是"双击触发脚本"物品类型的标识。少数引擎(部分 HERO、GOM 版本)用 StdMode=15 配合 Func=150 字段,具体看你版本里别的卷是怎么设的,照抄最省心。
• AniCount:设 150,对应 [@StdModeFunc150]。取值范围通常是 1~999,别跟别的卷重复。
• Source:设 0 表示解包物品,双击一次就没;设 1 表示计次物品,每双击一次扣 1 点持久,持久归零就不能再用,次数由 DuraMax 决定。
• DuraMax:一次性使用的设 1;想做成可重复用的设 10000。
• Looks:外观编号,客户端得有对应的补丁素材,不然显示成问号或者别的图标。
改完保存之后,还要确认 M2 控制台的参数设置里"允许使用物品触发脚本"是勾上的,这一项没开,所有双击卷全部失效。
七、改完怎么让它生效
脚本文件放在 Mir200\Envir\Market_Def\QFunction-0.txt。改完之后有三种方式让它生效:
• 游戏里 GM 号输入 @reloadquest 重读脚本;
• M2 控制台点"重读"→"重读QF脚本";
• 直接重启服务端。
物品数据库改过的话,还要在 M2 里"重读物品DB",不然服务端读的还是旧数据。
八、进阶:加上职业判断和自动穿戴
火龙套如果分战法道三职业,可以在性别判断外面再套一层职业判断:
[@StdModeFunc150]
#IF
CHECKJOB WARRIOR
GENDER MAN
#ACT
goto @战男
BREAK
#IF
CHECKJOB WARRIOR
GENDER WOMAN
#ACT
goto @战女
BREAK
CHECKJOB 的三个参数是 WARRIOR(战士)、WIZARD(法师)、TAOIST(道士)。三职业 × 男女 = 六个分支。
发完装备想让玩家直接穿上,用 AUTOTAKEONITEM:
AUTOTAKEONITEM 火龙神甲 0
AUTOTAKEONITEM 火龙神斩 1
AUTOTAKEONITEM 火龙神盔 4
后面的数字是穿戴位置编号:0 衣服、1 武器、2 勋章、3 项链、4 头盔、5/6 手镯、7/8 戒指。这个命令在部分老引擎上不支持,用了没反应就换回手动穿。
等级门槛也常一起加,CHECKLEVELEX > 49 表示等级大于等于 49 才给用,不满足的走提示。
九、双击没反应的排查顺序
1. 物品数据库 StdMode 是不是 31(或你版本对应的功能卷类型)。
2. AniCount 的数字和脚本标签 [@StdModeFuncX] 的 X 是不是完全一致。
3. QFunction-0.txt 里到底有没有这一段,标签名有没有打错。
4. M2 参数里"允许使用物品触发脚本"勾没勾。
5. 改完有没有 @reloadquest 重读,或者重启服务端。
6. give 后面的物品名和数据库 Name 字段是否一字不差,包括空格和括号。
7. M2 控制台有没有刷"未知命令"的报错,有的话就是 GENDER / CHECKGENDER 用错了引擎对应的写法。
8. 背包是不是满了,或者 CheckBagSize 的门槛设太高。
十、回到你这份脚本
它之所以"女的买回去双击没反应",原因就一个字母:#ELSEACT 那行 goto @vdongs66,而实际标签是 [@ndongs66]。把 v 改成 n,女性分支立刻就通了。
顺手把上面说的四样补齐——加 TAKE 回收卷、每个分支结尾加 break、开头加 CheckBagSize、确认 give 的物品名和数据库一致——这套火龙装备卷才算真正能用。
传奇装备卷自动检测男女脚本详解:StdModeFunc触发与gender命令
来源:
作者:
点击:

