Beispiel #1
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);
            }
        }
Beispiel #2
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);
            }
        }
Beispiel #3
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);
            }
        }
Beispiel #4
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);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            try
            {
                File.OpenText(Environment.CurrentDirectory + "\\spawn.txt");
            }
            catch
            {
                Console.WriteLine("File doesn't exist");
                Console.WriteLine("^F[^1ERROR^F]: ^CSpawn position is not set!^R");
                return;
            }

            try
            {
                string[] buf = File.ReadAllText(Environment.CurrentDirectory + "\\spawn.txt").Split(';');
                spawnPosition = new OakVec3(float.Parse(buf[0]), float.Parse(buf[1]), float.Parse(buf[2]));
            }
            catch
            {
                Console.WriteLine("Something f****d up");
                Console.WriteLine("^F[^1ERROR^F]: ^CSpawn position is not set!^R");
                return;
            }

            var iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

            if (!GetConsoleMode(iStdOut, out uint outConsoleMode))
            {
                Console.WriteLine("Failed to get output console mode");
                SysCon.ReadKey();
                return;
            }

            outConsoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN;
            if (!SetConsoleMode(iStdOut, outConsoleMode))
            {
                Console.WriteLine($"Failed to set output console mode, error code: {GetLastError()}");
                SysCon.ReadKey();
                return;
            }

            OakwoodEvents.OnLog              += OnLog;
            OakwoodEvents.OnPlayerConnect    += OnPlayerConnect;
            OakwoodEvents.OnPlayerDisconnect += OnPlayerDisconnect;
            OakwoodEvents.OnPlayerDeath      += OnPlayerDeath;
            OakwoodEvents.OnPlayerChat       += OnPlayerChat;
            OakwoodEvents.OnPlayerKeyDown    += OnPlayerKeyDown;

            Console.WriteLine($"^9Oakwood ^Fposition tool^R");
            Console.WriteLine($"^FMade by ^ESevenisko^R");
            SysCon.WriteLine();

            Thread clThread = new Thread(() => Oakwood.CreateClient("ipc://oakwood-inbound", "ipc://oakwood-outbound"));

            clThread.Start();
        }
Beispiel #6
0
        /// <summary>
        /// Sets camera position
        /// </summary>
        /// <param name="position">Camera position</param>
        /// <param name="direction">Camera direction</param>
        /// <returns>True if the function is successful</returns>
        public bool Set(OakVec3 position, OakVec3 direction)
        {
            int ret = int.Parse(Oakwood.CallFunction("oak_camera_set", new object[] { player.ID, new float[] { position.x, position.y, position.z }, new float[] { direction.x, direction.y, direction.z } })[1].ToString());

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

            return(false);
        }
Beispiel #7
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);
        }
Beispiel #8
0
        static void WritePos(OakwoodPlayer player, string posName)
        {
            string  fileName = Environment.CurrentDirectory + $"\\SavedPos\\{posName}.txt";
            OakVec3 pos = player.Position, dir = player.Direction;

            if (File.Exists(fileName))
            {
                player.HUD.Message($"Position '{posName}' updated!", OakColor.White);
            }
            else
            {
                player.HUD.Message($"Position '{posName}' saved!", OakColor.White);
            }

            File.WriteAllText(fileName, $"# The format is following: <posX>;<posY>;<posZ>;<dirX>;<dirY>;<dirZ>\n{pos.x};{pos.y};{pos.z};{dir.x};{dir.y};{dir.z}");
        }
Beispiel #9
0
        static void CreateWarp(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /createwarp <locName>");
                return;
            }

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

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

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

            if (!File.Exists(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($"Warp '{locName}' created!", 0xFFFFFF);
                }
                else
                {
                    player.HUD.Message("Cannot create warp!", 0xFF0000);
                }
            }
            else
            {
                player.HUD.Message($"Warp '{locName}' already exists!", OakColor.Red);
            }
        }
Beispiel #10
0
        static void SpawnCar(OakwoodPlayer player, object[] args)
        {
            if (args.Length == 0)
            {
                player.SendMessage("[USAGE] /car <carID>");
                return;
            }

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

            if (carID >= 0 && carID < OakwoodResources.VehicleModels.Length - 1)
            {
                OakVec3 plPos = player.Position;

                OakVec3 plDir = player.Direction;

                OakwoodVehicle sCar = OakwoodVehicle.Spawn(OakwoodResources.VehicleModels[carID], plPos, plDir.x / 360.0f);

                if (sCar != null)
                {
                    player.VehicleManipulation.Put(sCar, VehicleSeat.FrontLeft);

                    player.HUD.Message("Car successfully spawned!", 0xFFFFFF);
                    return;
                }
                else
                {
                    player.HUD.Message("Cannot spawn car!", 0xFF0000);
                    return;
                }
            }
            else
            {
                player.HUD.Message("Car ID you provided is wrong!", 0xFCB603);
                return;
            }
        }
Beispiel #11
0
        static void GetDir(OakwoodPlayer player, object[] args)
        {
            OakVec3 dir = player.Direction;

            player.HUD.Message($"Actual direction: [{dir.x * 360.0f}; {dir.y * 360.0f}; {dir.z * 360.0f}]", 0xFFFFFF);
        }
Beispiel #12
0
        static void GetPos(OakwoodPlayer player, object[] args)
        {
            OakVec3 pos = player.Position;

            player.HUD.Message($"Actual position: [{pos.x}; {pos.y}; {pos.z}]", 0xFFFFFF);
        }
Beispiel #13
0
        private static void OnPlayerKeyDown(OakwoodPlayer player, VirtualKey key)
        {
            OakVec3 pos = player.Position;

            switch (key)
            {
            case VirtualKey.Numpad8:     // X+
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x + 1.5f, pos.y, pos.z);
                player.Position = newPos;
            }
            break;

            case VirtualKey.Numpad2:     // X-
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x - 1.5f, pos.y, pos.z);
                player.Position = newPos;
            }
            break;

            case VirtualKey.Numpad4:     // Z-
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x, pos.y, pos.z - 1.5f);
                player.Position = newPos;
            }
            break;

            case VirtualKey.Numpad6:     // Z+
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x, pos.y, pos.z + 1.5f);
                player.Position = newPos;
            }
            break;

            case VirtualKey.Numpad3:     // Y-
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x, pos.y - 1.5f, pos.z);
                player.Position = newPos;
            }
            break;

            case VirtualKey.Numpad9:     // Y+
            {
                if (!(player.PlayerData as OakPlayerData).canUseKeys)
                {
                    break;
                }
                OakVec3 newPos = new OakVec3(pos.x, pos.y + 1.5f, pos.z);
                player.Position = newPos;
            }
            break;

            case VirtualKey.F5:
            {
                (player.PlayerData as OakPlayerData).canUseKeys = !(player.PlayerData as OakPlayerData).canUseKeys;
                string msg = (player.PlayerData as OakPlayerData).canUseKeys ? "enabled" : "disabled";
                player.HUD.Message($"Key movement {msg}!", OakColor.White);
            }
            break;
            }
        }