微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以将核心补丁变成 AzerothCore 的模块?

如何解决是否可以将核心补丁变成 AzerothCore 的模块?

假设我必须修补核心的几个文件,例如:

src/server/game/Handlers/MiscHandler.cpp

+code line 1
+code line 2
+code line 3
src/server/game/Handlers/ChatHandler.cpp

+code line 1
+code line 2
+code line 3

我可以在模块中实现这些补丁吗?如果可能的话,你能不能发个例子,怎么做,这样我就知道了?

谢谢!

顺便提一下,我已经看过模块框架 repo,我可以看到有一个 src/ 文件夹,里面有两个文件 - loader.h 和 Player.cpp,但除此之外,不确定如何进行。

解决方法

是的,这是可能的。编写模块时,您可以使用 AzerothCore 中可用的现有钩子。如果您需要一个尚不存在的钩子,您可以简单地创建它并send a PR to AzerothCore

如何添加新的钩子:一个实际例子

我需要创建一个非常简单的模块,当他/她在被邀请加入后离开 BG 队列时,它会向玩家发送警告。

这是我的模块的代码,非常基本:

void OnBattlegroundDesertion(Player* player,const BattlegroundDesertionType type) override
{
    if (sConfigMgr->GetBoolDefault(DESERTION_ENABLED_CONFIG,false))
    {
        switch (type)
        {
            case BG_DESERTION_TYPE_LEAVE_QUEUE:
            case BG_DESERTION_TYPE_NO_ENTER_BUTTON:
                ChatHandler(player->GetSession()).PSendSysMessage("%s",sConfigMgr->GetStringDefault(WARNING_TEXT_CONFIG,"").c_str());
                break;
            default:
                break;
        }
    }
}

模块的完整源代码可在此处获得:https://github.com/azerothcore/mod-desertion-warnings

看起来很简单吧?尤其是如果您拥有可以满足我所需的 OnBattlegroundDesertion 方法(PlayerBattlegroundDesertionType)。

只有一个问题……钩子 OnBattlegroundDesertion 以前不存在!

但是没关系,我只需要在核心中实现它,这就是完成这项工作的 PR:

https://github.com/azerothcore/azerothcore-wotlk/pull/4619

如您所见,只需在 ScriptMgr.hScriptMgr.cpp 中创建方法(与创建其他钩子方法的方式相同),然后在需要时围绕核心调用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。