【免费下载链接】universal-modderPoint Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.项目地址https://gitcode.com/gh_mirrors/un/universal-modder点击查看免费下载本文基于 universal-modder 知识库中的实战笔记 azerothcore-custom-modules.md 展开完整记录了一套为「一名真人玩家 大量服务器端机器人」的 WotLK3.3.5a私人服务器编写自定义 AzerothCore 模块与核心补丁的全过程由 NPC 雇佣「农场工人」在你离线时采集并邮寄货箱、拍卖行成交金直接入账并自动补货、邮件未读计数修复、手动团队进度控制含 mod-individual-progression 的 AhnQiraj 战争机制解密、NPC 同伴的恶魔宠物以及通过 DBC 覆盖表改数据。读完本文你将掌握 AzerothCore 模块的标准骨架、脚本钩子选型、掉落表与邮件系统的底层行为以及一套可复现的「症状 → 原因 → 修复」排障方法论足以在自己的服务器上复刻或扩展同类玩法。适用前提与版本基线本笔记描述的环境与版本来自笔记 front matter核心AzerothCore WotLK3.3.5aPlayerbot 分支2026-09 源码进度模块mod-individual-progression客户端3.3.5a build 12340平台Linux服务器端工具链AzerothCore 模块 APIC、MySQL 8.4、TradeSkillMaster 价格数据反作弊不适用——这是用户自己运行的私人服务器参与方Claude Code (Opus 5.5) 人类玩家 RedSuper状态working全部模块已上线运行。服务器运行环境的更多细节可参考姊妹篇笔记 azerothcore-playerbots-server-ops.mdPlayerbot 分支、MySQL 8.4Oracle 仓库而非 MariaDB、Debian 13 下的 tmux 进程管理、构建与崩溃排查。这篇笔记专注「模块与补丁本身怎么写」而运维篇专注「服务器怎么跑起来」两篇配合阅读可以完整覆盖从编译到玩法落地。路线选择模块 API 优先核心补丁兜底笔记给出的核心原则只有一句话但决定了整个工程的架构走向模块 API 只要存在对应钩子就用它只有当 bug 出在核心邮件计数、威胁 bug、进度守卫时才改核心补丁。对应到 universal-modder 的路线框架见 mod-any-game 技能 的路线表这属于Loader API路线服务器本身AzerothCore就是最完整的「加载器」模块是它官方支持的扩展单元天然避开了对二进制打补丁、签名扫描等重活。只有当缺陷位于核心代码、模块钩子无法触达时才降级为核心补丁——这也正是「cheapest route that reaches the idea」的取舍逻辑能用钩子解决的绝不动核心。模块骨架三件套即可上线模块文件布局src/mod_name.cpp内含Addmod_nameScripts()作为脚本注册入口配置模板conf/Name.conf.distAzerothCore 约定供玩家复制为.conf使用无需修改 CMake模块目录会被自动发现auto-discovered。注意一个构建层面的代价虽然不需要改 CMake但每新增一个模块文件夹就会重新生成模块加载器并触发近乎全量的重编译。运维篇 azerothcore-playerbots-server-ops.md 给出了具体数字佐证——添加一个模块目录会重新编译全部约 700 个模块对象因此在规划功能时要尽量「一次建好后续在既有模块内迭代」避免反复触发全量构建。用到的脚本类型脚本类型用途CreatureScript对话gossip农场工人合同 NPC、拍卖行相关 NPCWorldScript启动时种子数据、世界更新 tick、配置读取PlayerScript玩家侧行为挂钩AuctionHouseScript拍卖成交、上架钩子拍卖支付/补货的核心核心机制服务器到底怎么读数据必须掌握的知识笔记以「How the game works」为章节名罗列了实现六个功能前必须摸清的引擎与数据库行为。这些是整篇文章的「底层原理」部分也是踩坑清单的直接来源。掉落表Loot tables的真实语义AzerothCore 读取掉落表时遵循的规则与直觉相反理解错误会直接导致「绝大多数采集点什么都不掉」GroupId 分组语义同一组GroupId内的掉落行恰好只掉其中一件物品Chance 0 行的含义Chance 0的行并非「永不掉落」而是与其他 Chance 0 的行均分组内剩余概率。笔记指出全部 18,025 行 gameobject 掉落中有 8,579 行依赖这一语义——即近半数采集掉落是靠「零概率均分」机制工作的Reference 递归展开Reference行会递归展开到reference_loot_template表宝石类掉落存放在那里。不做递归展开宝石就永远不会出现在产出里剥皮掉落skinning loot由creature_template.skinloot字段指定不是按生物 entry 直接查表物品 class 12任务物品会出现在采集掉落表中凡是要发放给玩家的产出都必须过滤掉它。货箱与邮件存储掉落与邮件系统的边界货箱机制按物品存储的掉落item_loot_storage能让一件物品充当「货箱」但LoadStoredLoot只有在该物品存在item_loot_template行时才会运行——需要给每件货箱物品补一行「近零概率」的掉落行注意chance 0 group 0 的组合会被拒绝掉落窗口上限最多显示 18 个物品MAX_NR_LOOT_ITEMS且堆叠计数是 8 位最大 255邮件上限MAX_MAIL_ITEMS为 12 件/封更大的交付必须拆成多封邮件送达通知陷阱只传 guid 的MailReceiver(guid)版本硬编码为「无玩家」在线收件人永远不会收到通知——必须使用MailReceiver(player, guid)玩家版本未读邮件计数只在「标记为已读」时递减。如果玩家用「全部打开」类插件直接取走或删除了未读邮件就会留下一个幽灵邮件图标。修复方式是核心补丁删除/退回未读邮件时递减计数并在重新统计时跳过已删除邮件客户端收件箱只显示 50 封邮件。数据库异步陷阱与 DBC 覆盖表CharacterDatabase.Execute()是异步的紧接着执行 SELECT 读取刚插入行的 id会读到 0。需要立即拿到行时必须用DirectExecute()DBC 覆盖表spell_dbc、skillraceclassinfo_dbc、charstartoutfit_dbc、creaturefamily_dbc等启动时按 id 向服务器内存中的 DBC追加或替换行。但客户端读取这些数据时仍然需要 patch MPQ 里有对应的 DBC 行——例如新的种族/职业组合所需的CharBaseInfo就存放在 locale 归档里。这解释了为什么「服务端加了行、客户端却看不到」两边各有一份 DBC。运维篇补充了同族事实服务器会校验生物外观creature display只认自己的 DBC 副本新增坐骑时需要在creaturedisplayinfo_dbc/creaturemodeldata_dbc中补对应行并重启物品外观则不校验。拍卖行内存态与直付直补AuctionHouseScript钩子可以抑制「待成交 / 成交成功 / 竞拍成功」三类邮件sendMail false而OnAuctionSuccessful紧随其后触发——足够在成交时直接把金币付给卖家避免塞满 50 封邮件的收件箱拍卖行是内存态拍卖数据常驻服务器内存关机时才回写数据库。在运行中的服务器上直接改拍卖表会被静默还原。要在运行中添加上架必须模仿核心的做法且放在同一个事务里Item::CreateItemclone 模式可避免随机后缀SaveToDBsAuctionMgr-AddAItemAuctionHouseObject::AddAuction物品 entry 的SaveToDB。双价格表漂移陷阱库存来自启动时种子的「花名册表」物品、堆叠、数量而买家机器人按另一张「市场价表」的一定百分比出价。两张价格表一旦漂移玩家按种子价上架的物品就永远卖不出去。宠物种族 → 技能线 → 技能生物种族CreatureFamily映射到宠物法术skill lines → abilities术士召唤走召唤宠物效果观赏宠物vanity pets走另一套宠物名牌来自生物查询结果creature_template.name与种族无关——改creature_template行即可重命名Pet::InitStatsForLevel按生物 entry 分支未知 entry 不会获得属性缩放光环——所以克隆新宠物时必须为新 entry 添加属性缩放 case。进度模块mod-individual-progression的 AQ 战争解密笔记花了最大篇幅剖析这个模块因为「单人带机器人」的服务器必须把进度牢牢抓在自己手里层级存储层数tiers以已奖励的隐藏任务 66001–66018 存储提升某层会自动回填所有更低层级默认进度守卫失效所用构建中即使DisableDefaultProgression 1boss 击杀仍会推进层级守卫被注释掉了。补丁内容仅在默认进度开启时击杀才推进层级.ip set修复后可将层级设为 0清空所有层级逐玩家 AQ 战争努力一个「Complete the War Effort」任务1,000 枚嘉奖徽记且每个收集任务完成一次后同时门控「权杖任务线」的起始与模块自己的锣任务敲锣Bang a Gong!仅在默认进度开启时把玩家推到 tier 4DisableDefaultProgression 1时敲锣什么都不动层级保持手动锣的动画细节播放开门动画树根、符文、门但约五分钟后会再次关门因此可以反复重放模块的「战争」步骤其实是一个空等待再次点击锣会重新开门门的对象展示给 tier 5 以下的角色室外 AQ 战争被 phase 到 tier 4 专属一个相位光环作用于 Silithus、Darkshore 与 Scarab Wall。三座巨像Zora、Regal、Ashi其击杀任务由锣旁 NPC 发放、Nokhor 中将与 Supreme Anubisath Warbringers、Colossal Anubisath Warbringers、一个低等级 Darkshore 部分以及水晶构造体都依赖相位掩码放置——只数带脚本名的刷怪点会几乎什么都找不到巨像的机制约 200 万生命免疫打断与眩晕开战 60 秒后施放 Colossal Smash此后每分钟一次——5 秒施法对 100 码内所有人造成 3,125 点物理伤害外加 50 码/秒向外、50 向上的击退。在平地会把玩家抛出约 260 码、向上 65 码落地伤害约为最大生命值的 92%而巨像只攻击 200 码可见性覆盖内的目标当所有人被击退到范围之外时巨像会在满血状态下脱战evade战争 Boss 掉落表该构建中这些 Boss 的掉落表存的是 70 级物品一把 TBC 剑、Living Ruby 宝石——原版数值迁移不完整。六个构建步骤详解笔记的 Build steps 共六步覆盖全部功能。下面逐条展开并补充可验证依据。1. 离线采集「FarmSim」入口一个 NPC 按种族与层级出售「农场工人合同」产出计算世界更新 tickWorldScript根据真实掉落表计算每位农场工人在已流逝时间内的产出——按组GroupId、引用reference、剥皮掉落skinning loot语义展开种族加成按小数概率随机化交付以「存储掉落」货箱形式邮寄按 12 件/封拆成多封定价锚定产出速率锚定到人类采集速度价格参考拍卖数据TradeSkillMaster 价格数据。验证方式时间跳跃测试模拟 6 小时 → 分层产出、真实宝石稀有度、无任务物品见下文「验证」节。2. 拍卖直付抑制拍卖三类邮件sendMail false在OnAuctionSuccessful中直接支付金币注意边界先支付、且绝不能因为金币上限2^31 铜币数量级而吞钱。3. 邮件未读计数修复两个核心函数修复删除/退回未读邮件时递减计数、重数时跳过已删除邮件笔记强调无头文件改动约一分钟构建——属于「核心小补丁」的典型改动面最小。4. 进度控制恢复模块中两处守卫击杀推进、敲锣推进的门控配套一个可逆 SQL 用于层级变更.ip set0 清空全部层级。5. 同伴恶魔宠物克隆一个术士召唤物但去掉其材料需求灵魂碎片试剂为新 entry 添加宠物属性缩放 case对应Pet::InitStatsForLevel通过creature_template行重命名名牌来自生物行而非种族。6. 拍卖自动补货在市场模块内放一个定时器每 30 分钟、每轮最多 500 个上架、首轮在启动后一个间隔才执行统计机器人每个物品 × 堆叠组合的存活上架数按与启动种子相同的规则在内存中补齐缺失项价格 × 堆叠上限 20 亿铜币2 billion copper一口价buyout为出价的 80%bid 80%有效期一年。注意与「双价格表」陷阱联动买家机器人的出价上限必须与种子价格表同步见 Gotcha 11。验证每一环都要有可复核的证据笔记的 Verification 段落本身就是一套「oracle」方法论与 oracles-how-agents-know-a-mod-works.md 的验证思想一脉相承时间跳跃测试采集模块模拟 6 个小时 → 验证分层产出、真实宝石稀有度、无任务物品混入人工在游戏内复核每一次线上变更都由人类玩家在游戏内确认数据库行检查货箱、邮件、进度变更均回到 DB 行核对补货验证启动后的上架数与花名册一致一次线上补货轮精确重发了已售出的物品4 个上架一个不少——这是「线上行为 数字对账」的实证诚实标注证据边界知识库贡献规则要求见 CONTRIBUTING.mdAQ 战争事实来自模块代码与数据 人类玩家的实际游玩关门、巨像重置击退距离与坠落伤害是由法术数据计算得出的未在游戏中实测战争 Boss 的掉落是从掉落表读出的未亲眼见过掉落。这种「哪些是实测、哪些是推算」的边界标注正是知识库笔记区别于普通博客的关键——后续 Agent 知道哪些结论可以无条件信任、哪些需要重新验证。十三条坑症状 → 原因 → 修复笔记的 Gotchas 是全篇最可复用的部分完整收录如下付费升级从未保存。原因异步 INSERT 后 SELECT id 读到 0导致每次保存都执行WHERE id0。修复改用DirectExecute加一个拒绝 id 0 的守卫并退款。货箱打开是空的还销毁了内容。原因缺少item_loot_template行存储掉落从未被加载。修复每件货箱物品补一行近零概率掉落行。产出里从来不出宝石。原因引用掉落未展开。修复递归展开 reference 掉落。大多数采集点什么都不掉。原因把Chance 0行当成了「永不掉落」。修复采用核心的组语义Chance 0 均分组内剩余概率。交付悄悄变少。原因12 件/封的邮件上限。修复拆成多封邮件。邮件到了但玩家没被通知。原因只传 guid 的MailReceiver硬编码无玩家。修复改用带 player 参数的版本。幽灵未读邮件图标。原因计数器只在标记已读时递减。修复上文的核心补丁删除/退回未读邮件时递减、重数跳过已删。团队进度自己动。原因模块的击杀守卫被注释掉了。修复恢复守卫。克隆宠物法术报「缺少材料」。原因原法术的灵魂碎片试剂被一起带过来了。修复在覆盖行DBC override row中清空试剂。直接在数据库加的拍卖上架消失了。原因拍卖在内存中、关机时重写。修复在世界服务器启动前种子化或通过拍卖管理器在内存中创建见「拍卖行」一节的五步事务。玩家自己的拍卖永远卖不出去。原因买家机器人用与种子不同的表定价615 件物品标价高于其上限。修复让买家价格从种子表同步模块可在配置重载时重新读取。「AQ 的门一直关着。」原因进度模块在敲锣五分钟后重置门。修复再点一次锣或把门对象改为从 tier 5 改为 tier 4 起隐藏。机器人团打不过巨像。原因Colossal Smash 的击退每分钟把所有人送出 Boss 攻击范围见上文机制计算。修复模块内无解通过服务器法术覆盖spell override调小击退距离才能让这场战斗打得起来。未解决问题与延伸阅读待修复AoE 拾取模块对任务物品与条件掉落处理不当尚未修复。这些模块的玩法改动与客户端侧同样深度相关邮件计数、拍卖邮件、收件箱 50 封限制等客户端行为细节可对照 addon-development-335a.md例如 3.3.5a 客户端的插件生态、宏与公会银行等 UI 行为而拍卖直付、机器人经济这类「服务器内部经济」问题往往与客户端插件如「全部打开」类邮件插件交互产生值得两篇笔记对照排查。最后本笔记本身即遵循知识库的 field note 规范结构Setup / Route and why / How the game works / Build steps / Verification / Gotchas详见 knowledge/README.md精确版本、真实路线、引擎真实行为、验证方式、编号坑五要素齐全才是一篇可被下一个 Agent 直接接手的笔记。本文的所有事实均直接来源于该笔记及其姊妹篇未作任何性能或效果的夸大。赞分享【免费下载链接】universal-modderPoint Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.项目地址https://gitcode.com/gh_mirrors/un/universal-modder点击查看免费下载相关推荐终极Mobile ALOHA开发指南从基础配置到自定义任务实现的完整路径终极Mobile ALOHA开发指南从基础配置到自定义任务实现的完整路径 Mobile ALOHA是一款低成本全身遥操作双手机器人系统专为学习双手机器人操作机器人具身智能PythonRobotics 任务规划模块实战用状态机与行为树描述机器人高层行为PythonRobotics 任务规划模块实战用状态机与行为树描述机器人高层行为 导读 本文围绕 PythonRobotics 仓库的 MissionPlan示例工程机器人5分钟极速部署AzerothCore-WoTLK服务器Docker容器化实战指南5分钟极速部署AzerothCore WoTLK服务器Docker容器化实战指南 还在为魔兽世界私服的复杂部署流程而烦恼吗依赖冲突、数据库配置、环境差异这些游戏开发后端上一篇探秘Theia Sticky Sidebar一款强大的侧边栏固定工具下一篇终极指南如何快速掌握NLP研究代码编写——EMNLP 2018教程完整解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?