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
|
# ID Acore String Message
|
||||||
|
|
||||||
Congrats.Acore.String.ID = 60000
|
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 "ScriptMgr.h"
|
||||||
#include "WorldSessionMgr.h"
|
#include "WorldSessionMgr.h"
|
||||||
|
|
||||||
|
#ifdef MOD_PLAYERBOTS
|
||||||
|
#include "PlayerbotAI.h"
|
||||||
|
#include "Playerbots.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
struct COL
|
struct COL
|
||||||
{
|
{
|
||||||
uint32 acoreMessageId;
|
uint32 acoreMessageId;
|
||||||
bool congratsAnnounce, congratsEnable;
|
bool congratsAnnounce, congratsEnable;
|
||||||
bool CongratsPerLevelEnable;
|
bool CongratsPerLevelEnable;
|
||||||
|
bool skipBots;
|
||||||
};
|
};
|
||||||
|
|
||||||
COL col;
|
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)
|
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());
|
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
|
PLAYERHOOK_ON_LOGIN
|
||||||
}) {}
|
}) {}
|
||||||
|
|
||||||
void OnPlayerLogin(Player* player)
|
void OnPlayerLogin(Player* player) override
|
||||||
{
|
{
|
||||||
|
if (col.skipBots && IsPlayerbot(player))
|
||||||
|
return;
|
||||||
|
|
||||||
// Announce Module
|
// Announce Module
|
||||||
if (col.congratsAnnounce)
|
if (col.congratsAnnounce)
|
||||||
ChatHandler(player->GetSession()).SendSysMessage(col.acoreMessageId);
|
ChatHandler(player->GetSession()).SendSysMessage(col.acoreMessageId);
|
||||||
|
|
@ -140,6 +163,9 @@ public:
|
||||||
// Level Up Rewards
|
// Level Up Rewards
|
||||||
void OnPlayerLevelChanged(Player* player, uint8 oldLevel) override
|
void OnPlayerLevelChanged(Player* player, uint8 oldLevel) override
|
||||||
{
|
{
|
||||||
|
if (col.skipBots && IsPlayerbot(player))
|
||||||
|
return;
|
||||||
|
|
||||||
// If enabled...
|
// If enabled...
|
||||||
if (col.congratsEnable)
|
if (col.congratsEnable)
|
||||||
{
|
{
|
||||||
|
|
@ -297,6 +323,7 @@ public:
|
||||||
col.congratsAnnounce = sConfigMgr->GetOption<uint32>("Congrats.Announce", 1);
|
col.congratsAnnounce = sConfigMgr->GetOption<uint32>("Congrats.Announce", 1);
|
||||||
col.congratsEnable = sConfigMgr->GetOption<uint32>("Congrats.Enable", 1);
|
col.congratsEnable = sConfigMgr->GetOption<uint32>("Congrats.Enable", 1);
|
||||||
col.CongratsPerLevelEnable = sConfigMgr->GetOption<uint32>("CongratsPerLevel.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