public PlayerLogoutMessage(Player player, PlayerLogout logout) { Player = player; Logout = logout; Info = $"Team {Player.TeamOrdinal} player LOGOUT: [{Player.OutfitAlias}] {Player.NameDisplay} ({Player.Id})"; }
public void Stop() { running = false; PlayerLogout logout = new PlayerLogout(); logout.authtoken = authtoken; logout.playerId = playerId; ClientMessage message = CreateClientMessage(); message.playerLogout = logout; byte[] bytes = Serialize(message); udpClient.Send(bytes, bytes.Length, host, port); udpClient.Close(); }
private async Task Process(PlayerLogoutPayload payload) { bool updateCharacter; using (var factory = _dbContextHelper.GetFactory()) { var dbContext = factory.GetDbContext(); try { var dataModel = new PlayerLogout { CharacterId = payload.CharacterId, Timestamp = payload.Timestamp, WorldId = payload.WorldId }; dbContext.PlayerLogouts.Add(dataModel); await dbContext.SaveChangesAsync(); } catch (Exception) { //Ignore } var lastLoginTime = dbContext.PlayerLogins .Where(l => l.CharacterId == payload.CharacterId) .OrderByDescending(l => l.Timestamp) .Select(l => l.Timestamp) .FirstOrDefault(); updateCharacter = (lastLoginTime != default && (payload.Timestamp - lastLoginTime) > TimeSpan.FromMinutes(5)); } if (updateCharacter) { await _characterService.UpdateCharacterAsync(payload.CharacterId); } }
private void Stop() { try { if (connected) { connected = false; if (PlayerLogout != null) { PlayerLogout.Invoke(this, new EventArgs()); } } if (loginClientTcp != null) { loginClientTcp.Stop(); } if (clientSocket != null) { clientSocket.Close(); } if (clientStream != null) { clientStream.Close(); } if (serverTcp != null) { serverTcp.Close(); } } catch (Exception ex) { WriteDebug(ex.ToString()); } }