achievement_criteria_data表

概述

achievement_criteria_data表是AzerothCore中为成就标准添加额外条件和数据的表格。它允许为成就的完成条件添加更复杂的限制,如特定地图、特定装备、特定时间等条件,使成就系统更加灵活和精确。

表格作用

表格结构

字段名 数据类型 默认值 说明
criteria_id MEDIUMINT 0 成就标准ID,对应Achievement_Criteria.dbc
type TINYINT UNSIGNED 0 条件类型
value1 MEDIUMINT UNSIGNED 0 条件值1
value2 MEDIUMINT UNSIGNED 0 条件值2
ScriptName VARCHAR(64) '' 脚本名称

字段详细说明

criteria_id (成就标准ID)

指定要添加额外条件的成就标准。对应Achievement_Criteria.dbc文件中的ID。

type (条件类型)

定义额外条件的类型:

value1/value2 (条件值)

根据条件类型的不同,这两个值有不同的含义:

ScriptName (脚本名称)

指定自定义的C++脚本来处理复杂的条件判断。

使用示例

限制成就只能在特定地图完成

INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12345, 6, 571); -- 只能在诺森德完成

限制成就只能击杀特定生物

INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12346, 1, 15989); -- 只能击杀阿尔萨斯

限制成就需要特定职业

INSERT INTO achievement_criteria_data (criteria_id, type, value1, value2)
VALUES (12347, 2, 1, 0); -- 只有战士职业可以完成

限制成就需要装备特定物品

INSERT INTO achievement_criteria_data (criteria_id, type, value1, value2)
VALUES (12348, 17, 49623, 15); -- 需要装备特定武器

限制成就需要在低血量时完成

INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12349, 3, 10); -- 血量低于10%时完成

常见应用场景

PVP成就

副本成就

探索成就

常见问题

如何查看某个成就标准的所有额外条件?

SELECT * FROM achievement_criteria_data 
WHERE criteria_id = 成就标准ID;

如何移除成就的额外条件?

DELETE FROM achievement_criteria_data 
WHERE criteria_id = 成就标准ID;

成就条件不生效的原因

修改后需要重启服务器吗?

.reload achievement_criteria_data

条件组合

可以为同一个成就标准添加多个条件,所有条件都必须同时满足:

-- 必须是战士职业
INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12350, 2, 1, 0);

-- 必须在特定地图
INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12350, 6, 571);

-- 必须血量低于50%
INSERT INTO achievement_criteria_data (criteria_id, type, value1)
VALUES (12350, 3, 50);

相关表格