Compare commits
2 commits
fed4752e0c
...
1e8d21b517
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e8d21b517 | |||
|
|
0ad5f1d345 |
2 changed files with 37 additions and 1 deletions
|
|
@ -19,3 +19,12 @@ Congrats.Announce = 1
|
|||
# ID Acore String Message
|
||||
|
||||
Congrats.Acore.String.ID = 60000
|
||||
|
||||
# Ignore Playerbots entirely? (1: true | 0: false)
|
||||
#
|
||||
# PlayerbotFactory calls Player::GiveLevel() whenever it randomises a bot, which fires
|
||||
# the same level-changed hook a real ding does. With this off, every bot re-roll past a
|
||||
# reward level broadcasts to the whole server and hands the bot gold and items.
|
||||
# Has no effect on a core built without mod-playerbots.
|
||||
|
||||
Congrats.SkipBots = 1
|
||||
|
|
|
|||
|
|
@ -69,15 +69,35 @@ config file for quick modifications.
|
|||
#include "ScriptMgr.h"
|
||||
#include "WorldSessionMgr.h"
|
||||
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
#include "PlayerbotAI.h"
|
||||
#include "Playerbots.h"
|
||||
#endif
|
||||
|
||||
struct COL
|
||||
{
|
||||
uint32 acoreMessageId;
|
||||
bool congratsAnnounce, congratsEnable;
|
||||
bool CongratsPerLevelEnable;
|
||||
bool skipBots;
|
||||
};
|
||||
|
||||
COL col;
|
||||
|
||||
// On a Playerbots server PlayerbotFactory calls Player::GiveLevel() every time it
|
||||
// randomises a bot, which fires OnPlayerLevelChanged exactly like a real ding. Left
|
||||
// unchecked that means a server-wide broadcast and a bag of reward items per bot
|
||||
// re-roll. Bots are skipped by default; set Congrats.SkipBots = 0 to include them.
|
||||
static bool IsPlayerbot(Player* player)
|
||||
{
|
||||
#ifdef MOD_PLAYERBOTS
|
||||
return player && GET_PLAYERBOT_AI(player) != nullptr;
|
||||
#else
|
||||
(void)player;
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32 giveAward(Player* player)
|
||||
{
|
||||
QueryResult result = WorldDatabase.Query("SELECT * FROM `mod_congrats_on_level_items` WHERE `level`={} AND (`race`={} OR `race`=0) AND (`class`={} OR `class`=0)", player->GetLevel(), player->getRace(), player->getClass());
|
||||
|
|
@ -122,8 +142,11 @@ public:
|
|||
PLAYERHOOK_ON_LOGIN
|
||||
}) {}
|
||||
|
||||
void OnPlayerLogin(Player* player)
|
||||
void OnPlayerLogin(Player* player) override
|
||||
{
|
||||
if (col.skipBots && IsPlayerbot(player))
|
||||
return;
|
||||
|
||||
// Announce Module
|
||||
if (col.congratsAnnounce)
|
||||
ChatHandler(player->GetSession()).SendSysMessage(col.acoreMessageId);
|
||||
|
|
@ -140,6 +163,9 @@ public:
|
|||
// Level Up Rewards
|
||||
void OnPlayerLevelChanged(Player* player, uint8 oldLevel) override
|
||||
{
|
||||
if (col.skipBots && IsPlayerbot(player))
|
||||
return;
|
||||
|
||||
// If enabled...
|
||||
if (col.congratsEnable)
|
||||
{
|
||||
|
|
@ -297,6 +323,7 @@ public:
|
|||
col.congratsAnnounce = sConfigMgr->GetOption<uint32>("Congrats.Announce", 1);
|
||||
col.congratsEnable = sConfigMgr->GetOption<uint32>("Congrats.Enable", 1);
|
||||
col.CongratsPerLevelEnable = sConfigMgr->GetOption<uint32>("CongratsPerLevel.Enable", 1);
|
||||
col.skipBots = sConfigMgr->GetOption<uint32>("Congrats.SkipBots", 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue