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

    QQ登录

    只需一步,快速开始

    查看: 16|回复: 0

    如何检查规则ID的正确性

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

    7084

    主题

    150

    回帖

    8650

    积分

    管理员

    本站站长

    积分
    8650
    online_admin 发表于 2025-8-14 18:46:34 | 显示全部楼层 |阅读模式
    在 GEE 引擎中,规则 ID 是ITEMRECYCLESET预设回收规则的唯一标识,其正确性直接影响回收功能是否生效。检查规则 ID 的正确性需从范围有效性、唯一性、调用匹配性和实际生效性四个维度验证,具体方法如下:
    一、检查规则 ID 的范围有效性
    GEE 引擎对规则 ID 有明确的范围限制,超出范围的 ID 会被引擎直接忽略:

    合法范围:1~9999(闭区间,整数,不可为 0、负数或小数)。
    检查方法:
    直接查看脚本中ITEMRECYCLESET命令的第一个参数(规则 ID),确认其数值在1~9999之间。
    若使用变量动态生成 ID(如<$STR(N1)>),需在脚本中添加日志输出验证变量值:
    plaintext
    #ACT
      MOV N1 10000  // 错误示例:ID=10000超出范围
      SENDMSG 6 规则ID值:<$STR(N1)>  // 游戏内会显示ID值,确认是否在合法范围
      ITEMRECYCLESET <$STR(N1)> ...  // 若ID超范围,此规则无效

    二、检查规则 ID 的唯一性(核心步骤)
    规则 ID 必须全局唯一,重复的 ID 会导致后定义的规则覆盖先定义的规则,造成逻辑混乱。检查方法如下:
    1. 全局搜索重复定义
    工具:使用 Notepad++、VS Code 等文本编辑器的 “全局搜索” 功能。
    操作:
    打开引擎的Envir目录(脚本核心目录)。
    搜索关键词ITEMRECYCLESET 目标ID(如检查 ID=10,搜索ITEMRECYCLESET 10)。
    若搜索结果显示该 ID 在多个脚本(如QuestDiary/回收商人.txt和GlobalQuest.txt)中被定义,则存在重复,需修改其中一个 ID。
    示例:
    若在A.txt中定义ITEMRECYCLESET 10 ...,又在B.txt中定义ITEMRECYCLESET 10 ...,则B.txt的规则会覆盖A.txt的规则,导致A.txt中调用 ID=10 时执行的是B.txt的逻辑。
    2. 按功能分类 ID(预防重复)
    为避免重复,建议按功能对 ID 分组(如固定区间分配):

    1~99:新手装备回收
    100~199:武器回收
    200~299:首饰回收
    300~399:活动专属回收
    记录分组规则到README.txt,便于后期维护。
    三、检查规则 ID 的调用匹配性
    即使 ID 本身合法且唯一,若调用时 ID 写错(如数字错误、格式错误),也会导致回收失败。需检查调用处的ITEMRECYCLEEX命令:
    1. 调用格式正确性
    ITEMRECYCLEEX调用规则 ID 的格式必须为:

    plaintext
    ITEMRECYCLEEX 玩家名 规则ID=目标ID  // 正确格式,注意“规则ID=”与数字之间无空格

    错误格式示例:
    ITEMRECYCLEEX 张三 10(缺少规则ID=前缀,引擎会误认为 “物品名称 = 10”,导致匹配失败)。
    ITEMRECYCLEEX 张三 规则ID= 10(=后有空格,引擎无法识别 ID)。
    2. 调用 ID 与定义 ID 一致性
    检查ITEMRECYCLEEX中的目标 ID 是否与ITEMRECYCLESET中定义的 ID 完全一致(数字是否相同):

    例如:定义时用ITEMRECYCLESET 10 ...,调用时写成ITEMRECYCLEEX ... 规则ID=11,则会因 ID 不匹配导致调用无效规则。
    四、验证规则 ID 的实际生效性
    通过实际测试和日志检查,确认规则 ID 被引擎正确识别并执行:
    1. 编写测试脚本验证
    创建简易测试 NPC 脚本,调用目标 ID 并观察效果:

    plaintext
    // 文件名:QuestDiary/ID测试.txt
    #TITLE ID测试NPC
    #ACT
      // 定义待测试的规则ID=50
      ITEMRECYCLESET 50 木剑 0 0 1 1000 2 5000
      // 调用该ID
      ITEMRECYCLEEX <$USERNAME> 规则ID=50
      SENDMSG 6 已调用规则ID=50,检查背包和奖励!

    测试步骤:
    玩家携带 1 把 “木剑” 与该 NPC 对话。
    若木剑被回收,且获得 1000 金币 + 5000 经验,说明 ID=50 有效。
    若木剑未回收且无奖励,说明 ID 无效(需返回前几步排查)。
    2. 查看引擎日志确认
    引擎会在Log/Recycle.log中记录所有回收操作,包括规则 ID 的执行情况:

    有效 ID 日志示例:
    2023-10-01 15:30:00 玩家[测试] 调用规则ID=50 回收[木剑] 成功,奖励[1000金币,5000经验]
    无效 ID 日志示例:
    2023-10-01 15:31:00 玩家[测试] 调用规则ID=99999 失败:ID超出范围
    2023-10-01 15:32:00 玩家[测试] 调用规则ID=50 失败:未找到该规则定义
    五、常见 ID 错误案例与解决方案
    错误现象        本质原因        解决方案
    调用后无任何反应        ID=0 或超出 9999        将 ID 修改为 1~9999 之间的整数
    回收结果与预期不符        ID 重复定义(被后定义规则覆盖)        全局搜索重复 ID,修改其中一个为新 ID
    提示 “未找到规则”        调用时 ID 写错(如 10 写成 100)        核对调用处与定义处的 ID 是否完全一致
    调用格式错误导致失效        缺少 “规则 ID=” 前缀        修正调用格式为ITEMRECYCLEEX ... 规则ID=目标ID
    六、总结:规则 ID 检查清单
    为确保规则 ID 正确,建议按以下步骤执行:

    确认 ID 数值在1~9999之间(非 0、非负、整数)。
    全局搜索 ID,确保无重复定义(仅出现一次)。
    检查调用格式是否为规则ID=目标ID(无空格、无拼写错误)。
    调用 ID 与定义 ID 完全一致(数字相同)。
    通过测试脚本执行回收,观察物品和奖励变化。
    查看Recycle.log,确认日志中存在该 ID 的有效记录。

    通过以上步骤,可全面验证规则 ID 的正确性,避免因 ID 问题导致回收功能失效。

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

    本版积分规则

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

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