private void DoRemove(PlayerSession session, string[] args, string vehicleType, VehicleInventory vehicleInventory, VehiclePassenger[] vehiclePassengers) { string steamId = session.SteamId.ToString(); // /car remove bumper|front|left|right|roof|rear|tire|engine|gearbox string tmp = args[1].ToLower(); //Check for permission to remove.extra if (tmp == "gear" || tmp == "gearbox" || tmp == "engine" || tmp == "tire" || tmp == "wheel" || tmp == "rotor" || tmp == "rotors") { if (!permission.UserHasPermission(steamId, RemoveExtraPermission)) { Player.Message(session, GetMsg("NoPermission", steamId).Replace("{permission}", RemoveExtraPermission)); return; } } //Check for permission to remove if (tmp == "bumper" || tmp == "front" || tmp == "left" || tmp == "right" || tmp == "roof" || tmp == "rear" || tmp == "all") { if (!permission.UserHasPermission(steamId, RemovePermission)) { Player.Message(session, GetMsg("NoPermission", steamId).Replace("{permission}", RemovePermission)); return; } } List <string> parts; if (tmp == "all") { parts = new List <string> { "bumper", "front", "left", "right", "roof", "rear" } } ; else { parts = new List <string> { tmp } }; bool ignorePart = false; foreach (string attach in parts) { ignorePart = false; // Cannot remove rear if a player is on the vehicle rear if (attach == "rear" || attach == "front") { foreach (VehiclePassenger vehiclePassenger in vehiclePassengers) { if (vehiclePassenger.HasPassenger()) { string seat = GetSeatName(vehiclePassenger.SeatOffset); if (attach == seat) { Player.Message(session, GetMsg("RemoveSeatError", steamId).Replace("{seat}", seat)); ignorePart = true; break; } } } } if (ignorePart) { continue; } //Get the restrictedSlots relative to vehicle attachment player wants to remove List <int> restrictedSlots = GetRestrictedSlots(attach, vehicleType, vehicleInventory); GlobalItemManager globalItemManager = GlobalItemManager.Instance; foreach (int slot in restrictedSlots) { //Give vehicle attach to player inventory ItemObject vehicleAttach = vehicleInventory.GetSlot(slot); globalItemManager.GiveItem(session.Player, vehicleAttach); //Remove attachment from vehicle. vehicleInventory.SetSlot(slot, null); vehicleInventory.Invalidate(false); if (tmp != "all") { Player.Message(session, GetMsg("VehicleRemove", steamId).Replace("{attachRemoved}", vehicleAttach.Generator.name).Replace("{vehicleType}", GetMsg("vehicles/" + vehicleType))); } } if (restrictedSlots.Count == 0) { if (tmp != "all") { Player.Message(session, GetMsg("RemoveAttachmentError").Replace("{attachment}", attach)); } } } if (tmp == "all") { Player.Message(session, GetMsg("VehicleRemoveAll").Replace("{vehicleType}", GetMsg("vehicles/" + vehicleType))); } }