传统模式 · 配置参考
属性转化【需求、花费、获得】
传统模式控件和事件中的条件、扣除、发放字段及原子执行顺序。
# 属性转化字段参考
# 三段式契约
| 区域 | 是否写入 | 作用 |
|---|---|---|
需求 |
否 | 判断是否允许继续 |
花费 |
是 | 成功前扣除玩家或对象资源 |
获得 |
是 | 成功后写入属性、对象、字符串或表格 |
需求不满足时,花费和获得都不应执行。花费不足时不得只完成部分扣除。
# 常用字段
| 字段 | 说明 |
|---|---|
属性 |
目标属性 ID |
比较方式 |
等于、大于等于、小于、不包含等 |
目标数值/目标文本 |
比较或写入的值 |
公式 |
动态计算数值 |
概率/权重 |
控制分支命中 |
前置条件 |
为当前条目追加条件 |
| 玩家/对象版本 | 决定写入主体 |
# 执行顺序
显示需求 -> 运行需求判断 -> 校验全部花费 -> 一次性扣除 -> 发放获得 -> 显示反馈
事件、控件和插件可能有额外触发条件,但不能改变这条基本顺序。
# 把一条转化定义完整
每一条转化都要记录:
- 触发器所有者,以及当前玩家/对象上下文;
- 需求两侧输入、比较符和全部/任意组合;
- 每项花费的所有者、数量和资源不足行为;
- 每项获得的所有者、数量/内容,以及覆盖或累加语义;
- 概率或分支规则;
- 拒绝、取消、成功和基础设施部分失败时的反馈;
- 重复输入和重试策略。
不能因为字段在界面上分成一组,就假设它们天然原子化。如果多个字段属于同一业务事务,验收必须证明后续校验失败时不会留下前面的写入。
# 目标所有权矩阵
| 目标 | 身份规则 | 安全写入边界 |
|---|---|---|
| 玩家属性 | 稳定属性 ID | 全部需求/花费验证后写入 |
| 当前对象 | 上下文中的稳定对象 ID | 对象缺失或已销毁时拒绝 |
| 筛选对象 | 筛选结果和稳定对象 ID | 每个选中实例只执行一次 |
| 动态字符串 | 可写且非脚本模式的字符串 ID | 成功后写入最终文本 |
| 动态表格 | 表格 ID 与明确行列 | 验证动态类型和边界 |
| 插件/平台动作 | 平台请求身份 | 只在定义的成功点提交本地状态 |
# 特殊目标
绑定对象时,需求、花费和获得可以分别作用于玩家或当前对象。对象筛选器决定命中集合;对象 ID 才是稳定身份。字符串和表格写入也属于获得结果,需确认目标可写。
# 迁移风险
不要把同一扣除或奖励同时配置在转化字段和 js_g。概率与权重不是保证命中;多个条目的“全部满足/任意满足”和停止策略必须明确。复杂跨系统事务应迁移到一个显式脚本,并保留失败回滚。
# 失败诊断
| 现象 | 常见原因 |
|---|---|
| 动作失败仍扣除花费 | 全部校验完成前已经发生写入 |
| 奖励发放两次 | 字段和脚本重复结算,或重复输入未锁定 |
| 修改了错误对象 | 用数组下标/名称代替稳定对象 ID |
| 显示需求与实际执行不同 | 渲染判断和动作判断读取不同来源 |
| 重试重复执行 | 请求结果没有与本地幂等标记对账 |
# 验收
测试需求不足、花费不足、多个花费、对象筛选为空、概率未命中、成功一次、快速重复点击和脚本异常,确认没有部分写入或重复奖励。
下一页:深入理解控件。