mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-14 09:39:11 +00:00
This was caused by a GNUC compiler optimization that removes LFG.obj from binaries since its functions have never been called by gamelib. So we had to call at least one of them on LFGMgr forcing compiler to include LFG.cpp in build. I can't find another way.
123 lines
3.9 KiB
C++
123 lines
3.9 KiB
C++
/*
|
|
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2
|
|
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
|
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
|
|
*/
|
|
|
|
#include "ScriptMgr.h"
|
|
#include "Chat.h"
|
|
#include "Language.h"
|
|
#include "LFGMgr.h"
|
|
#include "Group.h"
|
|
#include "Player.h"
|
|
|
|
void GetPlayerInfo(ChatHandler* handler, Player* player)
|
|
{
|
|
if (!player)
|
|
return;
|
|
|
|
uint64 guid = player->GetGUID();
|
|
lfg::LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid);
|
|
|
|
std::string const& state = lfg::GetStateString(sLFGMgr->GetState(guid));
|
|
handler->PSendSysMessage(LANG_LFG_PLAYER_INFO, player->GetName().c_str(),
|
|
state.c_str(), uint8(dungeons.size()), lfg::ConcatenateDungeons(dungeons).c_str(),
|
|
lfg::GetRolesString(sLFGMgr->GetRoles(guid)).c_str(), sLFGMgr->GetComment(guid).c_str());
|
|
}
|
|
|
|
class lfg_commandscript : public CommandScript
|
|
{
|
|
public:
|
|
lfg_commandscript() : CommandScript("lfg_commandscript") { }
|
|
|
|
std::vector<ChatCommand> GetCommands() const override
|
|
{
|
|
static std::vector<ChatCommand> lfgCommandTable =
|
|
{
|
|
{ "player", SEC_MODERATOR, false, &HandleLfgPlayerInfoCommand, "" },
|
|
{ "group", SEC_MODERATOR, false, &HandleLfgGroupInfoCommand, "" },
|
|
{ "queue", SEC_MODERATOR, false, &HandleLfgQueueInfoCommand, "" },
|
|
{ "clean", SEC_ADMINISTRATOR, false, &HandleLfgCleanCommand, "" },
|
|
{ "options", SEC_GAMEMASTER, false, &HandleLfgOptionsCommand, "" },
|
|
};
|
|
|
|
static std::vector<ChatCommand> commandTable =
|
|
{
|
|
{ "lfg", SEC_GAMEMASTER, false, nullptr, "", lfgCommandTable },
|
|
};
|
|
return commandTable;
|
|
}
|
|
|
|
static bool HandleLfgPlayerInfoCommand(ChatHandler* handler, char const* args)
|
|
{
|
|
Player* target = nullptr;
|
|
std::string playerName;
|
|
if (!handler->extractPlayerTarget((char*)args, &target, nullptr, &playerName))
|
|
return false;
|
|
|
|
GetPlayerInfo(handler, target);
|
|
return true;
|
|
}
|
|
|
|
static bool HandleLfgGroupInfoCommand(ChatHandler* handler, char const* args)
|
|
{
|
|
Player* target = nullptr;
|
|
std::string playerName;
|
|
if (!handler->extractPlayerTarget((char*)args, &target, nullptr, &playerName))
|
|
return false;
|
|
|
|
Group* grp = target->GetGroup();
|
|
if (!grp)
|
|
{
|
|
handler->PSendSysMessage(LANG_LFG_NOT_IN_GROUP, playerName.c_str());
|
|
return true;
|
|
}
|
|
|
|
uint64 guid = grp->GetGUID();
|
|
std::string const& state = lfg::GetStateString(sLFGMgr->GetState(guid));
|
|
handler->PSendSysMessage(LANG_LFG_GROUP_INFO, grp->isLFGGroup(),
|
|
state.c_str(), sLFGMgr->GetDungeon(guid));
|
|
|
|
for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next())
|
|
GetPlayerInfo(handler, itr->GetSource());
|
|
|
|
return true;
|
|
}
|
|
|
|
static bool HandleLfgOptionsCommand(ChatHandler* handler, char const* args)
|
|
{
|
|
int32 options = -1;
|
|
if (char* str = strtok((char*)args, " "))
|
|
{
|
|
int32 tmp = atoi(str);
|
|
if (tmp > -1)
|
|
options = tmp;
|
|
}
|
|
|
|
if (options != -1)
|
|
{
|
|
sLFGMgr->SetOptions(options);
|
|
handler->PSendSysMessage(LANG_LFG_OPTIONS_CHANGED);
|
|
}
|
|
handler->PSendSysMessage(LANG_LFG_OPTIONS, sLFGMgr->GetOptions());
|
|
return true;
|
|
}
|
|
|
|
static bool HandleLfgQueueInfoCommand(ChatHandler* /*handler*/, char const* /*args*/)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
static bool HandleLfgCleanCommand(ChatHandler* handler, char const* /*args*/)
|
|
{
|
|
handler->PSendSysMessage(LANG_LFG_CLEAN);
|
|
sLFGMgr->Clean();
|
|
return true;
|
|
}
|
|
};
|
|
|
|
void AddSC_lfg_commandscript()
|
|
{
|
|
new lfg_commandscript();
|
|
}
|