如何解决是否可以将核心补丁变成 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
方法(Player
和 BattlegroundDesertionType
)。
只有一个问题……钩子 OnBattlegroundDesertion
以前不存在!
但是没关系,我只需要在核心中实现它,这就是完成这项工作的 PR:
https://github.com/azerothcore/azerothcore-wotlk/pull/4619
如您所见,只需在 ScriptMgr.h
和 ScriptMgr.cpp
中创建方法(与创建其他钩子方法的方式相同),然后在需要时围绕核心调用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。