设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 5|回复: 0

    GOM引擎传奇版本装备鉴定重洗教程

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:130
    • 打卡月天数:23
    • 打卡总奖励:14868
    • 最近打卡:2025-08-23 00:38:01

    7043

    主题

    150

    回帖

    8609

    积分

    管理员

    本站站长

    积分
    8609
    online_admin 发表于 前天 16:18 | 显示全部楼层 |阅读模式
    在 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 引擎的颜色代码增强视觉反馈。建议根据服务器经济体系调整卷轴获取难度,避免属性膨胀过快。

    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表