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); } } } }
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); }