查看“︁工程参考/配置文件/Public/MonsterAttrExTable.txt”︁的源代码
来自天龙知识库
←
工程参考/配置文件/Public/MonsterAttrExTable.txt
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:<span style="font-size:24px;line-height:1.4;overflow-wrap:anywhere;">工程参考/配置文件/Public/MonsterAttrExTable.txt</span>}} __NOTOC__ <div class="config-file-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;"> [[首页|首页]] · [[工程参考/配置文件索引|配置文件索引]] · [[工程参考/配置文件修改约定|修改约定]] MonsterAttrExTable.txt 是怪物模板的扩展属性表:第 1 列是怪物编号,第 2 列是名称,第 3 到 15 列是性别、等级、经验、AI、阵营、掉落与 BOSS 等通用参数,第 16 到 42 列是战斗属性(物理/魔法攻防、生命内力、命中闪避会心、速度、四系攻防与抵抗削减),第 43 列之后是免疫、表现与满级上限。样本 9535 条数据记录、70 列。服务端只读取其中一部分列(见下)。 [[#文件位置与生效|位置与生效]] · [[#文件格式|文件格式]] · [[#字段详解|字段详解]] · [[#常用修改实例|修改实例]] == 文件位置与生效 == {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 项目 ! scope="col" style="width:76%;text-align:left;background:#edf3f2;padding:8px;" | 说明 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 运行文件 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">../Public/Config/MonsterAttrExTable.txt</code>,相对于服务端工作目录;客户端从资源目录读取同名文件。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 读取程序 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Server 游戏进程:TableInit::InitMonsterAttrExTable 通过 FILE_MONSTER_ATTREX(../Public/Config/MonsterAttrExTable.txt)加载;客户端 GMDataBase.cpp 把 DBC_CREATURE_ATT 注册到同名文件 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 生效方法 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 正常保存并停服后,重启读取此文件的 Server;客户端需要随资源更新并重启客户端。当前检索未发现单独重载本文件的可用入口。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 样本格式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">GB18030-compatible</code>,<code style="white-space:normal;overflow-wrap:anywhere;">CRLF</code>。保留原编码;源码读取器不会自动把中文转为 UTF-8。 |} 服务端 InitMonsterAttrExTable 用一份 0 基列枚举取值,枚举值加 1 就是列号。怪物编号(第 1 列)同时被当作 g_MonsterAttrExTbl 的下标,必须落在 0 到 MAXTYPE_NUMBER-1(65534),越界会触发 AssertEx 并跳过该行。加载前还会断言 MonsterCombatClass(69) 小于实际列数,也就是本表至少要 70 列。 第 16 到 42 列的战斗属性被写进 m_Table[CATTR_LEVEL2_*],与人物属性走同一套二级属性枚举;第 3 到 15 列与第 52 到 64 列、第 68 到 70 列写进 m_TableExt。 服务端没有读取的列是第 45 到 51 列(外型、信息板、转向、名字板高度、选中环、阴影、头像)、第 61 列(是否在小地图上显示)与第 65 到 67 列(融合/闪避/搁挡动作、外观类型、强度类型)——这些属于表现层,改它们只影响客户端。 == 文件格式 == 首行是类型行:<code style="white-space:normal;overflow-wrap:anywhere;">INT STRING INT INT INT INT INT INT INT INT INT INT FLOAT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT FLOAT FLOAT FLOAT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT</code>;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。 == 字段详解 == 列号从 1 开始,源码列下标从 0 开始。 {| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;" ! scope="col" style="width:34%;text-align:left;background:#edf3f2;padding:8px;" | 字段与类型 ! scope="col" style="width:42%;text-align:left;background:#edf3f2;padding:8px;" | 含义与修改要点 ! scope="col" style="width:24%;text-align:left;background:#edf3f2;padding:8px;" | 缺项或特殊值 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 1 列</code><br>INT:怪物编号 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 怪物模板编号(主键)。MonsterType=0 读第 1 列,服务端同时把它当作 g_MonsterAttrExTbl 的下标,必须落在 0 到 MAXTYPE_NUMBER-1(65534)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 越界会触发 AssertEx 并 continue 跳过该行。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 2 列</code><br>STRING:名称$1$ | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 怪物名称。MonsterName=1,服务端 strncpy 到 m_Name。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空字符串。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 3 列</code><br>INT:怪物性别 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterSex=2,存为 m_nSex。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 4 列</code><br>INT:等级 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterLevel=3,存为 m_Level。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 5 列</code><br>INT:基础经验获得 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterExp=4,存为 m_BaseExp,击杀后按此值结算基础经验。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 6 列</code><br>INT:友好值 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterFriendValue=5,存为 m_FriendValue。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 7 列</code><br>INT:休闲间隔时间 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterIdleInterval=6,存为 m_nIdleInterval,非战斗状态下的动作间隔。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 8 列</code><br>INT:基础AI | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterBaseAI=7,存为 m_BaseAI,指向怪物基础 AI 策略。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 9 列</code><br>INT:扩展AI | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterExtAI=8,存为 m_ExtAI,在基础 AI 之上叠加的行为。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 10 列</code><br>INT:阵营 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterCamp=9,存为 m_Camp,决定敌我关系。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 11 列</code><br>INT:掉落分配半径(米) | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterDropSearchRange=10,存为 m_DropSearchRange(读入时用 (FLOAT)iValue 强转),判定掉落归属时的搜索半径。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 12 列</code><br>INT:掉落最大有效组 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterDropTeamCount=11,存为 m_SearchTeamCount,一次掉落最多分配给多少个队伍。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 13 列</code><br>FLOAT:最小伤血百分比 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMinDamagePercent=12,存为 m_fMinDamagePercent,读取时用 fValue 并断言落在 0.0 到 1.0。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 超出 0..1 会触发断言;空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 14 列</code><br>INT:是否可以交互 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterCanHandle=13,存为 m_CanHandle,非零表示玩家可以与该怪物交互。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0(不可交互)。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 15 列</code><br>INT:BOSS标记 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterBossFlag=14,存为 m_BossFlag,非零标记为 BOSS。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 16 列</code><br>INT:物理攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKRATE_P=15,写入 m_Table[CATTR_LEVEL2_ATTACKRATE_P]。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 17 列</code><br>INT:物理防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCE_P=16,写入 CATTR_LEVEL2_DEFENCE_P。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 18 列</code><br>INT:魔法攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKRATE_M=17,写入 CATTR_LEVEL2_ATTACKRATE_M。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 19 列</code><br>INT:魔法防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCE_M=18,写入 CATTR_LEVEL2_DEFENCE_M。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 20 列</code><br>INT:HP上限 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_MAXHP=19,写入 CATTR_LEVEL2_MAXHP。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 21 列</code><br>INT:MP上限 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_MAXMP=20,写入 CATTR_LEVEL2_MAXMP。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 22 列</code><br>INT:HP回复 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_RESTOREHP=21,写入 CATTR_LEVEL2_RESTOREHP。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 23 列</code><br>INT:MP回复 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_RESTOREMP=22,写入 CATTR_LEVEL2_RESTOREMP。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 24 列</code><br>INT:命中率 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_HIT=23,写入 CATTR_LEVEL2_HIT。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 25 列</code><br>INT:闪避 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_MISS=24,写入 CATTR_LEVEL2_MISS。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 26 列</code><br>INT:会心率 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_CRITRATE=25,写入 CATTR_LEVEL2_CRITRATE。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 27 列</code><br>INT:会心防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_CRITDEFENCE=26,写入 CATTR_LEVEL2_CRITDEFENCE。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 28 列</code><br>INT:移动速度 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_SPEED=27,写入 CATTR_LEVEL2_SPEED。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 29 列</code><br>INT:步行速度 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterWalkSpeed=28,存为 m_WalkSpeed,与第 28 列的移动速度分开配置。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 30 列</code><br>INT:攻击速度 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKSPEED=29,写入 CATTR_LEVEL2_ATTACKSPEED。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 31 列</code><br>INT:冰攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKCOLD=30,写入 CATTR_LEVEL2_ATTACKCOLD。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 32 列</code><br>INT:冰防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCECOLD=31,写入 CATTR_LEVEL2_DEFENCECOLD。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 33 列</code><br>INT:降低目标冰抵抗 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_COLD_RESISTOTHER=32,写入 CATTR_LEVEL2_COLD_RESISTOTHER。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 34 列</code><br>INT:火攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKFIRE=33,写入 CATTR_LEVEL2_ATTACKFIRE。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 35 列</code><br>INT:火防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCEFIRE=34,写入 CATTR_LEVEL2_DEFENCEFIRE。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 36 列</code><br>INT:降低目标火抵抗 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_FIRE_RESISTOTHER=35,写入 CATTR_LEVEL2_FIRE_RESISTOTHER。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 37 列</code><br>INT:电攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKLIGHT=36,写入 CATTR_LEVEL2_ATTACKLIGHT。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 38 列</code><br>INT:电防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCELIGHT=37,写入 CATTR_LEVEL2_DEFENCELIGHT。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 39 列</code><br>INT:降低目标玄抵抗 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_LIGHT_RESISTOTHER=38,写入 CATTR_LEVEL2_LIGHT_RESISTOTHER。注意列名写作「玄」,但枚举与第 37、38 列同属 LIGHT(电)系,服务端按列号读取,因此本列实际作为电系抵抗削减生效。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 40 列</code><br>INT:毒攻击 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_ATTACKPOISON=39,写入 CATTR_LEVEL2_ATTACKPOISON。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 41 列</code><br>INT:毒防御 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_DEFENCEPOISON=40,写入 CATTR_LEVEL2_DEFENCEPOISON。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 42 列</code><br>INT:降低目标毒抵抗 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | Monster_CATTR_LEVEL2_POISON_RESISTOTHER=41,写入 CATTR_LEVEL2_POISON_RESISTOTHER。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 43 列</code><br>INT:瞬时效果免疫ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterBossSnapImmID=42,存为 m_SnapSkillImmID,对特定瞬时类效果的免疫配置编号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 44 列</code><br>INT:持续效果免疫ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterBossDurationImmID=43,存为 m_DurationSkillImmID,对特定持续类效果的免疫配置编号。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 45 列</code><br>INT:外型ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 表现层用的怪物外型编号。服务端 InitMonsterAttrExTable 的列枚举里没有这一列(枚举从 43 直接跳到 51)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读;改它不影响战斗数值。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 46 列</code><br>INT:是否显示头顶信息板 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否显示头顶信息板。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 47 列</code><br>INT:转向模式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 转向表现模式。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 48 列</code><br>FLOAT:名字板高度 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 头顶名字板的高度。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 49 列</code><br>FLOAT:选中环大小 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 被选中时脚下光环的大小。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 50 列</code><br>FLOAT:阴影大小 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 模型投影阴影的大小。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 51 列</code><br>STRING:人物头像 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 界面上显示的头像资源。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 52 列</code><br>INT:攻击动作时间 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterAttackAnimTime=51,存为 m_AttackAnimTime,攻击动作的播放时长。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 53 列</code><br>INT:攻击冷却时间 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterAttackCooldownTime=52,存为 m_AttackCooldownTime。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 54 列</code><br>INT:MaxLv | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevel=53,存为 m_MaxLevel,怪物可达到的最高等级。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 55 列</code><br>INT:MaxExp | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelBaseExp=54,存为 m_MaxLevel_BaseExp,满级时的经验基数。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 56 列</code><br>INT:MaxAtt | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelAttackrateP=55,存为 m_MaxLevel_Attackrate_P,满级时的物理攻击。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 57 列</code><br>INT:MaxDef | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelDefenceP=56,存为 m_MaxLevel_Defence_P,满级时的物理防御。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 58 列</code><br>INT:MaxMag | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelAttackrateM=57,存为 m_MaxLevel_Attackrate_M,满级时的魔法攻击。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 59 列</code><br>INT:MaxRes | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelDefenceM=58,存为 m_MaxLevel_Defence_M,满级时的魔法防御。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 60 列</code><br>INT:MaxHP | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterMaxLevelMaxHP=59,存为 m_MaxLevel_MaxHP,满级时的生命上限。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 61 列</code><br>INT:是否在小地图上显示 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否在小地图上显示该怪物。服务端 InitMonsterAttrExTable 的列枚举里没有这一列(60 被跳过)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 62 列</code><br>INT:势力ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterReputationID=61,存为 m_nReputationID,关联声望/势力配置。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 63 列</code><br>INT:攻击特性ID | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterAttackTraitID=62,存为 m_nAttackTraitID,指向攻击特性表(见关联页面)。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 64 列</code><br>INT:是否攻击NPC | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterFightWithNPC=63,存为 m_bFightWithNPC,判断方式是 0 < 该列值,即只有正数才算「会攻击 NPC」。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空或 0 为否。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 65 列</code><br>INT:是否播放融合,闪避,搁挡动作 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 是否播放融合、闪避、搁挡动作。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 66 列</code><br>INT:外观类型 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 外观分类。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 67 列</code><br>INT:强度类型 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 强度分类。服务端枚举未包含。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 服务端不读。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 68 列</code><br>INT:交互方式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterOperateType=67,存为 m_nOperateType,玩家可以对该怪物执行的操作类型。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 69 列</code><br>INT:激活时间 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterActivateTime=68,存为 m_nActivateTime。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |- | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">第 70 列</code><br>INT:战斗方式 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | MonsterCombatClass=69,存为 m_nCombatClass。加载前会断言 MonsterCombatClass < 实际列数,即本表至少要 70 列。 | style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 空为 0。 |} == 常用修改实例 == 示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。 === 把 0 号怪物(段誉)的基础经验获得从 2023 改成 3000 === 修改前: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT STRING INT INT INT INT INT INT INT INT INT INT FLOAT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT FLOAT FLOAT FLOAT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT 怪物编号 名称$1$ 怪物性别 等级 基础经验获得 友好值 休闲间隔时间 基础AI 扩展AI 阵营 掉落分配半径(米) 掉落最大有效组 最小伤血百分比 是否可以交互 BOSS标记 物理攻击 物理防御 魔法攻击 魔法防御 HP上限 MP上限 HP回复 MP回复 命中率 闪避 会心率 会心防御 移动速度 步行速度 攻击速度 冰攻击 冰防御 降低目标冰抵抗 火攻击 火防御 降低目标火抵抗 电攻击 电防御 降低目标玄抵抗 毒攻击 毒防御 降低目标毒抵抗 瞬时效果免疫ID 持续效果免疫ID 外型ID 是否显示头顶信息板 转向模式 名字板高度 选中环大小 阴影大小 人物头像 攻击动作时间 攻击冷却时间 MaxLv MaxExp MaxAtt MaxDef MaxMag MaxRes MaxHP 是否在小地图上显示 势力ID 攻击特性ID 是否攻击NPC 是否播放融合,闪避,搁挡动作 外观类型 强度类型 交互方式 激活时间 战斗方式 0 段誉 1 120 2023 0 10 3 -1 8 20 1 0.1 1 0 4174 1568 4174 1568 32384 3795 0 0 2431 231 10 10 1800 0 0 0 60 0 0 60 0 0 60 0 0 60 0 -1 -1 12 1 1 -1 100 100 set:CommonNPCHeader12 image:CommonNPCHeader12_3 1200 2400 -1 -1 -1 -1 -1 -1 -1 1 15 10 0 0 2 1 0 0 0</pre> 修改后: <pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">INT STRING INT INT INT INT INT INT INT INT INT INT FLOAT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT FLOAT FLOAT FLOAT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT 怪物编号 名称$1$ 怪物性别 等级 基础经验获得 友好值 休闲间隔时间 基础AI 扩展AI 阵营 掉落分配半径(米) 掉落最大有效组 最小伤血百分比 是否可以交互 BOSS标记 物理攻击 物理防御 魔法攻击 魔法防御 HP上限 MP上限 HP回复 MP回复 命中率 闪避 会心率 会心防御 移动速度 步行速度 攻击速度 冰攻击 冰防御 降低目标冰抵抗 火攻击 火防御 降低目标火抵抗 电攻击 电防御 降低目标玄抵抗 毒攻击 毒防御 降低目标毒抵抗 瞬时效果免疫ID 持续效果免疫ID 外型ID 是否显示头顶信息板 转向模式 名字板高度 选中环大小 阴影大小 人物头像 攻击动作时间 攻击冷却时间 MaxLv MaxExp MaxAtt MaxDef MaxMag MaxRes MaxHP 是否在小地图上显示 势力ID 攻击特性ID 是否攻击NPC 是否播放融合,闪避,搁挡动作 外观类型 强度类型 交互方式 激活时间 战斗方式 0 段誉 1 120 3000 0 10 3 -1 8 20 1 0.1 1 0 4174 1568 4174 1568 32384 3795 0 0 2431 231 10 10 1800 0 0 0 60 0 0 60 0 0 60 0 0 60 0 -1 -1 12 1 1 -1 100 100 set:CommonNPCHeader12 image:CommonNPCHeader12_3 1200 2400 -1 -1 -1 -1 -1 -1 -1 1 15 10 0 0 2 1 0 0 0</pre> 按第一列定位 0 号怪物。样本第 5 列基础经验获得为 2023,改为 3000。只改第 5 列,保留 70 列。本片段含类型行、列名行与该行,不能覆盖整表。 基础经验影响击杀后的经验结算,改完需要重启服务端才会生效。 == 验证与排查 == 服务端启动日志里 InitMonsterAttrExTable 会打印加载结果;改动后重启,击杀对应怪物核对经验或数值面板。注意第 1 列必须落在 0 到 65534 之间且不与已有怪物冲突,第 13 列必须落在 0.0 到 1.0,第 70 列存在性由加载前的列数断言保证。表现类列(45-51、61、65-67)需要更新客户端资源后重启客户端才能看到差异。失败时恢复备份并重启。 === 第 1 列是数组下标 === 怪物编号被直接用作 g_MonsterAttrExTbl 的下标,上限 MAXTYPE_NUMBER=65535(可用 0 到 65534)。越界行会被 AssertEx 跳过,表现为「改了没反应」而不是启动失败。 === 服务端只读部分列 === 列枚举从 43 直接跳到 51,又跳过 60、64、65、66,因此第 45-51、61、65-67 列都是表现层数据。改战斗数值前先确认列号落在枚举里。 === 第 39 列的列名与枚举不一致 === 第 37、38、39 列对应枚举的 LIGHT(电)系攻击、防御、抵抗削减,但列名行第 39 列写作「降低目标玄抵抗」。服务端按列号读取,因此该列实际作为电系抵抗削减生效,不要照列名理解成玄系。 === 第 64 列是正数判断 === 是否攻击 NPC 的写法是 0 < 该列值,填负数与填 0 效果相同(都是「否」)。 == 关联与依据 == [[工程参考/配置文件/Public/MonsterRespawnPos.txt|Public/MonsterRespawnPos.txt]] · [[工程参考/配置文件/Public/AttackTraits.txt|Public/AttackTraits.txt]] [[工程参考/配置文件索引|其他配置及整理状态]] · [[工程参考/服务端外网设置|服务端外网设置]] · [[Lua接口/服务端函数索引|Lua 接口索引]] * <code style="white-space:normal;overflow-wrap:anywhere;">Common/ServerBase/FileDef.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Common/GameDefine.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Server/Server/GameServer/Server/Main/GameTable.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Common/TDDBC_Struct.h</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">Client/Client/Game/DBC/GMDataBase.cpp</code>:实际加载、解析、字段使用或示例关联依据 * <code style="white-space:normal;overflow-wrap:anywhere;">resources/Public/Config/MonsterAttrExTable.txt</code>:实际加载、解析、字段使用或示例关联依据 本页核对 FileDef.h 的 FILE_MONSTER_ATTREX、InitMonsterAttrExTable 的完整 0 基列枚举与赋值目标(m_Table 的 CATTR_LEVEL2_* 与 m_TableExt 各字段)、GameDefine.h 的 MAXTYPE_NUMBER=65535,以及客户端 DBC_CREATURE_ATT 注册项;未启动服务端与游戏,战斗数值的实际效果需要实测。 </div> [[Category:工程参考]]
返回
工程参考/配置文件/Public/MonsterAttrExTable.txt
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
搜索
工具
链入页面
相关更改
页面信息