找回密码
立即注册
搜索
发新帖

999

积分

0

好友

126

主题
发表于 2024-5-16 21:48:22 | 查看: 3145| 回复: 0
The `disables` table
This table is used to disable dungeons/bgs/spells/etc.
Structure
[td]
FieldTypeAttributesKeyNullDefaultExtraComment
sourceTypeINTUNSIGNEDPRINONULL
entryINTUNSIGNEDPRINONULL
flagsTINYINTUNSIGNEDNO0
params_0VARCHAR(255)NO
params_1VARCHAR(255)NO
commentVARCHAR(255)NO
Description of the fields
sourceType[td]
ValueType
0DISABLE_TYPE_SPELL
1DISABLE_TYPE_QUEST
2DISABLE_TYPE_MAP
3DISABLE_TYPE_BATTLEGROUND
4DISABLE_TYPE_ACHIEVEMENT_CRITERIA
5DISABLE_TYPE_OUTDOORPVP
6DISABLE_TYPE_VMAP
7DISABLE_TYPE_MMAP
8DISABLE_TYPE_LFG_MAP
9DISABLE_TYPE_GAME_EVENT
10DISABLE_TYPE_LOOT
entry
Entry 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:
flags
If sourceType = DISABLE_TYPE_SPELL: Specifies who the spell is disabled for.
[td]
ValueType
0Spell enabled
1Spell disabled for players
2Spell disabled for creatures
4Spell disabled for pets
8Spell completely disabled (used for no logner existing spells in DBCs)
16Spell disabled for MapId
32Spell disabled for AreaId
64Line 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]
ValueType
1DUNGEON_STATUS_FLAG_NORMAL OR RAID_STATUS_FLAG_10MAN_NORMAL
2DUNGEON_STATUS_FLAG_HEROIC OR RAID_STATUS_FLAG_25MAN_NORMAL
4RAID_STATUS_FLAG_10MAN_HEROIC
8RAID_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]
ValueType
1VMAP_DISABLE_AREAFLAG
2VMAP_DISABLE_HEIGHT
4VMAP_DISABLE_LOS
8VMAP_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_0
MapId if DISABLE_TYPE_SPELL used, 0 for all maps.
params_1
AreaId if DISABLE_TYPE_SPELL used, 0 for all areas.
comment
A 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)说明
sourceTypeINT禁用类型:定义你要禁用的是什么(技能、任务、地图等)。
entryINT对象编号:对应对象的 ID(如 Spell ID, Map ID, Quest ID)。
flagsTINYINT标识位:细化禁用的条件(例如:只对玩家禁用,或只在英雄模式禁用)。
params_0VARCHAR额外参数 0:通常用于指定地图 ID(MapId)。
params_1VARCHAR额外参数 1:通常用于指定区域 ID(AreaId)。
commentVARCHAR备注:记录禁用的原因,方便后续维护。

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 (地图/副本) 时:
  • 1: 禁用 5人普通 或 10人普通模式。
  • 2: 禁用 5人英雄 或 25人普通模式。
  • 4: 禁用 10人英雄模式。
  • 8: 禁用 25人英雄模式。
  • 提示:若要禁用全部模式,将数值累加即可(1+2+4+8 = 15)。


当 sourceType = 6 (VMAP) 时:
  • 1: 禁用区域标识。
  • 2: 禁用高度计算。
  • 4: 禁用视线检查 (LOS)。
  • 8: 禁用液体/水面状态检测。



3. 应用实例 (Examples)案例 A:在特定地图禁用技能
如果你想在诺森德(Map 571)和暴风城(Area 1519)中对玩家禁用“月火术”(ID 8921):
SQL

  1. -- flags = 1(玩家) + 16(地图限制) + 32(区域限制) = 49
复制代码

案例 B:完全禁用某个副本的英雄模式
如果你想关闭某个地图 ID 为 530 的英雄模式(25人普通/5人英雄):
SQL

  1. -- sourceType = 2 (地图), flags = 2 (英雄模式/25人)
复制代码

案例 C:禁用 VMap 地形检测
在卡利姆多(Map 1)全境禁用高度和视线检测:
SQL

  1. -- sourceType = 6 (VMAP), flags = 2(高度) + 4(视线) = 6
复制代码


4. 使用建议
  • 即时生效:通常修改此表后,需要在控制台输入 .reload disables 或重启服务端才能生效。
  • 参数留空:如果不涉及特定地图或区域,params_0 和 params_1 建议填 "0"。
  • 注释习惯:建议始终填写 comment 字段,因为当几个月后某个技能突然无法使用时,你会感谢现在的备注。



您需要登录后才可以回帖 登录 | 立即注册

QQ群:193157782|Blog|AzerothCore|AC zhCN Linktrees ( 苏ICP备2023024864号-2 )

GMT+8, 2026-5-16 06:16 , Processed in 0.040106 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表