public void ChannelEnterReq(GameSession session, ChannelEnterReqMessage message) { if (session.Player.Room != null) { return; } if (session.ConnectDate.Add(TimeSpan.FromMinutes(5)) > DateTimeOffset.Now) { session.ConnectDate = DateTimeOffset.Now; session.Player.BE.EnableBE(); } var channel = GameServer.Instance.ChannelManager[message.Channel]; if (channel == null) { session.SendAsync(new ServerResultAckMessage(ServerResult.NonExistingChannel)); return; } session.Player.Channel?.Leave(session.Player); try { channel.Join(session.Player); return; } catch (ChannelLimitReachedException) { // Fix current client bug session.SendAsync(new ServerResultAckMessage(ServerResult.ChannelLeave)); session.SendAsync(new ServerResultAckMessage(ServerResult.ChannelLimitReached)); } catch (ChannelLevelLimitException) { // Fix current client bug session.SendAsync(new ServerResultAckMessage(ServerResult.ChannelLeave)); session.SendAsync(new ServerResultAckMessage(ServerResult.JoinChannelFailed)); } catch (ChannelException) { // Fix current client bug session.SendAsync(new ServerResultAckMessage(ServerResult.ChannelLeave)); session.SendAsync(new ServerResultAckMessage(ServerResult.JoinChannelFailed)); } }
public void CChannelEnterReq(GameSession session, ChannelEnterReqMessage message) { var channel = GameServer.Instance.ChannelManager[message.Channel]; if (channel == null) { session.SendAsync(new ServerResultAckMessage(ServerResult.NonExistingChannel)); return; } session.Player.Channel?.Leave(session.Player, true); try { channel.Join(session.Player); } catch (ChannelLimitReachedException) { session.SendAsync(new ServerResultAckMessage(ServerResult.ChannelLimitReached)); } }