コード例 #1
0
        private static void CheckForDrownedVehicles()
        {
            var vehicles = VehicleManager.vehicles;

            for (var i = vehicles.Count - 1; i >= 0; i--)
            {
                if (!VehicleUtil.VehicleHasOwner(vehicles[i]))
                {
                    continue;
                }
                if (!vehicles[i].isDrowned)
                {
                    continue;
                }
                var vName        = vehicles[i].asset.vehicleName;
                var vId          = vehicles[i].asset.id;
                var vOwner       = vehicles[i].lockedOwner;
                var vehicleCount = DbManager.GetVehicleCount(vOwner.m_SteamID.ToString(), "Drown");
                if (vehicleCount >= Conf.DrownGarageSlot && Conf.DrownGarageSlot != -1)
                {
                    continue;
                }
                var drownedVehicleRegion = BarricadeManager.getRegionFromVehicle(vehicles[i]);
                GarageUtil.SaveVgVehicleToSql(vOwner.m_SteamID, "Drown", "Drowned", vehicles[i],
                                              drownedVehicleRegion);
                if (UnturnedPlayer.FromCSteamID(vOwner) != null)
                {
                    UnturnedPlayer.FromCSteamID(vOwner).SendChat(
                        Inst.Translate("rfgarage_autogarage_drown_success", vName, vId), MsgColor,
                        Conf.AnnouncerIconUrl);
                }
                Logger.LogWarning(
                    $"[RFGarage] {vName} [{vId}] has been added automatically to {vOwner.m_SteamID}'s garage due to Drown");
            }
        }
コード例 #2
0
        private static bool CheckResponse(UnturnedPlayer player)
        {
            GarageUtil.GarageCheck(player, GarageModel.Parse("Drown"), out var responseType, true);
            if (!Plugin.DbManager.IsVehicleExist(player.CSteamID.m_SteamID.ToString(), "Drown", "Drowned"))
            {
                responseType = EResponseType.DONT_HAVE_VEHICLE;
            }
            switch (responseType)
            {
            case EResponseType.DONT_HAVE_VEHICLE:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_vehicle", "Drown"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NOT_FOUND:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NO_PERMISSION:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_permission", "Drown", "garage.drown"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #3
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length != 3)
            {
                UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor);
                return;
            }

            var    player = (UnturnedPlayer)caller;
            string garage;

            if (command[1].ToLower() != "drown")
            {
                if (!CheckResponse(player, command))
                {
                    return;
                }
                garage = GarageModel.Parse(command[1]).Name;
            }
            else
            {
                garage = "Drown";
            }
            GarageUtil.LoadVgVehicleFromSql(player, garage, command[1].ToLower() != "drown" ? command[2] : "Drowned", out var vehicle, command[0]);
            UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_gr_success", vehicle.asset.vehicleName, vehicle.asset.id, garage), Plugin.MsgColor);
        }
コード例 #4
0
        private static bool CheckResponse(UnturnedPlayer player, string[] commands)
        {
            GarageUtil.SuperGarageRetrieveChecks(player, out var responseType, commands);

            switch (responseType)
            {
            case EResponseType.DONT_HAVE_VEHICLE:
                var garage = GarageModel.Parse(commands?[1]);
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_sgr_garage_no_vehicle", commands?[0], garage.Name), Plugin.MsgColor);
                return(false);

            case EResponseType.GARAGE_NOT_FOUND:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor);
                return(false);

            case EResponseType.INVALID_STEAM_ID:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_invalid_id"), Plugin.MsgColor);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                UnturnedChat.Say(player, responseType.ToString(), Plugin.MsgColor);
                return(false);
            }
        }
コード例 #5
0
        private static bool CheckResponse(UnturnedPlayer player, string[] commands)
        {
            GarageUtil.GarageRetrieveAllChecks(player, out var responseType, commands);
            GarageModel garageModel;

            switch (responseType)
            {
            case EResponseType.DONT_HAVE_VEHICLE:
                garageModel = GarageModel.Parse(commands?[0]);
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_no_vehicle", garageModel.Name), Plugin.MsgColor);
                return(false);

            case EResponseType.GARAGE_NOT_FOUND:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor);
                return(false);

            case EResponseType.GARAGE_NO_PERMISSION:
                garageModel = GarageModel.Parse(commands?[0]);
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_no_permission", garageModel.Name, garageModel.Permission), Plugin.MsgColor);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                UnturnedChat.Say(player, responseType.ToString(), Plugin.MsgColor);
                return(false);
            }
        }
コード例 #6
0
        private static bool CheckResponse(UnturnedPlayer player, string[] commands, out InteractableVehicle vehicle, out BarricadeRegion vehicleRegion)
        {
            GarageUtil.SuperGarageAddChecks(player, commands, out vehicle, out vehicleRegion, out var responseType);
            switch (responseType)
            {
            case EResponseType.GARAGE_NOT_FOUND:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor);
                return(false);

            case EResponseType.INVALID_STEAM_ID:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_invalid_id"), Plugin.MsgColor);
                return(false);

            case EResponseType.SAME_NAME_AS_GARAGE:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_vehicle_name_same_as_garage"), Plugin.MsgColor);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            case EResponseType.VEHICLE_NOT_FOUND:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_vehicle_not_found"), Plugin.MsgColor);
                return(false);

            default:
                UnturnedChat.Say(player, responseType.ToString(), Plugin.MsgColor);
                return(false);
            }
        }
コード例 #7
0
        private static bool CheckResponse(UnturnedPlayer player, string steamID, GarageModel garageModel)
        {
            GarageUtil.SuperGarageListCheck(player, steamID, garageModel, out var responseType, garageModel == null);
            switch (responseType)
            {
            case EResponseType.GARAGE_NOT_FOUND:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor);
                return(false);

            case EResponseType.INVALID_STEAM_ID:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_invalid_id"), Plugin.MsgColor);
                return(false);

            case EResponseType.PLAYER_NOT_ONLINE:
                UnturnedChat.Say(player, Plugin.Inst.Translate("rfgarage_command_player_not_online"), Plugin.MsgColor);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                UnturnedChat.Say(player, responseType.ToString(), Plugin.MsgColor);
                return(false);
            }
        }
コード例 #8
0
        private static bool CheckResponse(UnturnedPlayer player, string[] commands)
        {
            GarageUtil.GarageRetrieveChecks(player, out var responseType, commands);
            GarageModel garageModel;

            switch (responseType)
            {
            case EResponseType.DONT_HAVE_VEHICLE:
                garageModel = commands.Length == 1 ? Plugin.SelectedGarageDict[player.CSteamID] : GarageModel.Parse(commands[0]);
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_vehicle", garageModel.Name), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NOT_FOUND:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NO_PERMISSION:
                garageModel = GarageModel.Parse(commands?[0]);
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_permission", garageModel.Name, garageModel.Permission), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NOT_SELECTED:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gr_garage_not_selected"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                player.SendChat(responseType.ToString(), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);
            }
        }
コード例 #9
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length > 2 || command.Length == 0)
            {
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            var player = (UnturnedPlayer)caller;

            switch (command.Length)
            {
            case 1 when Plugin.Conf.VirtualGarages.Any(g => string.Equals(g.Name, command[0], StringComparison.CurrentCultureIgnoreCase)):
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);

                return;

            case 1 when !Plugin.Conf.VirtualGarages.Any(g => string.Equals(g.Name, command[0], StringComparison.CurrentCultureIgnoreCase)):
            {
                if (!CheckResponse(player, command, out var vehicle, out var vehicleRegion))
                {
                    return;
                }
                var garage = Plugin.SelectedGarageDict[player.CSteamID];
                GarageUtil.SaveVgVehicleToSql(player.CSteamID.m_SteamID, garage.Name, command[0], vehicle, vehicleRegion);
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_success", vehicle.asset.vehicleName, vehicle.asset.id, garage.Name), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            case 1:
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;

            case 2:
            {
                if (!CheckResponse(player, command, out var vehicle, out var vehicleRegion))
                {
                    return;
                }
                var garage = GarageModel.Parse(command[0]);
                GarageUtil.SaveVgVehicleToSql(player.CSteamID.m_SteamID, garage.Name, command[1], vehicle, vehicleRegion);
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_success", vehicle.asset.vehicleName, vehicle.asset.id, garage.Name), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            default:
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                break;
            }
        }
コード例 #10
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length < 1 || command.Length > 2)
            {
                UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_invalid_parameter"), Plugin.MsgColor);
                return;
            }

            var player = (UnturnedPlayer)caller;

            switch (command.Length)
            {
            case 1 when !CheckResponse(player, command[0], null):
                return;

            case 1:
            {
                var target  = UnturnedPlayer.FromName(command[0]);
                var garages = GarageUtil.GetAllGarages(target);
                var list    = string.Join(", ", (from t in garages let count = Plugin.DbManager.GetVehicleCount(command[0], t.Name) select $"{t.Name} ({count}/{t.Slot})").ToArray());
                if (!garages.Any())
                {
                    list = "None";
                }
                UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_glist_garages_success", list), Plugin.MsgColor);
                return;
            }

            case 2 when !CheckResponse(player, command[0], GarageModel.Parse(command[1])):
                return;

            case 2:
            {
                var garage           = GarageModel.Parse(command[1]);
                var vgVehicles       = Plugin.DbManager.ReadVgVehicleByGarageName(command[0], garage.Name);
                var playerVgVehicles = vgVehicles as PlayerSerializableVehicleModel[] ?? vgVehicles.ToArray();
                foreach (var vgVehicle in playerVgVehicles)
                {
                    var vg    = vgVehicle.Info.ToVgVehicle();
                    var asset = (VehicleAsset)Assets.find(EAssetType.VEHICLE, vg.ID);
                    var list  = $"[Name] {vgVehicle.VehicleName}, [VName] {asset.vehicleName}, [ID] {asset.id}";
                    UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_glist_garage_success", garage.Name, list), Plugin.MsgColor);
                }

                break;
            }
            }
        }
コード例 #11
0
        public static void OnConnected(UnturnedPlayer player)
        {
            if (!Plugin.SelectedGarageDict.ContainsKey(player.CSteamID))
            {
                Plugin.SelectedGarageDict.Add(player.CSteamID, GarageUtil.GetFirstGarage(player));
            }

            if (!Plugin.GarageAddAllQueueDict.ContainsKey(player.CSteamID))
            {
                Plugin.GarageAddAllQueueDict.Add(player.CSteamID, false);
            }

            if (!Plugin.GarageRetrieveAllQueueDict.ContainsKey(player.CSteamID))
            {
                Plugin.GarageRetrieveAllQueueDict.Add(player.CSteamID, new List <PlayerSerializableVehicleModel>());
            }
        }
コード例 #12
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length > 1)
            {
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            var player = (UnturnedPlayer)caller;

            switch (command.Length)
            {
            case 0:
            {
                var garages = GarageUtil.GetAllGarages(player);
                var list    = !garages.Any() ? "None" : string.Join(", ", (from t in garages let count = Plugin.DbManager.GetVehicleCount(player.CSteamID.m_SteamID.ToString(), t.Name) select $"{t.Name} ({count}/{t.Slot})").ToArray());
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_glist_garages_success", list), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            case 1:
            {
                if (!CheckResponse(player, GarageModel.Parse(command[0])))
                {
                    return;
                }
                var garage           = GarageModel.Parse(command[0]);
                var vgVehicles       = Plugin.DbManager.ReadVgVehicleByGarageName(player.CSteamID.m_SteamID.ToString(), garage.Name);
                var playerVgVehicles = vgVehicles as PlayerSerializableVehicleModel[] ?? vgVehicles.ToArray();
                foreach (var vgVehicle in playerVgVehicles)
                {
                    var vg    = vgVehicle.Info.ToVgVehicle();
                    var asset = (VehicleAsset)Assets.find(EAssetType.VEHICLE, vg.ID);
                    var list  = $"[Name] {vgVehicle.VehicleName}, [VName] {asset.vehicleName}, [ID] {asset.id}";
                    caller.SendChat(Plugin.Inst.Translate("rfgarage_command_glist_garage_success", garage.Name, list), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                }

                return;
            }

            default:
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                break;
            }
        }
コード例 #13
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length != 3)
            {
                UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor);
                return;
            }

            var player = (UnturnedPlayer)caller;

            if (!CheckResponse(player, command, out var vehicle, out var vehicleRegion))
            {
                return;
            }
            var garage = GarageModel.Parse(command[1]);

            GarageUtil.SaveVgVehicleToSql(ulong.Parse(command[0]), garage.Name, command[2], vehicle, vehicleRegion);
            UnturnedChat.Say(caller, Plugin.Inst.Translate("rfgarage_command_sgadd_success", vehicle.asset.vehicleName, vehicle.asset.id, garage.Name), Plugin.MsgColor);
        }
コード例 #14
0
        private static bool CheckResponse(UnturnedPlayer player, GarageModel garageModel)
        {
            GarageUtil.GarageCheck(player, garageModel, out var responseType, true);
            switch (responseType)
            {
            case EResponseType.GARAGE_NOT_FOUND:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NO_PERMISSION:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_permission", garageModel.Name, garageModel.Permission), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                player.SendChat(responseType.ToString(), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);
            }
        }
コード例 #15
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length > 0)
            {
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            var player = (UnturnedPlayer)caller;

            if (command.Length != 0)
            {
                return;
            }
            if (!CheckResponse(player))
            {
                return;
            }
            GarageUtil.LoadVgVehicleFromSql(player, "Drown", "Drowned", out var vehicle);
            player.SendChat(Plugin.Inst.Translate("rfgarage_command_gr_success",
                                                  vehicle.asset.vehicleName, vehicle.asset.id, "Drown"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
        }
コード例 #16
0
        private static bool CheckResponse(UnturnedPlayer player, string[] commands, out InteractableVehicle vehicle, out BarricadeRegion vehicleRegion)
        {
            GarageUtil.GarageAddChecks(player, commands, out vehicle, out vehicleRegion, out var responseType,
                                       out var blacklistedID);
            GarageModel garageModel;

            switch (responseType)
            {
            case EResponseType.VEHICLE_NOT_FOUND:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_vehicle_not_found"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NOT_FOUND:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_not_found"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.VEHICLE_NOT_OWNER:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_vehicle_not_owner"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_FULL:
                garageModel = Plugin.SelectedGarageDict[player.CSteamID];
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_garage_full", garageModel.Name, garageModel.Slot), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NO_PERMISSION:
                garageModel = GarageModel.Parse(commands?[0]);
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_garage_no_permission", garageModel.Name, garageModel.Permission), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.BLACKLIST_VEHICLE:
                var vehicleAsset = (VehicleAsset)Assets.find(EAssetType.VEHICLE, blacklistedID);
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_blacklist_vehicle", vehicleAsset.vehicleName, vehicleAsset.id), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.GARAGE_NOT_SELECTED:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_garage_not_selected"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.BLACKLIST_BARRICADE:
                var barricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, blacklistedID);
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_blacklist_barricade", barricadeAsset.itemName, barricadeAsset.id), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.BLACKLIST_TRUNK_ITEM:
                var itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, blacklistedID);
                player.SendChat(
                    Plugin.Inst.Translate("rfgarage_command_gadd_blacklist_trunk_item", itemAsset.itemName,
                                          itemAsset.id), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.SAME_NAME_AS_GARAGE:
                player.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_vehicle_name_same_as_garage"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);

            case EResponseType.SUCCESS:
                return(true);

            default:
                player.SendChat(responseType.ToString(), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return(false);
            }
        }
コード例 #17
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length > 1)
            {
                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_invalid_parameter", Syntax), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;
            }

            var player = (UnturnedPlayer)caller;

            switch (command.Length)
            {
            case 0:
                Plugin.GarageAddAllQueueDict[player.CSteamID] = true;

                caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_all_ask_confirm"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                return;

            case 1:
                switch (command[0].ToLower())
                {
                case "confirm" when !Plugin.GarageAddAllQueueDict[player.CSteamID]:
                    caller.SendChat(Plugin.Inst.Translate("rfgarage_command_all_no_queue"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    return;

                case "confirm":
                {
                    caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_all_confirm"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    // Tuple < availableGarage, availableSlot >
                    var passedVehicles      = new List <InteractableVehicle>();
                    var blacklistedVehicles = new List <InteractableVehicle>();
                    var availableGarages    = GarageUtil.GetAllGarages(player);
                    foreach (var interactableVehicle in VehicleManager.vehicles.Where(interactableVehicle => interactableVehicle.lockedOwner.m_SteamID == player.CSteamID.m_SteamID))
                    {
                        GarageUtil.GarageAddAllChecks(player, interactableVehicle, out var response, out _);
                        switch (response)
                        {
                        case EResponseType.BLACKLIST_BARRICADE:
                        case EResponseType.BLACKLIST_TRUNK_ITEM:
                        case EResponseType.BLACKLIST_VEHICLE:
                            blacklistedVehicles.Add(interactableVehicle);
                            break;

                        case EResponseType.SUCCESS:
                            passedVehicles.Add(interactableVehicle);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                    }

                    var tupleGarages    = (from garage in availableGarages let garageOccupiedSlot = Plugin.DbManager.GetVehicleCount(player.CSteamID.m_SteamID.ToString(), garage.Name) where garage.Slot > garageOccupiedSlot select new Tuple <GarageModel, uint>(garage, garageOccupiedSlot)).ToList();
                    var vehicleIndex    = 0;
                    var successVehicles = new List <InteractableVehicle>();
                    foreach (var(garage, occupiedSlot) in tupleGarages)
                    {
                        var i = 0;
                        while (i < (garage.Slot - occupiedSlot) && vehicleIndex < passedVehicles.Count)
                        {
                            GarageUtil.SaveVgVehicleToSql(player.CSteamID.m_SteamID, garage.Name,
                                                          passedVehicles[vehicleIndex].asset.name, passedVehicles[vehicleIndex],
                                                          BarricadeManager.getRegionFromVehicle(passedVehicles[vehicleIndex]));
                            successVehicles.Add(passedVehicles[vehicleIndex]);
                            vehicleIndex++;
                            i++;
                        }
                    }

                    caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_all_success",
                                                          vehicleIndex, passedVehicles.Count - vehicleIndex), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    foreach (var vehicle in successVehicles)
                    {
                        caller.SendChat(Plugin.Inst.Translate("rfgarage_command_all_success_vehicle",
                                                              vehicle.asset.id, vehicle.asset.vehicleName), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    }
                    foreach (var vehicle in blacklistedVehicles)
                    {
                        caller.SendChat(Plugin.Inst.Translate("rfgarage_command_gadd_all_blacklist_vehicle",
                                                              vehicle.asset.id, vehicle.asset.vehicleName), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    }
                    passedVehicles.RemoveRange(0, vehicleIndex);
                    foreach (var vehicle in passedVehicles)
                    {
                        caller.SendChat(Plugin.Inst.Translate("rfgarage_command_all_fail_vehicle",
                                                              vehicle.asset.id, vehicle.asset.vehicleName), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    }
                    Plugin.GarageAddAllQueueDict[player.CSteamID] = false;
                    return;
                }

                case "abort":
                    Plugin.GarageAddAllQueueDict[player.CSteamID] = false;

                    caller.SendChat(Plugin.Inst.Translate("rfgarage_command_all_abort"), Plugin.MsgColor, Plugin.Conf.AnnouncerIconUrl);
                    return;
                }

                break;
            }
        }