[Hotfix] Fix ClientList Singleton Shortcomings of #4942

This commit is contained in:
Chris Miles 2025-06-25 15:50:34 -05:00
parent 50ae0f8351
commit 2c6d405b2c
20 changed files with 80 additions and 109 deletions

View File

@ -15,7 +15,6 @@
#include "../common/zone_store.h"
#include "../common/repositories/character_corpses_repository.h"
extern ClientList client_list;
extern EQ::Random emu_random;
Adventure::Adventure(AdventureTemplate *t)
@ -228,7 +227,7 @@ void Adventure::SendAdventureMessage(uint32 type, const char *msg)
auto iter = players.begin();
while(iter != players.end())
{
ClientListEntry *current = client_list.FindCharacter((*iter).c_str());
ClientListEntry *current = ClientList::Instance()->FindCharacter((*iter).c_str());
if(current)
{
strcpy(sms->to, (*iter).c_str());
@ -281,7 +280,7 @@ void Adventure::Finished(AdventureWinStatus ws)
{
auto iter = players.begin();
while (iter != players.end()) {
ClientListEntry *current = client_list.FindCharacter((*iter).c_str());
ClientListEntry *current = ClientList::Instance()->FindCharacter((*iter).c_str());
auto character_id = database.GetCharacterID(*iter);
if (character_id == 0) {

View File

@ -14,8 +14,6 @@
#include <sstream>
#include <stdio.h>
extern ClientList client_list;
AdventureManager::AdventureManager()
{
process_timer = new Timer(500);
@ -1854,7 +1852,7 @@ void AdventureManager::DoLeaderboardRequestWinsRuj(const char* player)
void AdventureManager::DoLeaderboardRequestPercentageRuj(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));
@ -1920,7 +1918,7 @@ void AdventureManager::DoLeaderboardRequestPercentageRuj(const char* player)
void AdventureManager::DoLeaderboardRequestWinsTak(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));
@ -1986,7 +1984,7 @@ void AdventureManager::DoLeaderboardRequestWinsTak(const char* player)
void AdventureManager::DoLeaderboardRequestPercentageTak(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));
@ -2072,7 +2070,7 @@ bool AdventureManager::PopFinishedEvent(const char *name, AdventureFinishEvent &
void AdventureManager::SendAdventureFinish(AdventureFinishEvent fe)
{
ClientListEntry *pc = client_list.FindCharacter(fe.name.c_str());
ClientListEntry *pc = ClientList::Instance()->FindCharacter(fe.name.c_str());
if(pc)
{
auto pack = new ServerPacket(ServerOP_AdventureFinish, sizeof(ServerAdventureFinish_Struct));

View File

@ -89,7 +89,6 @@
std::vector<RaceClassAllocation> character_create_allocations;
std::vector<RaceClassCombos> character_create_race_class_combos;
extern ClientList client_list;
extern uint32 numclients;
extern volatile bool RunLoops;
extern volatile bool UCSServerAvailable_;
@ -476,7 +475,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
LogClientLogin("Checking authentication id [{}]", id);
if ((cle = client_list.CheckAuth(id, password))) {
if ((cle = ClientList::Instance()->CheckAuth(id, password))) {
LoadDataBucketsCache();
LogClientLogin("Checking authentication id [{}] passed", id);
@ -799,7 +798,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
RuleB(World, EnableIPExemptions) ||
RuleI(World, MaxClientsPerIP) > 0
) {
client_list.GetCLEIP(GetIP()); //Check current CLE Entry IPs against incoming connection
ClientList::Instance()->GetCLEIP(GetIP()); //Check current CLE Entry IPs against incoming connection
}
auto ew = (EnterWorld_Struct *) app->pBuffer;

View File

@ -9,7 +9,6 @@
#include "world_config.h"
extern uint32 numplayers;
extern ClientList client_list;
extern volatile bool RunLoops;
ClientListEntry::ClientListEntry(

View File

@ -33,8 +33,6 @@
#include "../common/zone_store.h"
#include <fmt/format.h>
extern ClientList client_list;
/**
* @param username
* @param password
@ -191,7 +189,7 @@ void ConsoleWho(
}
WorldConsoleTCPConnection console_connection(connection);
client_list.ConsoleSendWhoAll(0, connection->Admin(), &whom, &console_connection);
ClientList::Instance()->ConsoleSendWhoAll(0, connection->Admin(), &whom, &console_connection);
}
/**
@ -876,7 +874,7 @@ void ConsoleIpLookup(
{
if (!args.empty()) {
WorldConsoleTCPConnection console_connection(connection);
client_list.SendCLEList(connection->Admin(), nullptr, &console_connection, args[0].c_str());
ClientList::Instance()->SendCLEList(connection->Admin(), nullptr, &console_connection, args[0].c_str());
}
}

View File

@ -8,8 +8,6 @@
#include "../common/eqemu_logsys.h"
#include "../common/repositories/instance_list_repository.h"
extern ClientList client_list;
Database& DynamicZone::GetDatabase()
{
return database;

View File

@ -9,8 +9,6 @@
#include "../common/repositories/dynamic_zone_lockouts_repository.h"
#include <cereal/types/utility.hpp>
extern ClientList client_list;
DynamicZoneManager dynamic_zone_manager;
DynamicZoneManager::DynamicZoneManager() :

View File

@ -13,7 +13,6 @@
#include "ucs.h"
#include "queryserv.h"
extern ClientList client_list;
extern WorldGuildManager guild_mgr;
void callGetZoneList(Json::Value &response)

View File

@ -45,7 +45,6 @@
#include <algorithm>
extern ClientList client_list;
extern uint32 numzones;
extern LauncherList launcher_list;
extern volatile bool RunLoops;
@ -156,7 +155,7 @@ std::map<std::string,std::string> EQW::GetZoneDetails(Const_char *zone_ref) {
}
int EQW::CountPlayers() {
return(client_list.GetClientCount());
return(ClientList::Instance()->GetClientCount());
}
//returns an array of character names in the zone (empty=all zones)
@ -164,7 +163,7 @@ std::vector<std::string> EQW::ListPlayers(Const_char *zone_name) {
std::vector<std::string> res;
std::vector<ClientListEntry *> list;
client_list.GetClients(zone_name, list);
ClientList::Instance()->GetClients(zone_name, list);
std::vector<ClientListEntry *>::iterator cur, end;
cur = list.begin();
@ -178,7 +177,7 @@ std::vector<std::string> EQW::ListPlayers(Const_char *zone_name) {
std::map<std::string,std::string> EQW::GetPlayerDetails(Const_char *char_name) {
std::map<std::string,std::string> res;
ClientListEntry *cle = client_list.FindCharacter(char_name);
ClientListEntry *cle = ClientList::Instance()->FindCharacter(char_name);
if(cle == nullptr) {
res["error"] = "1";
return(res);
@ -263,7 +262,7 @@ void EQW::CreateLauncher(Const_char *launcher_name, int dynamic_count) {
uint32 EQW::CreateGuild(const char* name, uint32 leader_char_id) {
uint32 id = guild_mgr.CreateGuild(name, leader_char_id);
if(id != GUILD_NONE)
client_list.UpdateClientGuild(leader_char_id, id);
ClientList::Instance()->UpdateClientGuild(leader_char_id, id);
return(id);
}
@ -284,7 +283,7 @@ bool EQW::SetGuildLeader(uint32 guild_id, uint32 leader_char_id) {
}
bool EQW::SetGuild(uint32 charid, uint32 guild_id, uint8 rank) {
client_list.UpdateClientGuild(charid, guild_id);
ClientList::Instance()->UpdateClientGuild(charid, guild_id);
return(guild_mgr.SetGuild(charid, guild_id, rank));
}

View File

@ -25,8 +25,6 @@
#include "../common/misc_functions.h"
#include "../common/classes.h"
extern ClientList client_list;
GroupLFP::GroupLFP(uint32 inLeaderID) {
LeaderID = inLeaderID;
@ -68,7 +66,7 @@ void GroupLFP::SetDetails(ServerLFPUpdate_Struct *Update) {
}
// Otherwise try and find the information ourselves.
else {
CLE = client_list.FindCharacter(Members[i].Name);
CLE = ClientList::Instance()->FindCharacter(Members[i].Name);
if(CLE) {
Members[i].Class = CLE->class_();
Members[i].Level = CLE->level();
@ -124,7 +122,7 @@ void GroupLFPList::Process() {
if(GroupMembers[i].Name[0] == '\0')
continue;
ClientListEntry *CLE = client_list.FindCharacter(GroupMembers[i].Name);
ClientListEntry *CLE = ClientList::Instance()->FindCharacter(GroupMembers[i].Name);
if(!CLE) {
// The first member entry is always the person who posted the LFP group, either
// a single ungrouped player, or the leader of the group. If (s)he is gone, remove
@ -263,7 +261,7 @@ void GroupLFPList::SendLFPMatches(ServerLFPMatchesRequest_Struct* smrs) {
}
}
ClientListEntry* CLE = client_list.FindCharacter(smrs->FromName);
ClientListEntry* CLE = ClientList::Instance()->FindCharacter(smrs->FromName);
if (CLE != nullptr) {
if (CLE->Server() != nullptr)
CLE->Server()->SendPacket(Pack);

View File

@ -20,7 +20,6 @@
#include "cliententry.h"
#include "world_config.h"
extern ClientList client_list;
extern uint32 numzones;
extern uint32 numplayers;
extern volatile bool RunLoops;

View File

@ -36,7 +36,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "clientlist.h"
#include "world_config.h"
extern ClientList client_list;
extern uint32 numzones;
extern uint32 numplayers;
extern volatile bool RunLoops;

View File

@ -91,7 +91,6 @@
#include "../common/repositories/character_parcels_repository.h"
#include "../common/ip_util.h"
ClientList client_list;
GroupLFPList LFPGroupList;
LauncherList launcher_list;
volatile bool RunLoops = true;
@ -394,7 +393,7 @@ int main(int argc, char **argv)
LogInfo("Connection [{}] PASSED banned IPs check. Processing connection", inet_ntoa(in));
auto client = new Client(eqsi);
// @merth: client->zoneattempt=0;
client_list.Add(client);
ClientList::Instance()->Add(client);
}
else {
LogInfo("Connection from [{}] failed banned IPs check. Closing connection", inet_ntoa(in));
@ -409,13 +408,13 @@ int main(int argc, char **argv)
);
auto client = new Client(eqsi);
// @merth: client->zoneattempt=0;
client_list.Add(client);
ClientList::Instance()->Add(client);
}
}
WorldEventScheduler::Instance()->Process(ZSList::Instance());
client_list.Process();
ClientList::Instance()->Process();
guild_mgr.Process();
if (parcel_prune_timer.Check()) {
@ -477,7 +476,7 @@ int main(int argc, char **argv)
std::string window_title = fmt::format(
"World [{}] Clients [{}]",
Config->LongName,
client_list.GetClientCount()
ClientList::Instance()->GetClientCount()
);
UpdateWindowTitle(window_title);
}

View File

@ -9,8 +9,6 @@
#include "../common/md5.h"
#include "../common/packet_dump.h"
extern ClientList client_list;
QueryServConnection::QueryServConnection()
{
}

View File

@ -17,8 +17,6 @@
#include "../common/repositories/shared_task_dynamic_zones_repository.h"
#include <ctime>
extern ClientList client_list;
SharedTaskManager::SharedTaskManager()
: m_process_timer{ static_cast<uint32_t>(RuleI(TaskSystem, SharedTasksWorldProcessRate)) }
{
@ -1273,7 +1271,7 @@ void SharedTaskManager::SendMembersMessageID(
memcpy(buf->args, serialized_args.buffer(), serialized_args.size());
for (const auto &member : shared_task->GetMembers()) {
auto character = client_list.FindCLEByCharacterID(member.character_id);
auto character = ClientList::Instance()->FindCLEByCharacterID(member.character_id);
if (character && character->Server()) {
strn0cpy(buf->client_name, character->name(), sizeof(buf->client_name));
character->Server()->SendPacket(pack.get());
@ -1319,13 +1317,13 @@ bool SharedTaskManager::CanRequestSharedTask(uint32_t task_id, const SharedTaskR
// messages for every character already in a shared task
for (const auto& it : shared_task_members) {
if (it.character_id == request.leader_id) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_HAVE);
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_HAVE);
}
else if (request.group_type == SharedTaskRequestGroupType::Group) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_GROUP_HAS, {it.character_name});
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_GROUP_HAS, {it.character_name});
}
else {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_RAID_HAS, {it.character_name});
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::REQUEST_RAID_HAS, {it.character_name});
}
}
@ -1334,40 +1332,40 @@ bool SharedTaskManager::CanRequestSharedTask(uint32_t task_id, const SharedTaskR
// check if any party member's minimum level is too low (pre-2014 this was average level)
if (task.min_level > 0 && request.lowest_level < task.min_level) {
client_list.SendCharacterMessage(request.leader_id, Chat::Red, TaskStr::Get(TaskStr::LVL_TOO_LOW));
ClientList::Instance()->SendCharacterMessage(request.leader_id, Chat::Red, TaskStr::Get(TaskStr::LVL_TOO_LOW));
return false;
}
// check if any party member's maximum level is too high (pre-2014 this was average level)
if (task.max_level > 0 && request.highest_level > task.max_level) {
client_list.SendCharacterMessage(request.leader_id, Chat::Red, TaskStr::Get(TaskStr::LVL_TOO_HIGH));
ClientList::Instance()->SendCharacterMessage(request.leader_id, Chat::Red, TaskStr::Get(TaskStr::LVL_TOO_HIGH));
return false;
}
// allow gm/dev bypass for minimum player count requirements
auto requester = client_list.FindCLEByCharacterID(request.leader_id);
auto requester = ClientList::Instance()->FindCLEByCharacterID(request.leader_id);
bool is_gm = (requester && requester->GetGM());
// check if party member count is below the minimum
if (!is_gm && task.min_players > 0 && request.members.size() < task.min_players) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::MIN_PLAYERS);
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::MIN_PLAYERS);
return false;
}
if (is_gm) {
client_list.SendCharacterMessage(requester->CharID(), Chat::White, "Your GM flag allows you to bypass shared task minimum player requirements.");
ClientList::Instance()->SendCharacterMessage(requester->CharID(), Chat::White, "Your GM flag allows you to bypass shared task minimum player requirements.");
}
// check if party member count is above the maximum
// todo: live creates the shared task but truncates members if it exceeds max (sorted by leader and raid group numbers)
if (task.max_players > 0 && request.members.size() > task.max_players) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::MAX_PLAYERS);
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::MAX_PLAYERS);
return false;
}
// check if party level spread exceeds task's maximum
if (task.level_spread > 0 && (request.highest_level - request.lowest_level) > task.level_spread) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::LVL_SPREAD_HIGH);
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::LVL_SPREAD_HIGH);
return false;
}
@ -1383,10 +1381,10 @@ bool SharedTaskManager::CanRequestSharedTask(uint32_t task_id, const SharedTaskR
if (character_task_timers.front().character_id == request.leader_id) {
if (timer_type == TaskTimerType::Replay) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::YOU_REPLAY_TIMER, {days, hours, mins});
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red, TaskStr::YOU_REPLAY_TIMER, {days, hours, mins});
}
else if (timer_type == TaskTimerType::Request) {
client_list.SendCharacterMessage(request.leader_id, Chat::Red, fmt::format(
ClientList::Instance()->SendCharacterMessage(request.leader_id, Chat::Red, fmt::format(
TaskStr::Get(TaskStr::YOU_REQUEST_TIMER), days, hours, mins));
}
}
@ -1397,11 +1395,11 @@ bool SharedTaskManager::CanRequestSharedTask(uint32_t task_id, const SharedTaskR
});
if (it != request.members.end() && timer_type == TaskTimerType::Replay) {
client_list.SendCharacterMessageID(request.leader_id, Chat::Red,
ClientList::Instance()->SendCharacterMessageID(request.leader_id, Chat::Red,
TaskStr::PLAYER_REPLAY_TIMER, {it->character_name, days, hours, mins});
}
else if (it != request.members.end() && timer_type == TaskTimerType::Request) {
client_list.SendCharacterMessage(request.leader_id, Chat::Red, fmt::format(
ClientList::Instance()->SendCharacterMessage(request.leader_id, Chat::Red, fmt::format(
TaskStr::Get(TaskStr::PLAYER_REQUEST_TIMER), it->character_name, days, hours, mins));
}
}
@ -1425,7 +1423,7 @@ bool SharedTaskManager::CanAddPlayer(SharedTask *s, uint32_t character_id, std::
}
// check if player is online and in cle (other checks require online)
auto cle = client_list.FindCLEByCharacterID(character_id);
auto cle = ClientList::Instance()->FindCLEByCharacterID(character_id);
if (!cle || !cle->Server()) {
SendLeaderMessageID(s, Chat::Red, TaskStr::PLAYER_NOT_ONLINE, {player_name});
SendLeaderMessageID(s, Chat::Red, TaskStr::COULD_NOT_BE_INVITED, {player_name});
@ -1613,7 +1611,7 @@ void SharedTaskManager::AddReplayTimers(SharedTask *s)
task_timers.emplace_back(timer);
client_list.SendCharacterMessage(
ClientList::Instance()->SendCharacterMessage(
member_id,
Chat::Yellow,
fmt::format(

View File

@ -14,8 +14,6 @@
#include "../common/repositories/task_activities_repository.h"
#include "dynamic_zone.h"
extern ClientList client_list;
void SharedTaskWorldMessaging::HandleZoneMessage(ServerPacket *pack)
{
switch (pack->opcode) {

View File

@ -6,7 +6,6 @@
#include "zonelist.h"
#include "launcher_list.h"
extern ClientList client_list;
extern LauncherList launcher_list;
void EQW__GetConfig(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
@ -52,7 +51,7 @@ void EQW__Unlock(WebInterface *i, const std::string& method, const std::string&
}
void EQW__GetPlayerCount(WebInterface *i, const std::string& method, const std::string& id, const Json::Value& params) {
Json::Value ret = client_list.GetClientCount();
Json::Value ret = ClientList::Instance()->GetClientCount();
i->SendResponse(id, ret);
}

View File

@ -34,8 +34,6 @@
#include "../common/repositories/tributes_repository.h"
#include "../common/repositories/tribute_levels_repository.h"
extern ClientList client_list;
std::map<uint32, TributeData> tribute_list;
WorldGuildManager guild_mgr;
@ -102,7 +100,7 @@ void WorldGuildManager::ProcessZonePacket(ServerPacket *pack) {
RefreshGuild(s->guild_id);
//preform the local update
client_list.UpdateClientGuild(s->char_id, s->guild_id);
ClientList::Instance()->UpdateClientGuild(s->char_id, s->guild_id);
//broadcast this update to any zone with a member in this guild.
//because im sick of this not working, sending it to all zones, just spends a bit more bandwidth.
@ -306,7 +304,7 @@ void WorldGuildManager::Process()
uint32 WorldGuildManager::GetGuildTributeCost(uint32 guild_id)
{
auto guild_members = client_list.GetGuildClientsWithTributeOptIn(guild_id);
auto guild_members = ClientList::Instance()->GetGuildClientsWithTributeOptIn(guild_id);
auto total = guild_members.size();
auto total_cost = 0;

View File

@ -42,7 +42,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "../common/repositories/buyer_repository.h"
extern uint32 numzones;
extern ClientList client_list;
volatile bool UCSServerAvailable_ = false;
void CatchSignal(int sig_num);

View File

@ -52,7 +52,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "../common/repositories/trader_repository.h"
#include "../common/repositories/buyer_repository.h"
extern ClientList client_list;
extern GroupLFPList LFPGroupList;
extern volatile bool RunLoops;
extern volatile bool UCSServerAvailable_;
@ -91,7 +90,7 @@ ZoneServer::ZoneServer(std::shared_ptr<EQ::Net::ServertalkServerConnection> in_c
ZoneServer::~ZoneServer() {
if (RunLoops) {
client_list.CLERemoveZSRef(this);
ClientList::Instance()->CLERemoveZSRef(this);
}
}
@ -126,7 +125,7 @@ bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool in_is_st
}
if (!zone_server_zone_id) {
client_list.CLERemoveZSRef(this);
ClientList::Instance()->CLERemoveZSRef(this);
zone_player_count = 0;
LSSleepUpdate(GetPrevZoneID());
}
@ -136,7 +135,7 @@ bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool in_is_st
strn0cpy(zone_name, zone_short_name.c_str(), sizeof(zone_name));
strn0cpy(long_name, zone_long_name.c_str(), sizeof(long_name));
client_list.ZoneBootup(this);
ClientList::Instance()->ZoneBootup(this);
zone_boot_timer.Start();
return true;
@ -202,7 +201,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto gis = (GroupInvite_Struct*) pack->pBuffer;
client_list.SendPacket(gis->invitee_name, pack);
ClientList::Instance()->SendPacket(gis->invitee_name, pack);
break;
}
case ServerOP_GroupFollow: {
@ -211,7 +210,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto sgfs = (ServerGroupFollow_Struct*) pack->pBuffer;
client_list.SendPacket(sgfs->gf.name1, pack);
ClientList::Instance()->SendPacket(sgfs->gf.name1, pack);
break;
}
case ServerOP_GroupFollowAck: {
@ -220,7 +219,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto sgfas = (ServerGroupFollowAck_Struct*) pack->pBuffer;
client_list.SendPacket(sgfas->Name, pack);
ClientList::Instance()->SendPacket(sgfas->Name, pack);
break;
}
case ServerOP_GroupCancelInvite: {
@ -229,7 +228,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto gcs = (GroupCancel_Struct*) pack->pBuffer;
client_list.SendPacket(gcs->name1, pack);
ClientList::Instance()->SendPacket(gcs->name1, pack);
break;
}
case ServerOP_GroupIDReq: {
@ -448,7 +447,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto scm2 = (ServerChannelMessage_Struct*) pack->pBuffer;
strcpy(scm2->deliverto, scm2->from);
scm2->noreply = true;
client_list.SendPacket(scm->from, pack);
ClientList::Instance()->SendPacket(scm->from, pack);
safe_delete(pack);
}
)
@ -470,7 +469,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
auto cle = client_list.FindCharacter(scm->deliverto);
auto cle = ClientList::Instance()->FindCharacter(scm->deliverto);
if (
!cle ||
cle->Online() < CLE_Status::Zoning ||
@ -483,7 +482,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
)
) {
if (!scm->noreply) {
auto sender = client_list.FindCharacter(scm->from);
auto sender = ClientList::Instance()->FindCharacter(scm->from);
if (!sender || !sender->Server()) {
break;
}
@ -497,7 +496,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
else if (cle->Online() == CLE_Status::Zoning) {
if (!scm->noreply) {
auto sender = client_list.FindCharacter(scm->from);
auto sender = ClientList::Instance()->FindCharacter(scm->from);
if (cle->TellQueueFull()) {
if (!sender || !sender->Server()) {
break;
@ -560,7 +559,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto scm2 = (ServerChannelMessage_Struct*) pack->pBuffer;
strcpy(scm2->deliverto, scm2->from);
scm2->noreply = true;
client_list.SendPacket(scm->from, pack);
ClientList::Instance()->SendPacket(scm->from, pack);
safe_delete(pack);
}
);
@ -591,7 +590,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
case ServerOP_VoiceMacro: {
auto svm = (ServerVoiceMacro_Struct*) pack->pBuffer;
if (svm->Type == VoiceMacroTell) {
auto cle = client_list.FindCharacter(svm->To);
auto cle = ClientList::Instance()->FindCharacter(svm->To);
if (
!cle ||
cle->Online() < CLE_Status::Zoning ||
@ -628,12 +627,12 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_RezzPlayerReject: {
auto recipient = (char*) pack->pBuffer;
client_list.SendPacket(recipient, pack);
ClientList::Instance()->SendPacket(recipient, pack);
break;
}
case ServerOP_MultiLineMsg: {
auto mlm = (ServerMultiLineMsg_Struct*) pack->pBuffer;
client_list.SendPacket(mlm->to, pack);
ClientList::Instance()->SendPacket(mlm->to, pack);
break;
}
case ServerOP_SetZone: {
@ -775,7 +774,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto wtz = (WorldToZone_Struct*) pack->pBuffer;
auto client = client_list.FindByAccountID(wtz->account_id);
auto client = ClientList::Instance()->FindByAccountID(wtz->account_id);
if (client) {
client->Clearance(wtz->response);
}
@ -798,7 +797,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto ztz = (ZoneToZone_Struct*) pack->pBuffer;
ClientListEntry* client = nullptr;
if (WorldConfig::get()->UpdateStats) {
client = client_list.FindCharacter(ztz->name);
client = ClientList::Instance()->FindCharacter(ztz->name);
}
LogZoning(
@ -919,7 +918,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto scl = (ServerClientList_Struct*) pack->pBuffer;
client_list.ClientUpdate(this, scl);
ClientList::Instance()->ClientUpdate(this, scl);
break;
}
case ServerOP_ClientListKA: {
@ -929,7 +928,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
client_list.CLEKeepAlive(sclka->numupdates, sclka->wid);
ClientList::Instance()->CLEKeepAlive(sclka->numupdates, sclka->wid);
break;
}
case ServerOP_Who: {
@ -942,28 +941,28 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
whom->wclass = whoall->wclass;
whom->wrace = whoall->wrace;
strn0cpy(whom->whom, whoall->whom, sizeof(whom->whom));
client_list.SendWhoAll(whoall->fromid, whoall->from, whoall->admin, whom, this);
ClientList::Instance()->SendWhoAll(whoall->fromid, whoall->from, whoall->admin, whom, this);
safe_delete(whom);
break;
}
case ServerOP_RequestOnlineGuildMembers: {
auto srogms = (ServerRequestOnlineGuildMembers_Struct*) pack->pBuffer;
client_list.SendOnlineGuildMembers(srogms->FromID, srogms->GuildID);
ClientList::Instance()->SendOnlineGuildMembers(srogms->FromID, srogms->GuildID);
break;
}
case ServerOP_ClientVersionSummary: {
auto srcvss = (ServerRequestClientVersionSummary_Struct*) pack->pBuffer;
client_list.SendClientVersionSummary(srcvss->Name);
ClientList::Instance()->SendClientVersionSummary(srcvss->Name);
break;
}
case ServerOP_FriendsWho: {
auto sfw = (ServerFriendsWho_Struct*) pack->pBuffer;
client_list.SendFriendsWho(sfw, this);
ClientList::Instance()->SendFriendsWho(sfw, this);
break;
}
case ServerOP_LFGMatches: {
auto smrs = (ServerLFGMatchesRequest_Struct*) pack->pBuffer;
client_list.SendLFGMatches(smrs);
ClientList::Instance()->SendLFGMatches(smrs);
break;
}
case ServerOP_LFPMatches: {
@ -1000,7 +999,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
case ServerOP_FlagUpdate: {
auto cle = client_list.FindCLEByAccountID(*((uint32*) pack->pBuffer));
auto cle = ClientList::Instance()->FindCLEByAccountID(*((uint32*) pack->pBuffer));
if (cle) {
cle->SetAdmin(*((int16*)&pack->pBuffer[4]));
}
@ -1015,7 +1014,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto gmg = (ServerGMGoto_Struct*) pack->pBuffer;
auto cle = client_list.FindCharacter(gmg->gotoname);
auto cle = ClientList::Instance()->FindCharacter(gmg->gotoname);
if (cle) {
if (!cle->Server()) {
SendEmoteMessage(
@ -1158,9 +1157,9 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
auto sgwq = (ServerGenericWorldQuery_Struct*) pack->pBuffer;
if (pack->size == sizeof(ServerGenericWorldQuery_Struct)) {
client_list.SendCLEList(sgwq->admin, sgwq->from, this);
ClientList::Instance()->SendCLEList(sgwq->admin, sgwq->from, this);
} else {
client_list.SendCLEList(sgwq->admin, sgwq->from, this, sgwq->query);
ClientList::Instance()->SendCLEList(sgwq->admin, sgwq->from, this, sgwq->query);
}
break;
@ -1215,7 +1214,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_Revoke: {
auto rev = (RevokeStruct*) pack->pBuffer;
auto cle = client_list.FindCharacter(rev->name);
auto cle = ClientList::Instance()->FindCharacter(rev->name);
if (cle && cle->Server()) {
cle->Server()->SendPacket(pack);
}
@ -1247,7 +1246,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
if (s->consent_type == EQ::consent::Normal) {
auto cle = client_list.FindCharacter(s->grantname);
auto cle = ClientList::Instance()->FindCharacter(s->grantname);
if (cle) {
auto granted_zs = (
cle->instance() ?
@ -1411,7 +1410,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
auto o = (ServerIsOwnerOnline_Struct*) pack->pBuffer;
auto cle = client_list.FindCLEByAccountID(o->account_id);
auto cle = ClientList::Instance()->FindCLEByAccountID(o->account_id);
o->online = cle ? 1 : 0;
@ -1443,7 +1442,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_RequestTellQueue: {
auto rtq = (ServerRequestTellQueue_Struct*) pack->pBuffer;
auto cle = client_list.FindCharacter(rtq->name);
auto cle = ClientList::Instance()->FindCharacter(rtq->name);
if (!cle || cle->TellQueueEmpty()) {
break;
}
@ -1453,7 +1452,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case ServerOP_CZClientMessageString: {
auto buf = reinterpret_cast<CZClientMessageString_Struct*>(pack->pBuffer);
client_list.SendPacket(buf->client_name, pack);
ClientList::Instance()->SendPacket(buf->client_name, pack);
break;
}
case ServerOP_SharedTaskRequest:
@ -1564,12 +1563,12 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
{
auto in = (GuildTributeMemberToggle *)pack->pBuffer;
auto guild = guild_mgr.GetGuildByGuildID(in->guild_id);
auto c = client_list.FindCharacter(in->player_name);
auto c = ClientList::Instance()->FindCharacter(in->player_name);
if (c) {
c->SetGuildTributeOptIn(in->tribute_toggle ? true : false);
}
auto cle = client_list.FindCLEByCharacterID(in->char_id);
auto cle = ClientList::Instance()->FindCLEByCharacterID(in->char_id);
if (cle) {
cle->SetGuildTributeOptIn(in->tribute_toggle ? true : false);
}
@ -1685,7 +1684,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
return;
}
auto trader = client_list.FindCLEByCharacterID(in->trader_buy_struct.trader_id);
auto trader = ClientList::Instance()->FindCLEByCharacterID(in->trader_buy_struct.trader_id);
if (trader) {
ZSList::Instance()->SendPacket(trader->zone(), trader->instance(), pack);
}
@ -1709,7 +1708,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
break;
}
case Barter_SellItem: {
auto buyer = client_list.FindCharacter(in->buyer_name);
auto buyer = ClientList::Instance()->FindCharacter(in->buyer_name);
if (buyer) {
ZSList::Instance()->SendPacket(buyer->zone(), buyer->instance(), pack);
}
@ -1718,7 +1717,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
}
case Barter_FailedTransaction:
case Barter_BuyerTransactionComplete: {
auto seller = client_list.FindCharacter(in->seller_name);
auto seller = ClientList::Instance()->FindCharacter(in->seller_name);
if (seller) {
ZSList::Instance()->SendPacket(seller->zone(), seller->instance(), pack);
}