该NPC功能为给装备附加特殊属性,如物理伤害吸收、致命一击等。主界面在QFunction.txt或Npc_def目录下定义,实际处理逻辑通过#CALL调用外部脚本文件。若部分代码不可见,说明服务端使用了分文件管理,需手动补全被调用的子脚本。
主NPC脚本结构如下(保存为Npc_def灵魂铁匠.txt):
[@main]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
年轻人啊,老夫在此数十载,您可只老夫在此地都忙于什么吗?
呵呵...告诉你吧,老夫在此是为了研究玛法大陆失传已久的锻造技术
果然,皇天不负有心人,终于叫我研究出来了。
现在老夫要将此技术为广大的玛法大陆勇士们施展出来。
但是我要收取2000的元宝作为我的辛苦费,这个不算过分吧 嗯?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[@物理伤害]
IF
CHECKGAMEGOLD > 1999
ACT
MOV N10 0
MOV N11 1
INC N10 1
CALL [\后台管理物理伤害.txt] @物理伤害吸收
ELSEACT
SENDMSG 5 元宝不足2000,无法进行强化!
[@魔法伤害]
IF
CHECKGAMEGOLD > 1999
ACT
MOV N10 0
MOV N11 2
INC N10 1
CALL [\后台管理魔法伤害.txt] @魔法伤害吸收
ELSEACT
SENDMSG 5 元宝不足2000,无法进行强化!
其余选项(致命一击、伤害反弹等)依此类推,仅修改N11赋值和#CALL路径。
以“物理伤害吸收”子脚本为例(创建文件:MirserverMir200Envir后台管理物理伤害.txt):
[@物理伤害吸收]
IF
EQUAL N10 1
ACT
TAKE 装备 1
GAMEGOLD - 2000
GIVE 装备(灵魂:物理伤害吸收+5%) 1
SENDMSG 5 强化成功!装备已附加物理伤害吸收属性。
ELSEACT
SENDMSG 5 请先放入一件可强化的装备!
此处假设装备名称格式为“装备(灵魂:属性)”,实际需与ItemInfo.txt中定义的物品名完全一致。若服务端支持属性附加系统(如GOM引擎的AddItemAttr指令),则改用:
ACT
CHECKBAGITEM 装备
IF
EQUAL M0 1
ACT
TAKE 装备 1
GAMEGOLD - 2000
GIVE 装备 1
AddItemAttr 0 105 5 ;105为物理伤害吸收属性ID,5为数值
SENDMSG 5 强化成功!
属性ID需查阅服务端文档,不同引擎编号不同。
关键点说明:
所有#CALL指向的子脚本必须存在于指定路径,否则点击选项无反应;
元宝扣除使用GAMEGOLD - 2000,前提是在主脚本中已验证余额;
装备识别建议用CHECKBAGITEM配合M0变量,避免名称匹配错误;
若原服务端加密了子脚本,可新建同名文件覆盖,M2会优先读取明文脚本;
属性显示需客户端支持,确保MapStdItems.def包含对应灵魂装备图标。
测试时,先在背包放一件普通装备,再与NPC对话选择属性类型。成功后装备名称应变化,且属性生效。若失败,检查M2日志是否有“脚本错误”提示,定位缺失文件或语法问题。

