internal void ResetPeer(MessageSession session, ResetPeerMessage msg) { _serverMapLock.DoWrite(() => { if (!_serverMap.ContainsKey(session)) return; var server = _serverMap[session]; Logger.Write("Disconnected: [{0}] {1}:{2}", server.Name, server.Host, server.Port); _serverMap.Remove(session); }); _interChatLock.DoWrite(() => { if (!_interChatUserMap.ContainsKey(session)) return; var userName = _interChatUserMap[session]; Logger.Write("Disconnected: InterChat [{0}]", userName); _interChatUserMap.Remove(session); BroadcastChatMsgWithNoLock("system", userName + "께서 접속을 종료하였습니다."); BroadcastCommandMsgWithNoLock(InterChatCommandType.InformLogoutUser, userName); }); }
internal void ResetPeer(MessageSession session, ResetPeerMessage msg) { if (session != _session) { return; } Logger.Write("Pylon Disconnected."); _event.Set(); }
internal void OnResetPeer(Entity entity, MessageSession session, ResetPeerMessage msg) { PositionSystem.Global.Disappear(entity); if (entity.Has <Player>()) { entity.Get <Player>().Logged = false; } if (entity.Has <Tickable>()) { entity.Detach <Tickable>(); } EntityBinder.Instance.Update(entity); if (entity.Has <Nameplate>()) { Logger.Write("{0} is logout.", entity.Get <Nameplate>().Name); } }
private void OnDisconnected(ResetPeerMessage msg) { AddMessage("system", "Gone, server, gone.", DateTime.Now.Ticks); Reconnect(); }