表概述

dungeon_access_requirements表配合dungeon_access_template使用,为每个副本进入模板添加具体的前置条件。支持三种条件类型:成就、任务和物品。系统会检查玩家是否满足所有条件才允许进入。

主键为 (dungeon_access_id, requirement_type, requirement_id),支持faction阵营区分和leader_only队长检查。

表结构

字段名数据类型默认值说明
dungeon_access_idTINYINT UNSIGNEDNOT NULL对应dungeon_access_template.id(主键)
requirement_typeTINYINT UNSIGNEDNOT NULL条件类型:0=成就 1=任务 2=物品(主键)
requirement_idINT UNSIGNEDNOT NULL成就/任务/物品ID(主键)
requirement_noteVARCHAR(255)NULL不满足条件时显示给玩家的提示
factionTINYINT UNSIGNED2阵营:0=联盟 1=部落 2=双方
priorityTINYINT UNSIGNEDNULL优先级(0最高),同类型排序
leader_onlyTINYINT00=检查自己 1=检查队长
commentVARCHAR(255)NULL注释

重要字段详解

requirement_type (条件类型)

三种进入条件类型:

  • 0 - 成就:requirement_id为成就ID
  • 1 - 任务:requirement_id为任务ID(需完成或持有)
  • 2 - 物品:requirement_id为物品ID(需拥有)
leader_only (队长检查)

控制条件检查对象:

  • 0 - 检查正在进入的玩家自身
  • 1 - 检查队伍/团队队长

当leader_only=1时,只要队长满足条件,全队就能进入(如钥匙开门)。

实战案例

设置ICC英雄模式需要成就+阵营限制
INSERT INTO dungeon_access_requirements
(dungeon_access_id, requirement_type, requirement_id, requirement_note, faction, leader_only, comment)
VALUES
(101, 0, 4530, '需要成就:冰冠堡垒(英雄)', 2, 0, 'ICC英雄-需要成就');
查询某模板的所有进入条件
SELECT requirement_type,
       CASE requirement_type
           WHEN 0 THEN '成就'
           WHEN 1 THEN '任务'
           WHEN 2 THEN '物品'
       END AS type_name,
       requirement_id, requirement_note, faction, leader_only
FROM dungeon_access_requirements
WHERE dungeon_access_id = 30
ORDER BY requirement_type, priority;

常见问题

Q: 多个条件时如何检查?

A: 所有条件必须全部满足(AND逻辑)。如果任一条件不满足,玩家无法进入副本并看到requirement_note中的提示信息。

Q: faction=2的效果?

A: 双方阵营均需满足该条件。如果要让联盟和部落有不同的进入条件,使用两条记录分别设置faction=0和faction=1即可。