Пример #1
0
        static void Warp(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                string List = "";

                foreach (string f in Directory.GetFiles(Environment.CurrentDirectory + @"\Warps"))
                {
                    List += $"{Path.GetFileNameWithoutExtension(f)}, ";
                }

                player.SendMessage($"[WARPS ({Directory.GetFiles(Environment.CurrentDirectory + @"\Warps").Length})] {List}");
                return;
            }

            string locName = args[0].ToString();

            string file = Environment.CurrentDirectory + @"\Warps\" + $"{locName}.txt";

            if (File.Exists(file))
            {
                player.HUD.Message($"Warping you to '{locName}'...", 0xFFFFFF);
                string[] pos    = File.ReadAllText(file).Split(';');
                OakVec3  newPos = new OakVec3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
                OakVec3  newDir = new OakVec3(float.Parse(pos[3]), float.Parse(pos[4]), float.Parse(pos[5]));
                player.Position  = newPos;
                player.Direction = newDir;
            }
            else
            {
                player.HUD.Message($"Warp '{locName}' doesn't exist!", 0xFF0000);
            }
        }
Пример #2
0
        static void TpaCommand(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /tpa <playerName>");
                return;
            }

            string plName = args[0].ToString();

            if (plName == player.Name)
            {
                player.SendMessage("[WARN] You can't just teleport to yourself!");
                return;
            }

            foreach (OakwoodPlayer p in Oakwood.Players)
            {
                if (plName == p.Name)
                {
                    ((OakPlayerData)p.PlayerData).TpaID = player.ID;

                    player.HUD.Message($"Sending teleport request to {p.Name}...", 0xFFFFFF);

                    p.SendMessage($"[TPA] Player {player.Name} wants to teleport to you:");
                    p.SendMessage($"  > Write '/tpaccept' to accept the request.");
                    p.SendMessage($"  > Or just ignore it, if you want to reject the request.");

                    return;
                }
            }

            player.SendMessage($"[WARN] Player '{plName}' was not found.");
        }
Пример #3
0
        internal static void OnConnect(object[] args)
        {
            int playerID = int.Parse(args[0].ToString());

            OakwoodPlayer newPlayer = new OakwoodPlayer();

            newPlayer.ID = playerID;

            newPlayer.Name = newPlayer.GetName();

            Random rand = new Random();

            int index = rand.Next(OakwoodResources.PlayerModels.Length);

            newPlayer.Model = OakwoodResources.PlayerModels[index].Modelname;

            if (newPlayer.Name == "|>>>failed<<<|" || newPlayer.Name == "Server")
            {
                newPlayer.Kick("Invalid player name!");
            }
            else
            {
                Oakwood.Players.Add(newPlayer);

                newPlayer.SetModel(newPlayer.Model);

                newPlayer.Spawn(new OakVec3(-1986.852539f, -5.089742f, 25.776871f), 180.0f);

                if (OnPlayerConnect != null)
                {
                    OnPlayerConnect(newPlayer);
                }
            }
        }
Пример #4
0
        static void SetSkin(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /skin <skinID>");
                return;
            }

            int skinID = int.Parse(args[0].ToString());

            OakwoodVehicle car = player.Vehicle;

            if (car == null)
            {
                if (skinID >= 0 && skinID < OakwoodResources.PlayerModels.Length - 1)
                {
                    player.SetModel(OakwoodResources.PlayerModels[skinID].Modelname);
                    player.HUD.Message("Skin successfully changed!", 0xFFFFFF);
                }
                else
                {
                    player.HUD.Message("Skin ID you provided is wrong!", 0xFCB603);
                }
            }
            else
            {
                player.HUD.Message("You can't be inside the vehicle!", 0xFF0000);
            }
        }
Пример #5
0
        static void LoadLoc(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /loadloc <locName>");
                return;
            }

            string locName = args[0].ToString();

            string file = Environment.CurrentDirectory + @"\savedLocations\" + $"{locName}.txt";

            if (File.Exists(file))
            {
                string[] pos    = File.ReadAllText(file).Split(';');
                OakVec3  newPos = new OakVec3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
                OakVec3  newDir = new OakVec3(float.Parse(pos[3]), float.Parse(pos[4]), float.Parse(pos[5]));
                player.Position  = newPos;
                player.Direction = newDir;
                player.HUD.Message($"Teleported to '{locName}'!", 0xFFFFFF);
            }
            else
            {
                player.HUD.Message($"Location '{locName}' doesn't exist!", 0xFF0000);
            }
        }
Пример #6
0
        static void GetPos(OakwoodPlayer player)
        {
            OakVec3 pos = player.Position, dir = player.Direction;

            player.HUD.Message($"Position: ({pos.x}, {pos.y}, {pos.z})", OakColor.White);
            player.HUD.Message($"Direction: ({dir.x}, {dir.y}, {dir.z})", OakColor.White);
        }
Пример #7
0
        internal static void OnPlHit(object[] args)
        {
            int   playerID   = int.Parse(args[0].ToString());
            int   attackerID = int.Parse(args[1].ToString());
            float damage     = float.Parse(args[2].ToString());

            OakwoodPlayer player   = null;
            OakwoodPlayer attacker = null;

            foreach (OakwoodPlayer pl in Oakwood.Players)
            {
                if (pl.ID == playerID)
                {
                    player = pl;
                }
            }

            foreach (OakwoodPlayer pl in Oakwood.Players)
            {
                if (pl.ID == attackerID)
                {
                    attacker = pl;
                }
            }

            if (OnPlayerHit != null)
            {
                OnPlayerHit(player, attacker, damage);
            }
        }
Пример #8
0
        static void SaveLoc(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /saveloc <locName>");
                return;
            }

            string locName = args[0].ToString();

            string file = Environment.CurrentDirectory + @"\savedLocations\" + $"{locName}.txt";

            if (!Directory.Exists(Path.GetDirectoryName(file)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(file));
            }

            OakVec3 playerPos = player.Position;
            OakVec3 playerDir = player.Direction;

            if (playerPos.x != 0 && playerPos.y != 0 && playerPos.z != 0 && playerDir.x != 0 && playerDir.z != 0)
            {
                File.WriteAllText(file, $"{playerPos.x};{playerPos.y};{playerPos.z};{playerDir.x};{playerDir.y};{playerDir.z}");

                player.HUD.Message($"Location '{locName}' saved!", 0xFFFFFF);
            }
            else
            {
                player.HUD.Message("Cannot save location!", 0xFF0000);
            }
        }
Пример #9
0
        static void ReadPos(OakwoodPlayer player, string posName)
        {
            string fileName = Environment.CurrentDirectory + $"\\SavedPos\\{posName}.txt";

            if (!File.Exists(fileName))
            {
                player.HUD.Message($"Position '{posName}' doesn't exist!", OakColor.Red);
                return;
            }

            string[] lines = File.ReadAllLines(fileName);

            foreach (string line in lines)
            {
                if (!line.StartsWith("#"))
                {
                    string[] buf = line.Split(';');
                    player.Position  = new OakVec3(float.Parse(buf[0]), float.Parse(buf[1]), float.Parse(buf[2]));
                    player.Direction = new OakVec3(float.Parse(buf[3]), float.Parse(buf[4]), float.Parse(buf[5]));

                    player.HUD.Message($"Position '{posName}' loaded!", OakColor.White);

                    break;
                }
            }
        }
Пример #10
0
        private static void PlUnknownCmd(object[] args)
        {
            OakwoodPlayer player = (OakwoodPlayer)args[0];
            string        cmd    = args[1].ToString();

            player.SendMessage($"[CMD] Command '{cmd}' was not found.");
        }
Пример #11
0
        internal static void OnPlKey(object[] args)
        {
            int plID = int.Parse(args[0].ToString());
            int vKey = int.Parse(args[1].ToString());
            int isD  = int.Parse(args[2].ToString());

            OakwoodPlayer player = null;

            bool isDown = isD == 1;

            foreach (OakwoodPlayer p in Oakwood.Players)
            {
                if (p.ID == plID)
                {
                    player = p;
                    break;
                }
            }

            if (isDown)
            {
                if (OnPlayerKeyDown != null)
                {
                    OnPlayerKeyUp(player, (VirtualKey)vKey);
                }
            }
            else
            {
                if (OnPlayerKeyUp != null)
                {
                    OnPlayerKeyDown(player, (VirtualKey)vKey);
                }
            }
        }
Пример #12
0
 private static void OnPlayerDisconnect(OakwoodPlayer player)
 {
     foreach (var p in Oakwood.Players)
     {
         p.HUD.Message($"{player.Name} left the session.", OakColor.White);
     }
     player.PlayerData = null;
 }
Пример #13
0
 private static void OnPlayerChat(OakwoodPlayer player, string message)
 {
     if (player.IsValid())
     {
         Oakwood.SendChatMessage($"[CHAT] {player.Name}: {message}");
         Oakwood.ConLog($"[CHAT] {player.Name}: {message}");
     }
 }
Пример #14
0
 static void ShowPlayersCommand(OakwoodPlayer player, object[] args)
 {
     player.SendMessage("[INFO] Player list:");
     foreach (OakwoodPlayer pl in Oakwood.Players)
     {
         player.SendMessage($" > {pl.Name}#{pl.ID}");
     }
 }
Пример #15
0
        private static void OnPlayerDeath(OakwoodPlayer player, OakwoodPlayer killer)
        {
            foreach (var p in Oakwood.Players)
            {
                p.HUD.Message($"{player.Name} died.", OakColor.White);
            }

            player.Spawn(spawnPosition, 0);
        }
Пример #16
0
        static void ClearChatCommand(OakwoodPlayer player, object[] args)
        {
            for (int x = 0; x < 24; x++)
            {
                player.SendMessage("\n");
            }

            player.HUD.Message("Chat cleared.", 0xFFFFFF);
        }
Пример #17
0
        private static void OnPlayerConnect(OakwoodPlayer player)
        {
            foreach (var p in Oakwood.Players)
            {
                p.HUD.Message($"{player.Name} joined the session.", OakColor.White);
            }

            player.PlayerData = new OakPlayerData();
            player.Spawn(spawnPosition, 0);
        }
Пример #18
0
 private static void OnPlayerDisconnect(OakwoodPlayer player)
 {
     if (player.IsValid())
     {
         foreach (OakwoodPlayer p in Oakwood.Players)
         {
             p.HUD.Message($"{player.Name} left the game.", OakColor.White);
         }
     }
 }
Пример #19
0
        static void SpawnCommand(OakwoodPlayer player, object[] args)
        {
            player.SpawnTempWeapons();

            player.Health = 200.0f;
            player.Spawn(new OakVec3(-1986.852539f, -5.089742f, 25.776871f), 180.0f);

            player.HUD.Fade(OakwoodFade.FadeIn, 500, 0xFFFFFF);
            player.HUD.Fade(OakwoodFade.FadeOut, 500, 0xFFFFFF);
        }
Пример #20
0
        /// <summary>
        /// Targets player's camera to another player
        /// </summary>
        /// <param name="spectatedPlayer">Player to target</param>
        /// <returns>True if the function is successful</returns>
        public bool TargetPlayer(OakwoodPlayer spectatedPlayer)
        {
            int ret = int.Parse(Oakwood.CallFunction("oak_camera_target_player", new object[] { player.ID, spectatedPlayer.ID })[1].ToString());

            if (ret == 0)
            {
                return(true);
            }

            return(false);
        }
Пример #21
0
        internal static bool Send(OakwoodPlayer player, string message)
        {
            int ret = int.Parse(Oakwood.CallFunction("oak_chat_send", new object[] { player.ID, message + "\0", message.Length + 1 })[0].ToString());

            if (ret == 0)
            {
                return(true);
            }

            return(false);
        }
Пример #22
0
        internal static bool Clear(OakwoodPlayer player)
        {
            int ret = int.Parse(Oakwood.CallFunction("oak_chat_clear", new object[] { player.ID })[0].ToString());

            if (ret == 0)
            {
                return(true);
            }

            return(false);
        }
Пример #23
0
 static void Kill(OakwoodPlayer player, object[] args)
 {
     foreach (OakwoodPlayer p in Oakwood.Players)
     {
         p.HUD.Message($"{player.Name} commited suicide.", OakColor.White);
     }
     player.HUD.Fade(OakwoodFade.FadeIn, 500, OakColor.Red);
     player.SpawnTempWeapons();
     player.Health = 200.0f;
     player.Spawn(new OakVec3(-759.3801f, 13.24883f, 761.6967f), 180.0f);
     player.HUD.Fade(OakwoodFade.FadeOut, 500, OakColor.Red);
 }
Пример #24
0
 /// <summary>
 /// Calls a command
 /// </summary>
 /// <param name="player">Player sender</param>
 /// <param name="command">Command name</param>
 /// <param name="args">Command arguments</param>
 /// <returns></returns>
 internal static bool ExecuteCommand(OakwoodPlayer player, string command, string[] args)
 {
     if (HasCommand(command))
     {
         cmdRepository[command](player, args);
         return(true);
     }
     else
     {
         Console.WriteLine($"[ERROR] Command '{command}' doesn't exist!");
         return(false);
     }
 }
Пример #25
0
        static void GetCurrentVehicle(OakwoodPlayer player, object[] args)
        {
            OakwoodVehicle vehicle = player.Vehicle;

            if (vehicle != null)
            {
                player.HUD.Message($"Vehicle ID: {vehicle.ID}", OakColor.White);
                player.HUD.Message($"{vehicle.Name}", OakColor.White);
            }
            else
            {
                player.HUD.Message("You're not inside any car!", OakColor.White);
            }
        }
Пример #26
0
        internal static void OnPKill(object[] args)
        {
            int           playerID   = int.Parse(args[0].ToString());
            int           killerID   = int.Parse(args[1].ToString());
            int           reason     = int.Parse(args[2].ToString());
            int           hitType    = int.Parse(args[3].ToString());
            int           playerPart = int.Parse(args[4].ToString());
            OakwoodPlayer player     = null;
            OakwoodPlayer killer     = null;

            foreach (OakwoodPlayer pl in Oakwood.Players)
            {
                if (pl.ID == playerID)
                {
                    player = pl;
                    break;
                }
            }

            foreach (OakwoodPlayer pl in Oakwood.Players)
            {
                if (pl.ID == killerID)
                {
                    killer = pl;
                    break;
                }
            }

            player.Vehicle = null;

            player.ClearInventory();

            DeathType deathType = (DeathType)hitType;

            switch (reason)
            {
            case 1:
                deathType = DeathType.OutOfWorld;
                break;

            case 2:
                deathType = DeathType.Drowned;
                break;
            }

            if (OnPlayerDeath != null)
            {
                OnPlayerDeath(player, killer, deathType, (BodyPart)playerPart);
            }
        }
Пример #27
0
        static void RepairCommand(OakwoodPlayer player, object[] args)
        {
            OakwoodVehicle car = player.Vehicle;

            if (car != null)
            {
                car.Repair();
                player.HUD.Message("Vehicle successfully repaired.", 0xFFFFFF);
            }
            else
            {
                player.HUD.Message("You're not inside any vehicle!", 0xFF0000);
            }
        }
Пример #28
0
        internal static void OnChat(object[] args)
        {
            int    playerID = int.Parse(args[0].ToString());
            string msg      = (string)args[1];

            OakwoodPlayer player = null;

            foreach (OakwoodPlayer pl in Oakwood.Players)
            {
                if (pl.ID == playerID)
                {
                    player = pl;
                    break;
                }
            }

            if (msg.StartsWith("/"))
            {
                string[] t       = msg.Split(' ');
                string   cmd     = t[0];
                string[] cmdargs = t.Skip(1).ToArray();

                if (cmd.Substring(1) == "shwood")
                {
                    player.HUD.Message($"SharpWood {Oakwood.GetVersion()} made by Sevenisko & NanobotZ.", OakColor.White);
                }
                else if (cmd.Substring(1) == "help")
                {
                    player.SendMessage($"Command help:");
                    for (int i = 0; i < OakwoodCommandSystem.cmdDescriptions.Count; i++)
                    {
                        string[] welp = OakwoodCommandSystem.cmdDescriptions[i].Split(new string[] { " - " }, StringSplitOptions.None);
                        player.SendMessage($"> {welp[0]}");
                        player.SendMessage($" {{888888}}-> {{cccccc}}{welp[1]}");
                    }
                }
                else if (!OakwoodCommandSystem.ExecuteCommand(player, cmd.Substring(1), cmdargs))
                {
                    OakwoodCommandSystem.CallEvent("unknownCommand", new object[] { player, cmd.Substring(1) });
                }
            }
            else
            {
                if (OnPlayerChat != null)
                {
                    OnPlayerChat(player, msg);
                }
            }
        }
Пример #29
0
        static void Distance(OakwoodPlayer player, string pos1Name, string pos2Name)
        {
            string file1Name = Environment.CurrentDirectory + $"\\SavedPos\\{pos1Name}.txt";
            string file2Name = Environment.CurrentDirectory + $"\\SavedPos\\{pos2Name}.txt";

            if (!File.Exists(file1Name))
            {
                player.HUD.Message($"Position '{pos1Name}' doesn't exist!", OakColor.Red);
                return;
            }

            if (!File.Exists(file2Name))
            {
                player.HUD.Message($"Position '{pos2Name}' doesn't exist!", OakColor.Red);
                return;
            }

            OakVec3 p1 = new OakVec3(), p2 = new OakVec3();

            string[] lines = File.ReadAllLines(file1Name);

            foreach (string line in lines)
            {
                if (!line.StartsWith("#"))
                {
                    string[] buf = line.Split(';');
                    p1 = new OakVec3(float.Parse(buf[0]), float.Parse(buf[1]), float.Parse(buf[2]));

                    break;
                }
            }

            lines = File.ReadAllLines(file2Name);

            foreach (string line in lines)
            {
                if (!line.StartsWith("#"))
                {
                    string[] buf = line.Split(';');
                    p2 = new OakVec3(float.Parse(buf[0]), float.Parse(buf[1]), float.Parse(buf[2]));

                    break;
                }
            }

            float dist = OakVec3.Distance(p1, p2);

            player.HUD.Message($"Distance: {dist.ToString("0.00")}", OakColor.White);
        }
Пример #30
0
        static void DelCarCommand(OakwoodPlayer player, object[] args)
        {
            OakwoodVehicle car = player.Vehicle;

            if (car != null)
            {
                player.VehicleManipulation.Remove(car);
                car.Despawn();
                player.HUD.Message("Vehicle successfully removed.", 0xFFFFFF);
            }
            else
            {
                player.HUD.Message("You're not inside any vehicle!", 0xFF0000);
            }
        }