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); } }
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."); }
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); } } }
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); } }
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); } }
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); }
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); } }
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); } }
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; } } }
private static void PlUnknownCmd(object[] args) { OakwoodPlayer player = (OakwoodPlayer)args[0]; string cmd = args[1].ToString(); player.SendMessage($"[CMD] Command '{cmd}' was not found."); }
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); } } }
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; }
private static void OnPlayerChat(OakwoodPlayer player, string message) { if (player.IsValid()) { Oakwood.SendChatMessage($"[CHAT] {player.Name}: {message}"); Oakwood.ConLog($"[CHAT] {player.Name}: {message}"); } }
static void ShowPlayersCommand(OakwoodPlayer player, object[] args) { player.SendMessage("[INFO] Player list:"); foreach (OakwoodPlayer pl in Oakwood.Players) { player.SendMessage($" > {pl.Name}#{pl.ID}"); } }
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); }
static void ClearChatCommand(OakwoodPlayer player, object[] args) { for (int x = 0; x < 24; x++) { player.SendMessage("\n"); } player.HUD.Message("Chat cleared.", 0xFFFFFF); }
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); }
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); } } }
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); }
/// <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); }
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); }
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); }
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); }
/// <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); } }
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); } }
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); } }
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); } }
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); } } }
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); }
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); } }