levelup+autoguild script

This commit is contained in:
mikx 2023-11-06 18:42:15 -05:00
parent 8fa12002ad
commit 6fc771b042
5 changed files with 124 additions and 12 deletions

View File

@ -16,6 +16,7 @@
*/ */
// This is where scripts' loading functions should be declared: // This is where scripts' loading functions should be declared:
void AddSC_mod_mxw_autoguild();
void AddSC_mod_mxw_dynamicxp(); void AddSC_mod_mxw_dynamicxp();
void AddSC_mod_mxw_sololfg(); void AddSC_mod_mxw_sololfg();
void AddSC_solocraft(); void AddSC_solocraft();
@ -27,6 +28,7 @@ void AddSC_solocraft();
// void Add${NameOfDirectory}Scripts() // void Add${NameOfDirectory}Scripts()
void AddCustomScripts() void AddCustomScripts()
{ {
AddSC_mod_mxw_autoguild();
AddSC_mod_mxw_dynamicxp(); AddSC_mod_mxw_dynamicxp();
AddSC_mod_mxw_sololfg(); AddSC_mod_mxw_sololfg();
AddSC_solocraft(); AddSC_solocraft();

View File

@ -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();
}

View File

@ -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();
}

View File

@ -88,14 +88,14 @@ namespace {
solocraft_player_instance_handler() : PlayerScript("solocraft_player_instance_handler") 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)) if (sConfigMgr->GetBoolDefault("Solocraft.Enable", true))
{ {
Map *map = player->GetMap(); Map* map = player->GetMap();
float difficulty = CalculateDifficulty(map, player); float difficulty = CalculateDifficulty(map, player);
int numInGroup = GetNumInGroup(player); int numInGroup = GetNumInGroup(player);
ApplyBuffs(player, map, difficulty, numInGroup); ApplyBuffs(player, map, difficulty, numInGroup);
@ -112,10 +112,10 @@ namespace {
const float D10 = sConfigMgr->GetFloatDefault("Solocraft.Raid10", 10.0); const float D10 = sConfigMgr->GetFloatDefault("Solocraft.Raid10", 10.0);
const float D25 = sConfigMgr->GetFloatDefault("Solocraft.Raid25", 25.0); const float D25 = sConfigMgr->GetFloatDefault("Solocraft.Raid25", 25.0);
const float D30 = sConfigMgr->GetFloatDefault("Solocraft.Raid30", 30.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 // Set the instance difficulty
float CalculateDifficulty(Map *map, Player *player) { float CalculateDifficulty(Map* map, Player* player) {
float difficulty = 1.0; float difficulty = 1.0;
if (map) { if (map) {
if (map->IsRaid()) if (map->IsRaid())
@ -128,10 +128,10 @@ namespace {
difficulty = D25; break; difficulty = D25; break;
case 30: case 30:
difficulty = D30; break; difficulty = D30; break;
case 40: case 40:
difficulty = D40; break; difficulty = D40; break;
default: 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); map->GetMapDifficulty()->MaxPlayers);
difficulty = D10; difficulty = D10;
} }
@ -150,9 +150,9 @@ namespace {
} }
// Get the groups size // Get the groups size
int GetNumInGroup(Player *player) { int GetNumInGroup(Player* player) {
int numInGroup = 1; int numInGroup = 1;
Group *group = player->GetGroup(); Group* group = player->GetGroup();
if (group) { if (group) {
Group::MemberSlotList const& groupMembers = group->GetMemberSlots(); Group::MemberSlotList const& groupMembers = group->GetMemberSlots();
numInGroup = groupMembers.size(); numInGroup = groupMembers.size();
@ -161,7 +161,7 @@ namespace {
} }
// Apply the player buffs // 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); ClearBuffs(player, map);
@ -193,7 +193,7 @@ namespace {
} }
} }
void ClearBuffs(Player *player, Map *map) void ClearBuffs(Player* player, Map* map)
{ {
std::map<ObjectGuid, float>::iterator unitDifficultyIterator = _unitDifficulty.find(player->GetGUID()); std::map<ObjectGuid, float>::iterator unitDifficultyIterator = _unitDifficulty.find(player->GetGUID());
if (unitDifficultyIterator != _unitDifficulty.end()) if (unitDifficultyIterator != _unitDifficulty.end())

View File

@ -2993,6 +2993,15 @@ QuestPOI.DisableErrors = 1
################################################################################################### ###################################################################################################
# CUSTOM SETTINGS ################################################################################# # CUSTOM SETTINGS #################################################################################
################################################################################################### ###################################################################################################
# Auto Guild #
#
AutoGuild.Alliance = 1
AutoGuild.Horde = 1
#
###################################################################################################
###################################################################################################
# Dynamic XP Rate # # Dynamic XP Rate #
# #