Exemplo n.º 1
0
Arquivo: Mains.cs Projeto: iodz37/Iodz
        public static void CommandsAI(string command)
        {
            try
            {
                if (command == null)
                {
                    return;
                }
                string[] data = command.Split(' ');
                switch (data[0])
                {
                case "@clear":
                {
                    System.Console.Clear();
                    Console.WriteLine("Consle And Program Cleared !!");
                    break;
                }

                case "@Conquord":
                case "@Eslam":
                    Console.WriteLine("Server will restart after 10 minutes.");
                    foreach (var client in Kernel.GamePool.Values)
                    {
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 5 minute, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 4 minute 30 second, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 4 minute, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 3 minute 30 second, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 3 minute, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 2 minute 30 second, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 2 minute, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 1 minute 30 second, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 1 minute, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The server will be brought down for maintenance in 30 second, Please exit the game now.", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                        Console.WriteLine("Server will exit after 1 minute.");
                        CommandsAI("@save");
                        System.Threading.Thread.Sleep(0x7530);
                        client.Send(new Conquord.Network.GamePackets.Message("The Server restarted, Please log in after 2 minutes! ", System.Drawing.Color.Red, Conquord.Network.GamePackets.Message.System));
                    }
                    try
                    {
                        CommandsAI("@restart");
                    }
                    catch
                    {
                        Console.WriteLine("Server Cannot Exit .");
                    }
                    break;
                    try
                    {
                        CommandsAI("@restart");
                    }
                    catch
                    {
                        Console.WriteLine("Server Cannot Exit");
                    }
                    break;

                case "@flushbans":
                {
                    Database.IPBan.Load();
                    break;
                }

                case "@SNX":
                {
                    ShaDow.ShaDowNpcControl ShaDow = new ShaDow.ShaDowNpcControl();
                    ShaDow.ShowDialog();
                    break;
                }

                case "@online":
                {
                    Console.WriteLine("Online Players Count : " + Kernel.GamePool.Count);
                    string line = "";
                    foreach (Client.GameClient pClient in Program.Values)
                    {
                        line += pClient.Entity.Name + ",";
                    }
                    if (line != "")
                    {
                        line = line.Remove(line.Length - 1);
                        Console.WriteLine("Players : " + line);
                    }
                    break;
                }

                case "@memoryusage":
                {
                    var proc = System.Diagnostics.Process.GetCurrentProcess();
                    Console.WriteLine("Thread count: " + proc.Threads.Count);
                    Console.WriteLine("Memory set(MB): " + ((double)((double)proc.WorkingSet64 / 1024)) / 1024);
                    proc.Close();
                    break;
                }

                case "@save":
                {
                    Save();
                }
                break;

                case "@skill":
                {
                    Game.Features.Tournaments.TeamElitePk.SkillTeamTournament.Open();
                    foreach (var clien in Kernel.GamePool.Values)
                    {
                        if (clien.Team == null)
                        {
                            clien.Team = new Game.ConquerStructures.Team(clien);
                        }
                        Game.Features.Tournaments.TeamElitePk.SkillTeamTournament.Join(clien, 3);
                    }
                    break;
                }

                case "@team":
                {
                    Game.Features.Tournaments.TeamElitePk.TeamTournament.Open();
                    foreach (var clien in Kernel.GamePool.Values)
                    {
                        if (clien.Team == null)
                        {
                            clien.Team = new Game.ConquerStructures.Team(clien);
                        }
                        Game.Features.Tournaments.TeamElitePk.TeamTournament.Join(clien, 3);
                    }
                    break;
                }

                case "@exit":
                {
                    GameServer.Disable();
                    AuthServer.Disable();
                    Save();
                    Database.EntityVariableTable.Save(0, Vars);

                    var WC = Program.Values.ToArray();
                    Parallel.ForEach(Program.Values, client =>
                        {
                            client.Send("Server Will Exit For 5 Min to Fix Some Bugs, Please Be Paitent !");
                            client.Disconnect();
                        });

                    Kernel.SendWorldMessage(new Network.GamePackets.Message(string.Concat(new object[] { "Server Will Exit For 5 Min to Fix Some Bugs, Please Be Paitent" }), System.Drawing.Color.Black, 0x7db), Program.Values);
                    CommandsAI("@save");

                    if (GuildWar.IsWar)
                    {
                        GuildWar.End();
                    }
                    Save();
                    Environment.Exit(0);
                }
                break;

                case "@pressure":
                {
                    Console.WriteLine("Genr: " + World.GenericThreadPool.ToString());
                    Console.WriteLine("Send: " + World.SendPool.ToString());
                    Console.WriteLine("Recv: " + World.ReceivePool.ToString());
                    break;
                }

                case "@restart":
                {
                    try
                    {
                        Kernel.SendWorldMessage(new Network.GamePackets.Message(string.Concat(new object[] { "Server Will Be Restart Now !" }), System.Drawing.Color.Black, 0x7db), Program.Values);
                        CommandsAI("@save");

                        Save();

                        var WC = Program.Values.ToArray();
                        foreach (Client.GameClient client in WC)
                        {
                            client.Send("Server Will Restart !");
                            client.Disconnect();
                        }
                        GameServer.Disable();
                        AuthServer.Disable();
                        if (GuildWar.IsWar)
                        {
                            GuildWar.End();
                        }
                        Save();

                        Application.Restart();
                        Environment.Exit(0);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        Console.ReadLine();
                    }
                }
                break;

                case "@account":
                {
                    Database.AccountTable account = new AccountTable(data[1]);
                    account.Password = data[2];
                    account.State    = AccountTable.AccountState.Player;
                    account.Save();
                }
                break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }