传奇NPC装备加灵魂属性脚本解密与重写

来源: 作者: 点击:
一、 脚本“加密”真相与解决方案

你遇到的“只能显示一部分”并非加密,而是脚本调用(#CALL)机制。原脚本将核心逻辑放在了外部文件中,NPC脚本只保留入口。要查看完整内容,需进入 MirServer\Mir200\Envir\QuestDiary\后台管理\ 目录,打开对应的 .txt 文件(如 物理伤害.txt)。

若文件丢失或损坏,需重写。基于你提供的NPC界面,重写逻辑需使用 SetNewItemValue(新属性)或 CHANGEITEMADDVALUE(老属性)命令。

二、 核心命令:SetNewItemValue 详解

现代引擎(GOM/GEE)添加灵魂属性主要使用 SetNewItemValue 命令。其格式为:
SetNewItemValue 装备位置 属性类型 操作符(+/-/=) 数值

属性类型对照表(关键)
属性代码 对应属性

0 致命一击几率

1 攻击伤害增加

2 物理伤害减少(吸收)

3 魔法伤害减少(吸收)

4 忽视目标防御

5 伤害反弹

6 人物体质增加

7 经验加成(部分引擎)

装备位置代码
• -1:OK框中的装备(需配合UPGRADEITEM放入)

• 1:武器

• 4:头盔

• 5:左手镯

• 6:右手镯

三、 完整脚本重写示例(以“物理伤害吸收”为例)

由于你提供的界面有8个功能,全部写完篇幅过长。以下以 “物理伤害吸收” 和 “致命一击” 为例,提供可直接粘贴的完整脚本。其他属性只需修改“属性代码”即可。

步骤1:修改NPC主脚本(替换原[@物理伤害]段)
[@物理伤害]
#IF
CHECKGAMEGOLD > 1999 ; 检查是否有2000元宝
; 可选:CheckNewItemValue 1 2 < 10 (检查武器吸收是否小于10点,防刷爆)
#ACT
TAKECREDIT 2000 ; 扣除2000元宝
SetNewItemValue 1 2 + 1 ; 给武器(位置1)增加1点物理伤害吸收(属性2)
SENDMSG 6 恭喜!武器物理伤害吸收+1点!
#ELSESAY
元宝不足2000点,无法进行锻造。


步骤2:其他属性脚本模板(以“致命一击”为例)
[@致命一击]
#IF
CHECKGAMEGOLD > 1999
#ACT
TAKECREDIT 2000
SetNewItemValue 1 0 + 1 ; 属性0=致命一击
SENDMSG 6 恭喜!武器致命一击几率+1%!
#ELSESAY
元宝不足2000点,无法进行锻造。


四、 针对不同引擎的适配修改

1. GOM/GEE引擎(主流):直接使用上述 SetNewItemValue 命令,属性代码按上表对应。
2. HERO/LEGEND引擎(老版):老引擎可能不支持新属性,需改用 元素系统 命令:
#ACT
TAKECREDIT 2000
SetItemsEffect 1 + 2 1 ; 给武器增加2号元素(物理吸收)1点
SENDMSG 6 锻造成功!

3. BLUE引擎:部分BLUE引擎需使用 CHANGEITEMADDVALUE 修改基础属性,或使用插件支持新属性。

五、 关于“附加经验”属性的特殊处理

你界面中的“增加经验”属性通常无法直接附加到装备上(除非引擎支持自定义属性)。常见的替代方案是:
• 方案A:改为给人物增加一个“经验倍数”的变量(如 INC <$HUMAN(经验倍数)> 10),在杀怪脚本中读取该变量。

• 方案B:使用 SetNewItemValue 1 7 + 1,前提是引擎的7号属性定义为经验加成(需测试)。

六、 脚本调试与常见错误

• 属性不显示:确认引擎支持“新属性”功能(GOM需勾选M2选项)。属性添加后需取下装备重新佩戴才能刷新显示。

• 扣费无效果:检查 TAKECREDIT 命令是否适用于你的版本(部分版本用 GAMEGOLD - 2000)。

• 文件路径错误:如果你仍想使用 #CALL 调用,确保路径为 QuestDiary\后台管理\物理伤害.txt,且文件内标签为 [@物理伤害吸收]。

建议:为避免外部文件丢失,建议直接将上述重写后的脚本代码粘贴到NPC脚本的对应标签下(如 [@物理伤害]),删除原有的 #CALL 行,这样所有逻辑都在一个文件内,便于管理。