예제 #1
0
        private void InitSimulation()
        {
            v            = new Visualization(dimX, canvas, polytope);
            v.DrawPoints = drawPts;

            switch (polytope)
            {
            case Polytope.Simplex:
                d0             = Simplex.GenerateDistanceMatrix(dimX);
                minimalization = new GradientDescent(d0, alpha, Simplex.GetVerticesCount(dimX));
                //minimalization = new SimulatedAnnealing(1000, Simplex.GetVerticesCount(dimX), d0, dimY);
                break;

            case Polytope.Hypercube:
                d0             = Hypercube.GenerateDistanceMatrix(dimX);
                minimalization = new GradientDescent(d0, alpha, Hypercube.GetVerticesCount(dimX));
                //minimalization = new SimulatedAnnealing(1000, Hypercube.GetVerticesCount(dimX), d0, dimY);
                break;

            default:
                break;
            }

            mds = new MDS(MDS.EuclideanDistance, MDS.KruskalStress, minimalization);

            s = mds.InitPos();
            stressDisplay.Text = s.GetValue().ToString();
            DrawSolution(s, zoom);

            iterationDisplay.Text = "0";
        }
예제 #2
0
        /// <summary>
        /// Triggers when the ranks file is reloaded. This will reload all ranks into the database.
        /// </summary>
        public void LoadRanks(Hypercube Core)
        {
            Ranks.Clear();
            var dt = Core.Database.GetDataTable("SELECT * FROM RankDB");

            foreach (DataRow c in dt.Rows)
            {
                var NewRank = new Rank();
                NewRank.ID     = Convert.ToInt32(c["Number"]);
                NewRank.Name   = (string)c["Name"];
                NewRank.Group  = (string)c["RGroup"];
                NewRank.Prefix = (string)c["Prefix"];
                if (c["Op"].GetType() == typeof(string))
                {
                    NewRank.Suffix = (string)c["Suffix"];
                }
                NewRank.Op           = ((long)c["Op"] > 0);
                NewRank.PointsInRank = Convert.ToInt32(c["Points"]);
                if (c["Next"].GetType() == typeof(string))
                {
                    NewRank.NextRank = (string)c["Next"];
                }

                Ranks.Add(NewRank);
            }
        }
예제 #3
0
        public void HandleCommand(Hypercube Core, NetworkClient Client, string Message)
        {
            if (!Message.Contains(" "))
            {
                Message += " ";
            }

            var command = Message.Substring(0, Message.IndexOf(" "));
            var splits  = Message.Substring(Message.IndexOf(" ") + 1, Message.Length - (Message.IndexOf(" ") + 1)).Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            var text    = Message.Substring(Message.IndexOf(" ") + 1, Message.Length - (Message.IndexOf(" ") + 1));
            var text2   = text.Substring(text.IndexOf(" ") + 1, text.Length - (text.IndexOf(" ") + 1));

            Core.Logger._Log("Info", "Commands", "Player '" + Client.CS.LoginName + "' used command " + command);

            if (!CommandDict.ContainsKey(command.ToLower()))
            {
                Chat.SendClientChat(Client, "&4Error:&f Command '" + command + "' not found.");
            }
            else
            {
                var thisCommand = CommandDict[command.ToLower()];
                var Ranks       = RankContainer.SplitRanks(Core, thisCommand.UseRanks);

                if (Ranks.Contains(Client.CS.PlayerRank))
                {
                    thisCommand.Run(command, splits, text, text2, Core, Client);
                }
                else
                {
                    Chat.SendClientChat(Client, "&4Error:&f You do not have permission to use this command.");
                }
            }
        }
예제 #4
0
파일: Chat.cs 프로젝트: Herocane/Hypercube
        /// <summary>
        /// Sends a chat message to all players across all maps.
        /// </summary>
        /// <param name="Core"></param>
        public static void SendGlobalChat(Hypercube Core, string Message, sbyte MessageType = 0, bool Log = false)
        {
            var Chat = new Message();

            Chat.PlayerID = MessageType;

            Message = Text.CleanseString(Message);

            if (Log)
            {
                Core.Logger._Log("Chat", "Global", Message);
            }

            //TODO: Emote Replace
            string[] Sending = SplitLines(Message);

            for (int i = 0; i < Core.nh.Clients.Count; i++)
            {
                foreach (string b in Sending)
                {
                    Chat.Text = b;
                    Chat.Write(Core.nh.Clients[i]);
                }
            }
            //foreach (NetworkClient c in Core.nh.Clients) {
            //    foreach (string b in Sending) {
            //        Chat.Text = b;
            //        Chat.Write(c);
            //    }
            //}
        }
예제 #5
0
파일: Chat.cs 프로젝트: Herocane/Hypercube
        /// <summary>
        /// Sends a message to all clients on a certain map.
        /// </summary>
        public static void SendMapChat(HypercubeMap Map, Hypercube Core, string Message, sbyte MessageType = 0, bool Log = false)
        {
            var Chat = new Message();

            Chat.PlayerID = MessageType;

            Message = Text.CleanseString(Message);

            if (Log)
            {
                Core.Logger._Log("Chat", "Global", Message);
            }

            //TODO: Emote Replace
            string[] Sending = SplitLines(Message);

            foreach (NetworkClient c in Map.Clients)
            {
                foreach (string b in Sending)
                {
                    Chat.Text = b;
                    Chat.Write(c);
                }
            }
        }
예제 #6
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                return;
            }

            if (!Core.Database.ContainsPlayer(args[0]))
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find a user with the name '" + args[0] + "'.");
                return;
            }

            Core.Logger._Log("Info", "Command", "Player " + args[0] + " was unstopped by " + Client.CS.LoginName + ".");
            Chat.SendGlobalChat(Core, "&ePlayer " + args[0] + "&e was unstopped by " + Client.CS.FormattedName + "&e.");

            Core.Database.UnstopPlayer(args[0]);

            foreach (NetworkClient c in Core.nh.Clients)
            {
                if (c.CS.LoginName.ToLower() == args[0].ToLower())
                {
                    c.CS.Stopped = false;
                    break;
                }
            }
        }
예제 #7
0
 public void setBasis(Vector3[] newBasis)
 {
     Basis  = Cylinder.Basis = Sphere.Basis = Triangle.Basis = Hypercube.Basis = newBasis;
     axises = new Axises(Constants.axisPosition, device);
     axises.paint(Constants.AxisColor);
     Hypercube.setCamera = true;
     cube = new Hypercube(Constants.SphereColor, Constants.CylinderColor, device);
     Invalidate();
 }
예제 #8
0
        public void Handle(NetworkClient Client, Hypercube Core)
        {
            Client.CS.CPEExtensions.Add(ExtName, Version);

            if (Client.CS.CPEExtensions.Keys.Count == Client.CS.Extensions)
            {
                CPE.CPEPackets(Client);
            }
        }
예제 #9
0
        /// <summary>
        /// Creates a new blank map.
        /// </summary>
        public HypercubeMap(Hypercube Core, string Filename, string MapName, short SizeX, short SizeY, short SizeZ)
        {
            ServerCore = Core;
            Map        = new ClassicWorld(SizeX, SizeZ, SizeY);

            HCSettings          = new HypercubeMetadata(); // -- Hypercube specific settings, woo.
            HCSettings.Building = true;                    // -- Enable building and physics by default.
            HCSettings.Physics  = true;
            HCSettings.History  = new int[Map.BlockData.Length];

            foreach (Rank r in Core.Rankholder.Ranks)   // -- Allow all ranks to access this map by default.
            {
                JoinRanks.Add(r);
                BuildRanks.Add(r);
                ShowRanks.Add(r);
            }

            Map.MetadataParsers.Add("Hypercube", HCSettings); // -- Add the parser so it will save with the map :)

            Map.MapName = MapName;
            Path        = Filename;

            Map.GeneratingSoftware = "Hypercube";
            Map.GeneratorName      = "Blank";
            Map.CreatingService    = "Classicube";
            Map.CreatingUsername   = "******";

            var myRef = (CPEMetadata)Map.MetadataParsers["CPE"];

            if (myRef.CustomBlocksFallback == null)
            {
                myRef.CustomBlocksLevel    = 1;
                myRef.CustomBlocksVersion  = 1;
                myRef.CustomBlocksFallback = new byte[256];

                for (int i = 50; i < 66; i++)
                {
                    myRef.CustomBlocksFallback[i] = (byte)Core.Blockholder.GetBlock(i).CPEReplace;
                }

                Map.MetadataParsers["CPE"] = myRef;
            }

            Map.Save(Path);

            LastClient = DateTime.UtcNow;
            Clients    = new List <NetworkClient>();
            Entities   = new List <Entity>();

            ClientThread = new Thread(MapMain);
            ClientThread.Start();

            EntityThread = new Thread(MapEntities);
            EntityThread.Start();
        }
예제 #10
0
 public void Run(string command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
 {
     if (Plugin.StartsWith("Lua:"))
     {
         Core.LuaHandler.RunLuaFunction(Plugin.Substring(4, Plugin.Length - 4), new Object[] { command, args, Text1, Core, Client });
     }
     else
     {
         Activator.CreateInstance(Type.GetType(Plugin), command, args, Text1, Core, Client);
     }
 }
예제 #11
0
        /// <summary>
        /// Splits a comma delimited string of rank IDs into a list of ranks.
        /// </summary>
        /// <param name="RankString"></param>
        /// <returns></returns>
        public static List <Rank> SplitRanks(Hypercube ServerCore, string RankString)
        {
            var result     = new List <Rank>();
            var splitRanks = RankString.Split(',');

            foreach (string s in splitRanks)
            {
                result.Add(ServerCore.Rankholder.GetRank(int.Parse(s)));
            }

            return(result);
        }
예제 #12
0
        Thread HeartbeatThread; //, MinecraftThread;

        /// <summary>
        /// Generates a new salt and starts heartbeating.
        /// </summary>
        /// <param name="Core"></param>
        public Heartbeat(Hypercube Core)
        {
            ServerCore = Core;
            CreateSalt();

            //if (Core.nh.DualHeartbeat) {
            //    MinecraftThread = new Thread(DoHeartbeatMinecraft);
            //    MinecraftThread.Start();
            //}

            HeartbeatThread = new Thread(DoHeartbeatClassicube);
            HeartbeatThread.Start();
        }
예제 #13
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (Core.Commandholder.CommandDict.ContainsKey("/" + args[0].ToLower()) == false)
            {
                Chat.SendClientChat(Client, "&4Error: &fCommand not found.");
                return;
            }

            var thisCommand = Core.Commandholder.CommandDict["/" + args[0].ToLower()];

            Chat.SendClientChat(Client, "&e/" + args[0]);
            Chat.SendClientChat(Client, thisCommand.Help);
        }
예제 #14
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            string MapString = "&eMaps:<br>";

            foreach (HypercubeMap m in Core.Maps)
            {
                if (m.ShowRanks.Contains(Client.CS.PlayerRank))
                {
                    MapString += "&e" + m.Map.MapName + " &f| ";
                }
            }

            Chat.SendClientChat(Client, MapString);
        }
예제 #15
0
        /// <summary>
        /// Creates a new entry in the PlayerDB for a player.
        /// </summary>
        /// <param name="Name"></param>
        /// <param name="IP"></param>
        public void CreatePlayer(string Name, string IP, Hypercube Core)
        {
            var myValues = new Dictionary <string, string>();

            myValues.Add("Name", Name);
            myValues.Add("IP", IP);
            myValues.Add("Rank", Core.DefaultRank.ID.ToString());
            myValues.Add("RankStep", "0");
            myValues.Add("Global", "1");
            myValues.Add("Banned", "0");
            myValues.Add("Stopped", "0");
            myValues.Add("Vanished", "0");

            Insert("PlayerDB", myValues);
        }
        public void CourtesyNode_ReturnsDoctorInfoFromName()
        {
            LuxFoundationLibrary luxFoundationLibrary = new LuxFoundationLibrary();
            TestLambdaContext    context = new TestLambdaContext();

            const string doctorName = "Paul McGann";

            Hypercube testRequest = new Hypercube()
            {
                Operation      = OperationType.GetDoctorByName,
                OperationInput = doctorName
            };
            string requestOutput = luxFoundationLibrary.CourtesyNode(testRequest, context);

            Assert.Contains(doctorName, requestOutput);
        }
        public void CourtesyNode_ReturnsDoctorsForGivenYear()
        {
            LuxFoundationLibrary luxFoundationLibrary = new LuxFoundationLibrary();
            TestLambdaContext    context = new TestLambdaContext();

            const string year           = "1996";
            const string expectedDoctor = "Paul McGann";

            Hypercube testRequest = new Hypercube()
            {
                Operation      = OperationType.GetDoctorsForYear,
                OperationInput = year
            };
            string requestOutput = luxFoundationLibrary.CourtesyNode(testRequest, context);

            Assert.Contains(expectedDoctor, requestOutput);
        }
예제 #18
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                return;
            }

            if (!Core.Database.ContainsPlayer(args[0]))
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find a user with the name '" + args[0] + "'.");
                return;
            }

            int    MuteDuration;
            string muteReason = "You have been muted";

            if (args.Length == 1)
            {
                MuteDuration = 999999;
            }
            else if (args.Length == 2)
            {
                MuteDuration = int.Parse(Text2);
            }
            else
            {
                MuteDuration = int.Parse(args[1]);
                muteReason   = Text2.Substring(Text2.IndexOf(" ") + 1, Text2.Length - (Text2.IndexOf(" ") + 1));
            }

            Core.Logger._Log("Info", "Command", "Player " + args[0] + " was muted for " + MuteDuration.ToString() + " Minutes. (" + muteReason + ")");
            Chat.SendGlobalChat(Core, "&ePlayer " + args[0] + "&e was muted for " + MuteDuration.ToString() + " minutes. (&f" + muteReason + "&e)");

            var MutedUntil = DateTime.UtcNow.AddMinutes((double)MuteDuration) - Hypercube.UnixEpoch;

            Core.Database.MutePlayer(args[0], (int)MutedUntil.TotalSeconds, muteReason);

            foreach (NetworkClient c in Core.nh.Clients)
            {
                if (c.CS.LoginName.ToLower() == args[0].ToLower() && c.CS.LoggedIn)
                {
                    c.CS.MuteTime = (int)MutedUntil.TotalSeconds;
                    break;
                }
            }
        }
예제 #19
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            string OnlineString = "&eOnline Players: " + Core.nh.Clients.Count.ToString() + "<br>";

            foreach (HypercubeMap hm in Core.Maps)
            {
                OnlineString += "&e" + hm.Map.MapName + "&f: ";

                foreach (NetworkClient c in hm.Clients)
                {
                    OnlineString += c.CS.FormattedName + " ";
                }
                OnlineString += "<br>";
            }

            Chat.SendClientChat(Client, OnlineString);
        }
예제 #20
0
        public void Handle(NetworkClient Client, Hypercube Core)
        {
            if (X != Client.CS.MyEntity.X || Y != Client.CS.MyEntity.Y || Z != Client.CS.MyEntity.Z || yaw != Client.CS.MyEntity.Rot || pitch != Client.CS.MyEntity.Look)
            {
                Client.CS.MyEntity.X       = X;
                Client.CS.MyEntity.Y       = Y;
                Client.CS.MyEntity.Z       = Z;
                Client.CS.MyEntity.Rot     = yaw;
                Client.CS.MyEntity.Look    = pitch;
                Client.CS.MyEntity.Changed = true;
            }

            if (Client.CS.CPEExtensions.ContainsKey("HeldBlock"))
            {
                //TODO: Heldblock.
            }
        }
예제 #21
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                return;
            }

            if (!Core.Database.ContainsPlayer(args[0]))
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find a user with the name '" + args[0] + "'.");
                return;
            }

            Core.Logger._Log("Info", "Command", "Player " + args[0] + " was unbanned by " + Client.CS.LoginName + ".");
            Chat.SendGlobalChat(Core, "&ePlayer " + args[0] + "&e was unbanned by " + Client.CS.FormattedName + "&e.");

            Core.Database.UnbanPlayer(args[0]);
        }
예제 #22
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                Chat.SendClientChat(Client, "&4Error:&f Usage: /pinfo [name]");
                return;
            }

            args[0] = Core.Database.GetPlayerName(args[0]);

            if (args[0] == "")
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find player.");
                return;
            }

            string PlayerInfo = "&ePlayerinfo:<br>";

            var dt = Core.Database.GetDataTable("SELECT * FROM PlayerDB WHERE Name='" + args[0] + "' LIMIT 1");

            PlayerInfo += "&eNumber: " + Core.Database.GetDatabaseInt(args[0], "PlayerDB", "Number").ToString() + "<br>";
            PlayerInfo += "&eName: " + args[0] + "<br>";
            PlayerInfo += "&eRank: " + Core.Rankholder.GetRank(Core.Database.GetDatabaseInt(args[0], "PlayerDB", "Rank")).Name + "<br>";
            PlayerInfo += "&eIP: " + Core.Database.GetDatabaseString(args[0], "PlayerDB", "IP") + "<br>";
            PlayerInfo += "&eLogins: " + Core.Database.GetDatabaseInt(args[0], "PlayerDB", "LoginCounter").ToString() + "<br>";
            PlayerInfo += "&eKicks: " + Core.Database.GetDatabaseInt(args[0], "PlayerDB", "KickCounter").ToString() + ": " + Core.Database.GetDatabaseString(args[0], "PlayerDB", "KickMessage") + "<br>";

            if (Core.Database.GetDatabaseInt(args[0], "PlayerDB", "Banned") > 0)
            {
                PlayerInfo += "&eBanned: " + Core.Database.GetDatabaseString(args[0], "PlayerDB", "BanMessage") + " (" + Core.Database.GetDatabaseString(args[0], "PlayerDB", "BannedBy") + ")<br>";
            }

            if (Core.Database.GetDatabaseInt(args[0], "PlayerDB", "Stopped") > 0)
            {
                PlayerInfo += "&eStopped: " + Core.Database.GetDatabaseString(args[0], "PlayerDB", "StopMessage") + " (" + Core.Database.GetDatabaseString(args[0], "PlayerDB", "StoppedBy") + ")<br>";
            }

            if (Core.Database.GetDatabaseInt(args[0], "PlayerDB", "Time_Muted") > Hypercube.GetCurrentUnixTime())
            {
                PlayerInfo += "&eMuted: " + Core.Database.GetDatabaseString(args[0], "PlayerDB", "MuteMessage") + "<br>";
            }

            Chat.SendClientChat(Client, PlayerInfo);
        }
예제 #23
0
        /// <summary>
        /// Loads all maps in the Maps directory. Creates this directory if it does not exist.
        /// </summary>
        /// <param name="ServerCore"></param>
        public static void Watch(Hypercube ServerCore)
        {
            if (!Directory.Exists("Maps"))
            {
                Directory.CreateDirectory("Maps");
            }

            string[] files = Directory.GetFiles("Maps", "*.cw*", SearchOption.AllDirectories);

            foreach (string file in files)
            {
                try {
                    var NewMap = new HypercubeMap(ServerCore, file);
                    ServerCore.Maps.Add(NewMap);
                    ServerCore.Logger._Log("Info", "MapWatcher", "Loaded map '" + file + "'. (X=" + NewMap.Map.SizeX + " Y=" + NewMap.Map.SizeZ + " Z=" + NewMap.Map.SizeY + ")");
                } catch {
                    ServerCore.Logger._Log("Error", "MapWatcher", "Failed to load map '" + file + "'.");
                }
            }
        }
예제 #24
0
        public NetworkClient(TcpClient baseSock, Hypercube Core)
        {
            BaseSocket = baseSock;
            BaseStream = BaseSocket.GetStream();

            ServerCore = Core;

            wSock         = new ClassicWrapped.ClassicWrapped();
            wSock._Stream = BaseStream;

            Populate();

            CS = new ClientSettings();
            CS.CPEExtensions    = new Dictionary <string, int>();
            CS.SelectionCuboids = new List <byte>();
            CS.LoggedIn         = false;

            DataRunner = new Thread(DataHandler);
            DataRunner.Start();
        }
예제 #25
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)   // -- List command groups

            {
                foreach (string a in Core.Commandholder.Groups.Keys)
                {
                    Chat.SendClientChat(Client, "&e/commands " + a);
                }
            }
            else if (args.Length == 1)     // -- list a group.
            {
                if (!Core.Commandholder.Groups.ContainsKey(args[0]))
                {
                    Chat.SendClientChat(Client, "&4Error: &fGroup '" + args[0] + "' not found.");
                    return;
                }

                string commandString = "&3| &f";

                foreach (string b in Core.Commandholder.Groups[args[0]])
                {
                    if (b != Core.Commandholder.Groups[args[0]].Last())
                    {
                        commandString += b + " | ";
                    }
                    else
                    {
                        commandString += b + " &3|";
                    }
                }

                Chat.SendClientChat(Client, "Group " + args[0]);
                Chat.SendClientChat(Client, commandString);
            }
            else
            {
                Chat.SendClientChat(Client, "&4Error: &fWrong number of arguments supplied.");
                return;
            }
        }
예제 #26
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            foreach (HypercubeMap m in Core.Maps)
            {
                if (m.Map.MapName.ToLower() == args[0].ToLower())
                {
                    if (m.JoinRanks.Contains(Client.CS.PlayerRank))
                    {
                        //TODO: Add vanish
                        Chat.SendMapChat(m, Core, "&ePlayer " + Client.CS.FormattedName + " &echanged to map &f" + m.Map.MapName + ".");
                        Chat.SendMapChat(Client.CS.CurrentMap, Core, "&ePlayer " + Client.CS.FormattedName + " &echanged to map &f" + m.Map.MapName + ".");

                        Client.CS.CurrentMap.Clients.Remove(Client);
                        Client.CS.CurrentMap.DeleteEntity(ref Client.CS.MyEntity);

                        Client.CS.CurrentMap = m;
                        m.SendMap(Client);
                        m.Clients.Add(Client);

                        Client.CS.MyEntity.Changed = true;
                        Client.CS.MyEntity.X       = m.Map.SpawnX;
                        Client.CS.MyEntity.Y       = m.Map.SpawnY;
                        Client.CS.MyEntity.Z       = m.Map.SpawnZ;
                        Client.CS.MyEntity.Rot     = m.Map.SpawnRotation;
                        Client.CS.MyEntity.Look    = m.Map.SpawnLook;
                        Client.CS.MyEntity.SendOwn = true;

                        m.SpawnEntity(Client.CS.MyEntity);
                        m.Entities.Add(Client.CS.MyEntity);
                        m.SendAllEntities(Client);
                    }
                    else
                    {
                        Chat.SendClientChat(Client, "&4Error: &fYou are not allowed to join this map.");
                        return;
                    }
                }
            }
        }
예제 #27
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            Chat.SendClientChat(Client, "&eGroups&f:");
            var GroupDict = new Dictionary <string, string>();

            foreach (Rank r in Core.Rankholder.Ranks)
            {
                if (GroupDict.Keys.Contains(r.Group))
                {
                    GroupDict[r.Group] += "&e| " + r.Prefix + r.Name + r.Suffix + " ";
                }
                else
                {
                    GroupDict.Add(r.Group, "&e" + r.Group + "&f: " + r.Prefix + r.Name + r.Suffix + " ");
                }
            }

            foreach (string b in GroupDict.Keys)
            {
                Chat.SendClientChat(Client, GroupDict[b]);
            }
        }
예제 #28
0
        public Entity(Hypercube Core, HypercubeMap _Map, string _Name, short _X, short _Y, short _Z, byte _Rot, byte _Look)
        {
            Name          = _Name;
            X             = _X;
            Y             = _Y;
            Z             = _Z;
            Rot           = _Rot;
            Look          = _Look;
            Changed       = true;
            SendOwn       = true;
            ID            = Core.EFree;
            BuildMaterial = -1;

            if (Core.EFree != Core.ENext)
            {
                Core.EFree = Core.ENext;
            }
            else
            {
                Core.EFree += 1;
                Core.NextID = Core.EFree;
            }

            Map = _Map;

            if (_Map.FreeID != 128)
            {
                ClientID = (byte)_Map.FreeID;
                if (_Map.FreeID != _Map.NextID)
                {
                    _Map.FreeID = _Map.NextID;
                }
                else
                {
                    _Map.FreeID += 1;
                    _Map.NextID  = _Map.FreeID;
                }
            }
        }
예제 #29
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                return;
            }

            if (!Core.Database.ContainsPlayer(args[0]))
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find a user with the name '" + args[0] + "'.");
                return;
            }

            string BanReason;

            if (args.Length == 1)
            {
                BanReason = "Banned by staff.";
            }
            else
            {
                BanReason = Text2;
            }

            Core.Logger._Log("Info", "Command", "Player " + args[0] + " was banned by " + Client.CS.LoginName + ". (" + BanReason + ")");
            Chat.SendGlobalChat(Core, "&ePlayer " + args[0] + "&e was banned by " + Client.CS.FormattedName + "&e. (&f" + BanReason + "&e)");

            Core.Database.BanPlayer(args[0], BanReason, Client.CS.LoginName);

            foreach (NetworkClient c in Core.nh.Clients)
            {
                if (c.CS.LoginName.ToLower() == args[0].ToLower() && c.CS.LoggedIn)
                {
                    c.KickPlayer("&eBanned: " + BanReason);
                    break;
                }
            }
        }
예제 #30
0
        public void Run(string Command, string[] args, string Text1, string Text2, Hypercube Core, NetworkClient Client)
        {
            if (args.Length == 0)
            {
                return;
            }

            bool   kicked = false;
            string KickReason;

            if (args.Length == 1)
            {
                KickReason = "Kicked by staff.";
            }
            else
            {
                KickReason = Text2;
            }

            foreach (NetworkClient c in Core.nh.Clients)
            {
                if (c.CS.LoginName.ToLower() == args[0].ToLower() && c.CS.LoggedIn)
                {
                    Core.Logger._Log("Info", "Command", "Player " + c.CS.LoginName + " was kicked by " + Client.CS.LoginName + ". (" + KickReason + ")");
                    Chat.SendGlobalChat(Core, "&ePlayer " + c.CS.FormattedName + "&e was kicked by " + Client.CS.FormattedName + "&e. (&f" + KickReason + "&e)");

                    c.KickPlayer("&e" + KickReason);

                    kicked = true;
                    break;
                }
            }

            if (!kicked)
            {
                Chat.SendClientChat(Client, "&4Error:&f Could not find a user with the name '" + args[0] + "'.");
            }
        }