39传奇素材网 发表于 2025-8-14 18:46:34

如何检查规则ID的正确性

在 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 回收[木剑] 成功,奖励
无效 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 问题导致回收功能失效。

页: [1]
查看完整版本: 如何检查规则ID的正确性