diff --git a/world/client.cpp b/world/client.cpp index 022bf0d41..393e9959b 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -1118,6 +1118,7 @@ bool Client::Process() { Log(Logs::General, Logs::World_Server, "Zone bootup timer expired, bootup failed or too slow."); TellClientZoneUnavailable(); } + if(connect.Check()){ SendGuildList();// Send OPCode: OP_GuildsList SendApproveWorld(); @@ -1189,9 +1190,6 @@ void Client::EnterWorld(bool TryBootup) { else zone_server = zoneserver_list.FindByZoneID(zone_id); - //Tell all the zones to drop any client with this lsid because we're coming back in. - zoneserver_list.DropClient(GetLSID()); - const char *zone_name = database.GetZoneName(zone_id, true); if (zone_server) { // warn the world we're comming, so it knows not to shutdown diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index c2f913d7d..ffe777808 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -536,6 +536,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) SetZoneData(zone->GetZoneID(), zone->GetInstanceID()); if (szic->zoneid == zone->GetZoneID()) { + auto client = entity_list.GetClientByLSID(szic->lsid); + if (client) { + client->Kick("Dropped by world CLE subsystem"); + client->Save(); + } + + zone->RemoveAuth(szic->lsid); zone->AddAuth(szic); // This packet also doubles as "incoming client" notification, lets not shut down before they get here zone->StartShutdownTimer(AUTHENTICATION_TIMEOUT * 1000);