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

