public void Execute(IRocketPlayer caller, string[] command) { var player = PlayerUtil.GetUnturnedPlayer(caller); var pos = player.Position; UnturnedChat.Say(caller, $"Position: X: {pos.x}, Y: {pos.y}, Z: {pos.z}; + Rotation: {player.Player.transform.rotation.eulerAngles.y}", Color.green); }
//This is to prevent other plugins overwriting god mode by accident private void OnPlayerDamaged(UnturnedPlayer player, ref EDeathCause cause, ref ELimb limb, ref UnturnedPlayer killer, ref Vector3 direction, ref float damage, ref float times, ref bool canDamage) { if (player.GodMode) { return; } var untPlayer = PlayerUtil.GetUnturnedPlayer(player); var currentRegion = GetRegionAt(untPlayer.Position); if (currentRegion == null) { return; //No region? Not our problem! } //Flag is stop the process of this function because the user opted to disabled the auto-protection feature if (currentRegion.Flags.Exists(fg => fg.Name.Equals("DisableGodModeProtection", StringComparison.OrdinalIgnoreCase))) { return; } try //This is just here to prevent the console logging at a lot of errors because exceptions will be generated by using this way { if (currentRegion != null) { OnPlayerEnteredRegion(player, currentRegion); } } catch (Exception) { } }
public override Region OnCreate(IRocketPlayer player, string name, string[] args) { var pos = PlayerUtil.GetUnturnedPlayer(player).Position; var r = args.GetFloatParameter(0); if (r == null) { UnturnedChat.Say(player, "Usage: /screate circle <radius>", Color.red); return(null); } Radius = r.Value; Center = new SerializablePosition(pos); var region = new Region { Name = name, Owners = new List <ulong> { PlayerUtil.GetId(player) }, Type = this }; return(region); }
private void OnPlayerConnect(IRocketPlayer player) { var untPlayer = PlayerUtil.GetUnturnedPlayer(player); _lastPositions.Add(PlayerUtil.GetId(player), untPlayer.Position); var region = GetRegionAt(untPlayer.Position); if (region != null) { OnPlayerEnteredRegion(player, region); } }
public void Execute(IRocketPlayer caller, string[] command) { if (command.Length == 0) { this.SendUsage(caller); return; } var name = command.GetStringParameter(0); var region = RegionsPlugin.Instance.GetRegion(name, true); if (region == null) { UnturnedChat.Say(caller, "Region \"" + name + "\" not found", Color.red); return; } if (!region.IsOwner(caller) && !PermissionUtil.HasPermission(caller, "redefine.override")) { UnturnedChat.Say(caller, "You're not the owner of this region!", Color.red); return; } var args = new ArrayList(command); args.RemoveAt(0); if (region.Type.OnRedefine(PlayerUtil.GetUnturnedPlayer(caller), (string[])args.ToArray(typeof(string)))) { RegionsPlugin.Instance.Regions.Remove(region); RegionsPlugin.Instance.Configuration.Save(); RegionsPlugin.Instance.OnRegionRemoved(region); RegionsPlugin.Instance.Regions.Add(region); RegionsPlugin.Instance.Configuration.Save(); RegionsPlugin.Instance.OnRegionCreated(region); UnturnedChat.Say(caller, "Successfully redefined region: " + name, Color.green); return; } UnturnedChat.Say(caller, "Redefine of region: " + name + " failed.", Color.red); }
public void Execute(IRocketPlayer caller, string[] command) { if (command.Length < 1 || (command[0] != "1" && command[0] != "2")) { this.SendUsage(caller); return; } var rawpos = PlayerUtil.GetUnturnedPlayer(caller).Position; var pos = new SerializablePosition(rawpos); if (command[0] == "1") { UnturnedChat.Say(caller, "First position set to: X:" + pos.X + ", Z: " + pos.Y); RectangleType.SetPosition1(caller, pos); } else { UnturnedChat.Say(caller, "Second position set to: X:" + pos.X + ", Z: " + pos.Y); RectangleType.SetPosition2(caller, pos); } }
public override bool OnRedefine(IRocketPlayer player, string[] args) { var pos = PlayerUtil.GetUnturnedPlayer(player).Position; if (args.Length < 1) { UnturnedChat.Say(player, "Usage: /sredefine <name> circle <radius>", Color.red); return(false); } var r = args.GetInt32Parameter(0); if (r == null) { UnturnedChat.Say(player, "Usage: /sredefine <name> circle <radius>", Color.red); return(false); } Radius = r.Value; Center = new SerializablePosition(pos); return(true); }
private void OnPlayerUpdatePosition(IRocketPlayer player, Vector3 position) { var id = PlayerUtil.GetId(player); var untPlayer = PlayerUtil.GetUnturnedPlayer(player); if (untPlayer == null) { #if DEBUG Logger.LogError("untplayer == null OnPlayerUpdatePosition"); #endif return; } var currentRegion = GetRegionAt(position); var oldRegion = _playersInRegions.ContainsKey(id) ? _playersInRegions[id] : null; Vector3?lastPosition = null; if (_lastPositions.ContainsKey(id)) { lastPosition = _lastPositions[id]; } if (oldRegion != null && oldRegion != currentRegion) { //Left a region var flag = oldRegion.GetFlag <NoLeaveFlag>(); var value = flag?.GetValueSafe(currentRegion.GetGroup(player)); if (value.HasValue && value.Value && lastPosition != null) { //Todo: send message to player (can't leave region) untPlayer.Teleport(lastPosition.Value, untPlayer.Rotation); return; } OnPlayerLeftRegion(player, oldRegion); } else if (oldRegion == null && currentRegion != null) { //Entered a region var flag = currentRegion.GetFlag <NoEnterFlag>(); if (flag != null && flag.GetValueSafe(currentRegion.GetGroup(player)) && lastPosition != null) { //Todo: send message to player (can't enter region) untPlayer.Teleport(lastPosition.Value, untPlayer.Rotation); return; } OnPlayerEnteredRegion(player, currentRegion); } if (currentRegion != null) { for (var i = 0; i < currentRegion.ParsedFlags.Count; i++) { currentRegion.ParsedFlags[i]?.OnPlayerUpdatePosition(untPlayer, position); } } if (lastPosition == null) { _lastPositions.Add(id, untPlayer.Position); } else { _lastPositions[id] = untPlayer.Position; } }