GOM引擎传奇版本装备鉴定重洗教程
在 GOM 引擎传奇版本中,装备鉴定与重洗系统是提升装备多样性和玩家留存的核心玩法。以下从数据库配置、NPC 脚本开发、属性生成逻辑、重洗机制实现四个维度提供完整教程,并附实战代码:一、数据库基础配置(Item.DB)
1. 开启装备可鉴定属性
找到 D:\MirServer\Mir200\Envir\Item.DB(需用专用编辑器打开),修改目标装备参数:
ini
[屠龙刀]
...
CanIdentify=1 ; 1=可鉴定,0=不可鉴定
IdentifyMinAttack=1-3 ; 鉴定后最小攻击加成
IdentifyMaxAttack=5-10 ; 鉴定后最大攻击加成
IdentifyMinDefense=0-1 ; 鉴定后最小防御加成
IdentifyMaxDefense=0-3 ; 鉴定后最大防御加成
IdentifySpecial=1 ; 是否可能出现特殊属性(如吸血、麻痹)
IdentifyQuality=3 ; 鉴定品质等级(1-5,影响极品概率)
关键参数:CanIdentify 必须设为 1,否则无法触发鉴定逻辑。
二、鉴定卷轴配置(物品定义)
在 Item.DB 中添加鉴定道具:
ini
[鉴定卷轴]
Name=鉴定卷轴
Shape=123 ; 物品外观ID
AC=0
DC=0
...
UseScript=IdentifyItem ; 使用时触发的脚本段
若需区分品质(如普通 / 高级鉴定卷轴),可复制上述配置并修改 IdentifyQuality 关联参数。
三、NPC 鉴定系统脚本开发
1. 基础鉴定功能(QFunction-0.txt)
lua
[@main]
#SAY 欢迎来到装备鉴定师\
<鉴定装备/@Identify>\
<重洗鉴定属性/@ReIdentify>
[@Identify]
#IF
CHECKITEM 鉴定卷轴 1 ; 检查是否拥有鉴定卷轴
CHECKITEMW 屠龙刀 1 ; 检查是否佩戴可鉴定装备(或背包中有)
#ACT
TAKE 鉴定卷轴 1 ; 消耗卷轴
MOV S1 <$USERNAME> ; 记录玩家名称
GOTO @RandAttr ; 跳转至属性生成逻辑
#ELSESAY
你需要鉴定卷轴和可鉴定的装备!
[@RandAttr]
#ACT
; 随机生成攻击加成(范围取自Item.DB的IdentifyMin/MaxAttack)
RANDOMATTR 屠龙刀 Attack <$STR(IdentifyMinAttack)> <$STR(IdentifyMaxAttack)>
; 随机生成防御加成
RANDOMATTR 屠龙刀 Defense <$STR(IdentifyMinDefense)> <$STR(IdentifyMaxDefense)>
; 10%概率生成特殊属性(如吸血)
RANDOM 10
IF = 1
ADDITEMATTR 屠龙刀 吸血 1-2
ENDIF
; 显示鉴定结果
SENDMSG 6 恭喜<$STR(S1)>鉴定出: <S=屠龙刀;C=255> 攻击+<$STR(NewAttack)> 防御+<$STR(NewDefense)>
MESSAGEBOX 鉴定成功!
四、重洗机制实现(进阶功能)
1. 重洗脚本逻辑
lua
[@ReIdentify]
#IF
CHECKITEM 高级鉴定卷轴 1 ; 重洗需消耗高级卷轴
CHECKITEMW 屠龙刀 1 ; 检查装备是否已鉴定(需在Item.DB中记录鉴定状态)
CHECKITEMATTR 屠龙刀 IsIdentified 1 ; 验证装备已鉴定
#ACT
TAKE 高级鉴定卷轴 1 ; 消耗高级卷轴
MOV S2 <$USERNAME>
GOTO @ReRandAttr ; 跳转至重洗属性逻辑
#ELSESAY
你需要高级鉴定卷轴和已鉴定的装备!
[@ReRandAttr]
#ACT
; 清除原有鉴定属性
CLEARITEMATTR 屠龙刀 Identify ; 仅清除鉴定属性,保留基础属性
; 重新生成属性(范围比首次鉴定略高)
RANDOMATTR 屠龙刀 Attack <$STR(IdentifyMinAttack)+1> <$STR(IdentifyMaxAttack)+2>
RANDOMATTR 屠龙刀 Defense <$STR(IdentifyMinDefense)+1> <$STR(IdentifyMaxDefense)+1>
; 提升特殊属性概率至15%
RANDOM 100
IF < 15
ADDITEMATTR 屠龙刀 麻痹几率 1-3
ENDIF
; 显示重洗结果
SENDMSG 6 玩家<$STR(S2)>重洗装备: <S=屠龙刀;C=116> 新属性:攻击+<$STR(NewAttack)> 防御+<$STR(NewDefense)>
MESSAGEBOX 重洗成功!
五、属性生成逻辑优化
1. 品质分级机制
lua
; 在@RandAttr或@ReRandAttr中添加
RANDOM 100
IF < 20 ; 20%概率出极品
SETITEMQUALITY 屠龙刀 5 ; 品质5级,属性上限+20%
ELSEIF < 50 ; 30%概率出稀有
SETITEMQUALITY 屠龙刀 3 ; 品质3级,属性上限+10%
ELSE ; 50%概率普通
SETITEMQUALITY 屠龙刀 1 ; 基础品质
ENDIF
2. 职业专属属性
lua
; 根据玩家职业生成对应属性
CHECKCLASS 战士
IF TRUE
ADDITEMATTR 屠龙刀 准确 2-5
ELSE
CHECKCLASS 法师
IF TRUE
ADDITEMATTR 屠龙刀 魔法 1-3
ELSE
ADDITEMATTR 屠龙刀 道术 1-3
ENDIF
ENDIF
六、显示效果配置(颜色与格式)
在 ItemName.txt 中设置鉴定属性的显示格式:
ini
[屠龙刀]
...
IdentifyNameFormat=<S=%s;C=255> [鉴定属性: 攻击+%d 防御+%d]
; 极品属性特殊颜色
SuperIdentifyFormat=<S=%s;C=210> [极品鉴定: 攻击+%d 防御+%d 吸血+%d]
玩家查看装备时,会自动显示带颜色的鉴定属性。
七、常见问题与解决方案
1. 鉴定后属性不显示
检查 Item.DB 中 CanIdentify 是否设为 1
确认 ItemName.txt 格式是否正确,符号是否匹配 GOM 引擎规范(如 <S=文本;C=颜色值>)
2. 重洗后基础属性丢失
确保 CLEARITEMATTR 命令仅清除鉴定属性,参数应为 Identify 而非 All
示例错误:CLEARITEMATTR 屠龙刀 All(会清除所有属性)
3. 特殊属性概率异常
检查 RANDOM 命令参数是否正确(如 RANDOM 10 表示 10% 概率)
避免在循环中重复调用 ADDITEMATTR,可能导致属性叠加
八、完整流程测试
物品配置:确保 Item.DB 中装备和卷轴参数正确
脚本测试:通过 !debug 命令调试 NPC 对话流程
属性验证:使用 !itemattr 屠龙刀 命令查看生成的鉴定属性
性能监控:鉴定 / 重洗时观察 M2 控制台是否有报错,CPU 占用是否异常
通过以上配置,可实现从 “基础鉴定” 到 “品质分级重洗” 的完整系统。核心是通过 RANDOMATTR 命令控制属性随机性,结合 SETITEMQUALITY 实现品质差异,同时利用 GOM 引擎的颜色代码增强视觉反馈。建议根据服务器经济体系调整卷轴获取难度,避免属性膨胀过快。
页:
[1]