📋 表概述

game_event_condition_save 表用于跟踪世界事件中带条件的子任务的完成进度。某些世界事件(如安其拉开门)需要玩家完成一系列条件任务才能推进,该表记录每个条件的完成数值(done),用于持久化事件进度。

📊 表结构

字段名数据类型默认值说明
eventEntrytinyint UNSIGNED(无)事件ID
condition_idint UNSIGNED0条件任务ID,标识事件中的子条件
donefloat0条件完成进度值(可为小数,如百分比)

🔍 重要字段详解

condition_id — 条件标识

世界事件中的子条件编号。一个大型世界事件可能包含多个条件任务(如收集物资、击杀首领、完成任务等),每个条件有独立的 condition_id 和完成进度。

done — 完成进度

使用 float 类型存储进度值。可以是绝对数值(如已收集物资数量),也可以是百分比(如 0.0 到 1.0)。当 done 值达到事件定义的目标后,条件即视为完成,事件推进到下一阶段。

💡 SQL查询示例

查看某个事件的所有条件进度

SELECT eventEntry, condition_id, done,
       CASE WHEN done >= 1 THEN '已完成' ELSE '进行中' END AS 状态
FROM game_event_condition_save
WHERE eventEntry = 1;

手动完成某个事件条件

UPDATE game_event_condition_save
SET done = 100
WHERE eventEntry = 1 AND condition_id = 5;

❓ 常见问题

Q: done 字段为什么是 float 而不是整数?

使用 float 可以表示小数进度(如百分比 0.75 表示 75%)。某些事件条件需要精确到小数的进度值,如物资收集可能需要 10000 个物品,当前收集了 7500 个,done = 0.75。

Q: 这个表的数据会被自动清理吗?

通常不会自动清理。事件结束后数据保留作为历史记录。如果需要清理,可以手动删除已结束事件的记录。