From 6fc771b04271d33bc18146f95db9f644003a8023 Mon Sep 17 00:00:00 2001 From: mikx Date: Mon, 6 Nov 2023 18:42:15 -0500 Subject: [PATCH] levelup+autoguild script --- .../scripts/Custom/custom_script_loader.cpp | 2 + .../scripts/Custom/mod_mxw_autoguild.cpp | 29 ++++++++ src/server/scripts/Custom/mod_mxw_levelup.cpp | 72 +++++++++++++++++++ src/server/scripts/Custom/mod_solocraft.cpp | 24 +++---- src/server/worldserver/worldserver.conf.dist | 9 +++ 5 files changed, 124 insertions(+), 12 deletions(-) create mode 100644 src/server/scripts/Custom/mod_mxw_autoguild.cpp create mode 100644 src/server/scripts/Custom/mod_mxw_levelup.cpp diff --git a/src/server/scripts/Custom/custom_script_loader.cpp b/src/server/scripts/Custom/custom_script_loader.cpp index a3b5196..3959734 100644 --- a/src/server/scripts/Custom/custom_script_loader.cpp +++ b/src/server/scripts/Custom/custom_script_loader.cpp @@ -16,6 +16,7 @@ */ // This is where scripts' loading functions should be declared: +void AddSC_mod_mxw_autoguild(); void AddSC_mod_mxw_dynamicxp(); void AddSC_mod_mxw_sololfg(); void AddSC_solocraft(); @@ -27,6 +28,7 @@ void AddSC_solocraft(); // void Add${NameOfDirectory}Scripts() void AddCustomScripts() { + AddSC_mod_mxw_autoguild(); AddSC_mod_mxw_dynamicxp(); AddSC_mod_mxw_sololfg(); AddSC_solocraft(); diff --git a/src/server/scripts/Custom/mod_mxw_autoguild.cpp b/src/server/scripts/Custom/mod_mxw_autoguild.cpp new file mode 100644 index 0000000..924cc8b --- /dev/null +++ b/src/server/scripts/Custom/mod_mxw_autoguild.cpp @@ -0,0 +1,29 @@ +#include "ScriptMgr.h" +#include "Player.h" +#include "GuildMgr.h" +#include "Config.h" +#include "Guild.h" + +class mod_mxw_autoguild : public PlayerScript +{ + public: + mod_mxw_autoguild() : PlayerScript("mod_mxw_autoguild") { } + + void OnLogin(Player* player, bool firstLogin) + { + if (firstLogin) + { + uint32 GUILD_ID_ALLIANCE = sConfigMgr->GetIntDefault("AutoGuild.Alliance", 0); + uint32 GUILD_ID_HORDE = sConfigMgr->GetIntDefault("AutoGuild.Horde", 0); + Guild* guild = sGuildMgr->GetGuildById(player->GetTeam() == ALLIANCE ? GUILD_ID_ALLIANCE : GUILD_ID_HORDE); + SQLTransaction trans(nullptr); + if (guild) + guild->AddMember(player->GetGUID()); + } + } +}; + +void AddSC_mod_mxw_autoguild() +{ + new mod_mxw_autoguild(); +} diff --git a/src/server/scripts/Custom/mod_mxw_levelup.cpp b/src/server/scripts/Custom/mod_mxw_levelup.cpp new file mode 100644 index 0000000..99409df --- /dev/null +++ b/src/server/scripts/Custom/mod_mxw_levelup.cpp @@ -0,0 +1,72 @@ +//// MxWoW Official Module +//// Level Up +//// Dev: mikx +//// Git: https://mxgit.ovh/MxWoW/mod_mxwow_levelup + +#include "Configuration/Config.h" +#include "ScriptMgr.h" +#include "Player.h" +#include "Chat.h" + +class mod_mxw_levelup : public PlayerScript +{ + +public: + + mod_mxw_levelup() : PlayerScript("mod_mxw_levelup") { } + + void OnLogin(Player* player) override + { + ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00MxW Level Up |rscript."); + } + + void OnLevelChanged(Player * player, uint8 oldLevel) + { + Map* map = player->GetMap(); + std::string mapName = map->GetMapName(); + std::ostringstream ss; + if (sConfigMgr->GetBoolDefault("LevelUp.Enabled", true)) + { + ss << "|cffabeeff[MxW] [" << GetPlayerColor(player) << player->GetName() << "|cffabeeff][|cff09ff00"<< mapName <<"|cffabeeff] est maintenant niveau |cff09ff00"<< oldLevel + 1 <<"|cffabeeff."; + sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str()); + } + } + + std::string GetPlayerColor(const Player* p) + { + switch (p->getClass()) + { + case CLASS_ROGUE: + return "|cffFFF468"; + case CLASS_DEATH_KNIGHT: + return "|cffC41E3A"; + case CLASS_WARRIOR: + return "|cffC69B6D"; + case CLASS_PRIEST: + return "|cffFFFFFF"; + case CLASS_MAGE: + return "|cff3FC7EB"; + case CLASS_PALADIN: + return "|cffF48CBA"; + case CLASS_HUNTER: + return "|cffAAD372"; + case CLASS_DRUID: + return "|cffFF7C0A"; + case CLASS_SHAMAN: + return "|cff0070DD"; + case CLASS_WARLOCK: + return "|cff8788EE"; + case CLASS_DEMON_HUNTER: + return "|cffA330C9"; + case CLASS_MONK: + return "|cff00FF98"; + default: + return "n/d"; + } + } +}; + +void AddSC_mod_mxw_levelup() +{ + new mod_mxw_levelup(); +} diff --git a/src/server/scripts/Custom/mod_solocraft.cpp b/src/server/scripts/Custom/mod_solocraft.cpp index 241d423..2e83231 100644 --- a/src/server/scripts/Custom/mod_solocraft.cpp +++ b/src/server/scripts/Custom/mod_solocraft.cpp @@ -88,14 +88,14 @@ namespace { solocraft_player_instance_handler() : PlayerScript("solocraft_player_instance_handler") { - TC_LOG_INFO(LOG_FILTER_WORLDSERVER, "[Solocraft] solocraft_player_instance_handler Loaded"); + TC_LOG_INFO(LOG_FILTER_PLAYER, "[Solocraft] solocraft_player_instance_handler Loaded"); } - void OnMapChanged(Player *player) override + void OnMapChanged(Player* player) override { if (sConfigMgr->GetBoolDefault("Solocraft.Enable", true)) { - Map *map = player->GetMap(); + Map* map = player->GetMap(); float difficulty = CalculateDifficulty(map, player); int numInGroup = GetNumInGroup(player); ApplyBuffs(player, map, difficulty, numInGroup); @@ -112,10 +112,10 @@ namespace { const float D10 = sConfigMgr->GetFloatDefault("Solocraft.Raid10", 10.0); const float D25 = sConfigMgr->GetFloatDefault("Solocraft.Raid25", 25.0); const float D30 = sConfigMgr->GetFloatDefault("Solocraft.Raid30", 30.0); - const float D40 = sConfigMgr->GetFloatDefault("Solocraft.Raid30", 40.0); + const float D40 = sConfigMgr->GetFloatDefault("Solocraft.Raid30", 40.0); // Set the instance difficulty - float CalculateDifficulty(Map *map, Player *player) { + float CalculateDifficulty(Map* map, Player* player) { float difficulty = 1.0; if (map) { if (map->IsRaid()) @@ -128,10 +128,10 @@ namespace { difficulty = D25; break; case 30: difficulty = D30; break; - case 40: - difficulty = D40; break; + case 40: + difficulty = D40; break; default: - TC_LOG_WARN(LOG_FILTER_WORLDSERVER, "[SoloCraft] Unrecognized max players %d, defaulting to 10 man difficulty", + TC_LOG_WARN(LOG_FILTER_PLAYER, "[SoloCraft] Unrecognized max players %d, defaulting to 10 man difficulty", map->GetMapDifficulty()->MaxPlayers); difficulty = D10; } @@ -150,9 +150,9 @@ namespace { } // Get the groups size - int GetNumInGroup(Player *player) { + int GetNumInGroup(Player* player) { int numInGroup = 1; - Group *group = player->GetGroup(); + Group* group = player->GetGroup(); if (group) { Group::MemberSlotList const& groupMembers = group->GetMemberSlots(); numInGroup = groupMembers.size(); @@ -161,7 +161,7 @@ namespace { } // Apply the player buffs - void ApplyBuffs(Player *player, Map *map, float difficulty, int numInGroup) + void ApplyBuffs(Player* player, Map* map, float difficulty, int numInGroup) { ClearBuffs(player, map); @@ -193,7 +193,7 @@ namespace { } } - void ClearBuffs(Player *player, Map *map) + void ClearBuffs(Player* player, Map* map) { std::map::iterator unitDifficultyIterator = _unitDifficulty.find(player->GetGUID()); if (unitDifficultyIterator != _unitDifficulty.end()) diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 84ef6b9..bfdc65d 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2993,6 +2993,15 @@ QuestPOI.DisableErrors = 1 ################################################################################################### # CUSTOM SETTINGS ################################################################################# ################################################################################################### +# Auto Guild # +# + +AutoGuild.Alliance = 1 +AutoGuild.Horde = 1 + +# +################################################################################################### +################################################################################################### # Dynamic XP Rate # #