public static async void Initialize() { Logger = new Logger(); Logger.Log( $"Starting [{DateTime.Now.ToLongTimeString()} - {ServerUtils.GetOSName()}]...", null); Configuration = new Configuration(); Configuration.Initialize(); Fingerprint = new Fingerprint(); Sentry = new SentryReport(); Csv = new Csv(); UpdateManager = new UpdateManager(); PlayerDb = new PlayerDb(); AllianceDb = new AllianceDb(); Logger.Log( $"Successfully loaded MySql with {await PlayerDb.CountAsync()} player(s) & {await AllianceDb.CountAsync()} clan(s)", null); Redis = new Redis(); Battles = new Battles(); Players = new Players(); Alliances = new Alliances(); Leaderboard = new Leaderboard(); Netty = new NettyService(); await Task.Run(Netty.RunServerAsync); }
public static async void Initialize() { Logger = new Logger(); Logger.Log( $"Starting [{DateTime.Now.ToLongTimeString()} - {ServerUtils.GetOsName()}]...", null); Configuration = new Configuration(); Configuration.Initialize(); Fingerprint = new Fingerprint(); Levels = new Levels(); Csv = new Csv(); PlayerDb = new PlayerDb(); //AllianceDb = new AllianceDb(); Logger.Log( $"Successfully loaded MySql with {await PlayerDb.CountAsync()} player(s)", null); ObjectCache = new ObjectCache(); Players = new Players(); //Alliances = new Alliances(); //Leaderboard = new Leaderboard(); StartTime = DateTime.UtcNow; Netty = new NettyService(); await Task.Run(Netty.RunServerAsync); }
public override async void Process() { var info = Device.Player.Home.AllianceInfo; if (!info.HasAlliance) { return; } var alliance = await Resources.Alliances.GetAllianceAsync(info.Id); if (alliance == null) { return; } if (Message.StartsWith('/')) { var cmd = Message.Split(' '); var cmdType = cmd[0]; var cmdValue = 0; if (cmd.Length > 1) { if (Message.Split(' ')[1].Any(char.IsDigit)) { int.TryParse(Message.Split(' ')[1], out cmdValue); } } switch (cmdType) { case "/upgrade": { Device.Player.Home.Deck.UpgradeAll(); Device.Disconnect(); break; } case "/exp": { Device.Player.Home.AddExpPoints(cmdValue); Device.Disconnect(); break; } case "/gold": { Device.Player.Home.Gold += cmdValue; Device.Disconnect(); break; } case "/status": { await new ServerErrorMessage(Device) { Message = $"Online Players: {Resources.Players.Count}\nTotal Players: {await PlayerDb.CountAsync()}" }.SendAsync(); break; } /*case "/replay": * { * await new HomeBattleReplayDataMessage(Device).SendAsync(); * break; * } * * case "/free": * { * Device.Player.Home.FreeChestTime = Device.Player.Home.FreeChestTime.Subtract(TimeSpan.FromMinutes(245)); * Device.Disconnect(); * break; * }*/ /*case "/trophies": * { * if (cmdValue >= 0) * Device.Player.Home.Arena.AddTrophies(cmdValue); * else if (cmdValue < 0) * Device.Player.Home.Arena.RemoveTrophies(cmdValue); * * Device.Disconnect(); * break; * }*/ /*case "/test": * { * var entry = new DonateStreamEntry * { * Message = Message, * TotalCapacity = 10 * }; * * entry.SetSender(Device.Player); * * alliance.AddEntry(entry); * * break; * }*/ /*case "/test": * { * var entry = new AllianceMailAvatarStreamEntry * { * Message = "Works", * Title = "Hehe", * AllianceId = 1, * AllianceName = "LOL", * AllianceBadge = 5, * IsNew = true * }; * * entry.SetSender(Device.Player); * * Device.Player.AddEntry(entry); * * break; * }*/ } } else { var entry = new ChatStreamEntry { Message = Message }; entry.SetSender(Device.Player); alliance.AddEntry(entry); } }
public override async void Process() { var info = Device.Player.Home.AllianceInfo; if (!info.HasAlliance) { return; } var alliance = await Resources.Alliances.GetAllianceAsync(info.Id); if (alliance == null) { return; } if (Message.StartsWith('/')) { var cmd = Message.Split(' '); var cmdType = cmd[0]; var cmdValue = 0; if (cmd.Length > 1) { if (Message.Split(' ')[1].Any(char.IsDigit)) { int.TryParse(Message.Split(' ')[1], out cmdValue); } } switch (cmdType) { case "/max": { var deck = Device.Player.Home.Deck; foreach (var card in Cards.GetAllCards()) { deck.Add(card); for (var i = 0; i < 12; i++) { deck.UpgradeCard(card.ClassId, card.InstanceId, true); } } await new ServerErrorMessage(Device) { Message = "Added all cards with max level" }.SendAsync(); break; } case "/unlock": { var deck = Device.Player.Home.Deck; foreach (var card in Cards.GetAllCards()) { deck.Add(card); } await new ServerErrorMessage(Device) { Message = "Added all cards" }.SendAsync(); break; } case "/gold": { Device.Player.Home.Gold += cmdValue; Device.Disconnect(); break; } case "/gems": { Device.Player.Home.Diamonds += cmdValue; Device.Disconnect(); break; } case "/status": { var entry = new ChatStreamEntry { Message = $"Server status:\nBuild version: 1.5 (for 1.9.2)\nFingerprint SHA:\n{Resources.Fingerprint.Sha}\nOnline Players: {Resources.Players.Count}\nTotal Players: {await PlayerDb.CountAsync()}\n1v1 Battles: {Resources.Battles.Count}\n2v2 Battles: {Resources.DuoBattles.Count}\nTotal Clans: {await AllianceDb.CountAsync()}\nUptime: {DateTime.UtcNow.Subtract(Resources.StartTime).ToReadableString()}\nUsed RAM: {System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / (1024 * 1024) + " MB"}" }; entry.SetSender(Device.Player); alliance.AddEntry(entry); break; } case "/free": { Device.Player.Home.FreeChestTime = Device.Player.Home.FreeChestTime.Subtract(TimeSpan.FromMinutes(245)); Device.Disconnect(); break; } /*case "/replay": * { * await new HomeBattleReplayDataMessage(Device).SendAsync(); * break; * }*/ case "/trophies": { if (cmdValue >= 0) { Device.Player.Home.Arena.AddTrophies(cmdValue); } else if (cmdValue < 0) { Device.Player.Home.Arena.RemoveTrophies(cmdValue); } Device.Disconnect(); break; } case "/set": { Device.Player.Home.Arena.SetTrophies(cmdValue); Device.Disconnect(); break; } case "/help": { var help = new ChatStreamEntry { Message = $"List of commands:\n/max - open all cards max. level\n/unlock - open all cards\n/gold x - give out gold, where x - amount of gold\n/ gems x - give out gems, where x - amount of gems\n/ status - a command that shows the server status (needed for admins)\n / free - resets the timer of the free chest\n/trophies x - adds trophies, where x - the number of trophies (can be negative)\n/ set x - the specified number of trophies is available, where x - the number of trophies" }; help.SetSender(Device.Player); alliance.AddEntry(help); break; } default: var error = new ChatStreamEntry { Message = $"Command not found. Use /help for the list of commands." }; error.SetSender(Device.Player); alliance.AddEntry(error); break; } } else { var entry = new ChatStreamEntry { Message = Message }; entry.SetSender(Device.Player); alliance.AddEntry(entry); } }
public override async void Process() { if (Message.StartsWith('/')) { var cmd = Message.Split(' '); var cmdType = cmd[0]; var cmdValue = 0; if (cmd.Length > 1) { if (Message.Split(' ')[1].Any(char.IsDigit)) { int.TryParse(Message.Split(' ')[1], out cmdValue); } } switch (cmdType) { case "/skip": { Device.Player.Home.FastForward(cmdValue); await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/visit": { await new VisitedHomeDataMessage(Device) { Player = Device.Player }.SendAsync(); break; } case "/co": { var manager = Device.Player.Home.GameObjectManager; manager.Obstacles.Clear(); manager.Obstacles2.Clear(); await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/reset": { Device.Player.Home.Reset(); await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/max": { Device.Player.Home.ExpLevel = 300; Device.Player.Home.ExpPoints = 0; Device.Player.Home.GameObjectManager.LoadJson(Levels.MaxHome); await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/gems": { Device.Player.Home.Diamonds += 14000; await new AvailableServerCommandMessage(Device) { Command = new LogicDiamondsAddedCommand(Device) { Diamonds = 14000 }.Handle() }.SendAsync(); break; } case "/low": { var home = Device.Player.Home; home.Resources.InitializeDefault(); home.Diamonds = 100; await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/high": { var home = Device.Player.Home; home.Resources.Initialize(); await new OwnHomeDataMessage(Device).SendAsync(); break; } case "/status": { await new LoginFailedMessage(Device) { Reason = $"OnlinePlayers: {Resources.Players.Count}\nCached Players: {Resources.ObjectCache.CachedPlayers()}\nTotal Players: {await PlayerDb.CountAsync()}\nUptime: {DateTime.UtcNow.Subtract(Resources.StartTime).ToReadableString()}" }.SendAsync(); break; } case "/help": { await new LoginFailedMessage(Device) { Reason = "/status - See the current server status\n/low - Get minimum of resources\n/high - Get max resources\n/gems - Adds 14k gems\n/reset - Reset your village\n/visit - Visit your own village\n/max - Get a max village\n/co - Clear all obstacles\n/skip [seconds] - Skip time" }.SendAsync(); break; } } } }
public override async void Process() { var info = Device.Player.Home.AllianceInfo; if (!info.HasAlliance) { return; } var alliance = await Resources.Alliances.GetAllianceAsync(info.Id); if (alliance == null) { return; } if (Message.StartsWith('/')) { var cmd = Message.Split(' '); var cmdType = cmd[0]; var cmdValue = 0; if (cmd.Length > 1) { if (Message.Split(' ')[1].Any(char.IsDigit)) { int.TryParse(Message.Split(' ')[1], out cmdValue); } } switch (cmdType) { case "/max": { var deck = Device.Player.Home.Deck; foreach (var card in Cards.GetAllCards()) { deck.Add(card); for (var i = 0; i < 12; i++) { deck.UpgradeCard(card.ClassId, card.InstanceId, true); } } await new ServerErrorMessage(Device) { Message = "Added all cards with max level" }.SendAsync(); break; } case "/unlock": { var deck = Device.Player.Home.Deck; foreach (var card in Cards.GetAllCards()) { deck.Add(card); } await new ServerErrorMessage(Device) { Message = "Added all cards" }.SendAsync(); break; } case "/gold": { Device.Player.Home.Gold += cmdValue; Device.Disconnect(); break; } case "/status": { await new ServerErrorMessage(Device) { Message = $"Online Players: {Resources.Players.Count}\nTotal Players: {await PlayerDb.CountAsync()}\n1v1 Battles: {Resources.Battles.Count}\n2v2 Battles: {Resources.DuoBattles.Count}\nTotal Clans: {await AllianceDb.CountAsync()}\nUptime: {DateTime.UtcNow.Subtract(Resources.StartTime).ToReadableString()}" }.SendAsync(); break; } /*case "/free": * { * Device.Player.Home.FreeChestTime = Device.Player.Home.FreeChestTime.Subtract(TimeSpan.FromMinutes(245)); * Device.Disconnect(); * break; * }*/ /*case "/replay": * { * await new HomeBattleReplayDataMessage(Device).SendAsync(); * break; * }*/ /*case "/trophies": * { * if (cmdValue >= 0) * Device.Player.Home.Arena.AddTrophies(cmdValue); * else if (cmdValue < 0) * Device.Player.Home.Arena.RemoveTrophies(cmdValue); * * Device.Disconnect(); * break; * }*/ } } else { var entry = new ChatStreamEntry { Message = Message }; entry.SetSender(Device.Player); alliance.AddEntry(entry); } }