private void SendFinalLogOffMessages() { // If we still exist on a landblock, we can't exit yet. if (Player.CurrentLandblock != null) { return; } logOffRequestTime = DateTime.MinValue; // It's possible for a character change to happen from a GameActionSetCharacterOptions message. // This message can be received/processed by the server AFTER LogOfPlayer has been called. // What that means is, we could end up with Character changes after the Character has been saved from the initial LogOff request. // To make sure we commit these additional changes (if any), we check again here if (Player.CharacterChangesDetected) { Player.SaveCharacterToDatabase(); } Player = null; if (!ServerManager.ShutdownInProgress) { Network.EnqueueSend(new GameMessageCharacterLogOff()); CheckCharactersForDeletion(); Network.EnqueueSend(new GameMessageCharacterList(Characters, this)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName, PlayerManager.GetOnlineCount(), (int)ConfigManager.Config.Server.Network.MaximumAllowedSessions); Network.EnqueueSend(serverNameMessage); } State = SessionState.AuthConnected; }
private void SendFinalLogOffMessages() { // It's possible for a character change to happen from a GameActionSetCharacterOptions message. // This message can be received/processed by the server AFTER LogOfPlayer has been called. // What that means is, we could end up with Character changes after the Character has been saved from the initial LogOff request. // To make sure we commit these additional changes (if any), we check again here if (Player.CharacterChangesDetected) { Player.SaveCharacterToDatabase(); } Network.EnqueueSend(new GameMessageCharacterLogOff()); CheckCharactersForDeletion(); Network.EnqueueSend(new GameMessageCharacterList(Characters, this)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); Network.EnqueueSend(serverNameMessage); State = SessionState.AuthConnected; Player = null; }
private static void SendConnectResponse(Session session, List <Character> characters) { characters = characters.OrderByDescending(o => o.LastLoginTimestamp).ToList(); // The client highlights the first character in the list. We sort so the first character sent is the one we last logged in session.UpdateCharacters(characters); GameMessageCharacterList characterListMessage = new GameMessageCharacterList(session.Characters, session); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName, PlayerManager.GetOnlineCount(), (int)ConfigManager.Config.Server.Network.MaximumAllowedSessions); GameMessageDDDInterrogation dddInterrogation = new GameMessageDDDInterrogation(); session.Network.EnqueueSend(characterListMessage, serverNameMessage); session.Network.EnqueueSend(dddInterrogation); }
private void SendFinalLogOffMessages() { Network.EnqueueSend(new GameMessageCharacterLogOff()); CheckCharactersForDeletion(); Network.EnqueueSend(new GameMessageCharacterList(Characters, this)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); Network.EnqueueSend(serverNameMessage); State = SessionState.AuthConnected; Player = null; }
public static async void HandleConnectResponse(ClientPacket packet, Session session) { PacketInboundConnectResponse connectResponse = new PacketInboundConnectResponse(packet); var result = await DatabaseManager.Character.GetByAccount(session.Id); session.UpdateCachedCharacters(result); GameMessageCharacterList characterListMessage = new GameMessageCharacterList(result, session.Account); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); GameMessageDDDInterrogation dddInterrogation = new GameMessageDDDInterrogation(); session.Network.EnqueueSend(characterListMessage, serverNameMessage, dddInterrogation); session.State = SessionState.AuthConnected; }
private async void SendFinalLogOffMessages() { Network.EnqueueSend(new GameMessageCharacterLogOff()); var result = await DatabaseManager.Character.GetByAccount(Id); UpdateCachedCharacters(result); Network.EnqueueSend(new GameMessageCharacterList(result, Account)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); Network.EnqueueSend(serverNameMessage); State = SessionState.AuthConnected; Player = null; }
private void SendFinalLogOffMessages() { Network.EnqueueSend(new GameMessageCharacterLogOff()); DatabaseManager.Shard.GetCharacters(Id, ((List <CachedCharacter> result) => { UpdateCachedCharacters(result); Network.EnqueueSend(new GameMessageCharacterList(result, Account)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); Network.EnqueueSend(serverNameMessage); State = SessionState.AuthConnected; Player = null; })); }
public static void HandleConnectResponse(ClientPacket packet, Session session) { PacketInboundConnectResponse connectResponse = new PacketInboundConnectResponse(packet); DatabaseManager.Shard.GetCharacters(session.Id, false, result => { result = result.OrderByDescending(o => o.LastLoginTimestamp).ToList(); // The client highlights the first character in the list. We sort so the first character sent is the one we last logged in session.UpdateCharacters(result); GameMessageCharacterList characterListMessage = new GameMessageCharacterList(session.Characters, session); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName, WorldManager.GetAll().Count, (int)ConfigManager.Config.Server.Network.MaximumAllowedSessions); GameMessageDDDInterrogation dddInterrogation = new GameMessageDDDInterrogation(); session.Network.EnqueueSend(characterListMessage, serverNameMessage); session.Network.EnqueueSend(dddInterrogation); session.State = SessionState.AuthConnected; }); }
private void SendFinalLogOffMessages() { Network.EnqueueSend(new GameMessageCharacterLogOff()); DatabaseManager.Shard.GetCharacters(Id, ((List <Character> result) => { result = result.OrderByDescending(o => o.LastLoginTimestamp).ToList(); UpdateCachedCharacters(result); Network.EnqueueSend(new GameMessageCharacterList(result, this)); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); Network.EnqueueSend(serverNameMessage); State = SessionState.AuthConnected; Player = null; })); }
public static void HandleConnectResponse(ClientPacket packet, Session session) { PacketInboundConnectResponse connectResponse = new PacketInboundConnectResponse(packet); DatabaseManager.Shard.GetCharacters(session.Id, ((List <CachedCharacter> result) => { result = result.OrderByDescending(o => o.LoginTimestamp).ToList(); session.UpdateCachedCharacters(result); GameMessageCharacterList characterListMessage = new GameMessageCharacterList(result, session.Account); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName, WorldManager.GetAll().Count, (int)ConfigManager.Config.Server.Network.MaximumAllowedSessions); GameMessageDDDInterrogation dddInterrogation = new GameMessageDDDInterrogation(); session.Network.EnqueueSend(characterListMessage, serverNameMessage); session.Network.EnqueueSend(dddInterrogation); session.State = SessionState.AuthConnected; })); }
public static async void HandleConnectResponse(ClientPacket packet, Session session) { PacketInboundConnectResponse connectResponse = new PacketInboundConnectResponse(packet); var result = await DatabaseManager.Character.GetByAccount(session.Id); session.UpdateCachedCharacters(result); GameMessageCharacterList characterListMessage = new GameMessageCharacterList(result, session.Account); GameMessageServerName serverNameMessage = new GameMessageServerName(ConfigManager.Config.Server.WorldName); // looks like account settings/info, expansion information ect? (this is needed for world entry) GameMessageDDDInterrogation unknown75e5Message = new GameMessageDDDInterrogation(); GameMessageDDDEndDDD patchStatusMessage = new GameMessageDDDEndDDD(); session.Network.EnqueueSend(characterListMessage); session.Network.EnqueueSend(serverNameMessage); session.Network.EnqueueSend(unknown75e5Message); session.Network.EnqueueSend(patchStatusMessage); session.State = SessionState.AuthConnected; }