mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-31 09:06:46 +00:00
Merge branch 'master' into kinglykrab/adventuremanager-global-to-singleton
This commit is contained in:
@@ -77,7 +77,7 @@ ADD_EXECUTABLE(world ${world_sources} ${world_headers})
|
||||
INSTALL(TARGETS world RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
|
||||
|
||||
IF (WIN32 AND EQEMU_BUILD_PCH)
|
||||
TARGET_PRECOMPILE_HEADERS(world PRIVATE ../common/pch/pch.h)
|
||||
TARGET_PRECOMPILE_HEADERS(world PRIVATE ../common/pch/std-pch.h)
|
||||
ENDIF ()
|
||||
|
||||
ADD_DEFINITIONS(-DWORLD)
|
||||
|
||||
+6
-2
@@ -17,7 +17,11 @@
|
||||
|
||||
extern ZSList zoneserver_list;
|
||||
extern ClientList client_list;
|
||||
<<<<<<< kinglykrab/adventuremanager-global-to-singleton
|
||||
extern EQ::Random emu_random;
|
||||
=======
|
||||
extern AdventureManager adventure_manager;
|
||||
>>>>>>> master
|
||||
|
||||
Adventure::Adventure(AdventureTemplate *t)
|
||||
{
|
||||
@@ -367,8 +371,8 @@ void Adventure::MoveCorpsesToGraveyard()
|
||||
|
||||
glm::vec4 position;
|
||||
|
||||
float x = GetTemplate()->graveyard_x + emu_random.Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
|
||||
float y = GetTemplate()->graveyard_y + emu_random.Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
|
||||
float x = GetTemplate()->graveyard_x + EQ::Random::Instance()->Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
|
||||
float y = GetTemplate()->graveyard_y + EQ::Random::Instance()->Real(-GetTemplate()->graveyard_radius, GetTemplate()->graveyard_radius);
|
||||
float z = GetTemplate()->graveyard_z;
|
||||
|
||||
position.x = x;
|
||||
|
||||
+19
-20
@@ -16,7 +16,6 @@
|
||||
|
||||
extern ZSList zoneserver_list;
|
||||
extern ClientList client_list;
|
||||
extern EQ::Random emu_random;
|
||||
|
||||
AdventureManager::AdventureManager()
|
||||
{
|
||||
@@ -68,7 +67,7 @@ void AdventureManager::Process()
|
||||
void AdventureManager::CalculateAdventureRequestReply(const char *data)
|
||||
{
|
||||
ServerAdventureRequest_Struct *sar = (ServerAdventureRequest_Struct*)data;
|
||||
ClientListEntry *leader = client_list.FindCharacter(sar->leader);
|
||||
ClientListEntry *leader = ClientList::Instance()->FindCharacter(sar->leader);
|
||||
if(!leader)
|
||||
{
|
||||
return;
|
||||
@@ -185,7 +184,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
|
||||
|
||||
for(int i = 0; i < sar->member_count; ++i)
|
||||
{
|
||||
ClientListEntry *current = client_list.FindCharacter((data + sizeof(ServerAdventureRequest_Struct) + (64 * i)));
|
||||
ClientListEntry *current = ClientList::Instance()->FindCharacter((data + sizeof(ServerAdventureRequest_Struct) + (64 * i)));
|
||||
if(current)
|
||||
{
|
||||
int lvl = current->level();
|
||||
@@ -324,7 +323,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
|
||||
if(eligible_adventures.size() > 0)
|
||||
{
|
||||
ea_iter = eligible_adventures.begin();
|
||||
int c_index = emu_random.Int(0, (eligible_adventures.size()-1));
|
||||
int c_index = EQ::Random::Instance()->Int(0, (eligible_adventures.size()-1));
|
||||
for(int i = 0; i < c_index; ++i)
|
||||
{
|
||||
++ea_iter;
|
||||
@@ -357,7 +356,7 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
|
||||
void AdventureManager::TryAdventureCreate(const char *data)
|
||||
{
|
||||
ServerAdventureRequestCreate_Struct *src = (ServerAdventureRequestCreate_Struct*)data;
|
||||
ClientListEntry *leader = client_list.FindCharacter(src->leader);
|
||||
ClientListEntry *leader = ClientList::Instance()->FindCharacter(src->leader);
|
||||
if(!leader)
|
||||
{
|
||||
return;
|
||||
@@ -404,7 +403,7 @@ void AdventureManager::TryAdventureCreate(const char *data)
|
||||
for(int i = 0; i < src->member_count; ++i)
|
||||
{
|
||||
|
||||
ClientListEntry *player = client_list.FindCharacter((data + sizeof(ServerAdventureRequestCreate_Struct) + (64 * i)));
|
||||
ClientListEntry *player = ClientList::Instance()->FindCharacter((data + sizeof(ServerAdventureRequestCreate_Struct) + (64 * i)));
|
||||
if(player)
|
||||
{
|
||||
int f_count = 0;
|
||||
@@ -458,7 +457,7 @@ void AdventureManager::GetAdventureData(Adventure *adv)
|
||||
|
||||
void AdventureManager::GetAdventureData(const char *name)
|
||||
{
|
||||
ClientListEntry *player = client_list.FindCharacter(name);
|
||||
ClientListEntry *player = ClientList::Instance()->FindCharacter(name);
|
||||
if(player)
|
||||
{
|
||||
int f_count = 0;
|
||||
@@ -764,7 +763,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do
|
||||
{
|
||||
if((*iter)->PlayerExists(player))
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack =
|
||||
@@ -792,7 +791,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do
|
||||
++iter;
|
||||
}
|
||||
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureClickDoorError, 64);
|
||||
@@ -804,7 +803,7 @@ void AdventureManager::PlayerClickedDoor(const char *player, int zone_id, int do
|
||||
|
||||
void AdventureManager::LeaveAdventure(const char *name)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(name);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(name);
|
||||
if(pc)
|
||||
{
|
||||
Adventure *current = GetActiveAdventure(name);
|
||||
@@ -867,7 +866,7 @@ void AdventureManager::IncrementCount(uint16 instance_id)
|
||||
|
||||
while(siter != slist.end())
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter((*siter).c_str());
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter((*siter).c_str());
|
||||
if(pc)
|
||||
{
|
||||
memset(ac->player, 0, 64);
|
||||
@@ -1262,7 +1261,7 @@ void AdventureManager::DoLeaderboardRequest(const char* player, uint8 type)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestWins(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1328,7 +1327,7 @@ void AdventureManager::DoLeaderboardRequestWins(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestPercentage(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1394,7 +1393,7 @@ void AdventureManager::DoLeaderboardRequestPercentage(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestWinsGuk(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1460,7 +1459,7 @@ void AdventureManager::DoLeaderboardRequestWinsGuk(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestPercentageGuk(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1526,7 +1525,7 @@ void AdventureManager::DoLeaderboardRequestPercentageGuk(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestWinsMir(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1592,7 +1591,7 @@ void AdventureManager::DoLeaderboardRequestWinsMir(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestPercentageMir(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1658,7 +1657,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMir(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestWinsMmc(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1724,7 +1723,7 @@ void AdventureManager::DoLeaderboardRequestWinsMmc(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestPercentageMmc(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
@@ -1790,7 +1789,7 @@ void AdventureManager::DoLeaderboardRequestPercentageMmc(const char* player)
|
||||
|
||||
void AdventureManager::DoLeaderboardRequestWinsRuj(const char* player)
|
||||
{
|
||||
ClientListEntry *pc = client_list.FindCharacter(player);
|
||||
ClientListEntry *pc = ClientList::Instance()->FindCharacter(player);
|
||||
if(pc)
|
||||
{
|
||||
auto pack = new ServerPacket(ServerOP_AdventureLeaderboard, 64 + sizeof(AdventureLeaderboard_Struct));
|
||||
|
||||
+27
-8
@@ -36,6 +36,7 @@
|
||||
#include "../common/shareddb.h"
|
||||
#include "../common/opcodemgr.h"
|
||||
#include "../common/data_verification.h"
|
||||
#include "../common/data_bucket.h"
|
||||
|
||||
#include "client.h"
|
||||
#include "worlddb.h"
|
||||
@@ -89,9 +90,7 @@ std::vector<RaceClassAllocation> character_create_allocations;
|
||||
std::vector<RaceClassCombos> character_create_race_class_combos;
|
||||
|
||||
extern ZSList zoneserver_list;
|
||||
extern LoginServerList loginserverlist;
|
||||
extern ClientList client_list;
|
||||
extern EQ::Random emu_random;
|
||||
extern uint32 numclients;
|
||||
extern volatile bool RunLoops;
|
||||
extern volatile bool UCSServerAvailable_;
|
||||
@@ -135,6 +134,8 @@ Client::Client(EQStreamInterface* ieqs)
|
||||
}
|
||||
|
||||
Client::~Client() {
|
||||
ClearDataBucketsCache();
|
||||
|
||||
if (RunLoops && cle && zone_id == 0)
|
||||
cle->SetOnline(CLE_Status::Offline);
|
||||
|
||||
@@ -477,6 +478,8 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
|
||||
LogClientLogin("Checking authentication id [{}]", id);
|
||||
|
||||
if ((cle = client_list.CheckAuth(id, password))) {
|
||||
LoadDataBucketsCache();
|
||||
|
||||
LogClientLogin("Checking authentication id [{}] passed", id);
|
||||
if (!is_player_zoning) {
|
||||
// Track who is in and who is out of the game
|
||||
@@ -514,7 +517,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
|
||||
ServerLSPlayerJoinWorld_Struct* join =(ServerLSPlayerJoinWorld_Struct*)pack->pBuffer;
|
||||
strcpy(join->key,GetLSKey());
|
||||
join->lsaccount_id = GetLSID();
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
|
||||
@@ -984,7 +987,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
safe_delete(outapp);
|
||||
|
||||
// set mailkey - used for duration of character session
|
||||
int mail_key = emu_random.Int(1, INT_MAX);
|
||||
int mail_key = EQ::Random::Instance()->Int(1, INT_MAX);
|
||||
|
||||
database.SetMailKey(charid, GetIP(), mail_key);
|
||||
if (UCSServerAvailable_) {
|
||||
@@ -1097,7 +1100,7 @@ bool Client::HandlePacket(const EQApplicationPacket *app) {
|
||||
OpcodeManager::EmuToName(app->GetOpcode()),
|
||||
o->EmuToEQ(app->GetOpcode()) == 0 ? app->GetProtocolOpcode() : o->EmuToEQ(app->GetOpcode()),
|
||||
app->Size(),
|
||||
(LogSys.IsLogEnabled(Logs::Detail, Logs::PacketClientServer) ? DumpPacketToString(app) : "")
|
||||
(EQEmuLogSys::Instance()->IsLogEnabled(Logs::Detail, Logs::PacketClientServer) ? DumpPacketToString(app) : "")
|
||||
);
|
||||
|
||||
if (!eqs->CheckState(ESTABLISHED)) {
|
||||
@@ -1246,7 +1249,7 @@ bool Client::Process() {
|
||||
ServerLSPlayerLeftWorld_Struct* logout =(ServerLSPlayerLeftWorld_Struct*)pack->pBuffer;
|
||||
strcpy(logout->key,GetLSKey());
|
||||
logout->lsaccount_id = GetLSID();
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
LogInfo("Client disconnected (not active in process)");
|
||||
@@ -2171,7 +2174,7 @@ void Client::SetClassStartingSkills(PlayerProfile_Struct *pp)
|
||||
i == EQ::skills::SkillAlcoholTolerance || i == EQ::skills::SkillBindWound)
|
||||
continue;
|
||||
|
||||
pp->skills[i] = skill_caps.GetSkillCap(pp->class_, (EQ::skills::SkillType)i, 1).cap;
|
||||
pp->skills[i] = SkillCaps::Instance()->GetSkillCap(pp->class_, (EQ::skills::SkillType)i, 1).cap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2369,7 +2372,7 @@ bool Client::StoreCharacter(
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string& zone_name = zone_store.GetZoneName(p_player_profile_struct->zone_id, true);
|
||||
const std::string& zone_name = ZoneStore::Instance()->GetZoneName(p_player_profile_struct->zone_id, true);
|
||||
if (Strings::EqualFold(zone_name, "UNKNOWN")) {
|
||||
p_player_profile_struct->zone_id = Zones::QEYNOS;
|
||||
}
|
||||
@@ -2518,3 +2521,19 @@ void Client::SendUnsupportedClientPacket(const std::string& message)
|
||||
|
||||
QueuePacket(&packet);
|
||||
}
|
||||
|
||||
void Client::LoadDataBucketsCache()
|
||||
{
|
||||
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Account, {GetAccountID()});
|
||||
const auto ids = CharacterDataRepository::GetCharacterIDsByAccountID(database, GetAccountID());
|
||||
DataBucket::BulkLoadEntitiesToCache(DataBucketLoadType::Client, ids);
|
||||
}
|
||||
|
||||
void Client::ClearDataBucketsCache()
|
||||
{
|
||||
DataBucket::DeleteFromCache(GetAccountID(), DataBucketLoadType::Account);
|
||||
auto ids = CharacterDataRepository::GetCharacterIDsByAccountID(database, GetAccountID());
|
||||
for (const auto& id : ids) {
|
||||
DataBucket::DeleteFromCache(id, DataBucketLoadType::Client);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,9 @@ private:
|
||||
bool CanTradeFVNoDropItem();
|
||||
void RecordPossibleHack(const std::string& message);
|
||||
void SendUnsupportedClientPacket(const std::string& message);
|
||||
|
||||
void LoadDataBucketsCache();
|
||||
void ClearDataBucketsCache();
|
||||
};
|
||||
|
||||
bool CheckCharCreateInfoSoF(CharCreate_Struct *cc);
|
||||
|
||||
@@ -9,10 +9,8 @@
|
||||
#include "world_config.h"
|
||||
|
||||
extern uint32 numplayers;
|
||||
extern LoginServerList loginserverlist;
|
||||
extern ClientList client_list;
|
||||
extern volatile bool RunLoops;
|
||||
extern SharedTaskManager shared_task_manager;
|
||||
|
||||
ClientListEntry::ClientListEntry(
|
||||
uint32 id,
|
||||
@@ -94,7 +92,7 @@ ClientListEntry::~ClientListEntry()
|
||||
{
|
||||
if (RunLoops) {
|
||||
Camp(); // updates zoneserver's numplayers
|
||||
client_list.RemoveCLEReferances(this);
|
||||
ClientList::Instance()->RemoveCLEReferances(this);
|
||||
}
|
||||
for (auto &elem: m_tell_queue) {
|
||||
safe_delete_array(elem);
|
||||
@@ -146,7 +144,7 @@ void ClientListEntry::LSUpdate(ZoneServer *iZS)
|
||||
zone->count = iZS->NumPlayers();
|
||||
zone->zone = iZS->GetZoneID();
|
||||
zone->zone_wid = iZS->GetID();
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
}
|
||||
@@ -162,7 +160,7 @@ void ClientListEntry::LSZoneChange(ZoneToZone_Struct *ztz)
|
||||
zonechange->lsaccount_id = LSID();
|
||||
zonechange->from = ztz->current_zone_id;
|
||||
zonechange->to = ztz->requested_zone_id;
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
}
|
||||
@@ -224,7 +222,7 @@ void ClientListEntry::LeavingZone(ZoneServer *iZS, CLE_Status iOnline)
|
||||
}
|
||||
SetOnline(iOnline);
|
||||
|
||||
shared_task_manager.RemoveActiveInvitationByCharacterID(CharID());
|
||||
SharedTaskManager::Instance()->RemoveActiveInvitationByCharacterID(CharID());
|
||||
|
||||
if (m_zone_server) {
|
||||
m_zone_server->RemovePlayer();
|
||||
|
||||
@@ -85,6 +85,12 @@ public:
|
||||
return {m_gm_zone_server_ids.begin(), m_gm_zone_server_ids.end()};
|
||||
}
|
||||
|
||||
static ClientList* Instance()
|
||||
{
|
||||
static ClientList instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
private:
|
||||
void OnTick(EQ::Timer *t);
|
||||
inline uint32 GetNextCLEID() { return NextCLEID++; }
|
||||
|
||||
+48
-7
@@ -35,7 +35,6 @@
|
||||
|
||||
extern ClientList client_list;
|
||||
extern ZSList zoneserver_list;
|
||||
extern LoginServerList loginserverlist;
|
||||
|
||||
/**
|
||||
* @param username
|
||||
@@ -534,8 +533,8 @@ void ConsoleLock(
|
||||
)
|
||||
{
|
||||
WorldConfig::LockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
connection->SendLine("World locked.");
|
||||
}
|
||||
else {
|
||||
@@ -555,8 +554,8 @@ void ConsoleUnlock(
|
||||
)
|
||||
{
|
||||
WorldConfig::UnlockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
connection->SendLine("World unlocked.");
|
||||
}
|
||||
else {
|
||||
@@ -1219,7 +1218,7 @@ void ConsoleCrossZoneMove(
|
||||
const auto& zone_short_name = !Strings::IsNumber(args[2]) ? args[2] : "";
|
||||
const uint16 instance_id = Strings::IsNumber(args[2]) ? static_cast<uint16>(Strings::ToUnsignedInt(args[2])) : 0;
|
||||
|
||||
const auto& z = !zone_short_name.empty() ? zone_store.GetZone(zone_short_name) : nullptr;
|
||||
const auto& z = !zone_short_name.empty() ? ZoneStore::Instance()->GetZone(zone_short_name) : nullptr;
|
||||
|
||||
if (z && !z->id) {
|
||||
connection->SendLine(fmt::format("No zone with the short name '{}' exists.", zone_short_name));
|
||||
@@ -1289,7 +1288,7 @@ void ConsoleWorldWideMove(
|
||||
const auto& zone_short_name = !Strings::IsNumber(args[2]) ? args[2] : "";
|
||||
const uint16 instance_id = Strings::IsNumber(args[2]) ? static_cast<uint16>(Strings::ToUnsignedInt(args[2])) : 0;
|
||||
|
||||
const auto& z = !zone_short_name.empty() ? zone_store.GetZone(zone_short_name) : nullptr;
|
||||
const auto& z = !zone_short_name.empty() ? ZoneStore::Instance()->GetZone(zone_short_name) : nullptr;
|
||||
|
||||
if (z && !z->id) {
|
||||
connection->SendLine(fmt::format("No zone with the short name '{}' exists.", zone_short_name));
|
||||
@@ -1330,6 +1329,42 @@ void ConsoleWorldWideMove(
|
||||
);
|
||||
}
|
||||
|
||||
void ConsoleWWMarquee(
|
||||
EQ::Net::ConsoleServerConnection* connection,
|
||||
const std::string& command,
|
||||
const std::vector<std::string>& args
|
||||
)
|
||||
{
|
||||
if (args.size() < 2) {
|
||||
connection->SendLine("Usage: wwmarquee <type> <message>");
|
||||
return;
|
||||
}
|
||||
|
||||
const uint32 type = Strings::IsNumber(args[0]) ? Strings::ToUnsignedInt(args[0]) : 0;
|
||||
std::string message = Strings::Join(std::vector<std::string>(args.begin() + 1, args.end()), " ");
|
||||
if (message.empty()) {
|
||||
connection->SendLine("Message cannot be empty.");
|
||||
return;
|
||||
}
|
||||
|
||||
auto pack = new ServerPacket(ServerOP_WWMarquee, sizeof(WWMarquee_Struct));
|
||||
auto* wwm = (WWMarquee_Struct*)pack->pBuffer;
|
||||
|
||||
wwm->type = type;
|
||||
wwm->priority = 510;
|
||||
wwm->fade_in = 0;
|
||||
wwm->fade_out = 0;
|
||||
wwm->duration = 5000;
|
||||
wwm->min_status = AccountStatus::Player;
|
||||
wwm->max_status = AccountStatus::Player;
|
||||
|
||||
strn0cpy(wwm->message, message.c_str(), sizeof(wwm->message));
|
||||
|
||||
zoneserver_list.SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
|
||||
connection->SendLine(fmt::format("Sent world marquee type {}: {}", type, message));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param console
|
||||
@@ -1367,6 +1402,12 @@ void RegisterConsoleFunctions(std::unique_ptr<EQ::Net::ConsoleServer>& console)
|
||||
console->RegisterCall("whoami", 50, "whoami", std::bind(ConsoleWhoami, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
console->RegisterCall("worldshutdown", 200, "worldshutdown", std::bind(ConsoleWorldShutdown, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
console->RegisterCall("wwcast", 50, "wwcast [spell_id] [min_status] [max_status] - min_status and max_status are optional", std::bind(ConsoleWorldWideCastSpell, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
console->RegisterCall(
|
||||
"wwmarquee",
|
||||
50,
|
||||
"wwmarquee <type> <message>",
|
||||
std::bind(ConsoleWWMarquee, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
console->RegisterCall("wwmove", 50, "wwmove [instance_id|zone_short_name] [min_status] [max_status] - min_status and max_status are optional, instance_id and zone_short_name are interchangeable", std::bind(ConsoleWorldWideMove, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
console->RegisterCall("zonebootup", 150, "zonebootup [zone_server_id] [zone_short_name]", std::bind(ConsoleZoneBootup, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
console->RegisterCall("zonelock", 150, "zonelock [list|lock|unlock] [zone_short_name]", std::bind(ConsoleZoneLock, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
|
||||
@@ -41,7 +41,7 @@ void DynamicZone::ChooseNewLeader()
|
||||
|
||||
auto it = std::find_if(m_members.begin(), m_members.end(), [&](const DynamicZoneMember& member) {
|
||||
if (member.id != GetLeaderID() && member.IsOnline()) {
|
||||
auto member_cle = client_list.FindCLEByCharacterID(member.id);
|
||||
auto member_cle = ClientList::Instance()->FindCLEByCharacterID(member.id);
|
||||
return (member_cle && member_cle->GetOnline() == CLE_Status::InZone);
|
||||
}
|
||||
return false;
|
||||
@@ -230,8 +230,8 @@ void DynamicZone::CacheMemberStatuses()
|
||||
// called when a new dz is cached to fill member statuses
|
||||
std::string zone_name;
|
||||
std::vector<ClientListEntry*> all_clients;
|
||||
all_clients.reserve(client_list.GetClientCount());
|
||||
client_list.GetClients(zone_name.c_str(), all_clients);
|
||||
all_clients.reserve(ClientList::Instance()->GetClientCount());
|
||||
ClientList::Instance()->GetClients(zone_name.c_str(), all_clients);
|
||||
|
||||
for (const auto& member : m_members)
|
||||
{
|
||||
|
||||
@@ -210,7 +210,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
{
|
||||
auto buf = reinterpret_cast<ServerDzCommand_Struct*>(pack->pBuffer);
|
||||
|
||||
ClientListEntry* cle = client_list.FindCharacter(buf->target_name);
|
||||
ClientListEntry* cle = ClientList::Instance()->FindCharacter(buf->target_name);
|
||||
if (cle && cle->Server())
|
||||
{
|
||||
// continue in the add target's zone
|
||||
@@ -220,7 +220,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
else
|
||||
{
|
||||
// add target not online, return to inviter
|
||||
ClientListEntry* inviter_cle = client_list.FindCharacter(buf->requester_name);
|
||||
ClientListEntry* inviter_cle = ClientList::Instance()->FindCharacter(buf->requester_name);
|
||||
if (inviter_cle && inviter_cle->Server())
|
||||
{
|
||||
inviter_cle->Server()->SendPacket(pack);
|
||||
@@ -231,7 +231,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
case ServerOP_DzSaveInvite:
|
||||
{
|
||||
auto buf = reinterpret_cast<ServerDzCommand_Struct*>(pack->pBuffer);
|
||||
if (ClientListEntry* cle = client_list.FindCharacter(buf->target_name))
|
||||
if (ClientListEntry* cle = ClientList::Instance()->FindCharacter(buf->target_name))
|
||||
{
|
||||
// store packet on cle and re-send it when client requests it
|
||||
buf->is_char_online = true;
|
||||
@@ -243,7 +243,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
case ServerOP_DzRequestInvite:
|
||||
{
|
||||
auto buf = reinterpret_cast<ServerCharacterID_Struct*>(pack->pBuffer);
|
||||
if (ClientListEntry* cle = client_list.FindCLEByCharacterID(buf->char_id))
|
||||
if (ClientListEntry* cle = ClientList::Instance()->FindCLEByCharacterID(buf->char_id))
|
||||
{
|
||||
auto invite_pack = cle->GetPendingDzInvite();
|
||||
if (invite_pack && cle->Server())
|
||||
@@ -259,7 +259,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
|
||||
// notify requester (old leader) and new leader of the result
|
||||
ZoneServer* new_leader_zs = nullptr;
|
||||
ClientListEntry* leader_cle = client_list.FindCharacter(buf->new_leader_name);
|
||||
ClientListEntry* leader_cle = ClientList::Instance()->FindCharacter(buf->new_leader_name);
|
||||
if (leader_cle && leader_cle->Server())
|
||||
{
|
||||
auto dz = DynamicZone::FindDynamicZoneByID(buf->dz_id);
|
||||
@@ -274,7 +274,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
}
|
||||
|
||||
// if old and new leader are in the same zone only send one message
|
||||
ClientListEntry* requester_cle = client_list.FindCLEByCharacterID(buf->requester_id);
|
||||
ClientListEntry* requester_cle = ClientList::Instance()->FindCLEByCharacterID(buf->requester_id);
|
||||
if (requester_cle && requester_cle->Server() && requester_cle->Server() != new_leader_zs)
|
||||
{
|
||||
requester_cle->Server()->SendPacket(pack);
|
||||
@@ -441,7 +441,7 @@ void DynamicZoneManager::HandleZoneMessage(ServerPacket* pack)
|
||||
case ServerOP_DzCharacterLockout:
|
||||
{
|
||||
auto buf = reinterpret_cast<ServerDzCharacterLockout_Struct*>(pack->pBuffer);
|
||||
auto cle = client_list.FindCLEByCharacterID(buf->char_id);
|
||||
auto cle = ClientList::Instance()->FindCLEByCharacterID(buf->char_id);
|
||||
if (cle && cle->Server())
|
||||
{
|
||||
cle->Server()->SendPacket(pack);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
extern ZSList zoneserver_list;
|
||||
extern ClientList client_list;
|
||||
extern WorldGuildManager guild_mgr;
|
||||
extern UCSConnection UCSLink;
|
||||
extern QueryServConnection QSLink;
|
||||
|
||||
void callGetZoneList(Json::Value &response)
|
||||
@@ -125,7 +124,7 @@ void callGetClientList(Json::Value &response, const std::vector<std::string> &ar
|
||||
}
|
||||
}
|
||||
|
||||
client_list.GetClientList(response, full_list);
|
||||
ClientList::Instance()->GetClientList(response, full_list);
|
||||
}
|
||||
|
||||
void getReloadTypes(Json::Value &response)
|
||||
@@ -142,7 +141,7 @@ void getReloadTypes(Json::Value &response)
|
||||
void getServerCounts(Json::Value &response, const std::vector<std::string> &args)
|
||||
{
|
||||
response["zone_count"] = zoneserver_list.GetServerListCount();
|
||||
response["client_count"] = client_list.GetClientCount();
|
||||
response["client_count"] = ClientList::Instance()->GetClientCount();
|
||||
}
|
||||
|
||||
void EQEmuApiWorldDataService::reload(Json::Value &r, const std::vector<std::string> &args)
|
||||
@@ -259,7 +258,7 @@ void EQEmuApiWorldDataService::callGetGuildDetails(Json::Value &response, const
|
||||
row["tribute"]["time_remaining"] = guild->tribute.time_remaining;
|
||||
row["tribute"]["enabled"] = guild->tribute.enabled;
|
||||
|
||||
client_list.GetGuildClientList(response, guild_id);
|
||||
ClientList::Instance()->GetGuildClientList(response, guild_id);
|
||||
|
||||
response.append(row);
|
||||
}
|
||||
|
||||
+5
-6
@@ -48,7 +48,6 @@
|
||||
extern ZSList zoneserver_list;
|
||||
extern ClientList client_list;
|
||||
extern uint32 numzones;
|
||||
extern LoginServerList loginserverlist;
|
||||
extern LauncherList launcher_list;
|
||||
extern volatile bool RunLoops;
|
||||
|
||||
@@ -86,15 +85,15 @@ const std::string &EQW::GetOutput() const {
|
||||
|
||||
void EQW::LockWorld() {
|
||||
WorldConfig::LockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
}
|
||||
}
|
||||
|
||||
void EQW::UnlockWorld() {
|
||||
WorldConfig::UnlockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +103,7 @@ Const_char *EQW::GetConfig(Const_char *var_name) {
|
||||
}
|
||||
|
||||
bool EQW::LSConnected() {
|
||||
return(loginserverlist.Connected());
|
||||
return(LoginServerList::Instance()->Connected());
|
||||
}
|
||||
|
||||
int EQW::CountZones() {
|
||||
|
||||
@@ -108,7 +108,7 @@ void LoginServer::ProcessUsertoWorldReqLeg(uint16_t opcode, EQ::Net::Packet &p)
|
||||
}
|
||||
|
||||
if (RuleB(World, EnforceCharacterLimitAtLogin)) {
|
||||
if (client_list.IsAccountInGame(utwr->lsaccountid)) {
|
||||
if (ClientList::Instance()->IsAccountInGame(utwr->lsaccountid)) {
|
||||
LogDebug("User already online account_id [{0}]", utwr->lsaccountid);
|
||||
utwrs->response = UserToWorldStatusAlreadyOnline;
|
||||
SendPacket(&outpack);
|
||||
@@ -189,7 +189,7 @@ void LoginServer::ProcessUsertoWorldReq(uint16_t opcode, EQ::Net::Packet &p)
|
||||
}
|
||||
|
||||
if (RuleB(World, EnforceCharacterLimitAtLogin)) {
|
||||
if (client_list.IsAccountInGame(utwr->lsaccountid)) {
|
||||
if (ClientList::Instance()->IsAccountInGame(utwr->lsaccountid)) {
|
||||
LogDebug("User already online account_id [{0}]", utwr->lsaccountid);
|
||||
utwrs->response = UserToWorldStatusAlreadyOnline;
|
||||
SendPacket(&outpack);
|
||||
@@ -221,7 +221,7 @@ void LoginServer::ProcessLSClientAuthLegacy(uint16_t opcode, EQ::Net::Packet &p)
|
||||
r.is_client_from_local_network
|
||||
);
|
||||
|
||||
client_list.CLEAdd(
|
||||
ClientList::Instance()->CLEAdd(
|
||||
r.loginserver_account_id,
|
||||
"eqemu",
|
||||
r.loginserver_account_name,
|
||||
@@ -256,7 +256,7 @@ void LoginServer::ProcessLSClientAuth(uint16_t opcode, EQ::Net::Packet &p)
|
||||
r.is_client_from_local_network
|
||||
);
|
||||
|
||||
client_list.CLEAdd(
|
||||
ClientList::Instance()->CLEAdd(
|
||||
r.loginserver_account_id,
|
||||
r.loginserver_name,
|
||||
r.account_name,
|
||||
|
||||
@@ -37,7 +37,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "world_config.h"
|
||||
|
||||
extern ZSList zoneserver_list;
|
||||
extern LoginServerList loginserverlist;
|
||||
extern ClientList client_list;
|
||||
extern uint32 numzones;
|
||||
extern uint32 numplayers;
|
||||
|
||||
@@ -21,6 +21,13 @@ public:
|
||||
bool SendAccountUpdate(ServerPacket *pack);
|
||||
bool Connected();
|
||||
size_t GetServerCount() const { return m_list.size(); }
|
||||
|
||||
static LoginServerList* Instance()
|
||||
{
|
||||
static LoginServerList instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
protected:
|
||||
std::list<std::unique_ptr<LoginServer>> m_list;
|
||||
};
|
||||
|
||||
+15
-14
@@ -91,28 +91,24 @@
|
||||
#include "../common/repositories/character_parcels_repository.h"
|
||||
#include "../common/ip_util.h"
|
||||
|
||||
SkillCaps skill_caps;
|
||||
ZoneStore zone_store;
|
||||
ClientList client_list;
|
||||
GroupLFPList LFPGroupList;
|
||||
ZSList zoneserver_list;
|
||||
<<<<<<< kinglykrab/ucsconnection-global-to-singleton
|
||||
LoginServerList loginserverlist;
|
||||
=======
|
||||
UCSConnection UCSLink;
|
||||
>>>>>>> master
|
||||
QueryServConnection QSLink;
|
||||
LauncherList launcher_list;
|
||||
WorldEventScheduler event_scheduler;
|
||||
SharedTaskManager shared_task_manager;
|
||||
EQ::Random emu_random;
|
||||
volatile bool RunLoops = true;
|
||||
uint32 numclients = 0;
|
||||
uint32 numzones = 0;
|
||||
const WorldConfig *Config;
|
||||
EQEmuLogSys LogSys;
|
||||
WorldContentService content_service;
|
||||
WebInterfaceList web_interface;
|
||||
PathManager path;
|
||||
PlayerEventLogs player_event_logs;
|
||||
EvolvingItemsManager evolving_items_manager;
|
||||
|
||||
void CatchSignal(int sig_num);
|
||||
|
||||
@@ -134,14 +130,14 @@ inline void UpdateWindowTitle(std::string new_title)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
RegisterExecutablePlatform(ExePlatformWorld);
|
||||
LogSys.LoadLogSettingsDefaults();
|
||||
EQEmuLogSys::Instance()->LoadLogSettingsDefaults();
|
||||
set_exception_handler();
|
||||
|
||||
if (WorldBoot::HandleCommandInput(argc, argv)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
path.LoadPaths();
|
||||
PathManager::Instance()->Init();
|
||||
|
||||
if (!WorldBoot::LoadServerConfig()) {
|
||||
return 0;
|
||||
@@ -206,7 +202,7 @@ int main(int argc, char **argv)
|
||||
->SetExpansionContext()
|
||||
->ReloadContentFlags();
|
||||
|
||||
skill_caps.SetContentDatabase(&content_db)->LoadSkillCaps();
|
||||
SkillCaps::Instance()->SetContentDatabase(&content_db)->LoadSkillCaps();
|
||||
|
||||
std::unique_ptr<EQ::Net::ServertalkServer> server_connection;
|
||||
server_connection = std::make_unique<EQ::Net::ServertalkServer>();
|
||||
@@ -302,7 +298,7 @@ int main(int argc, char **argv)
|
||||
connection->GetUUID()
|
||||
);
|
||||
|
||||
UCSLink.SetConnection(connection);
|
||||
UCSConnection::Instance()->SetConnection(connection);
|
||||
|
||||
zoneserver_list.UpdateUCSServerAvailable();
|
||||
}
|
||||
@@ -312,11 +308,11 @@ int main(int argc, char **argv)
|
||||
"UCS", [](std::shared_ptr<EQ::Net::ServertalkServerConnection> connection) {
|
||||
LogInfo("Connection lost from UCS Server [{}]", connection->GetUUID());
|
||||
|
||||
auto ucs_connection = UCSLink.GetConnection();
|
||||
auto ucs_connection = UCSConnection::Instance()->GetConnection();
|
||||
|
||||
if (ucs_connection->GetUUID() == connection->GetUUID()) {
|
||||
LogInfo("Removing currently active UCS connection");
|
||||
UCSLink.SetConnection(nullptr);
|
||||
UCSConnection::Instance()->SetConnection(nullptr);
|
||||
zoneserver_list.UpdateUCSServerAvailable(false);
|
||||
}
|
||||
}
|
||||
@@ -474,8 +470,13 @@ int main(int argc, char **argv)
|
||||
zoneserver_list.Process();
|
||||
launcher_list.Process();
|
||||
LFPGroupList.Process();
|
||||
<<<<<<< kinglykrab/adventuremanager-global-to-singleton
|
||||
AdventureManager::Instance()->Process();
|
||||
shared_task_manager.Process();
|
||||
=======
|
||||
adventure_manager.Process();
|
||||
SharedTaskManager::Instance()->Process();
|
||||
>>>>>>> master
|
||||
dynamic_zone_manager.Process();
|
||||
|
||||
if (!RuleB(Logging, PlayerEventsQSProcess)) {
|
||||
@@ -508,7 +509,7 @@ int main(int argc, char **argv)
|
||||
zoneserver_list.KillAll();
|
||||
LogInfo("Zone (TCP) listener stopped");
|
||||
LogInfo("Signaling HTTP service to stop");
|
||||
LogSys.CloseFileLogs();
|
||||
EQEmuLogSys::Instance()->CloseFileLogs();
|
||||
|
||||
WorldBoot::Shutdown();
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ void SharedTaskManager::RemoveMember(SharedTask* s, const SharedTaskMember& memb
|
||||
|
||||
SendSharedTaskMemberRemovedToAllMembers(s, member.character_name);
|
||||
|
||||
client_list.SendCharacterMessageID(member.character_id, Chat::Yellow,
|
||||
ClientList::Instance()->SendCharacterMessageID(member.character_id, Chat::Yellow,
|
||||
TaskStr::PLAYER_REMOVED, {member.character_name, s->GetTaskData().title});
|
||||
|
||||
if (member.is_leader) {
|
||||
@@ -229,10 +229,10 @@ void SharedTaskManager::RemoveEveryoneFromSharedTask(SharedTask *t, uint32 reque
|
||||
|
||||
SendRemovePlayerFromSharedTaskPacket(m.character_id, t->GetTaskData().id, true);
|
||||
|
||||
client_list.SendCharacterMessageID(m.character_id, Chat::Yellow, TaskStr::YOU_REMOVED, {t->GetTaskData().title});
|
||||
ClientList::Instance()->SendCharacterMessageID(m.character_id, Chat::Yellow, TaskStr::YOU_REMOVED, {t->GetTaskData().title});
|
||||
}
|
||||
|
||||
client_list.SendCharacterMessageID(requested_character_id, Chat::Red, TaskStr::PLAYER_REMOVED, {"Everyone", t->GetTaskData().title});
|
||||
ClientList::Instance()->SendCharacterMessageID(requested_character_id, Chat::Red, TaskStr::PLAYER_REMOVED, {"Everyone", t->GetTaskData().title});
|
||||
|
||||
RemoveAllMembersFromDynamicZones(t);
|
||||
|
||||
@@ -252,7 +252,7 @@ void SharedTaskManager::Terminate(SharedTask& s, bool send_fail, bool erase)
|
||||
SendSharedTaskFailed(member.character_id, s.GetTaskData().id);
|
||||
}
|
||||
SendRemovePlayerFromSharedTaskPacket(member.character_id, s.GetTaskData().id, true);
|
||||
client_list.SendCharacterMessageID(member.character_id, Chat::Yellow, TaskStr::HAS_ENDED, {s.GetTaskData().title});
|
||||
ClientList::Instance()->SendCharacterMessageID(member.character_id, Chat::Yellow, TaskStr::HAS_ENDED, {s.GetTaskData().title});
|
||||
}
|
||||
|
||||
RemoveAllMembersFromDynamicZones(&s);
|
||||
@@ -581,7 +581,7 @@ void SharedTaskManager::SharedTaskActivityUpdate(
|
||||
d->ignore_quest_update = ignore_quest_update;
|
||||
|
||||
// get requested character zone server
|
||||
ClientListEntry *c = client_list.FindCLEByCharacterID(m.character_id);
|
||||
ClientListEntry *c = ClientList::Instance()->FindCLEByCharacterID(m.character_id);
|
||||
if (c && c->Server()) {
|
||||
c->Server()->SendPacket(p.get());
|
||||
}
|
||||
@@ -683,7 +683,7 @@ void SharedTaskManager::SendAcceptNewSharedTaskPacket(
|
||||
d->accept_time = accept_time;
|
||||
|
||||
// get requested character zone server
|
||||
ClientListEntry *cle = client_list.FindCLEByCharacterID(character_id);
|
||||
ClientListEntry *cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
|
||||
if (cle && cle->Server()) {
|
||||
cle->Server()->SendPacket(p.get());
|
||||
}
|
||||
@@ -704,7 +704,7 @@ void SharedTaskManager::SendRemovePlayerFromSharedTaskPacket(
|
||||
d->remove_from_db = remove_from_db;
|
||||
|
||||
// get requested character zone server
|
||||
ClientListEntry *cle = client_list.FindCLEByCharacterID(character_id);
|
||||
ClientListEntry *cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
|
||||
if (cle && cle->Server()) {
|
||||
cle->Server()->SendPacket(p.get());
|
||||
}
|
||||
@@ -717,7 +717,7 @@ void SharedTaskManager::SendSharedTaskFailed(uint32_t character_id, uint32_t tas
|
||||
buf->character_id = character_id;
|
||||
buf->task_id = task_id;
|
||||
|
||||
ClientListEntry* cle = client_list.FindCLEByCharacterID(character_id);
|
||||
ClientListEntry* cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
|
||||
if (cle && cle->Server())
|
||||
{
|
||||
cle->Server()->SendPacket(&pack);
|
||||
@@ -746,7 +746,7 @@ void SharedTaskManager::SendSharedTaskMemberList(uint32 character_id, const EQ::
|
||||
memcpy(d->cereal_serialized_members, serialized_members.Data(), serialized_members.Length());
|
||||
|
||||
// send memberlist
|
||||
ClientListEntry *cle = client_list.FindCLEByCharacterID(character_id);
|
||||
ClientListEntry *cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
|
||||
if (cle && cle->Server()) {
|
||||
cle->Server()->SendPacket(p.get());
|
||||
}
|
||||
@@ -768,7 +768,7 @@ void SharedTaskManager::SendSharedTaskMemberChange(
|
||||
d->removed = removed;
|
||||
strn0cpy(d->player_name, player_name.c_str(), sizeof(d->player_name));
|
||||
|
||||
ClientListEntry *cle = client_list.FindCLEByCharacterID(character_id);
|
||||
ClientListEntry *cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
|
||||
if (cle && cle->Server()) {
|
||||
cle->Server()->SendPacket(p.get());
|
||||
}
|
||||
@@ -990,7 +990,7 @@ void SharedTaskManager::SendSharedTaskInvitePacket(SharedTask *s, int64 invited_
|
||||
strn0cpy(d->task_name, s->GetTaskData().title.c_str(), sizeof(d->task_name));
|
||||
|
||||
// get requested character zone server
|
||||
ClientListEntry *cle = client_list.FindCLEByCharacterID(invited_character_id);
|
||||
ClientListEntry *cle = ClientList::Instance()->FindCLEByCharacterID(invited_character_id);
|
||||
if (cle && cle->Server()) {
|
||||
SendLeaderMessageID(s, Chat::Yellow, TaskStr::SEND_INVITE_TO, {cle->name()});
|
||||
cle->Server()->SendPacket(p.get());
|
||||
@@ -1213,7 +1213,7 @@ void SharedTaskManager::SendLeaderMessage(SharedTask *shared_task, int chat_type
|
||||
|
||||
for (const auto &member : shared_task->GetMembers()) {
|
||||
if (member.is_leader) {
|
||||
client_list.SendCharacterMessage(member.character_id, chat_type, message);
|
||||
ClientList::Instance()->SendCharacterMessage(member.character_id, chat_type, message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1230,7 +1230,7 @@ void SharedTaskManager::SendLeaderMessageID(
|
||||
|
||||
for (const auto &member : shared_task->GetMembers()) {
|
||||
if (member.is_leader) {
|
||||
client_list.SendCharacterMessageID(member.character_id, chat_type, eqstr_id, args);
|
||||
ClientList::Instance()->SendCharacterMessageID(member.character_id, chat_type, eqstr_id, args);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1243,7 +1243,7 @@ void SharedTaskManager::SendMembersMessage(SharedTask *shared_task, int chat_typ
|
||||
}
|
||||
|
||||
for (const auto &member : shared_task->GetMembers()) {
|
||||
client_list.SendCharacterMessage(member.character_id, chat_type, message);
|
||||
ClientList::Instance()->SendCharacterMessage(member.character_id, chat_type, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,6 +102,12 @@ public:
|
||||
void SetSharedTasks(const std::vector<SharedTask> &shared_tasks);
|
||||
|
||||
SharedTaskManager * PurgeExpiredSharedTasks();
|
||||
|
||||
static SharedTaskManager* Instance()
|
||||
{
|
||||
static SharedTaskManager instance;
|
||||
return &instance;
|
||||
}
|
||||
protected:
|
||||
// reference to database
|
||||
Database *m_database;
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
extern ClientList client_list;
|
||||
extern ZSList zoneserver_list;
|
||||
extern SharedTaskManager shared_task_manager;
|
||||
|
||||
void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
{
|
||||
@@ -30,7 +29,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->requested_npc_entity_id
|
||||
);
|
||||
|
||||
shared_task_manager.AttemptSharedTaskCreation(
|
||||
SharedTaskManager::Instance()->AttemptSharedTaskCreation(
|
||||
r->requested_task_id,
|
||||
r->requested_character_id,
|
||||
r->requested_npc_entity_id
|
||||
@@ -47,11 +46,11 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->remove_from_db
|
||||
);
|
||||
|
||||
auto s = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->requested_character_id);
|
||||
auto s = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->requested_character_id);
|
||||
if (s) {
|
||||
auto member = s->FindMemberFromCharacterID(r->requested_character_id);
|
||||
if (member.character_id != 0) {
|
||||
shared_task_manager.RemoveMember(s, member, r->remove_from_db);
|
||||
SharedTaskManager::Instance()->RemoveMember(s, member, r->remove_from_db);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -64,14 +63,14 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->task_id
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
if (t) {
|
||||
auto leader = t->GetLeader();
|
||||
if (leader.character_id != r->source_character_id) {
|
||||
client_list.SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
ClientList::Instance()->SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
}
|
||||
else {
|
||||
shared_task_manager.RemoveEveryoneFromSharedTask(t, r->source_character_id);
|
||||
SharedTaskManager::Instance()->RemoveEveryoneFromSharedTask(t, r->source_character_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +88,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
(r->ignore_quest_update ? "true" : "false")
|
||||
);
|
||||
|
||||
shared_task_manager.SharedTaskActivityUpdate(
|
||||
SharedTaskManager::Instance()->SharedTaskActivityUpdate(
|
||||
r->source_character_id,
|
||||
r->task_id,
|
||||
r->activity_id,
|
||||
@@ -108,7 +107,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->task_id
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
if (t) {
|
||||
LogTasksDetail(
|
||||
"[ServerOP_SharedTaskRequestMemberlist] Found shared task character [{}] shared_task_id [{}]",
|
||||
@@ -116,7 +115,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
t->GetDbSharedTask().id
|
||||
);
|
||||
|
||||
shared_task_manager.SendSharedTaskMemberList(
|
||||
SharedTaskManager::Instance()->SendSharedTaskMemberList(
|
||||
r->source_character_id,
|
||||
t->GetMembers()
|
||||
);
|
||||
@@ -134,7 +133,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->player_name
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
if (t) {
|
||||
LogTasksDetail(
|
||||
"[ServerOP_SharedTaskRemovePlayer] Found shared task character [{}] shared_task_id [{}]",
|
||||
@@ -144,7 +143,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
|
||||
auto leader = t->GetLeader();
|
||||
if (leader.character_id != r->source_character_id) {
|
||||
client_list.SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
ClientList::Instance()->SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
}
|
||||
else {
|
||||
LogTasksDetail(
|
||||
@@ -155,11 +154,11 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
|
||||
auto member = t->FindMemberFromCharacterName(r->player_name);
|
||||
if (member.character_id == 0) {
|
||||
shared_task_manager.SendLeaderMessageID(t, Chat::Red, TaskStr::IS_NOT_MEMBER, {r->player_name});
|
||||
SharedTaskManager::Instance()->SendLeaderMessageID(t, Chat::Red, TaskStr::IS_NOT_MEMBER, {r->player_name});
|
||||
}
|
||||
else {
|
||||
shared_task_manager.RemoveMember(t, member, true);
|
||||
shared_task_manager.SendLeaderMessageID(t, Chat::Yellow, TaskStr::PLAYER_REMOVED, {member.character_name, t->GetTaskData().title});
|
||||
SharedTaskManager::Instance()->RemoveMember(t, member, true);
|
||||
SharedTaskManager::Instance()->SendLeaderMessageID(t, Chat::Yellow, TaskStr::PLAYER_REMOVED, {member.character_name, t->GetTaskData().title});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -176,7 +175,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->player_name
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
if (t) {
|
||||
LogTasksDetail(
|
||||
"[ServerOP_SharedTaskMakeLeader] Found shared task character [{}] shared_task_id [{}]",
|
||||
@@ -186,10 +185,10 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
|
||||
auto leader = t->GetLeader();
|
||||
if (leader.character_id != r->source_character_id) {
|
||||
client_list.SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
ClientList::Instance()->SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
}
|
||||
else if (strcasecmp(leader.character_name.c_str(), r->player_name) == 0) {
|
||||
client_list.SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::YOU_ALREADY_LEADER);
|
||||
ClientList::Instance()->SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::YOU_ALREADY_LEADER);
|
||||
}
|
||||
else {
|
||||
LogTasksDetail(
|
||||
@@ -199,7 +198,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
);
|
||||
|
||||
std::string character_name = r->player_name;
|
||||
shared_task_manager.MakeLeaderByPlayerName(t, character_name);
|
||||
SharedTaskManager::Instance()->MakeLeaderByPlayerName(t, character_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,7 +214,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->player_name
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(r->task_id, r->source_character_id);
|
||||
if (t) {
|
||||
LogTasksDetail(
|
||||
"[ServerOP_SharedTaskAddPlayer] Found shared task character [{}] shared_task_id [{}]",
|
||||
@@ -226,7 +225,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
auto leader = t->GetLeader();
|
||||
if (leader.character_id != r->source_character_id) {
|
||||
// taskadd is client sided with System color in newer clients, server side might still be red
|
||||
client_list.SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
ClientList::Instance()->SendCharacterMessageID(r->source_character_id, Chat::Red, TaskStr::NOT_LEADER, {leader.character_name});
|
||||
}
|
||||
else {
|
||||
LogTasksDetail(
|
||||
@@ -236,7 +235,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
);
|
||||
|
||||
std::string character_name = r->player_name;
|
||||
shared_task_manager.InvitePlayerByPlayerName(t, character_name);
|
||||
SharedTaskManager::Instance()->InvitePlayerByPlayerName(t, character_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,21 +251,21 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
r->accepted
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskById(r->shared_task_id);
|
||||
if (t && shared_task_manager.IsInvitationActive(r->shared_task_id, r->source_character_id)) {
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskById(r->shared_task_id);
|
||||
if (t && SharedTaskManager::Instance()->IsInvitationActive(r->shared_task_id, r->source_character_id)) {
|
||||
LogTasksDetail(
|
||||
"[ServerOP_SharedTaskInviteAcceptedPlayer] Found shared task character [{}] shared_task_id [{}]",
|
||||
r->source_character_id,
|
||||
t->GetDbSharedTask().id
|
||||
);
|
||||
|
||||
shared_task_manager.RemoveActiveInvitation(r->shared_task_id, r->source_character_id);
|
||||
SharedTaskManager::Instance()->RemoveActiveInvitation(r->shared_task_id, r->source_character_id);
|
||||
|
||||
if (r->accepted) {
|
||||
shared_task_manager.AddPlayerByCharacterIdAndName(t, r->source_character_id, r->player_name);
|
||||
SharedTaskManager::Instance()->AddPlayerByCharacterIdAndName(t, r->source_character_id, r->player_name);
|
||||
}
|
||||
else {
|
||||
shared_task_manager.SendLeaderMessageID(t, Chat::Red, TaskStr::PLAYER_DECLINED_OFFER, {r->player_name});
|
||||
SharedTaskManager::Instance()->SendLeaderMessageID(t, Chat::Red, TaskStr::PLAYER_DECLINED_OFFER, {r->player_name});
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -280,19 +279,19 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
buf->task_id
|
||||
);
|
||||
|
||||
auto t = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
auto t = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
if (t) {
|
||||
DynamicZone dz;
|
||||
dz.Unserialize({ buf->cereal_data, buf->cereal_size });
|
||||
|
||||
shared_task_manager.CreateDynamicZone(t, dz);
|
||||
SharedTaskManager::Instance()->CreateDynamicZone(t, dz);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ServerOP_SharedTaskPurgeAllCommand: {
|
||||
LogTasksDetail("[ServerOP_SharedTaskPurgeAllCommand] Received request to purge all shared tasks");
|
||||
|
||||
shared_task_manager.PurgeAllSharedTasks();
|
||||
SharedTaskManager::Instance()->PurgeAllSharedTasks();
|
||||
auto p = std::make_unique<ServerPacket>(
|
||||
ServerOP_SharedTaskPurgeAllCommand,
|
||||
0
|
||||
@@ -311,7 +310,7 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
buf->task_id
|
||||
);
|
||||
|
||||
auto s = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
auto s = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
if (s) {
|
||||
std::vector<std::string> player_names;
|
||||
|
||||
@@ -319,40 +318,40 @@ void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
|
||||
player_names.emplace_back(member.character_name);
|
||||
|
||||
if (member.is_leader) {
|
||||
client_list.SendCharacterMessageID(buf->source_character_id, Chat::Yellow, TaskStr::LEADER_PRINT, {member.character_name});
|
||||
ClientList::Instance()->SendCharacterMessageID(buf->source_character_id, Chat::Yellow, TaskStr::LEADER_PRINT, {member.character_name});
|
||||
}
|
||||
}
|
||||
|
||||
std::string player_list = fmt::format("{}", Strings::Join(player_names, ", "));
|
||||
client_list.SendCharacterMessageID(buf->source_character_id, Chat::Yellow, TaskStr::MEMBERS_PRINT, {player_list});
|
||||
ClientList::Instance()->SendCharacterMessageID(buf->source_character_id, Chat::Yellow, TaskStr::MEMBERS_PRINT, {player_list});
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ServerOP_SharedTaskLock: {
|
||||
auto buf = reinterpret_cast<ServerSharedTaskLock_Struct*>(pack->pBuffer);
|
||||
auto shared_task = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
auto shared_task = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->source_character_id);
|
||||
if (shared_task)
|
||||
{
|
||||
shared_task_manager.LockTask(shared_task, buf->lock);
|
||||
SharedTaskManager::Instance()->LockTask(shared_task, buf->lock);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ServerOP_SharedTaskEndByDz: {
|
||||
auto buf = reinterpret_cast<ServerSharedTaskEnd_Struct*>(pack->pBuffer);
|
||||
auto shared_task = shared_task_manager.FindSharedTaskByDzId(buf->dz_id);
|
||||
auto shared_task = SharedTaskManager::Instance()->FindSharedTaskByDzId(buf->dz_id);
|
||||
if (shared_task)
|
||||
{
|
||||
shared_task_manager.Terminate(*shared_task, buf->send_fail, true);
|
||||
SharedTaskManager::Instance()->Terminate(*shared_task, buf->send_fail, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ServerOP_SharedTaskEnd: {
|
||||
auto buf = reinterpret_cast<ServerSharedTaskEnd_Struct*>(pack->pBuffer);
|
||||
auto shared_task = shared_task_manager.FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->character_id);
|
||||
auto shared_task = SharedTaskManager::Instance()->FindSharedTaskByTaskIdAndCharacterId(buf->task_id, buf->character_id);
|
||||
if (shared_task)
|
||||
{
|
||||
shared_task_manager.Terminate(*shared_task, buf->send_fail, true);
|
||||
SharedTaskManager::Instance()->Terminate(*shared_task, buf->send_fail, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,12 @@ public:
|
||||
const std::shared_ptr<EQ::Net::ServertalkServerConnection> &GetConnection() const;
|
||||
inline bool IsConnected() const { return connection->Handle() ? connection->Handle()->IsConnected() : false; }
|
||||
|
||||
static UCSConnection* Instance()
|
||||
{
|
||||
static UCSConnection instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
private:
|
||||
inline std::string GetIP() const { return (connection && connection->Handle()) ? connection->Handle()->RemoteIP() : 0; }
|
||||
std::shared_ptr<EQ::Net::ServertalkServerConnection> connection;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "zonelist.h"
|
||||
#include "launcher_list.h"
|
||||
|
||||
extern LoginServerList loginserverlist;
|
||||
extern ClientList client_list;
|
||||
extern ZSList zoneserver_list;
|
||||
extern LauncherList launcher_list;
|
||||
@@ -33,8 +32,8 @@ void EQW__IsLocked(WebInterface *i, const std::string& method, const std::string
|
||||
|
||||
void EQW__Lock(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
|
||||
WorldConfig::LockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
}
|
||||
|
||||
Json::Value ret;
|
||||
@@ -44,8 +43,8 @@ void EQW__Lock(WebInterface *i, const std::string& method, const std::string& id
|
||||
|
||||
void EQW__Unlock(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
|
||||
WorldConfig::UnlockWorld();
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
}
|
||||
|
||||
Json::Value ret;
|
||||
@@ -69,7 +68,7 @@ void EQW__GetLauncherCount(WebInterface *i, const std::string& method, const std
|
||||
}
|
||||
|
||||
void EQW__GetLoginServerCount(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
|
||||
Json::Value ret = loginserverlist.GetServerCount();
|
||||
Json::Value ret = LoginServerList::Instance()->GetServerCount();
|
||||
i->SendResponse(id, ret);
|
||||
}
|
||||
|
||||
|
||||
+20
-18
@@ -57,7 +57,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f
|
||||
0,
|
||||
0,
|
||||
AccountStatus::QuestTroupe,
|
||||
LogSys.GetGMSayColorFromCategory(log_category),
|
||||
EQEmuLogSys::Instance()->GetGMSayColorFromCategory(log_category),
|
||||
fmt::format(
|
||||
" {}{}",
|
||||
(iter == 0 ? " ---" : ""),
|
||||
@@ -73,7 +73,7 @@ void WorldBoot::GMSayHookCallBackProcessWorld(uint16 log_category, const char *f
|
||||
0,
|
||||
0,
|
||||
AccountStatus::QuestTroupe,
|
||||
LogSys.GetGMSayColorFromCategory(log_category),
|
||||
EQEmuLogSys::Instance()->GetGMSayColorFromCategory(log_category),
|
||||
"%s",
|
||||
fmt::format("[{}] [{}] {}", Logs::LogCategoryName[log_category], func, message).c_str()
|
||||
);
|
||||
@@ -83,12 +83,12 @@ bool WorldBoot::HandleCommandInput(int argc, char **argv)
|
||||
{
|
||||
// command handler
|
||||
if (argc > 1) {
|
||||
LogSys.SilenceConsoleLogging();
|
||||
path.LoadPaths();
|
||||
EQEmuLogSys::Instance()->SilenceConsoleLogging();
|
||||
PathManager::Instance()->Init();
|
||||
WorldConfig::LoadConfig();
|
||||
LoadDatabaseConnections();
|
||||
RuleManager::Instance()->LoadRules(&database, "default", false);
|
||||
LogSys.EnableConsoleLogging();
|
||||
EQEmuLogSys::Instance()->EnableConsoleLogging();
|
||||
WorldserverCLI::CommandHandler(argc, argv);
|
||||
}
|
||||
|
||||
@@ -183,15 +183,13 @@ int get_file_size(const std::string &filename) // path to file
|
||||
return size;
|
||||
}
|
||||
|
||||
extern LoginServerList loginserverlist;
|
||||
|
||||
void WorldBoot::RegisterLoginservers()
|
||||
{
|
||||
const auto c = EQEmuConfig::get();
|
||||
|
||||
if (c->LoginCount == 0) {
|
||||
if (c->LoginHost.length()) {
|
||||
loginserverlist.Add(
|
||||
LoginServerList::Instance()->Add(
|
||||
c->LoginHost.c_str(),
|
||||
c->LoginPort,
|
||||
c->LoginAccount.c_str(),
|
||||
@@ -207,7 +205,7 @@ void WorldBoot::RegisterLoginservers()
|
||||
iterator.Reset();
|
||||
while (iterator.MoreElements()) {
|
||||
if (iterator.GetData()->LoginHost.length()) {
|
||||
loginserverlist.Add(
|
||||
LoginServerList::Instance()->Add(
|
||||
iterator.GetData()->LoginHost.c_str(),
|
||||
iterator.GetData()->LoginPort,
|
||||
iterator.GetData()->LoginAccount.c_str(),
|
||||
@@ -226,17 +224,21 @@ void WorldBoot::RegisterLoginservers()
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< kinglykrab/adventuremanager-global-to-singleton
|
||||
extern SharedTaskManager shared_task_manager;
|
||||
=======
|
||||
extern AdventureManager adventure_manager;
|
||||
>>>>>>> master
|
||||
extern WorldEventScheduler event_scheduler;
|
||||
|
||||
bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
|
||||
{
|
||||
// logging system init
|
||||
auto logging = LogSys.SetDatabase(&database)
|
||||
->SetLogPath(path.GetLogPath())
|
||||
auto logging = EQEmuLogSys::Instance()->SetDatabase(&database)
|
||||
->SetLogPath(PathManager::Instance()->GetLogPath())
|
||||
->LoadLogDatabaseSettings();
|
||||
|
||||
LogSys.SetDiscordHandler(&WorldBoot::DiscordWebhookMessageHandler);
|
||||
EQEmuLogSys::Instance()->SetDiscordHandler(&WorldBoot::DiscordWebhookMessageHandler);
|
||||
|
||||
const auto c = EQEmuConfig::get();
|
||||
if (c->auto_database_updates) {
|
||||
@@ -278,9 +280,9 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
|
||||
|
||||
LogInfo("Loading zones");
|
||||
|
||||
zone_store.LoadZones(content_db);
|
||||
ZoneStore::Instance()->LoadZones(content_db);
|
||||
|
||||
if (zone_store.GetZones().empty()) {
|
||||
if (ZoneStore::Instance()->GetZones().empty()) {
|
||||
LogError("Failed to load zones data, check your schema for possible errors");
|
||||
return 1;
|
||||
}
|
||||
@@ -401,13 +403,13 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
|
||||
->ReloadContentFlags();
|
||||
|
||||
LogInfo("Initializing [SharedTaskManager]");
|
||||
shared_task_manager.SetDatabase(&database)
|
||||
SharedTaskManager::Instance()->SetDatabase(&database)
|
||||
->SetContentDatabase(&content_db)
|
||||
->LoadTaskData()
|
||||
->LoadSharedTaskState();
|
||||
|
||||
LogInfo("Purging expired shared tasks");
|
||||
shared_task_manager.PurgeExpiredSharedTasks();
|
||||
SharedTaskManager::Instance()->PurgeExpiredSharedTasks();
|
||||
|
||||
LogInfo("Cleaning up instance corpses");
|
||||
database.CleanupInstanceCorpses();
|
||||
@@ -627,14 +629,14 @@ void WorldBoot::Shutdown()
|
||||
|
||||
void WorldBoot::SendDiscordMessage(int webhook_id, const std::string &message)
|
||||
{
|
||||
if (UCSLink.IsConnected()) {
|
||||
if (UCSConnection::Instance()->IsConnected()) {
|
||||
auto pack = new ServerPacket(ServerOP_DiscordWebhookMessage, sizeof(DiscordWebhookMessage_Struct) + 1);
|
||||
auto *q = (DiscordWebhookMessage_Struct *) pack->pBuffer;
|
||||
|
||||
strn0cpy(q->message, message.c_str(), 2000);
|
||||
q->webhook_id = webhook_id;
|
||||
|
||||
UCSLink.SendPacket(pack);
|
||||
UCSConnection::Instance()->SendPacket(pack);
|
||||
|
||||
safe_delete(pack);
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
#include "../common/discord/discord.h"
|
||||
#include "ucs.h"
|
||||
|
||||
extern UCSConnection UCSLink;
|
||||
|
||||
class WorldBoot {
|
||||
public:
|
||||
static void GMSayHookCallBackProcessWorld(uint16 log_category, const char *func, std::string message);
|
||||
|
||||
+10
-9
@@ -37,14 +37,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "dynamic_zone_manager.h"
|
||||
#include "ucs.h"
|
||||
#include "clientlist.h"
|
||||
#include "queryserv.h"
|
||||
#include "../common/repositories/trader_repository.h"
|
||||
#include "../common/repositories/buyer_repository.h"
|
||||
|
||||
extern uint32 numzones;
|
||||
extern EQ::Random emu_random;
|
||||
extern WebInterfaceList web_interface;
|
||||
extern SharedTaskManager shared_task_manager;
|
||||
extern ClientList client_list;
|
||||
extern QueryServConnection QSLink;
|
||||
volatile bool UCSServerAvailable_ = false;
|
||||
void CatchSignal(int sig_num);
|
||||
|
||||
@@ -694,7 +694,7 @@ void ZSList::RebootZone(const char* ip1, uint16 port, const char* ip2, uint32 sk
|
||||
safe_delete_array(tmp);
|
||||
return;
|
||||
}
|
||||
uint32 z = emu_random.Int(0, y - 1);
|
||||
uint32 z = EQ::Random::Instance()->Int(0, y - 1);
|
||||
|
||||
auto pack = new ServerPacket(ServerOP_ZoneReboot, sizeof(ServerZoneReboot_Struct));
|
||||
ServerZoneReboot_Struct* s = (ServerZoneReboot_Struct*)pack->pBuffer;
|
||||
@@ -912,7 +912,7 @@ bool ZSList::SendPacketToBootedZones(ServerPacket* pack)
|
||||
|
||||
bool ZSList::SendPacketToZonesWithGuild(uint32 guild_id, ServerPacket* pack)
|
||||
{
|
||||
auto servers = client_list.GetGuildZoneServers(guild_id);
|
||||
auto servers = ClientList::Instance()->GetGuildZoneServers(guild_id);
|
||||
for (auto const& z : zone_server_list) {
|
||||
for (auto const& server_id : servers) {
|
||||
if (z->GetID() == server_id && z->GetZoneID() > 0) {
|
||||
@@ -926,7 +926,7 @@ bool ZSList::SendPacketToZonesWithGuild(uint32 guild_id, ServerPacket* pack)
|
||||
|
||||
bool ZSList::SendPacketToZonesWithGMs(ServerPacket* pack)
|
||||
{
|
||||
auto servers = client_list.GetZoneServersWithGMs();
|
||||
auto servers = ClientList::Instance()->GetZoneServersWithGMs();
|
||||
for (auto const &z: zone_server_list) {
|
||||
for (auto const &server_id: servers) {
|
||||
if (z->GetID() == server_id && z->GetZoneID() > 0) {
|
||||
@@ -978,15 +978,16 @@ void ZSList::SendServerReload(ServerReload::Type type, uchar *packet)
|
||||
} else if (type == ServerReload::Type::Rules) {
|
||||
RuleManager::Instance()->LoadRules(&database, RuleManager::Instance()->GetActiveRuleset(), true);
|
||||
} else if (type == ServerReload::Type::SkillCaps) {
|
||||
skill_caps.ReloadSkillCaps();
|
||||
SkillCaps::Instance()->ReloadSkillCaps();
|
||||
} else if (type == ServerReload::Type::ContentFlags) {
|
||||
content_service.SetExpansionContext()->ReloadContentFlags();
|
||||
} else if (type == ServerReload::Type::Logs) {
|
||||
LogSys.LoadLogDatabaseSettings();
|
||||
EQEmuLogSys::Instance()->LoadLogDatabaseSettings();
|
||||
player_event_logs.ReloadSettings();
|
||||
UCSLink.SendPacket(&pack);
|
||||
UCSConnection::Instance()->SendPacket(&pack);
|
||||
QSLink.SendPacket(&pack);
|
||||
} else if (type == ServerReload::Type::Tasks) {
|
||||
shared_task_manager.LoadTaskData();
|
||||
SharedTaskManager::Instance()->LoadTaskData();
|
||||
} else if (type == ServerReload::Type::DzTemplates) {
|
||||
dynamic_zone_manager.LoadTemplates();
|
||||
}
|
||||
|
||||
+12
-10
@@ -55,12 +55,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
extern ClientList client_list;
|
||||
extern GroupLFPList LFPGroupList;
|
||||
extern ZSList zoneserver_list;
|
||||
extern LoginServerList loginserverlist;
|
||||
extern volatile bool RunLoops;
|
||||
extern volatile bool UCSServerAvailable_;
|
||||
<<<<<<< kinglykrab/adventuremanager-global-to-singleton
|
||||
extern UCSConnection UCSLink;
|
||||
=======
|
||||
extern AdventureManager adventure_manager;
|
||||
>>>>>>> master
|
||||
extern QueryServConnection QSLink;
|
||||
extern SharedTaskManager shared_task_manager;
|
||||
|
||||
void CatchSignal(int sig_num);
|
||||
|
||||
@@ -163,7 +165,7 @@ void ZoneServer::LSBootUpdate(uint32 zone_id, uint32 instanceid, bool startup) {
|
||||
bootup->zone = zone_id;
|
||||
bootup->zone_wid = GetID();
|
||||
bootup->instance = instanceid;
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
}
|
||||
@@ -178,7 +180,7 @@ void ZoneServer::LSSleepUpdate(uint32 zone_id) {
|
||||
auto sleep = (ServerLSZoneSleep_Struct*) pack->pBuffer;
|
||||
sleep->zone = zone_id;
|
||||
sleep->zone_wid = GetID();
|
||||
loginserverlist.SendPacket(pack);
|
||||
LoginServerList::Instance()->SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
}
|
||||
@@ -380,7 +382,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
||||
|
||||
// if discord enabled for event, ship to UCS to process
|
||||
if (player_event_logs.IsEventDiscordEnabled(n.player_event_log.event_type_id)) {
|
||||
UCSLink.SendPacket(pack);
|
||||
UCSConnection::Instance()->SendPacket(pack);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -434,7 +436,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
||||
|
||||
auto scm = (ServerChannelMessage_Struct*) pack->pBuffer;
|
||||
if (scm->chan_num == ChatChannel_UCSRelay) {
|
||||
UCSLink.SendMessage(scm->from, scm->message);
|
||||
UCSConnection::Instance()->SendMessage(scm->from, scm->message);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1075,8 +1077,8 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
||||
WorldConfig::UnlockWorld();
|
||||
}
|
||||
|
||||
if (loginserverlist.Connected()) {
|
||||
loginserverlist.SendStatus();
|
||||
if (LoginServerList::Instance()->Connected()) {
|
||||
LoginServerList::Instance()->SendStatus();
|
||||
SendEmoteMessage(
|
||||
l->character_name,
|
||||
0,
|
||||
@@ -1338,12 +1340,12 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
||||
}
|
||||
case ServerOP_LSAccountUpdate: {
|
||||
LogNetcode("Received ServerOP_LSAccountUpdate packet from zone");
|
||||
loginserverlist.SendAccountUpdate(pack);
|
||||
LoginServerList::Instance()->SendAccountUpdate(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_DiscordWebhookMessage:
|
||||
case ServerOP_UCSMailMessage: {
|
||||
UCSLink.SendPacket(pack);
|
||||
UCSConnection::Instance()->SendPacket(pack);
|
||||
break;
|
||||
}
|
||||
case ServerOP_UCSServerStatusRequest: {
|
||||
|
||||
Reference in New Issue
Block a user