楼主: ft4059171

[巫妖王之怒] 10.31更新,集成硬核模式、渐进,Playerbot,solograft,随机附...

  [复制链接]

60

时沙

0

精华

3

主题

声望: 371   虚弱: 0

Lv.3(忠诚者)

发表于 2025-9-25 00:29:03 | 显示全部楼层
标记一下,顶一个
回复

使用道具 举报

445

时沙

0

精华

1

主题

声望: 133   虚弱: 0

Lv.3(忠诚者)

炉石瓦格里的标记假死猎人金鼠(ytfirefox制作)

发表于 2025-9-25 10:31:47 | 显示全部楼层
感谢楼主的分享,有点小贵。
[发帖际遇]: lls120257每天从公会仓库偷拿金币,不久后被团长发现没收,失去1 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

283

时沙

0

精华

5

主题

声望: 383   虚弱: 0

Lv.3(忠诚者)

炉石瓦格里的标记金鼠(ytfirefox制作)

发表于 2025-9-29 15:12:12 | 显示全部楼层
ft4059171 发表于 2025-7-6 13:51
solocraft.conf里设置

大哥求教一下,如何设置这个弹性副本   比如我把KLZ改成了40人的副本,这里面需要怎么设置
回复

使用道具 举报

283

时沙

0

精华

5

主题

声望: 383   虚弱: 0

Lv.3(忠诚者)

炉石瓦格里的标记金鼠(ytfirefox制作)

发表于 2025-10-22 13:56:16 | 显示全部楼层
从你提供的 AZ335a(AzerothCore 3.3.5a 版本)服务端宕机日志来看,崩溃本质与上一次一致,仍是Windows 系统下的内存访问违规(ACCESS_VIOLATION),且崩溃触发点完全相同,说明问题具有稳定性,核心指向 Playerbot 分支的 C++ 代码逻辑缺陷,而非偶发的环境或资源问题。以下是具体分析和针对性解决方向:
一、核心崩溃信息锁定(与上一次日志对比)
1. 崩溃关键标识完全一致,排除偶发因素
错误代码与触发地址:仍为 C0000005 ACCESS_VIOLATION,崩溃地址固定为 worldserver.exe 的 00007FF70C0DA224(对应程序偏移 0001:0000000000E19224)。
这表明每次崩溃都源于同一处代码逻辑,而非随机内存错误(如硬件不稳定、临时资源冲突),可确定是代码层面的固定缺陷。
服务端环境未变:仍为 Playerbot 分支(rev. b9d7cefe2165)、Win64 编译版本,硬件(36 核 Xeon CPU、16GB 内存,可用 8.2GB)和系统(Win10 19041)无资源不足问题,排除环境干扰。
2. 崩溃堆栈新增关键线索:生物 / 单位逻辑调用链
本次日志的崩溃堆栈中,新增了 00007FF70C14DE35(0001:0000000000E8CE35)和 00007FF70C17ACED(0001:0000000000EB9CED)两个关键函数地址,结合 AZ335a 的核心代码结构推测:
这两个地址对应 Unit(游戏单位,如玩家、NPC、Playerbot)类的状态更新或交互逻辑函数(如 Unit::UpdateStats()、Unit::InteractWith());
结合上一次分析的 “Playerbot 分支冲突”,进一步确认:崩溃是 Playerbot 在执行 “单位状态同步” 或 “与其他单位交互” 时,调用了未初始化的空指针(如目标单位已消失,但仍尝试读取其属性)。
二、崩溃原因的精准定位(优先级排序)
1. Playerbot 分支的 “单位交互” 代码缺陷(100% 关联)
AZ335a 的 Playerbot 分支会新增 “机器人自动跟随、战斗、交互 NPC” 等逻辑,这些逻辑需频繁调用核心的 Unit 类方法。从堆栈和版本特性推测,具体缺陷场景可能是:
场景 1:Playerbot 目标单位空指针:Playerbot 锁定的战斗目标(如野怪)被其他玩家击杀后,未及时清空目标指针,后续仍调用 Unit::GetHealth() 或 Unit::IsAlive() 等方法,访问空内存地址触发崩溃;
场景 2:Playerbot 与核心单位状态同步冲突:Playerbot 的自定义状态(如 “自动治疗”“自动施法”)与核心的 Unit 状态更新逻辑(如 Buff/DeBuff 刷新)存在线程安全问题,高并发时导致内存数据紊乱。
2. 3.3.5a 版本核心与 Playerbot 分支的兼容性漏洞
AZ335a(巫妖王之怒 3.3.5 版本)的核心代码对 “单位对象生命周期” 的管理较为严格,而 Playerbot 分支的定制化代码可能未遵循核心规范:
例如:核心在删除一个死亡单位时,会标记其为 “待回收”,但 Playerbot 代码未检测该标记,仍尝试访问该单位的内存地址,导致访问违规;
此类问题在 3.3.5a 版本中尤为常见,因该版本核心未针对 Playerbot 的异步操作做兼容性适配。
三、针对性解决步骤(按 “见效速度” 排序)
1. 紧急规避:彻底禁用 Playerbot 模块(10 分钟内可验证)
若需优先恢复服务端运行,可直接关闭 Playerbot 功能,验证是否因该模块导致崩溃:
打开服务端根目录的 worldserver.conf 配置文件;
搜索 Playerbot 相关配置,修改以下参数:
ini
Playerbot.Enable = 0  # 禁用Playerbot模块(默认1为开启)
Playerbot.MaxBotsPerPlayer = 0  # 限制每个玩家的机器人数量为0
保存配置后重启 worldserver.exe,观察 1-2 小时是否仍崩溃:
若不再崩溃:100% 确认是 Playerbot 分支问题,后续可选择 “修复分支代码” 或 “长期禁用 Playerbot”;
若仍崩溃:需排查核心编译或依赖问题(概率极低,因两次日志触发点完全一致)。
2. 深度修复:定位并修改 Playerbot 的空指针代码(需 C++ 基础)
若需保留 Playerbot 功能,可通过 Visual Studio 定位崩溃代码行并修复:
准备工具:安装 Visual Studio 2019/2022,加载 AZ335a Playerbot 分支的 worldserver.sln 工程;
定位崩溃函数:
打开 “调试→窗口→内存→内存 1”,输入崩溃地址 00007FF70C0DA224;
右键选择 “转到反汇编”,再通过 “反汇编窗口” 的 “转到源代码”,定位到具体的 C++ 代码文件(大概率是 src/server/game/Entities/Unit/Unit.cpp 或 src/modules/playerbot/PlayerbotAI/PlayerbotAI.cpp);
修复空指针问题:
在崩溃代码行前添加 “空指针判断”,例如:
cpp
运行
// 原代码(可能无判断)
if (target->IsAlive()) { ... }
// 修复后(添加空指针校验)
if (target != nullptr && target->IsAlive()) { ... }
重新编译 Win64 版本的 worldserver.exe,替换原文件后测试。
3. 版本替换:使用 AZ335a 官方稳定分支(无 Playerbot)
若无需 Playerbot 功能,可直接替换为官方无 Playerbot 的稳定分支,彻底规避兼容性问题:
备份现有服务端的 worldserver.conf 和数据库(防止数据丢失);
从 AzerothCore 官方仓库下载 3.3.5a 主分支(非 Playerbot 分支):AzerothCore/azerothcore-wotlk: 3.3.5a;
按官方文档编译 Win64 版本,使用原数据库和配置文件启动,稳定性会显著提升(官方分支经过大量用户验证,无 Playerbot 相关缺陷)。
四、验证与监控建议
崩溃后验证:无论采用哪种方案,重启服务端后,建议通过 worldserver.exe 控制台输入 server info 命令,确认 Playerbot 模块已禁用(或使用的是官方主分支);
日志监控:开启详细日志(参考上一次的 LogLevel 配置),若再次崩溃,重点查看 crash.log 是否仍为 00007FF70C0DA224 地址,若地址变化再排查其他问题。



有个宕机BUG,大哥看一下呗
回复

使用道具 举报

发表于 2025-10-27 00:46:31 | 显示全部楼层
感谢大佬分享
回复

使用道具 举报

61

时沙

0

精华

0

主题

声望: 122   虚弱: 0

Lv.2(潜行者)

发表于 2025-10-27 21:41:46 | 显示全部楼层
感谢大佬分享。。。。。
回复

使用道具 举报

92

时沙

0

精华

0

主题

声望: 50   虚弱: 0

Lv.2(潜行者)

发表于 2025-10-29 22:37:25 | 显示全部楼层
已评分,不过,“更新文件
通过网盘分享的文件:dbc.7z等3个文件
链接: https://pan.baidu.com/s/1QgpCOFfm3xTy5QjdKKQQeA

这个链接的提取码在哪?
[发帖际遇]: xpaul使用绝技三百六十度倒立脸滚键盘打出团队第一DPS,获得1 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

92

时沙

0

精华

0

主题

声望: 50   虚弱: 0

Lv.2(潜行者)

发表于 2025-10-29 23:08:29 | 显示全部楼层

更新数据库需要在worldserver.conf里Updates.EnableDatabases = 7开启自动更新,
把SourceDirectory = "sqlupdate"
playerbot.conf里把Playerbots.Updates.EnableDatabases = 1

然后呢?数据库需要如何更新?大佬能否给一个简单的架设教程?
[发帖际遇]: xpaul在破碎海岸抗击燃烧军团,死战不退英勇就义,获得1 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

92

时沙

0

精华

0

主题

声望: 50   虚弱: 0

Lv.2(潜行者)

发表于 2025-10-29 23:29:50 | 显示全部楼层
大佬,麻烦搞一个0901完整版的一键端吧。
我目前下的0901的完整端,但是没有date和modules目录,也按照你说的方法改了conf里和升级数据库有关的参数,但是还是闪退。弄了几次都失败,懒得搞了。

麻烦放一个你整合的一键端吧,方便我们这些新手玩家。
回复

使用道具 举报

92

时沙

0

精华

0

主题

声望: 50   虚弱: 0

Lv.2(潜行者)

发表于 2025-10-29 23:34:12 | 显示全部楼层
启动world服务器报错误如下:

Initializing Scripts...
> Loading C++ scripts

Opening DatabasePool 'acore_auth'. Asynchronous connections: 1, synchronous connections: 1.
DatabasePool 'acore_auth' opened successfully. 2 total connections running.

Opening DatabasePool 'acore_characters'. Asynchronous connections: 1, synchronous connections: 1.
DatabasePool 'acore_characters' opened successfully. 2 total connections running.

Opening DatabasePool 'acore_world'. Asynchronous connections: 1, synchronous connections: 1.
DatabasePool 'acore_world' opened successfully. 2 total connections running.

Didn't find any executable MySQL binary at '' or in path, correct the path in the *.conf ("MySQLExecutable").
Could not update the Login database, see log for details.
Closing down DatabasePool 'acore_world'. Waiting for 0 queries to finish...
Asynchronous connections on DatabasePool 'acore_world' terminated. Proceeding with synchronous connections.
All connections on DatabasePool 'acore_world' closed.
Closing down DatabasePool 'acore_characters'. Waiting for 0 queries to finish...
Asynchronous connections on DatabasePool 'acore_characters' terminated. Proceeding with synchronous connections.
All connections on DatabasePool 'acore_characters' closed.
Closing down DatabasePool 'acore_auth'. Waiting for 0 queries to finish...
Asynchronous connections on DatabasePool 'acore_auth' terminated. Proceeding with synchronous connections.
All connections on DatabasePool 'acore_auth' closed.
回复

使用道具 举报

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