private GameServer(Configuration config) : base(config) { RegisterMappings(); //Logger.Information("To get sure that u know how to work with this server, i've added this"); //Logger.Information("Remove the lines located in the given file named by this log's prefix"); // //// //Environment.Exit(-1); //// //ServerTime = TimeSpan.Zero; CommandManager = new CommandManager(this); CommandManager.Add(new ServerCommand()) .Add(new ReloadCommand()) .Add(new GameCommands()) .Add(new BanCommands()) .Add(new AdminCommands()) .Add(new NoticeCommand()) .Add(new InventoryCommands()); PlayerManager = new PlayerManager(); ResourceCache = new ResourceCache(); ChannelManager = new ChannelManager(ResourceCache.GetChannels()); ClubManager = new ClubManager(ResourceCache.GetClubs()); _worker = new ThreadLoop(TimeSpan.FromMilliseconds(100), Worker); _serverlistManager = new ServerlistManager(); }
private GameServer(Configuration config) : base(config) { RegisterMappings(); CommandManager = new CommandManager(this); CommandManager.Add(new ServerCommand()) .Add(new ReloadCommand()) .Add(new GameCommands()) .Add(new BanCommands()) .Add(new UnbanCommands()) .Add(new UserkickCommand()) //.Add(new UserkickCommand()) .Add(new AdminCommands()) .Add(new NoticeCommand()) .Add(new ClanCommands()) .Add(new InventoryCommands()); PlayerManager = new PlayerManager(); ResourceCache = new ResourceCache(); ChannelManager = new ChannelManager(ResourceCache.GetChannels()); ClubManager = new ClubManager(ResourceCache.GetClubs()); _worker = new ThreadLoop(TimeSpan.FromMilliseconds(100), Worker); _serverlistManager = new ServerlistManager(); }
private GameServer(Configuration config) : base(config) { RegisterMappings(); //ServerTime = TimeSpan.Zero; CommandManager = new CommandManager(this); CommandManager.Add(new ServerCommand()) .Add(new ReloadCommand()) .Add(new GameCommands()) .Add(new InventoryCommands()); PlayerManager = new PlayerManager(); ResourceCache = new ResourceCache(); ChannelManager = new ChannelManager(ResourceCache.GetChannels()); _worker = new ThreadLoop(TimeSpan.FromMilliseconds(100), (Action <TimeSpan>)Worker); _serverlistManager = new ServerlistManager(); }
private GameServer() : base(new GameSessionFactory(), ArrayPool <byte> .Create(1 * 1024 * 1024, 50), Config.Instance.PlayerLimit) { #region Filter Setup var config = new ProudConfig(new Guid("{beb92241-8333-4117-ab92-9b4af78c688f}")); var proudFilter = new ProudServerPipe(config); #if DEBUG proudFilter.UnhandledProudCoreMessage += (s, e) => Logger.Warn($"Unhandled ProudCoreMessage {e.Message.GetType().Name}"); proudFilter.UnhandledProudMessage += (s, e) => Logger.Warn($"Unhandled UnhandledProudMessage {e.Message.GetType().Name}: {e.Message.ToArray().ToHexString()}"); #endif Pipeline.AddFirst("proudnet", proudFilter); Pipeline.AddLast("s4_protocol", new NetspherePipe(new GameMessageFactory())); // ReSharper disable InconsistentNaming Predicate <GameSession> MustBeLoggedIn = session => session.IsLoggedIn(); Predicate <GameSession> MustNotBeLoggedIn = session => !session.IsLoggedIn(); Predicate <GameSession> MustBeInChannel = session => session.Player.Channel != null; Predicate <GameSession> MustNotBeInChannel = session => session.Player.Channel == null; Predicate <GameSession> MustBeInRoom = session => session.Player.Room != null; Predicate <GameSession> MustNotBeInRoom = session => session.Player.Room == null; Predicate <GameSession> MustBeRoomHost = session => session.Player.Room.Host == session.Player; Predicate <GameSession> MustBeRoomMaster = session => session.Player.Room.Master == session.Player; // ReSharper restore InconsistentNaming Pipeline.AddLast("firewall", new FirewallPipe()) .Add(new PacketFirewallRule <GameSession>()) .Get <PacketFirewallRule <GameSession> >() .Register <CLoginReqMessage>(MustNotBeLoggedIn) .Register <CCreateCharacterReqMessage>(MustBeLoggedIn) .Register <CSelectCharacterReqMessage>(MustBeLoggedIn) .Register <CDeleteCharacterReqMessage>(MustBeLoggedIn) .Register <CAdminShowWindowReqMessage>(MustBeLoggedIn) .Register <CAdminActionReqMessage>(MustBeLoggedIn) .Register <CGetChannelInfoReqMessage>(MustBeLoggedIn) .Register <CChannelEnterReqMessage>(MustBeLoggedIn, MustNotBeInChannel) .Register <CChannelLeaveReqMessage>(MustBeLoggedIn, MustBeInChannel) .Register <CNewShopUpdateCheckReqMessage>(MustBeLoggedIn) .Register <CLicensedReqMessage>(MustBeLoggedIn, MustBeInChannel) .Register <CExerciseLicenceReqMessage>(MustBeLoggedIn, MustBeInChannel) .Register <CBuyItemReqMessage>(MustBeLoggedIn) .Register <CRandomShopRollingStartReqMessage>(MustBeLoggedIn) .Register <CRandomShopItemSaleReqMessage>(MustBeLoggedIn) .Register <CUseItemReqMessage>(MustBeLoggedIn) .Register <CRepairItemReqMessage>(MustBeLoggedIn) .Register <CRefundItemReqMessage>(MustBeLoggedIn) .Register <CDiscardItemReqMessage>(MustBeLoggedIn) .Register <CEnterPlayerReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, session => session.Player.RoomInfo.IsConnecting) .Register <CMakeRoomReqMessage>(MustBeLoggedIn, MustBeInChannel, MustNotBeInRoom) .Register <CGameRoomEnterReqMessage>(MustBeLoggedIn, MustBeInChannel, MustNotBeInRoom) .Register <CJoinTunnelInfoReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CChangeTeamReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CPlayerGameModeChangeReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreKillReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreKillAssistReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreOffenseReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreOffenseAssistReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreDefenseReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreDefenseAssistReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreTeamKillReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreHealAssistReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreSuicideReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CScoreReboundReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, MustBeRoomHost, session => session.Player.RoomInfo.State != PlayerState.Lobby && session.Player.RoomInfo.State != PlayerState.Spectating) .Register <CScoreGoalReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, MustBeRoomHost, session => session.Player.RoomInfo.State != PlayerState.Lobby && session.Player.RoomInfo.State != PlayerState.Spectating) .Register <CBeginRoundReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, MustBeRoomMaster) .Register <CReadyRoundReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, session => session.Player.RoomInfo.State == PlayerState.Lobby) .Register <CEventMessageReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom) .Register <CItemsChangeReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, session => session.Player.RoomInfo.State == PlayerState.Lobby) .Register <CAvatarChangeReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, session => session.Player.RoomInfo.State == PlayerState.Lobby || session.Player.Room.GameRuleManager.GameRule.StateMachine.IsInState(GameRuleState.HalfTime)) .Register <CChangeRuleNotifyReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom, MustBeRoomMaster, session => session.Player.Room.GameRuleManager.GameRule.StateMachine.IsInState(GameRuleState.Waiting)) .Register <CClubAddressReqMessage>(MustBeLoggedIn, MustBeInChannel) .Register <CClubInfoReqMessage>(MustBeLoggedIn, MustBeInChannel) .Register <CLeavePlayerRequestReqMessage>(MustBeLoggedIn, MustBeInChannel, MustBeInRoom); Pipeline.AddLast("s4_service", new MessageHandlerPipe()) .Add(new AuthService()) .Add(new CharacterService()) .Add(new GeneralService()) .Add(new AdminService()) .Add(new ChannelService()) .Add(new ShopService()) .Add(new InventoryService()) .Add(new RoomService()) .Add(new ClubService()) .UnhandledMessage += OnUnhandledMessage; #endregion RegisterMappings(); //ServerTime = TimeSpan.Zero; _chatServer = new ChatServer(this); RelayServer = new RelayServer(this); CommandManager = new CommandManager(this); CommandManager.Add(new ServerCommand()) .Add(new ReloadCommand()) .Add(new GameCommands()) .Add(new InventoryCommands()); PlayerManager = new PlayerManager(); ResourceCache = new ResourceCache(); ChannelManager = new ChannelManager(ResourceCache.GetChannels()); _worker = new ThreadLoop(TimeSpan.FromMilliseconds(100), (Action <TimeSpan>)Worker); _serverlistManager = new ServerlistManager(); }