Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }