private static bool PreVehicleLock(VehicleManager __instance, CSteamID steamID)
            {
                bool cancel = false;

                Player player = PlayerTool.getPlayer(steamID);

                if (player == null)
                {
                    return(false);
                }
                InteractableVehicle vehicle = player.movement.getVehicle();

                if (vehicle == null || vehicle.asset == null)
                {
                    return(false);
                }
                if (!vehicle.checkDriver(steamID))
                {
                    return(false);
                }
                bool isLocked = vehicle.isLocked;
                bool flag     = vehicle.asset.canBeLocked && !isLocked;

                if (isLocked == flag)
                {
                    return(false);
                }

                OnVehicleLockUpdating?.Invoke(vehicle, player, player.quests.groupID, flag, out cancel);

                return(!cancel);
            }
        private UnturnedPlayer GetDriver(InteractableVehicle vehicle, UnturnedPlayer cliente)
        {
            int count = Colectivero.Count;


            foreach (CSteamID posibleDriver in Colectivero)
            {
                if (vehicle.checkDriver(posibleDriver))
                {
                    return(UnturnedPlayer.FromCSteamID(posibleDriver));
                }
            }
            return(cliente);
        }
        private void OnDamageVehicle(CSteamID instigatorSteamID, InteractableVehicle vehicle, ref ushort pendingTotalDamage, ref bool canRepair, ref bool shouldAllow, EDamageOrigin damageOrigin)
        {
            UnturnedPlayer user = UnturnedPlayer.FromCSteamID(instigatorSteamID);

            if (user == null || pendingTotalDamage < 5)
            {
                return;
            }
            if (damageOrigin == EDamageOrigin.Vehicle_Collision_Self_Damage)
            {
                if (!Configuration.Instance.Allow_vehicle_damage)
                {
                    return;
                }
                int damage = random.Next(1, Configuration.Instance.Max_damage_per_vehicle_crash);
                if (vehicle.checkDriver(instigatorSteamID))
                {
                    if (pendingTotalDamage > 5 && pendingTotalDamage < 35)
                    {
                        SlowPlayer(user.Player, 0.7f, 8f);
                        user.Player.life.serverSetLegsBroken(true);

                        user.Player.life.askDamage(byte.Parse(damage.ToString()), user.Player.transform.position, EDeathCause.VEHICLE, ELimb.SPINE, CSteamID.Nil, out EPlayerKill s);
                    }
                    if (pendingTotalDamage > 35)
                    {
                        SlowPlayer(user.Player, 0.7f, 15f);
                        user.Player.life.serverSetLegsBroken(true);
                        user.Player.life.askDamage(byte.Parse(damage.ToString()), user.Player.transform.position, EDeathCause.VEHICLE, ELimb.SPINE, CSteamID.Nil, out EPlayerKill s);
                    }
                }
                else if (user.Player.movement.getVehicle() == vehicle)
                {
                    if (pendingTotalDamage > 10 && pendingTotalDamage < 45)
                    {
                        SlowPlayer(user.Player, 0.8f, 5f);
                        user.Player.life.serverSetLegsBroken(true);

                        user.Player.life.askDamage(byte.Parse(damage.ToString()), user.Player.transform.position, EDeathCause.VEHICLE, ELimb.SPINE, CSteamID.Nil, out EPlayerKill s);
                    }
                    if (pendingTotalDamage > 45)
                    {
                        SlowPlayer(user.Player, 0.8f, 12f);
                        user.Player.life.serverSetLegsBroken(true);
                        user.Player.life.askDamage(byte.Parse(damage.ToString()), user.Player.transform.position, EDeathCause.VEHICLE, ELimb.SPINE, CSteamID.Nil, out EPlayerKill s);
                    }
                }
            }
        }
Exemple #4
0
        internal static bool Prefix(CSteamID steamID)
        {
            UnturnedPlayer player = UnturnedPlayer.FromCSteamID(steamID);

            if (player == null)
            {
                return(false);
            }

            if (player.IsAdmin && AntiLock.instance.Configuration.Instance.ignoreAdmins)
            {
                return(true);
            }

            InteractableVehicle vehicle = player.Player.movement.getVehicle();

            if (vehicle == null || !vehicle.checkDriver(steamID))
            {
                return(false);
            }

            if (vehicle.isLocked)
            {
                return(true);
            }

            LockGroup group = AntiLock.instance.Configuration.Instance.lockGroups
                              .Where(x => player.HasPermission(x.Permission))
                              .OrderByDescending(x => x.MaxLocks)
                              .FirstOrDefault();

            int max   = group == null ? AntiLock.instance.Configuration.Instance.defaultLocks : group.MaxLocks;
            int count = VehicleManager.vehicles.Count(x => x.lockedOwner == steamID && x.isLocked);

            if (count >= max)
            {
                if (AntiLock.instance.Configuration.Instance.displayMaxlocksNotice)
                {
                    UnturnedChat.Say(player, AntiLock.instance.Translate("max_locked_notice", max), Color.red);
                }

                return(false);
            }

            UnturnedChat.Say(player, AntiLock.instance.Translate("locked_notice", max - count - 1, max));

            return(true);
        }