Ejemplo n.º 1
0
        protected override async UniTask OnExecuteAsync()
        {
            var user = (UnturnedUser)Context.Actor;
            var look = user.Player.Player.look;

            await UniTask.SwitchToMainThread();

            if (!PhysicsUtility.raycast(new(look.getEyesPosition(), look.aim.forward),
                                        out var hit, 8f, RayMasks.BARRICADE | RayMasks.STRUCTURE | RayMasks.VEHICLE))
            {
                return;
            }

            var vehicle = hit.collider.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                VehicleManager.askVehicleDestroy(vehicle);
                return;
            }

            if (BarricadeManager.tryGetInfo(hit.transform, out var x, out var y, out var plant, out var index, out var region))
            {
                BarricadeManager.destroyBarricade(region, x, y, plant, index);
                return;
            }

            if (StructureManager.tryGetInfo(hit.transform, out x, out y, out index, out var structureRegion))
            {
                StructureManager.destroyStructure(structureRegion, x, y, index, Vector3.zero);
                return;
            }

            await PrintAsync(m_StringLocalizer["destroy:invalid"]);
        }
Ejemplo n.º 2
0
        public static bool DestroyObject(this Transform transform)
        {
            if (transform == null)
            {
                return(false);
            }

            var vehicle = transform.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                VehicleManager.askVehicleDestroy(vehicle);
                return(true);
            }

            if (transform.GetComponent <InteractableDoorHinge>() != null)
            {
                transform = transform.parent;
            }

            if (BarricadeManager.tryGetInfo(transform, out var x, out var y, out var plant, out var index, out var r))
            {
                BarricadeManager.destroyBarricade(r, x, y, plant, index);
                return(true);
            }

            if (!StructureManager.tryGetInfo(transform, out x, out y, out index, out var s))
            {
                return(false);
            }

            StructureManager.destroyStructure(s, x, y, index, transform.position);

            return(true);
        }
Ejemplo n.º 3
0
        public static List <Transform> Own(CSteamID iD)
        {
            var bars    = FindBarricades();
            var structs = FindStructures();
            var res     = new List <Transform>();

            foreach (var v in bars)
            {
                BarricadeManager.tryGetInfo(v, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);
                if (region.barricades[index].owner == iD.m_SteamID)
                {
                    res.Add(v);
                }
            }

            foreach (var v in structs)
            {
                StructureManager.tryGetInfo(v, out byte x, out byte y, out ushort index, out StructureRegion region);
                if (region.structures[index].owner == iD.m_SteamID)
                {
                    res.Add(v);
                }
            }

            return(res);
        }
Ejemplo n.º 4
0
        private void OnDamageStruct(CSteamID instigatorSteamID, Transform structureTransform, ref ushort pendingTotalDamage, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            StructureManager.tryGetInfo(structureTransform, out byte x, out byte y, out ushort Index, out StructureRegion StRegion);
            var currentRegion = GetRegionAt(StRegion.structures[Index].point);

            if (currentRegion == null)
            {
                return;
            }

            if (currentRegion.Flags.Exists(fg => fg.Name.Equals("NoDestroy", StringComparison.OrdinalIgnoreCase)))
            {
                UnturnedPlayer dealer = UnturnedPlayer.FromCSteamID(instigatorSteamID);

                if (dealer == null)
                {
                    return;
                }

                if (dealer.HasPermission(Configuration.Instance.NoDestroyIgnorePermission) || Configuration.Instance.NoDestroyIgnoredItems.Exists(k => k == StRegion.structures[Index].structure.id))
                {
                    return;
                }

                shouldAllow = false;
            }
            else
            {
                return;
            }
        }
Ejemplo n.º 5
0
        private void OnDamageStructureRequested(CSteamID instigatorSteamId, Transform structureTransform, ref ushort pendingTotalDamage, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            if (!StructureManager.tryGetInfo(structureTransform, out _, out _, out var index,
                                             out var region, out var drop))
            {
                return;
            }
            {
                var data      = region.structures[index];
                var buildable = new UnturnedStructureBuildable(data, drop);

                var nativePlayer = Provider.clients.FirstOrDefault(x => x?.playerID.steamID == instigatorSteamId)?.player;
                var player       = nativePlayer == null ? null : new UnturnedPlayer(nativePlayer);

                UnturnedBuildableDamagingEvent @event;
                if (pendingTotalDamage >= buildable.State.Health)
                {
                    @event = new UnturnedStructureDestroyingEvent(buildable, pendingTotalDamage, damageOrigin, player, instigatorSteamId);
                }
                else
                {
                    @event = new UnturnedStructureDamagingEvent(buildable, pendingTotalDamage, damageOrigin, player, instigatorSteamId);
                }

                Emit(@event);

                pendingTotalDamage = @event.DamageAmount;
                shouldAllow        = [email protected];
            }
        }
Ejemplo n.º 6
0
        public void DeleteStructure(Transform transform)
        {
            byte            x;
            byte            y;
            StructureDrop   index;
            ushort          plant;
            StructureRegion region;

            if (StructureManager.tryGetInfo(transform, out x, out y, out plant, out region, out index))
            {
                region.structures.RemoveAt((int)plant);
                if ((int)plant == (int)ushort.MaxValue)
                {
                    StructureManager.instance.channel.send("tellTakeStructure", ESteamCall.ALL, x, y, StructureManager.STRUCTURE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, (object)x, (object)y, (object)plant, (object)index);
                }
                else
                {
                    StructureManager.instance.channel.send("tellTakeStructure", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[4]
                    {
                        (object)x,
                        (object)y,
                        (object)plant,
                        (object)index
                    });
                }
            }
        }
Ejemplo n.º 7
0
        private void OnDamageStructureRequested(CSteamID instigatorSteamId, Transform structureTransform, ref ushort pendingTotalDamage, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            if (!StructureManager.tryGetInfo(structureTransform, out _, out _, out var index,
                                             out var region, out var drop))
            {
                return;
            }
            {
                var data      = region.structures[index];
                var buildable = new UnturnedStructureBuildable(data, drop);

                var nativePlayer = PlayerTool.getPlayer(instigatorSteamId);
                var player       = GetUnturnedPlayer(nativePlayer);

                var @event = pendingTotalDamage >= buildable.State.Health
                    ? (UnturnedBuildableDamagingEvent) new UnturnedStructureDestroyingEvent(buildable,
                                                                                            pendingTotalDamage, damageOrigin, player !, instigatorSteamId)
                    : new UnturnedStructureDamagingEvent(buildable, pendingTotalDamage, damageOrigin, player !,
                                                         instigatorSteamId);

                @event.IsCancelled = !shouldAllow;

                Emit(@event);

                pendingTotalDamage = @event.DamageAmount;
                shouldAllow        = [email protected];
            }
        }
Ejemplo n.º 8
0
        public static bool RepairObject(this Transform transform)
        {
            if (transform == null)
            {
                return(false);
            }

            var vehicle = transform.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                VehicleManager.repair(vehicle, vehicle.asset.health, 1);
                return(true);
            }

            if (transform.GetComponent <InteractableDoorHinge>() != null)
            {
                transform = transform.parent;
            }

            if (BarricadeManager.tryGetInfo(transform, out _, out _, out _, out _, out _))
            {
                BarricadeManager.repair(transform, 99999, 1);
                return(true);
            }

            if (!StructureManager.tryGetInfo(transform, out _, out _, out _, out _))
            {
                return(false);
            }

            StructureManager.repair(transform, 99999, 1);
            return(true);
        }
Ejemplo n.º 9
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player       = (UnturnedPlayer)caller;
            RaycastInfo    thingLocated = TraceRay(player, 2048f, RayMasks.VEHICLE | RayMasks.BARRICADE | RayMasks.STRUCTURE | RayMasks.BARRICADE_INTERACT | RayMasks.STRUCTURE_INTERACT);

            if (thingLocated.vehicle != null)
            {
                InteractableVehicle vehicle = thingLocated.vehicle;

                if (vehicle.lockedOwner != CSteamID.Nil)
                {
                    Utils.TellInfo(caller, vehicle.lockedOwner, vehicle.lockedGroup);
                    return;
                }
                UnturnedChat.Say(caller, "Vehicle does not have an owner.");
                return;
            }
            else
            {
                if (!(thingLocated.transform != null))
                {
                    return;
                }
                byte          x;
                byte          y;
                Interactable2 component = thingLocated.transform.GetComponent <Interactable2>();
                if (!(component.transform != null))
                {
                    return;
                }
                CSteamID val2 = (CSteamID)component.owner;
                CSteamID val3 = (CSteamID)component.group;
                Interactable2SalvageBarricade interactable2SalvageBarricade = component as Interactable2SalvageBarricade;
                if (interactable2SalvageBarricade != null)
                {
                    if (!BarricadeManager.tryGetInfo(interactable2SalvageBarricade.root, out x, out y, out ushort _, out ushort index, out BarricadeRegion region))
                    {
                        return;
                    }
                    ItemBarricadeAsset asset = region.barricades[index].barricade.asset;
                    Utils.TellInfo(caller, val2, val3);
                }
                else
                {
                    if (!(component is Interactable2SalvageStructure))
                    {
                        return;
                    }
                    if (!StructureManager.tryGetInfo(thingLocated.transform, out y, out x, out ushort index2, out StructureRegion region2))
                    {
                        return;
                    }
                    ItemStructureAsset asset = region2.structures[index2].structure.asset;
                    Utils.TellInfo(caller, val2, val3);
                }
            }
        }
Ejemplo n.º 10
0
        public static Data?GetData(this Transform transform)
        {
            if (transform == null)
            {
                return(null);
            }

            var vehicle = transform.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                return(new Data
                {
                    Owner = vehicle.lockedOwner.m_SteamID,
                    Group = vehicle.lockedGroup.m_SteamID,
                    Health = vehicle.health,
                    MaxHealth = vehicle.asset.health,
                    Asset = vehicle.asset
                });
            }

            if (transform.GetComponent <InteractableDoorHinge>() != null)
            {
                transform = transform.parent;
            }

            if (BarricadeManager.tryGetInfo(transform, out _, out _, out _, out var index, out var r))
            {
                var bData = r.barricades[index];

                return(new Data
                {
                    Owner = bData.owner,
                    Group = bData.group,
                    Health = bData.barricade.health,
                    MaxHealth = bData.barricade.asset.health,
                    Asset = bData.barricade.asset
                });
            }

            if (!StructureManager.tryGetInfo(transform, out _, out _, out index, out var s))
            {
                return(null);
            }

            var sData = s.structures[index];

            return(new Data
            {
                Owner = sData.owner,
                Group = sData.group,
                Health = sData.structure.health,
                MaxHealth = sData.structure.asset.health,
                Asset = sData.structure.asset
            });
        }
Ejemplo n.º 11
0
        /// <inheritdoc />
        public override void UnsafeDestroy()
        {
            ThreadUtil.assertIsGameThread();
            if (!StructureManager.tryGetInfo(Model, out var x, out var y, out var index, out var sRegion))
            {
                return;
            }

            StructureManager.destroyStructure(sRegion, x, y, index, Vector3.zero);
        }
Ejemplo n.º 12
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (PhysicsUtility.raycast(new Ray(player.Player.look.aim.position, player.Player.look.aim.forward), out RaycastHit hit, 10f, RayMasks.BARRICADE_INTERACT))
            {
                byte x;
                byte y;

                ushort plant;
                ushort index;

                BarricadeRegion bRegion;
                StructureRegion sRegion;

                InteractableVehicle vehicle;

                ulong ownerId;

                var instance = ModerationPlugin.Instance;

                if (BarricadeManager.tryGetInfo(hit.transform, out x, out y, out plant, out index, out bRegion))
                {
                    ownerId = bRegion.barricades[index].owner;
                }
                else if (StructureManager.tryGetInfo(hit.transform, out x, out y, out index, out sRegion))
                {
                    ownerId = sRegion.structures[index].owner;
                }
                else if ((vehicle = hit.transform.GetComponent <InteractableVehicle>()) != null && vehicle.isLocked)
                {
                    ownerId = vehicle.lockedOwner.m_SteamID;
                }
                else
                {
                    UnturnedChat.Say(caller, instance.Translate("CheckownerFail"));
                    return;
                }

                ThreadPool.QueueUserWorkItem((i) =>
                {
                    var owner = instance.DatabaseManager.GetPlayer(ownerId);

                    if (owner == null)
                    {
                        owner = instance.DatabaseManager.CreatePlayer(new Models.Player(ownerId, ownerId.GetIP()));
                    }

                    TaskDispatcher.QueueOnMainThread(() =>
                    {
                        UnturnedChat.Say(caller, instance.Translate("CheckownerSuccess", owner.PlayerName, owner.PlayerId, owner.IsBanned(out var ban)));
                    });
                });
            }
        }
Ejemplo n.º 13
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();
            var look   = player.Look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE | RayMasks.STRUCTURE))
            {
                Interactable2SalvageBarricade barri = hit.transform.GetComponent <Interactable2SalvageBarricade>();
                Interactable2SalvageStructure struc = hit.transform.GetComponent <Interactable2SalvageStructure>();

                if (barri != null)
                {
                    BarricadeManager.tryGetInfo(barri.root, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    region.barricades.RemoveAt(index);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeBarricade", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index
                    });

                    EssLang.Send(src, "BARRICADE_REMOVED");
                    return(CommandResult.Success());
                }
                else if (struc != null)
                {
                    StructureManager.tryGetInfo(struc.transform, out byte x, out byte y, out ushort index, out StructureRegion region);

                    region.structures.RemoveAt(index);

                    StructureManager manager = (StructureManager)typeof(StructureManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeStructure", ESteamCall.ALL, x, y, StructureManager.STRUCTURE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        index,
                        (region.drops[index].model.position - player.UnturnedPlayer.transform.position).normalized * 100f
                    });

                    EssLang.Send(src, "STRUCTURE_REMOVED");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("DESTROY_INVALID"));
                }
            }
Ejemplo n.º 14
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            Player     player = ((UnturnedPlayer)caller).Player;
            PlayerLook look   = player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE | RayMasks.STRUCTURE))
            {
                Interactable2SalvageBarricade barri = hit.transform.GetComponent <Interactable2SalvageBarricade>();
                Interactable2SalvageStructure struc = hit.transform.GetComponent <Interactable2SalvageStructure>();

                if (barri != null)
                {
                    BarricadeManager.tryGetInfo(barri.root, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    region.barricades.RemoveAt(index);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeBarricade", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index
                    });

                    UnturnedChat.Say(caller, Util.Translate("barricade_removed"));
                }
                else if (struc != null)
                {
                    StructureManager.tryGetInfo(struc.transform, out byte x, out byte y, out ushort index, out StructureRegion region);

                    region.structures.RemoveAt(index);

                    StructureManager manager = (StructureManager)typeof(StructureManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    manager.channel.send("tellTakeStructure", ESteamCall.ALL, x, y, StructureManager.STRUCTURE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        index,
                        (region.drops[index].model.position - player.transform.position).normalized * 100f
                    });

                    UnturnedChat.Say(caller, Util.Translate("structure_removed"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_destroy"));
                }
            }
Ejemplo n.º 15
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (Physics.Raycast(player.Player.look.aim.position, player.Player.look.aim.forward, out hit, 10, RayMasks.BARRICADE_INTERACT))
            {
                byte x;
                byte y;

                ushort plant;
                ushort index;

                BarricadeRegion r;
                StructureRegion s;

                Transform           transform = hit.transform;
                InteractableVehicle vehicle   = transform.gameObject.GetComponent <InteractableVehicle>();

                if (transform.GetComponent <InteractableDoorHinge>() != null)
                {
                    transform = transform.parent.parent;
                }

                if (BarricadeManager.tryGetInfo(transform, out x, out y, out plant, out index, out r))
                {
                    var bdata = r.barricades[index];

                    Library.TellInfo(caller, (CSteamID)bdata.owner, (CSteamID)bdata.group);
                    player.Player.sendBrowserRequest("SteamProfile", "http://steamcommunity.com/profiles/" + (CSteamID)bdata.owner);
                }

                else if (StructureManager.tryGetInfo(transform, out x, out y, out index, out s))
                {
                    var sdata = s.structures[index];

                    Library.TellInfo(caller, (CSteamID)sdata.owner, (CSteamID)sdata.group);
                    player.Player.sendBrowserRequest("SteamProfile", "http://steamcommunity.com/profiles/" + (CSteamID)sdata.owner);
                }

                else if (vehicle != null)
                {
                    if (vehicle.lockedOwner != CSteamID.Nil)
                    {
                        Library.TellInfo(caller, vehicle.lockedOwner, vehicle.lockedGroup);
                        player.Player.sendBrowserRequest("SteamProfile", "http://steamcommunity.com/profiles/" + vehicle.lockedOwner);
                        return;
                    }
                    UnturnedChat.Say(caller, "Vehicle does not have an owner.");
                }
            }
        }
Ejemplo n.º 16
0
        public override Task DestroyAsync()
        {
            async UniTask DestroyTask()
            {
                await UniTask.SwitchToMainThread();

                if (StructureManager.tryGetInfo(StructureDrop.model, out var x, out var y, out var index, out var region))
                {
                    StructureManager.destroyStructure(region, x, y, index, Vector3.zero);
                }
            }

            return(DestroyTask().AsTask());
        }
Ejemplo n.º 17
0
        public StructureData TryGetStructure(Transform transform)
        {
            byte x;
            byte y;

            ushort index;

            StructureRegion s;

            if (StructureManager.tryGetInfo(transform, out x, out y, out index, out s))
            {
                return(s.structures[index]);
            }
            return(null);
        }
Ejemplo n.º 18
0
        public bool TryGetStructure(out StructureTag tag)
        {
            byte            x;
            byte            y;
            ushort          index;
            StructureRegion region;

            if (StructureManager.tryGetInfo(Internal.transform, out x, out y, out index, out region))
            {
                tag = new StructureTag(Internal.transform, region.structures[index]);
                return(true);
            }
            tag = null;
            return(false);
        }
 public RaycastResult(RaycastHit Info, bool hit)
 {
     RaycastHit = hit;
     if (hit)
     {
         Raycast = Info;
         Vehicle = TryGetEntity <InteractableVehicle>();
         Transform target = Raycast.collider?.transform;
         if (target != null)
         {
             if (target.CompareTag("Barricade"))
             {
                 target = DamageTool.getBarricadeRootTransform(target);
                 BarricadeRootTransform = target;
                 if (BarricadeManager.tryGetInfo(target, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion Region, out BarricadeDrop Drop))
                 {
                     BarricadeRegion = Region;
                     BarricadeX      = x;
                     BarricadeY      = y;
                     BarricadePlant  = plant;
                     BarricadeIndex  = index;
                     BarricadeData B = Region.barricades.FirstOrDefault(D => D.instanceID == Drop.instanceID);
                     if (B != null)
                     {
                         Barricade = B;
                     }
                 }
             }
             else if (target.CompareTag("Structure"))
             {
                 target = DamageTool.getStructureRootTransform(target);
                 StructureRootTransform = target;
                 if (StructureManager.tryGetInfo(target, out byte x, out byte y, out ushort index, out StructureRegion Region))
                 {
                     StructureX      = x;
                     StructureY      = y;
                     StructureIndex  = index;
                     StructureRegion = Region;
                     StructureData B = Region.structures[index];
                     if (B != null)
                     {
                         Structure = B;
                     }
                 }
             }
         }
     }
 }
        public static Transform GetStructureTransform(Player player, out StructureData structureData)
        {
            structureData = null;
            RaycastHit hit;

            if (PhysicsUtility.raycast(new Ray(player.look.aim.position, player.look.aim.forward), out hit, 3, RayMasks.STRUCTURE_INTERACT))
            {
                if (StructureManager.tryGetInfo(hit.transform, out _, out _, out ushort index, out StructureRegion region))
                {
                    structureData = region.structures[index];
                    return(region.drops[index].model);
                }
            }

            return(null);
        }
Ejemplo n.º 21
0
        private void OnDamageStruct(CSteamID instigatorSteamID, Transform structureTransform, ref ushort pendingTotalDamage, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            StructureManager.tryGetInfo(structureTransform, out byte x, out byte y, out ushort Index, out StructureRegion StRegion);
            var currentRegion = GetRegionAt(StRegion.structures[Index].point);

            if (currentRegion == null)
            {
                return;
            }
            if (currentRegion.Flags.Exists(fg => fg.Name == "NoDestroy") && !R.Permissions.HasPermission(new RocketPlayer(instigatorSteamID.m_SteamID.ToString()), Configuration.Instance.NoDestroyIgnorePermission) && !Configuration.Instance.NoDestroyIgnoredItems.Exists(k => k == StRegion.structures[Index].structure.id))
            {
                shouldAllow = false;
            }
            else
            {
                return;
            }
        }
Ejemplo n.º 22
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer Player = (UnturnedPlayer)caller;
            Transform      trans  = Base.Tracer.TraceToHit(Player).transform;

            if (trans == null)
            {
                Base.Messages.CommonMessage(Utilities.Messages.CommonMessages.CNoObjectFound, caller);
                return;
            }
            InteractableVehicle vehicle = trans.gameObject.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                if (vehicle.lockedOwner != CSteamID.Nil)
                {
                    UnturnedChat.Say(caller, Base.Instance.Translate("vehicle_owned", vehicle.lockedOwner.ToString()));
                }
                else
                {
                    UnturnedChat.Say(caller, Base.Instance.Translate("vehicle_no_owner"));
                }
            }
            else
            {
                if (trans.GetComponent <InteractableDoorHinge>() != null)
                {
                    trans = trans.parent.parent;
                }

                if (BarricadeManager.tryGetInfo(trans, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion BarricRegion))
                {
                    UnturnedChat.Say(caller, Base.Instance.Translate("object_owned", (CSteamID)BarricRegion.barricades[index].owner));
                    return;
                }
                if (StructureManager.tryGetInfo(trans, out x, out y, out index, out StructureRegion StructRegion))
                {
                    UnturnedChat.Say(caller, Base.Instance.Translate("object_owned", (CSteamID)StructRegion.structures[index].owner));
                    return;
                }
                UnturnedChat.Say(caller, Base.Instance.Translate("no_owner_found"));
            }
        }
Ejemplo n.º 23
0
        public bool Heal(Transform transform, ushort amout)
        {
            Interactable2SalvageBarricade bar  = transform.GetComponent <Interactable2SalvageBarricade>();
            Interactable2SalvageStructure strc = transform.GetComponent <Interactable2SalvageStructure>();

            if (bar != null)
            {
                BarricadeManager.tryGetInfo(bar.root, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);
                region.barricades[index].barricade.askRepair(amout);
                return(true);
            }
            else if (strc != null)
            {
                StructureManager.tryGetInfo(strc.transform, out byte x, out byte y, out ushort index, out StructureRegion region);
                region.structures[index].structure.askRepair(amout);
                return(true);
            }
            return(false);
        }
        public static Transform GetStructureTransform(Vector3 position)
        {
            List <Transform>        list    = new List <Transform>();
            List <RegionCoordinate> regions = new List <RegionCoordinate>();

            Regions.getRegionsInRadius(position, 0.1f, regions);
            StructureManager.getStructuresInRadius(position, 0.1f, regions, list);

            foreach (Transform transform in list)
            {
                if (transform.position == position)
                {
                    if (StructureManager.tryGetInfo(transform, out _, out _, out ushort index, out StructureRegion region))
                    {
                        return(region.drops[index].model);
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 25
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer Player = (UnturnedPlayer)caller;
            Transform      trans  = Base.Tracer.TraceToHit(Player).transform;

            if (trans == null)
            {
                Base.Messages.CommonMessage(Utilities.Messages.CommonMessages.CNoObjectFound, caller);
                return;
            }
            InteractableVehicle vehicle = trans.gameObject.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                vehicle.askRepair(10000);
                UnturnedChat.Say(caller, Base.Instance.Translate("repair_vehicle"));
            }
            else
            {
                if (trans.GetComponent <InteractableDoorHinge>() != null)
                {
                    trans = trans.parent.parent;
                }

                if (BarricadeManager.tryGetInfo(trans, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion BarricRegion))
                {
                    BarricadeManager.repair(trans, 10000, 1);
                    UnturnedChat.Say(caller, Base.Instance.Translate("repair_object"));
                    return;
                }
                if (StructureManager.tryGetInfo(trans, out x, out y, out index, out StructureRegion StructRegion))
                {
                    StructureManager.repair(trans, 10000, 1);
                    UnturnedChat.Say(caller, Base.Instance.Translate("repair_object"));
                    return;
                }
                Base.Messages.CommonMessage(Utilities.Messages.CommonMessages.CNoObjectFound, caller);
            }
        }
Ejemplo n.º 26
0
        private void OnStructureDamaged(CSteamID instigatorSteamID, Transform structureTransform, ref ushort pendingTotalDamage, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            SteamPlayer steamPlayer;

            if (!Configuration.Instance.AllowRaid && (steamPlayer = PlayerTool.getSteamPlayer(instigatorSteamID)) != null)
            {
                if (StructureManager.tryGetInfo(structureTransform, out _, out _, out ushort index, out StructureRegion region))
                {
                    // return if structure owner is instigator
                    if (region.structures[index].owner == instigatorSteamID.m_SteamID || region.structures[index].group == steamPlayer.player.quests.groupID.m_SteamID)
                    {
                        return;
                    }

                    // return if structure owner is offline
                    if (!Provider.clients.Exists(x => x.playerID.steamID.m_SteamID == region.structures[index].owner || x.player.quests.groupID.m_SteamID == region.structures[index].group))
                    {
                        return;
                    }

                    this.StartPlayerRaid(instigatorSteamID);
                }
            }
        }
Ejemplo n.º 27
0
        public void OnDamageStructure(CSteamID steamid, Transform structure, ref ushort num, ref bool barricadebool,
                                      EDamageOrigin damageorigin)
        {
            byte            x;
            byte            y;
            ushort          index;
            StructureRegion structureRegion;
            string          hq;

            hq = " ";


            StructureManager.tryGetInfo(structure, out x, out y, out index, out structureRegion);
            StructureData structuretargeted = structureRegion.structures[index];
            // if (structuretargeted.structure.health < num)
            // {
            //if (((structuretargeted.point -axishq).sqrMagnitude <= 3600) || ((structuretargeted.point - allieshq).sqrMagnitude <= 3600))
            Vector2 structurevector2;

            structurevector2.x = structuretargeted.point.x;
            structurevector2.y = structuretargeted.point.z;
            if (((structurevector2 - axishq).magnitude <= 600) || (structurevector2 - allieshq).magnitude <= 600)
            {
                if ((structurevector2 - axishq).magnitude <= 600)
                {
                    hq = " Axis ";
                }
                else if ((structurevector2 - allieshq).magnitude <= 600)
                {
                    hq = " Allies ";
                }
                Rocket.Core.Logging.Logger.Log("Structure destroyed in HQ");
                var       player    = UnturnedPlayer.FromCSteamID(steamid);
                var       steam64   = steamid;
                var       itemid    = structuretargeted.structure.id;
                ItemAsset itemAsset = (from i in new List <ItemAsset>(Assets.find(EAssetType.ITEM).Cast <ItemAsset>())
                                       where i.itemName != null
                                       orderby i.itemName.Length
                                       where i.id == itemid
                                       select i).FirstOrDefault <ItemAsset>();
                //stole this from rockets /i command
                var barricadename = itemAsset.itemName;
                var url           = player.SteamProfile.AvatarFull.ToString();
                var bx            = structuretargeted.point.x;
                var by            = structuretargeted.point.y;
                var bz            = structuretargeted.point.z;
                //and then send to discord webhook


                var owner = structuretargeted.owner;


                Discord.SendWebhookPost(Configuration.Instance.raidalertchannel,
                                        Discord.BuildDiscordEmbed("A structure was damaged in" + hq + "HQ",
                                                                  "This structure was damaged at " + DateTime.Now,
                                                                  player.DisplayName, url, 65327, new object[]
                {
                    Discord.BuildDiscordField("Destroyer steam64", steam64.ToString(), true),
                    Discord.BuildDiscordField("Structure ID", itemid.ToString(), true),
                    Discord.BuildDiscordField("Structure Name", barricadename, true),
                    Discord.BuildDiscordField("Structure Position", "X: " + bx + " Y: " + by + " Z: " + bz,
                                              true),
                    Discord.BuildDiscordField("Owner of this structure", owner.ToString(),
                                              true),
                }));
            }

            //}
        }
Ejemplo n.º 28
0
        public static async Task <OwnerModel> CheckOwner(this Transform obj)
        {
            if (obj == null)
            {
                return(null);
            }

            var transform = obj;

            var vehicle = obj.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                var nameAndGroup = await CheckPair(vehicle.lockedOwner, vehicle.lockedGroup);

                return(new OwnerModel
                {
                    Group = vehicle.lockedGroup, GroupName = nameAndGroup.Value,
                    Hp = vehicle.health + "/" + vehicle.asset.health, Owner = vehicle.lockedOwner, OwnerName = nameAndGroup.Key,
                    Id = vehicle.id
                });
            }

            if (obj.GetComponent <InteractableDoorHinge>() != null)
            {
                transform = obj.parent.parent;
            }

            if (BarricadeManager.tryGetInfo(transform, out _, out _, out _, out var index, out var r))
            {
                var data  = r.barricades[index];
                var owner = (CSteamID)data.owner;
                var group = (CSteamID)data.group;

                var nameAndGroup = await CheckPair(owner, group);

                return(new OwnerModel
                {
                    Group = group, GroupName = nameAndGroup.Value,
                    Hp = data.barricade.health + "/" + data.barricade.asset.health, Owner = owner, OwnerName = nameAndGroup.Key,
                    Id = data.barricade.id
                });
            }

            if (!StructureManager.tryGetInfo(transform, out _, out _, out index, out var s))
            {
                return(null);
            }
            {
                var data  = s.structures[index];
                var owner = (CSteamID)data.owner;
                var group = (CSteamID)data.@group;

                var nameAndGroup = await CheckPair(owner, group);

                return(new OwnerModel
                {
                    Group = group, GroupName = nameAndGroup.Value,
                    Hp = data.structure.health + "/" + data.structure.asset.health, Owner = owner, OwnerName = nameAndGroup.Key,
                    Id = data.structure.id
                });
            }
        }