是否可以将核心补丁变成 AzerothCore 的模块?
Is it possible to turn a core patch into a module for 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
我可以将这些补丁实现到一个模块中吗?如果可以的话,能否请你post举个例子,怎么做,这样我就明白了?
谢谢!
顺便提一下,我已经看过模块框架回购协议,我可以看到有一个包含两个文件的 src/ 文件夹 - loader.h 和 Player.cpp,但除此之外,不确定如何进行。
是的,这是可能的。在编写模块时,您可以使用 AzerothCore 中可用的现有挂钩。如果您需要一个尚不存在的挂钩,您可以简单地创建它并 send a PR to AzerothCore.
如何添加新的钩子:一个实际的例子
我需要创建一个非常简单的模块,每当 he/she 被邀请加入后离开 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
中创建方法(与创建其他挂钩方法的方式相同),然后在需要时围绕核心调用它它。
假设我必须修补几个核心文件,例如:
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
我可以将这些补丁实现到一个模块中吗?如果可以的话,能否请你post举个例子,怎么做,这样我就明白了?
谢谢!
顺便提一下,我已经看过模块框架回购协议,我可以看到有一个包含两个文件的 src/ 文件夹 - loader.h 和 Player.cpp,但除此之外,不确定如何进行。
是的,这是可能的。在编写模块时,您可以使用 AzerothCore 中可用的现有挂钩。如果您需要一个尚不存在的挂钩,您可以简单地创建它并 send a PR to AzerothCore.
如何添加新的钩子:一个实际的例子
我需要创建一个非常简单的模块,每当 he/she 被邀请加入后离开 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
中创建方法(与创建其他挂钩方法的方式相同),然后在需要时围绕核心调用它它。