|
The `disables` table This table is used to disable dungeons/bgs/spells/etc. Structure [td]Description of the fields sourceType[td]| Value | Type | | 0 | DISABLE_TYPE_SPELL | | 1 | DISABLE_TYPE_QUEST | | 2 | DISABLE_TYPE_MAP | | 3 | DISABLE_TYPE_BATTLEGROUND | | 4 | DISABLE_TYPE_ACHIEVEMENT_CRITERIA | | 5 | DISABLE_TYPE_OUTDOORPVP | | 6 | DISABLE_TYPE_VMAP | | 7 | DISABLE_TYPE_MMAP | | 8 | DISABLE_TYPE_LFG_MAP | | 9 | DISABLE_TYPE_GAME_EVENT | | 10 | DISABLE_TYPE_LOOT | entryEntry of Spell/Quest/Map/BG/Achievement/Map/GameEvent/Item. If sourceType = DISABLE_TYPE_SPELL: Entry of Spell If sourceType = DISABLE_TYPE_QUEST: If sourceType = DISABLE_TYPE_MAP: If sourceType = DISABLE_TYPE_VMAP: If sourceType = DISABLE_TYPE_MMAP: If sourceType = DISABLE_TYPE_OUTDOORPVP: If sourceType = DISABLE_TYPE_LFG_MAP: Entry of Map If sourceType = DISABLE_TYPE_ACHIEVEMENT_CRITERIA: Entry of Achievement If sourceType = DISABLE_TYPE_GAME_EVENT: If sourceType = DISABLE_TYPE_LOOT: flagsIf sourceType = DISABLE_TYPE_SPELL: Specifies who the spell is disabled for. [td]| Value | Type | | 0 | Spell enabled | | 1 | Spell disabled for players | | 2 | Spell disabled for creatures | | 4 | Spell disabled for pets | | 8 | Spell completely disabled (used for no logner existing spells in DBCs) | | 16 | Spell disabled for MapId | | 32 | Spell disabled for AreaId | | 64 | Line of Sight (LOS) is disabled for this spell (replaces "vmap.ignoreSpellIds" config option) |
Example: INSERT INTO `disables` VALUES (0, 8921, (1+16+32), "571,1", "1519", "Moonfire Example"); This will disable spell Moonfire (8921) for players in maps 571,1 and area 1519. If sourceType = DISABLE_TYPE_MAP: Specifies what type of map is disabled (5man/10man/heroic/etc). [td]| Value | Type | | 1 | DUNGEON_STATUS_FLAG_NORMAL OR RAID_STATUS_FLAG_10MAN_NORMAL | | 2 | DUNGEON_STATUS_FLAG_HEROIC OR RAID_STATUS_FLAG_25MAN_NORMAL | | 4 | RAID_STATUS_FLAG_10MAN_HEROIC | | 8 | RAID_STATUS_FLAG_25MAN_HEROIC |
The value is a bitmask of VALID modes for the specific map, 15 is as such NOT a valid mask on certain maps, only those actually found possible for the respective map. If sourceType = DISABLE_TYPE_VMAP: Specifies on which map should be vMap disabled [td]| Value | Type | | 1 | VMAP_DISABLE_AREAFLAG | | 2 | VMAP_DISABLE_HEIGHT | | 4 | VMAP_DISABLE_LOS | | 8 | VMAP_LIQUIDSTATUS |
Example: INSERT INTO `disables` VALUES (6, 1, (2 + 4), 0, 0, "Disable Kalimdor vMaps"); This will disable vMaps on whole Kalimdor. If sourceType = DISABLE_TYPE_QUEST: If sourceType = DISABLE_TYPE_ACHIEVEMENT_CRITERIA: If sourceType = DISABLE_TYPE_OUTDOORPVP: If sourceType = DISABLE_TYPE_MMAP: If sourceType = DISABLE_TYPE_LFG_MAP: If sourceType = DISABLE_TYPE_GAME_EVENT: If sourceType = DISABLE_TYPE_LOOT: No flags needed just add the entry to the table with `flags`=0. params_0MapId if DISABLE_TYPE_SPELL used, 0 for all maps. params_1AreaId if DISABLE_TYPE_SPELL used, 0 for all areas. commentA comment as to why the something was disabled, or any other text that you want. -----------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
这是一份针对 disables 表结构的详细中文注释说明。该表在大型服务端项目(如 AzerothCore 或 TrinityCore)中非常关键,主要用于在不修改客户端数据或重新编译源码的情况下,通过数据库快速禁用游戏内的特定内容。 disables 表:内容禁用配置表该表用于禁用特定的技能、任务、副本、战场等功能。 1. 表结构概览 (Table Structure)[td]| 字段名 (Field) | 类型 (Type) | 说明 | | sourceType | INT | 禁用类型:定义你要禁用的是什么(技能、任务、地图等)。 | | entry | INT | 对象编号:对应对象的 ID(如 Spell ID, Map ID, Quest ID)。 | | flags | TINYINT | 标识位:细化禁用的条件(例如:只对玩家禁用,或只在英雄模式禁用)。 | | params_0 | VARCHAR | 额外参数 0:通常用于指定地图 ID(MapId)。 | | params_1 | VARCHAR | 额外参数 1:通常用于指定区域 ID(AreaId)。 | | comment | VARCHAR | 备注:记录禁用的原因,方便后续维护。 |
2. 核心字段详细说明sourceType (禁用类型)此字段决定了 entry 指向哪个数据库表: 0: DISABLE_TYPE_SPELL (技能) 1: DISABLE_TYPE_QUEST (任务) 2: DISABLE_TYPE_MAP (副本/地图) 3: DISABLE_TYPE_BATTLEGROUND (战场) 4: DISABLE_TYPE_ACHIEVEMENT_CRITERIA (成就准则) 5: DISABLE_TYPE_OUTDOORPVP (野外 PVP) 6: DISABLE_TYPE_VMAP (VMap 地形碰撞) 7: DISABLE_TYPE_MMAP (MMap 寻路网格) 8: DISABLE_TYPE_LFG_MAP (随机副本查找器地图) 9: DISABLE_TYPE_GAME_EVENT (游戏节日/事件) 10: DISABLE_TYPE_LOOT (掉落物品)
flags (状态标识位)根据 sourceType 的不同,flags 的含义也不同(采用位掩码计算): 当 sourceType = 0 (技能) 时: 1: 对玩家禁用该技能。 2: 对生物禁用该技能。 4: 对宠物禁用该技能。 8: 完全禁用(该技能在 DBC 中已废弃时使用)。 16: 在指定地图中禁用(需配合 params_0)。 32: 在指定区域中禁用(需配合 params_1)。 64: 禁用该技能的 LoS(视线检测)。
当 sourceType = 2 (地图/副本) 时: 当 sourceType = 6 (VMAP) 时: 1: 禁用区域标识。 2: 禁用高度计算。 4: 禁用视线检查 (LOS)。 8: 禁用液体/水面状态检测。
3. 应用实例 (Examples)案例 A:在特定地图禁用技能如果你想在诺森德(Map 571)和暴风城(Area 1519)中对玩家禁用“月火术”(ID 8921): SQL
- -- flags = 1(玩家) + 16(地图限制) + 32(区域限制) = 49
复制代码
案例 B:完全禁用某个副本的英雄模式如果你想关闭某个地图 ID 为 530 的英雄模式(25人普通/5人英雄): SQL
- -- sourceType = 2 (地图), flags = 2 (英雄模式/25人)
复制代码
案例 C:禁用 VMap 地形检测在卡利姆多(Map 1)全境禁用高度和视线检测: SQL
- -- sourceType = 6 (VMAP), flags = 2(高度) + 4(视线) = 6
复制代码
4. 使用建议即时生效:通常修改此表后,需要在控制台输入 .reload disables 或重启服务端才能生效。 参数留空:如果不涉及特定地图或区域,params_0 和 params_1 建议填 "0"。 注释习惯:建议始终填写 comment 字段,因为当几个月后某个技能突然无法使用时,你会感谢现在的备注。
|