creature_model_info表

概述

creature_model_info表是AzerothCore中存储生物模型信息的表格。它定义了每个生物模型的物理属性、碰撞检测、性别信息等重要数据,这些信息对于游戏中的交互、战斗和显示效果至关重要。

表格作用

表格结构

字段名 数据类型 默认值 说明
DisplayID MEDIUMINT UNSIGNED 0 模型显示ID,主键
详细说明:生物模型的唯一标识符,对应客户端的模型文件。这是表的主键,每个模型ID都有唯一的属性配置。
取值范围:1 - 16777215
数据来源:
  • 从客户端CreatureDisplayInfo.dbc文件获取
  • 对应3D模型文件和贴图
  • 包含动画和特效信息
  • 决定生物的外观表现
BoundingRadius FLOAT 0 边界半径
详细说明:生物模型的边界半径,定义了生物占用的圆形区域大小。影响碰撞检测、攻击距离和移动路径计算。
单位:游戏码 (yards)
影响范围:
  • 碰撞检测 - 决定生物之间是否会相撞
  • 攻击距离 - 影响近战攻击的有效范围
  • 移动路径 - 影响寻路算法的计算
  • 技能释放 - 影响范围技能的作用区域

典型数值:
  • 小型生物 (老鼠、兔子): 0.3 - 0.8
  • 人型生物 (人类、兽人): 0.8 - 1.5
  • 大型生物 (熊、狼): 1.5 - 3.0
  • 巨型生物 (龙、巨人): 3.0 - 10.0+
CombatReach FLOAT 0 战斗距离
详细说明:生物的战斗距离,决定了生物进行近战攻击时的有效距离。这个值影响战斗中的距离判断和攻击命中计算。
单位:游戏码 (yards)
战斗机制:
  • 近战攻击 - 目标必须在此距离内才能进行近战攻击
  • 技能释放 - 影响近战技能的释放距离
  • 追击判断 - 决定何时停止追击并开始攻击
  • 仇恨计算 - 影响仇恨范围的计算

设计原则:
  • 通常略大于或等于BoundingRadius
  • 大型生物有更大的战斗距离
  • 考虑武器长度和攻击动画
  • 平衡游戏体验和真实感

典型数值:
  • 小型生物: 1.0 - 1.5
  • 人型生物: 1.5 - 2.0
  • 大型生物: 2.0 - 4.0
  • 巨型生物: 4.0 - 15.0+
Gender TINYINT UNSIGNED 2 性别 (0=男性, 1=女性, 2=无性别)
详细说明:模型的性别属性,影响某些技能效果、任务条件和社交系统的交互。
性别类型:
  • 0 - 男性:男性角色模型
  • 1 - 女性:女性角色模型
  • 2 - 无性别:中性或无性别生物 (默认值)

游戏影响:
  • 技能效果 - 某些魅惑类技能只对特定性别有效
  • 任务系统 - 部分任务可能有性别要求
  • 社交功能 - 影响表情和互动选项
  • 称谓显示 - 影响NPC的称呼和对话

设置建议:
  • 人型生物根据外观设置对应性别
  • 动物和怪物通常设置为无性别
  • 元素和机械生物设置为无性别
  • 特殊剧情NPC根据角色设定选择

使用示例

查看特定模型的信息

SELECT * FROM creature_model_info WHERE DisplayID = 1234;

查找大型生物模型

SELECT DisplayID, BoundingRadius, CombatReach 
FROM creature_model_info 
WHERE BoundingRadius > 3.0 
ORDER BY BoundingRadius DESC;

添加新模型信息

INSERT INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender)
VALUES (12345, 1.5, 2.0, 0);

批量更新战斗距离

UPDATE creature_model_info 
SET CombatReach = BoundingRadius * 1.2 
WHERE CombatReach = 0;

常见问题

BoundingRadius和CombatReach的关系?

CombatReach通常应该大于或等于BoundingRadius。CombatReach决定攻击距离,BoundingRadius决定碰撞体积。

如何为自定义模型设置合适的数值?

参考相似大小的官方模型数值,通过游戏内测试调整到合适的效果。一般来说,模型越大,数值应该越大。

性别设置对游戏有什么影响?

主要影响某些特定技能的作用效果,如魅惑类法术。大部分怪物设置为无性别即可。

缺失模型信息会怎样?

如果模型信息缺失,游戏会使用默认值,可能导致碰撞检测异常或攻击距离不正确。

数据维护

检查缺失的模型信息

SELECT DISTINCT ct.modelid1 
FROM creature_template ct 
LEFT JOIN creature_model_info cmi ON ct.modelid1 = cmi.DisplayID 
WHERE cmi.DisplayID IS NULL AND ct.modelid1 > 0;

统计模型使用情况

SELECT cmi.DisplayID, cmi.BoundingRadius, cmi.CombatReach, COUNT(ct.entry) as usage_count
FROM creature_model_info cmi
LEFT JOIN creature_template ct ON (ct.modelid1 = cmi.DisplayID OR ct.modelid2 = cmi.DisplayID OR ct.modelid3 = cmi.DisplayID OR ct.modelid4 = cmi.DisplayID)
GROUP BY cmi.DisplayID
ORDER BY usage_count DESC;

相关表格