示例#1
0
        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)));
            }
        }