Esempio n. 1
0
        public void AssetName()
        {
            Asset asset = Assets.find(this is ShopItem? EAssetType.ITEM : EAssetType.VEHICLE, ItemID);

            if (asset == null)
            {
                ItemName = string.Empty;
            }
            else
            {
                if (this is ShopItem)
                {
                    ItemAsset item = asset as ItemAsset;
                    if (item.itemName != null)
                    {
                        ItemName = item.itemName;
                    }
                }
                else
                {
                    VehicleAsset item = asset as VehicleAsset;
                    if (item.vehicleName != null)
                    {
                        ItemName = item.vehicleName;
                    }
                }
            }
            return;
        }
Esempio n. 2
0
        public static ushort AssetIDFromName(this string itemName, ItemType type)
        {
            ushort assetID = 0;

            Asset[] assets = Assets.find(type == ItemType.Item ? EAssetType.ITEM : EAssetType.VEHICLE);
            for (int i = 0; i < assets.Length; i++)
            {
                ItemAsset    iAsset = null;
                VehicleAsset vAsset = null;
                if (type == ItemType.Item)
                {
                    iAsset = (ItemAsset)assets[i];
                }
                else
                {
                    vAsset = (VehicleAsset)assets[i];
                }

                if (type == ItemType.Item && iAsset != null && iAsset.itemName != null && iAsset.itemName.ToLower().Contains(itemName.ToLower()))
                {
                    assetID = iAsset.id;
                    break;
                }
                else if (type == ItemType.Vehicle && vAsset != null && vAsset.vehicleName != null && vAsset.vehicleName.ToLower().Contains(itemName.ToLower()))
                {
                    assetID = vAsset.id;
                    break;
                }
            }
            return(assetID);
        }
        public static ushort GetVehicle(Vector3 airdropPos)
        {
            int max = cf.AirdropVehicles.Sum(v => v.weight);
            int rnd = Rand.Next(0, max);

            foreach (Vehicle v in cf.AirdropVehicles)
            {
                VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, (ushort)v.id);
                if (va.engine != EEngine.BOAT) //TODO: Find a better replacement, temporary fix
                {
                    if (WaterUtility.isPointUnderwater(airdropPos) && !cf.AllowDropInWater)
                    {
                        continue;
                    }
                }

                if (rnd < v.weight)
                {
                    return((ushort)v.id);
                }

                rnd -= v.weight;
            }

            return(0);
        }
Esempio n. 4
0
 public static bool IsVehicle(this CommandArg arg, out VehicleAsset value)
 {
     if (arg.IsUInt16(out ushort id))
     {
         Asset asset = Assets.find(EAssetType.VEHICLE, id);
         if (asset == null)
         {
             value = null;
             return(false);
         }
         value = (VehicleAsset)asset;
         return(value != null);
     }
     else if (arg.IsGuid(out Guid guid))
     {
         value = AssetUtil.GetVehicleAssets().FirstOrDefault(d => d.GUID == guid);
         return(value != null);
     }
     else
     {
         string search = arg.RawValue.StartsWith("@") ? arg.RawValue.Substring(1) : arg.RawValue;
         value = AssetUtil.GetVehicleAsset(search);
         return(value != null);
     }
 }
Esempio n. 5
0
 public UnturnedVehicleAsset(VehicleAsset vehicleAsset)
 {
     VehicleAsset   = vehicleAsset;
     VehicleAssetId = vehicleAsset.id.ToString();
     VehicleName    = vehicleAsset.vehicleName ?? VehicleAssetId;
     VehicleType    = vehicleAsset.engine.ToString().ToLower(CultureInfo.InvariantCulture);
 }
        public static bool GetVehicle(string searchTerm, out VehicleAsset vehicle)
        {
            if (string.IsNullOrEmpty(searchTerm.Trim()))
            {
                vehicle = null;
                return(false);
            }

            if (!ushort.TryParse(searchTerm, out ushort id))
            {
                vehicle = Assets.find(EAssetType.VEHICLE).Cast <VehicleAsset>()
                          .Where(v => !string.IsNullOrEmpty(v.vehicleName)).OrderBy(v => v.vehicleName.Length)
                          .FirstOrDefault(v => v.vehicleName.ToUpperInvariant().Contains(searchTerm.ToUpperInvariant()));

                return(vehicle != null);
            }

            vehicle = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
            return(vehicle != null);
        }
Esempio n. 7
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            var          vehicles = Assets.find(EAssetType.VEHICLE).Cast <VehicleAsset>().ToArray();
            VehicleAsset vehicle  = null;

            if (command.Length > 0 && ushort.TryParse(command[0], out var vehicleId))
            {
                vehicle = vehicles.FirstOrDefault(v => v.id == vehicleId);
            }

            foreach (var player in Provider.clients.Select(UnturnedPlayer.FromSteamPlayer))
            {
                var playerVehicle = vehicle ?? vehicles[random.Next(vehicles.Length)];

                player.GiveVehicle(playerVehicle.id);
                player.SendMessage(Plugin.Instance.Translate("VEHICLE_ALL_RECEIVED", playerVehicle.vehicleName));
            }

            ChatUtil.Broadcast(Plugin.Instance.Translate("VEHICLE_ALL", vehicle != null ?
                                                         vehicle.vehicleName : Plugin.Instance.Translate("RANDOM_VEHICLE")));
        }
Esempio n. 8
0
 public static string GetHeldGunName(this UnturnedPlayer player, string applicabletest)
 {
     if (player == null || applicabletest == "Unapplicable")
     {
         return("Unknown weapon.");
     }
     else
     {
         ushort HeldItem = player.Player.equipment.itemID;
         if (HeldItem == 1394 && player.IsInVehicle) //HMG
         {
             VehicleAsset vAsset = null;
             try
             {
                 vAsset = (VehicleAsset)Assets.find(EAssetType.VEHICLE, player.CurrentVehicle.name);
                 if (vAsset != null)
                 {
                     return(vAsset.vehicleName);
                 }
             } catch
             {
             }
         }
         ItemAsset asset = null;
         try
         {
             asset = (ItemAsset)Assets.find(EAssetType.ITEM, HeldItem);
         } catch
         {
             return(HeldItem.ToString());
         }
         if (asset == null)
         {
             return(HeldItem.ToString());
         }
         return(asset.itemName);
     }
 }
Esempio n. 9
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            bool           hasPerm = false;
            UnturnedPlayer player  = (UnturnedPlayer)caller;

            if (command.Length == 0)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_help_1"));
                return;
            }
            if (command.Length > 0)
            {
                if (player.HasPermission("car") || player.HasPermission("car.*") || player.HasPermission("*"))
                {
                    hasPerm = true;
                }
                if (!hasPerm && !(caller.IsAdmin))
                {
                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_no_perm"));
                    return;
                }
                else
                {
                    InteractableVehicle veh = player.Player.Movement.getVehicle();
                    switch (command[0].ToLower())
                    {
                    case "refuel":
                        if (player.HasPermission("car.refuel") || player.HasPermission("car.*") || player.HasPermission("*"))
                        {
                            hasPerm = true;
                        }
                        if (!hasPerm && !(caller.IsAdmin))
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_no_perm"));
                            return;
                        }
                        if (command.Length < 2)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_refuel_help_1"));
                            return;
                        }
                        else
                        {
                            if (veh != null)
                            {
                                VehicleAsset vehi     = veh.asset;
                                ushort       fuel     = vehi.fuel;
                                ushort       maxfuel  = vehi.fuel;
                                double       percent  = 0;
                                double       truefuel = 0;
                                if (command[1] == "full" || command[1] == "all" || command[1] == "100")
                                {
                                    truefuel = (double)fuel - (double)veh.fuel;
                                    percent  = double.Parse(fuel.ToString()) / (double)maxfuel * 100.00;
                                    percent  = Math.Round(percent, 2);
                                }
                                else
                                {
                                    fuel = 0;
                                    if (ushort.TryParse(command[1], out fuel))
                                    {
                                        if ((((double)veh.fuel / (double)maxfuel * 100.00) + (double)fuel) > 100.00)
                                        {
                                            truefuel = (double)maxfuel - (double)veh.fuel;
                                        }
                                        else
                                        {
                                            truefuel = (double)fuel / 100.00 * (double)maxfuel;
                                        }
                                        truefuel = Math.Round(truefuel, 0);
                                        percent  = Math.Round(((double)truefuel / (double)maxfuel) * 100.00, 2);
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_refuel_error2"));
                                        return;
                                    }
                                }
                                decimal price = decimal.Parse("1.3");
                                decimal.TryParse(LIGHT.Instance.Configuration.Instance.FuelPrice.ToString(), out price);
                                if (price != 0.00m)
                                {
                                    decimal balance    = Uconomy.Instance.Database.GetBalance(player.Id);
                                    decimal totalprice = Math.Round(price * (decimal)truefuel / (decimal)10, 2);
                                    if (balance < totalprice)
                                    {
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_not_enough_currency", Uconomy.Instance.Configuration.Instance.MoneyName));
                                        return;
                                    }
                                    decimal bal = Uconomy.Instance.Database.IncreaseBalance(player.CSteamID.ToString(), (totalprice * -1));
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_refuel_paid", totalprice, Uconomy.Instance.Configuration.Instance.MoneyName, veh.instanceID.ToString(), percent.ToString()));
                                    if (bal >= 0.0m)
                                    {
                                        UnturnedChat.Say(player.CSteamID, LIGHT.Instance.Translate("new_balance_msg", new object[] { bal, Uconomy.Instance.Configuration.Instance.MoneyName }));
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_refuelled_1", percent.ToString()));
                                }
                                veh.askFill((ushort)truefuel);
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_error_1"));
                                return;
                            }
                        }
                        break;

                    case "lock":
                        if (veh != null)
                        {
                            if (command.Length == 1)
                            {
                                if (LIGHT.Instance.DatabaseCar.CheckOwner(veh.instanceID.ToString()) == player.Id)
                                {
                                    LIGHT.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), true);
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_Locked", veh.instanceID.ToString()));
                                }
                                else
                                {
                                    string[] PlayersWithKey = LIGHT.Instance.DatabaseCar.GetGivenKeys(veh.instanceID.ToString());
                                    for (int x = 0; x < PlayersWithKey.Length; x++)
                                    {
                                        if (PlayersWithKey[x].Trim() == player.Id)
                                        {
                                            LIGHT.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), true);
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_Locked", veh.instanceID.ToString()));
                                            break;
                                        }
                                    }
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_error_1"));
                            return;
                        }
                        break;

                    case "unlock":
                        if (veh != null)
                        {
                            if (command.Length == 1)
                            {
                                if (LIGHT.Instance.DatabaseCar.CheckOwner(veh.instanceID.ToString()) == player.Id)
                                {
                                    LIGHT.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), false);
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_Unlocked", veh.instanceID.ToString()));
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_error_1"));
                            return;
                        }
                        break;

                    case "key":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_keyhelp"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_keyhelp2"));
                            return;
                        }
                        if (command.Length > 2)
                        {
                            if (LIGHT.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                if (LIGHT.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    UnturnedPlayer PlayerKey = UnturnedPlayer.FromName(command[2]);
                                    if (PlayerKey != null)
                                    {
                                        LIGHT.Instance.DatabaseCar.AddGivenKeys(command[1], PlayerKey.Id);
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_key_given", command[1], PlayerKey.CharacterName));
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_playernotfound"));
                                        return;
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "repair":
                        if (player.HasPermission("car.repair") || player.HasPermission("car.*") || player.HasPermission("*"))
                        {
                            hasPerm = true;
                        }
                        if (!hasPerm && !(caller.IsAdmin))
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_no_perm"));
                            return;
                        }
                        if (command.Length == 1)
                        {
                            if (veh != null)
                            {
                                VehicleAsset vehi    = veh.asset;
                                int          repair  = 0;
                                double       percent = 0.00;
                                repair = vehi.health - veh.health;
                                if (repair > 0)
                                {
                                    percent = Math.Round(((double)repair / (double)vehi.health) * 100.00, 2);
                                    if (LIGHT.Instance.Configuration.Instance.RepairPrice == 0)
                                    {
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_repaired", veh.instanceID.ToString(), percent));
                                    }
                                    else
                                    {
                                        decimal price = decimal.Parse("2");
                                        decimal.TryParse(LIGHT.Instance.Configuration.Instance.RepairPrice.ToString(), out price);
                                        decimal balance    = Uconomy.Instance.Database.GetBalance(player.Id);
                                        decimal totalprice = Math.Round(price * (decimal)repair / (decimal)6, 2);
                                        if (balance < totalprice)
                                        {
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_not_enough_currency", Uconomy.Instance.Configuration.Instance.MoneyName));
                                            return;
                                        }
                                        decimal bal = Uconomy.Instance.Database.IncreaseBalance(player.CSteamID.ToString(), (totalprice * -1));
                                        if (bal >= 0.0m)
                                        {
                                            UnturnedChat.Say(player.CSteamID, LIGHT.Instance.Translate("new_balance_msg", new object[] { bal, Uconomy.Instance.Configuration.Instance.MoneyName }));
                                        }
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_repaired_price", veh.instanceID.ToString(), percent, totalprice, Uconomy.Instance.Configuration.Instance.MoneyName));
                                    }
                                    veh.askRepair((ushort)repair);
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_repair_notneeded", veh.instanceID.ToString()));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_error_1"));
                                return;
                            }
                        }
                        break;

                    case "locate":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_locate_help"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            if (LIGHT.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                if (LIGHT.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    Vector3 point;
                                    byte    angle;
                                    ushort  index;
                                    string  Status = "";
                                    if (ushort.TryParse(command[1], out index))
                                    {
                                        InteractableVehicle vehicle = VehicleManager.getVehicle(index);
                                        vehicle.getExit(0, out point, out angle);
                                        if (vehicle.isEmpty)
                                        {
                                            Status += "It is Empty. ";
                                        }
                                        if (vehicle.isDrowned)
                                        {
                                            Status += "It is Drowned. ";
                                        }
                                        if (vehicle.isDriven)
                                        {
                                            Status += "It is Being Drove. ";
                                        }
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_located", index, Math.Round(point.x, 0), Math.Round(point.y, 0), Math.Round(point.z, 0), Status));
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_invalid_input"));
                                        return;
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "rkey":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_help"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_help2"));
                            return;
                        }
                        if (command.Length > 2)
                        {
                            if (LIGHT.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                UnturnedPlayer target;
                                if (LIGHT.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    target = UnturnedPlayer.FromName(command[2]);
                                    if (target == null)
                                    {
                                        if (LIGHT.Instance.DatabaseCar.RemoveGiveKeysCar(command[1], command[2]))
                                        {
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_success", command[2], command[1]));
                                        }
                                        else
                                        {
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_keynotfound", command[1]));
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        if (LIGHT.Instance.DatabaseCar.RemoveGiveKeysCar(command[1], target.Id))
                                        {
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_success", target.CharacterName, command[1]));
                                        }
                                        else
                                        {
                                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_rkey_keynotfound", command[1]));
                                            return;
                                        }
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "list":
                        string cars = LIGHT.Instance.DatabaseCar.GetAllOwnedCars(player.Id);
                        if (cars == "" || cars == " ")
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_zero_owned"));
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("car_list_all"));
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Esempio n. 10
0
        // Token: 0x06000020 RID: 32 RVA: 0x00002188 File Offset: 0x00000388
        public void Execute(IRocketPlayer caller, string[] msg)
        {
            bool flag = caller is ConsolePlayer;

            string[] array = new string[]
            {
                "shop.*",
                "shop.add",
                "shop.rem",
                "shop.chng",
                "shop.buy"
            };
            bool[] array2 = new bool[5];
            bool   flag2  = false;

            foreach (var name in caller.GetPermissions().Select(permission => permission.Name)
                     .Where(name => name != null))
            {
                if (name != "shop.*")
                {
                    if (name != "shop.add")
                    {
                        if (name != "shop.rem")
                        {
                            if (name != "shop.chng")
                            {
                                if (name != "shop.buy")
                                {
                                    if (name == "*")
                                    {
                                        array2[0] = true;
                                        array2[1] = true;
                                        array2[2] = true;
                                        array2[3] = true;
                                        array2[4] = true;
                                        flag2     = true;
                                    }
                                }
                                else
                                {
                                    array2[4] = true;
                                    flag2     = true;
                                }
                            }
                            else
                            {
                                array2[3] = true;
                                flag2     = true;
                            }
                        }
                        else
                        {
                            array2[2] = true;
                            flag2     = true;
                        }
                    }
                    else
                    {
                        array2[1] = true;
                        flag2     = true;
                    }
                }
                else
                {
                    array2[0] = true;
                    flag2     = true;
                }
            }

            if (!flag && ((UnturnedPlayer)caller).IsAdmin)
            {
                array2[0] = true;
                array2[1] = true;
                array2[2] = true;
                array2[3] = true;
                array2[4] = true;
                flag2     = true;
            }

            if (!flag2)
            {
                UnturnedChat.Say(caller, "You don't have permission to use the /shop command.");
                return;
            }

            if (msg.Length == 0)
            {
                string message = ZaupShop.Instance.Translate("shop_command_usage");
                sendMessage(caller, message, flag);
                return;
            }

            if (msg.Length < 2)
            {
                string message = ZaupShop.Instance.Translate("no_itemid_given");
                sendMessage(caller, message, flag);
                return;
            }

            if (msg.Length == 2 && msg[0] != "rem")
            {
                string message = ZaupShop.Instance.Translate("no_cost_given");
                sendMessage(caller, message, flag);
                return;
            }

            if (msg.Length >= 2)
            {
                string[] componentsFromSerial = Parser.getComponentsFromSerial(msg[1], '.');
                string   message;
                if (componentsFromSerial.Length > 1 && componentsFromSerial[0] != "v")
                {
                    message = ZaupShop.Instance.Translate("v_not_provided");
                    sendMessage(caller, message, flag);
                    return;
                }

                ushort num;
                if (componentsFromSerial.Length > 1)
                {
                    if (!ushort.TryParse(componentsFromSerial[1], out num))
                    {
                        message = ZaupShop.Instance.Translate("invalid_id_given");
                        sendMessage(caller, message, flag);
                        return;
                    }
                }
                else if (!ushort.TryParse(componentsFromSerial[0], out num))
                {
                    message = ZaupShop.Instance.Translate("invalid_id_given");
                    sendMessage(caller, message, flag);
                    return;
                }

                bool   change = false;
                bool   flag3  = false;
                string text   = msg[0];
                if (text != null)
                {
                    if (!(text == "chng"))
                    {
                        if (!(text == "add"))
                        {
                            if (!(text == "rem"))
                            {
                                if (!(text == "buy"))
                                {
                                    goto IL_85B;
                                }

                                if (!array2[4] && !array2[0])
                                {
                                    message = ZaupShop.Instance.Translate("no_permission_shop_buy");
                                    sendMessage(caller, message, flag);
                                    return;
                                }

                                if (!IsAsset(num, "i"))
                                {
                                    message = ZaupShop.Instance.Translate("invalid_id_given");
                                    sendMessage(caller, message, flag);
                                    return;
                                }

                                ItemAsset itemAsset = (ItemAsset)Assets.find((EAssetType)1, num);
                                decimal   cost;
                                decimal.TryParse(msg[2], out cost);
                                message = ZaupShop.Instance.Translate("set_buyback_price", itemAsset.itemName, cost.ToString());
                                if (!ZaupShop.Instance.ShopDB.SetBuyPrice(num, cost))
                                {
                                    message = ZaupShop.Instance.Translate("not_in_shop_to_buyback", itemAsset.itemName);
                                }

                                sendMessage(caller, message, flag);
                                return;
                            }
                            else
                            {
                                if (!array2[2] && !array2[0])
                                {
                                    message = ZaupShop.Instance.Translate("no_permission_shop_rem");
                                    sendMessage(caller, message, flag);
                                    return;
                                }

                                string text2 = componentsFromSerial[0];
                                if (text2 != null)
                                {
                                    if (text2 == "v")
                                    {
                                        if (!IsAsset(num, "v"))
                                        {
                                            message = ZaupShop.Instance.Translate("invalid_id_given");
                                            sendMessage(caller, message, flag);
                                            return;
                                        }

                                        VehicleAsset vehicleAsset = (VehicleAsset)Assets.find((EAssetType)5, num);
                                        message = ZaupShop.Instance.Translate("removed_from_shop", vehicleAsset.vehicleName);
                                        if (!ZaupShop.Instance.ShopDB.DeleteVehicle(num))
                                        {
                                            message = ZaupShop.Instance.Translate("not_in_shop_to_remove", vehicleAsset.vehicleName);
                                        }

                                        sendMessage(caller, message, flag);
                                        goto IL_759;
                                    }
                                }

                                if (!IsAsset(num, "i"))
                                {
                                    message = ZaupShop.Instance.Translate("invalid_id_given");
                                    sendMessage(caller, message, flag);
                                    return;
                                }

                                ItemAsset itemAsset2 = (ItemAsset)Assets.find((EAssetType)1, num);
                                message = ZaupShop.Instance.Translate("removed_from_shop", itemAsset2.itemName);
                                if (!ZaupShop.Instance.ShopDB.DeleteItem(num))
                                {
                                    message = ZaupShop.Instance.Translate("not_in_shop_to_remove", itemAsset2.itemName);
                                }

                                sendMessage(caller, message, flag);
IL_759:
                                return;
                            }
                        }
                    }
                    else
                    {
                        if (!array2[3] && !array2[0])
                        {
                            message = ZaupShop.Instance.Translate("no_permission_shop_chng");
                            sendMessage(caller, message, flag);
                            return;
                        }

                        change = true;
                        flag3  = true;
                    }

                    if (!flag3 && !array2[1] && !array2[0])
                    {
                        message = ZaupShop.Instance.Translate("no_permission_shop_add");
                        sendMessage(caller, message, flag);
                        return;
                    }

                    string text3 = (!flag3)
                        ? ZaupShop.Instance.Translate("added")
                        : ZaupShop.Instance.Translate("changed");
                    string text4 = componentsFromSerial[0];
                    if (text4 != null)
                    {
                        if (text4 == "v")
                        {
                            if (!IsAsset(num, "v"))
                            {
                                message = ZaupShop.Instance.Translate("invalid_id_given");
                                sendMessage(caller, message, flag);
                                return;
                            }

                            VehicleAsset vehicleAsset2 = (VehicleAsset)Assets.find((EAssetType)5, num);
                            message = ZaupShop.Instance.Translate("changed_or_added_to_shop", text3, vehicleAsset2.vehicleName, msg[2]);
                            if (!ZaupShop.Instance.ShopDB.AddVehicle(num, vehicleAsset2.vehicleName,
                                                                     decimal.Parse(msg[2]), change))
                            {
                                message = ZaupShop.Instance.Translate("error_adding_or_changing", vehicleAsset2.vehicleName);
                            }

                            sendMessage(caller, message, flag);
                            goto IL_5A3;
                        }
                    }

                    if (!IsAsset(num, "i"))
                    {
                        message = ZaupShop.Instance.Translate("invalid_id_given");
                        sendMessage(caller, message, flag);
                        return;
                    }

                    ItemAsset itemAsset3 = (ItemAsset)Assets.find((EAssetType)1, num);
                    message = ZaupShop.Instance.Translate("changed_or_added_to_shop", text3, itemAsset3.itemName, msg[2]);
                    if (!ZaupShop.Instance.ShopDB.AddItem(num, itemAsset3.itemName, decimal.Parse(msg[2]),
                                                          change))
                    {
                        message = ZaupShop.Instance.Translate("error_adding_or_changing", itemAsset3.itemName);
                    }

                    sendMessage(caller, message, flag);
IL_5A3:
                    return;
                }

IL_85B:
                message = ZaupShop.Instance.Translate("not_in_shop_to_remove");
                sendMessage(caller, message, flag);
                return;
            }
        }
Esempio n. 11
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            bool   console = (caller is ConsolePlayer);
            bool   hasperm = false;
            string message;

            if (!console)
            {
                UnturnedPlayer player = (UnturnedPlayer)caller;
                if (player.HasPermission("shop.*") || player.HasPermission("shop.add") || player.HasPermission("shop.rem") || player.HasPermission("shop.chng") || player.HasPermission("shop.buy") || player.HasPermission("*"))
                {
                    hasperm = true;
                }
            }
            if (!hasperm && !console)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_no_perm"));
                return;
            }
            if (command.Length == 0)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("shop_command_usage"));
                return;
            }
            if (command.Length < 2)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("no_itemid_given"));
                return;
            }
            if (command.Length == 2 && command[0] != "rem")
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("no_cost_given"));
                return;
            }
            else if (command.Length >= 2)
            {
                string[] type = Parser.getComponentsFromSerial(command[1], '.');
                ushort   id;
                if (type.Length > 1 && type[0] != "v")
                {
                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("v_not_provided"));
                    return;
                }

                if (type.Length > 1)
                {
                    if (!ushort.TryParse(type[1], out id))
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("invalid_id_given"));
                        return;
                    }
                }
                else
                {
                    if (!ushort.TryParse(type[0], out id))
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("invalid_id_given"));
                        return;
                    }
                }
                bool success = false;
                bool change  = false;
                bool pass    = false;
                switch (command[0])
                {
                case "chng":
                    if (caller.HasPermission("shop.*") || caller.HasPermission("shop.chng") || caller.HasPermission("*"))
                    {
                        change = true;
                        pass   = true;
                        goto case "add";
                    }
                    else
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("lpx_no_perm"));
                        return;
                    }

                case "add":
                    if (!pass)
                    {
                        if (!caller.HasPermission("shop.*") && !caller.HasPermission("shop.add") && !caller.HasPermission("*"))
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("no_permission_shop_add"));
                            return;
                        }
                    }
                    string ac = (pass) ? LIGHT.Instance.Translate("changed") : LIGHT.Instance.Translate("added");
                    switch (type[0])
                    {
                    case "v":
                        try
                        {
                            VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                            message = LIGHT.Instance.Translate("changed_or_added_to_shop", new object[] { ac, va.Name, command[2] });
                            success = LIGHT.Instance.ShopDB.AddVehicle((int)id, va.Name, decimal.Parse(command[2]), change);
                            if (!success)
                            {
                                message = LIGHT.Instance.Translate("error_adding_or_changing", new object[] { va.Name });
                            }
                            this.sendMessage(caller, message, console);
                        }
                        catch
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("vehicle_invalid"));
                            return;
                        }
                        break;

                    default:
                        try
                        {
                            ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                            message = LIGHT.Instance.Translate("changed_or_added_to_shop", new object[] { ac, ia.Name, command[2] });
                            success = LIGHT.Instance.ShopDB.AddItem((int)id, ia.Name, decimal.Parse(command[2]), change);
                            if (!success)
                            {
                                message = LIGHT.Instance.Translate("error_adding_or_changing", new object[] { ia.Name });
                            }
                            this.sendMessage(caller, message, console);
                        }
                        catch
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("item_invalid"));
                            return;
                        }
                        break;
                    }
                    break;

                case "rem":
                    if (!caller.HasPermission("shop.*") && !caller.HasPermission("shop.rem") && !caller.HasPermission("*"))
                    {
                        message = LIGHT.Instance.DefaultTranslations.Translate("no_permission_shop_rem", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                    switch (type[0])
                    {
                    case "v":
                        try
                        {
                            VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                            message = LIGHT.Instance.Translate("removed_from_shop", new object[] { va.Name });
                            success = LIGHT.Instance.ShopDB.DeleteVehicle((int)id);
                            if (!success)
                            {
                                message = LIGHT.Instance.Translate("not_in_shop_to_remove", new object[] { va.Name });
                            }
                            this.sendMessage(caller, message, console);
                        }
                        catch
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("vehicle_invalid"));
                            return;
                        }
                        break;

                    default:
                        try
                        {
                            ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                            message = LIGHT.Instance.Translate("removed_from_shop", new object[] { ia.Name });
                            success = LIGHT.Instance.ShopDB.DeleteItem((int)id);
                            if (!success)
                            {
                                message = LIGHT.Instance.Translate("not_in_shop_to_remove", new object[] { ia.Name });
                            }
                            this.sendMessage(caller, message, console);
                        }
                        catch
                        {
                            UnturnedChat.Say(caller, LIGHT.Instance.Translate("item_invalid"));
                            return;
                        }
                        break;
                    }
                    break;

                case "buy":
                    if (!caller.HasPermission("shop.*") && !caller.HasPermission("shop.buy") && !caller.HasPermission("*"))
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("no_permission_shop_buy"));
                        return;
                    }
                    try
                    {
                        ItemAsset iab = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                        decimal   buyb;
                        decimal.TryParse(command[2], out buyb);
                        message = LIGHT.Instance.Translate("set_buyback_price", new object[] { iab.Name, buyb.ToString() });
                        success = LIGHT.Instance.ShopDB.SetBuyPrice((int)id, buyb);
                        if (!success)
                        {
                            message = LIGHT.Instance.Translate("not_in_shop_to_buyback", new object[] { iab.Name });
                        }
                        this.sendMessage(caller, message, console);
                    }
                    catch
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("item_invalid"));
                        return;
                    }
                    break;

                default:
                    // We shouldn't get this, but if we do send an error.
                    UnturnedChat.Say(caller, LIGHT.Instance.Translate("not_in_shop_to_remove"));
                    return;
                }
            }
        }
Esempio n. 12
0
        private void OnPrePreLevelLoaded(int level)
        {
            Asset[] AssetList = Assets.find(EAssetType.ITEM);

            ushort gunsModified       = 0;
            ushort meleesModified     = 0;
            ushort throwablesModified = 0;
            ushort trapsModified      = 0;
            ushort chargesModified    = 0;
            ushort vehiclesModified   = 0;
            ushort magsModified       = 0;
            ushort elementsModified   = 0;

            Logger.LogWarning("Starting anti grief modification run.");
            BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
            bool         shouldUpdateCount;

            for (int i = 0; i < AssetList.Length; i++)
            {
                shouldUpdateCount = false;
                Asset asset      = AssetList[i];
                bool  shouldSkip = false;
                // Look for and skip id's in the skil lists.
                for (int si = 0; si < Configuration.Instance.SkipItemIDs.Count; si++)
                {
                    if (asset.id == Configuration.Instance.SkipItemIDs[si])
                    {
                        shouldSkip = true;
                        break;
                    }
                }
                for (int se = 0; se < Configuration.Instance.SkipElementIDs.Count; se++)
                {
                    if (asset.id == Configuration.Instance.SkipElementIDs[se])
                    {
                        shouldSkip = true;
                        break;
                    }
                }
                if (shouldSkip)
                {
                    continue;
                }

                // Run though updating the items/elements/vehicles on the server.
                if (asset is ItemWeaponAsset)
                {
                    ItemWeaponAsset weaponAsset = asset as ItemWeaponAsset;
                    // Start modifying weapon type bundles, but skip the blowtorch(76) as that heals structures.
                    if (weaponAsset.barricadeDamage > 0 && Configuration.Instance.NegateBarricadeDamage && weaponAsset.id != 76)
                    {
                        weaponAsset.barricadeDamage = 0;
                        shouldUpdateCount           = true;
                    }
                    if (weaponAsset.structureDamage > 0 && Configuration.Instance.NegateStructureDamage && weaponAsset.id != 76)
                    {
                        weaponAsset.structureDamage = 0;
                        shouldUpdateCount           = true;
                    }
                    if (weaponAsset.vehicleDamage > 0 && Configuration.Instance.NegateVehicleDamage && weaponAsset.id != 76)
                    {
                        weaponAsset.vehicleDamage = 0;
                        shouldUpdateCount         = true;
                    }

                    if (weaponAsset.objectDamage > 0 && Configuration.Instance.NegateObjectDamage)
                    {
                        weaponAsset.objectDamage = 0;
                        shouldUpdateCount        = true;
                    }
                    // Don't change resource damage for resource gathering weapons: Camp Axe(16), Fire Axe(104), Chain Saw(490), Pickaxe(1198), Jackhammer(1475).
                    if (weaponAsset.resourceDamage > 0 && Configuration.Instance.NegateResourceDamage && weaponAsset.id != 16 && weaponAsset.id != 104 && weaponAsset.id != 490 && weaponAsset.id != 1198 && weaponAsset.id != 1475)
                    {
                        weaponAsset.resourceDamage = 0;
                        shouldUpdateCount          = true;
                    }
                    if (shouldUpdateCount)
                    {
                        if (weaponAsset is ItemGunAsset)
                        {
                            gunsModified++;
                        }
                        if (weaponAsset is ItemMeleeAsset)
                        {
                            meleesModified++;
                        }
                        if (weaponAsset is ItemThrowableAsset)
                        {
                            throwablesModified++;
                        }
                    }
                }
                else if (asset is ItemTrapAsset)
                {
                    ItemTrapAsset trapAsset = asset as ItemTrapAsset;
                    if (trapAsset.barricadeDamage > 0 && Configuration.Instance.NegateBarricadeDamage)
                    {
                        trapAsset.barricadeDamage = 0;
                        shouldUpdateCount         = true;
                    }
                    if (trapAsset.structureDamage > 0 && Configuration.Instance.NegateStructureDamage)
                    {
                        trapAsset.structureDamage = 0;
                        shouldUpdateCount         = true;
                    }
                    if (trapAsset.vehicleDamage > 0 && Configuration.Instance.NegateVehicleDamage)
                    {
                        trapAsset.vehicleDamage = 0;
                        shouldUpdateCount       = true;
                    }

                    if (trapAsset.objectDamage > 0 && Configuration.Instance.NegateObjectDamage)
                    {
                        trapAsset.objectDamage = 0;
                        shouldUpdateCount      = true;
                    }
                    if (trapAsset.resourceDamage > 0 && Configuration.Instance.NegateResourceDamage)
                    {
                        trapAsset.resourceDamage = 0;
                        shouldUpdateCount        = true;
                    }

                    if (shouldUpdateCount)
                    {
                        trapsModified++;
                    }
                }
                else if (asset is ItemChargeAsset)
                {
                    ItemChargeAsset chargeAsset = asset as ItemChargeAsset;
                    if (chargeAsset.barricadeDamage > 0 && Configuration.Instance.NegateBarricadeDamage)
                    {
                        chargeAsset.barricadeDamage = 0;
                        shouldUpdateCount           = true;
                    }
                    if (chargeAsset.structureDamage > 0 && Configuration.Instance.NegateStructureDamage)
                    {
                        chargeAsset.structureDamage = 0;
                        shouldUpdateCount           = true;
                    }
                    if (chargeAsset.vehicleDamage > 0 && Configuration.Instance.NegateVehicleDamage)
                    {
                        chargeAsset.vehicleDamage = 0;
                        shouldUpdateCount         = true;
                    }

                    if (chargeAsset.objectDamage > 0 && Configuration.Instance.NegateObjectDamage)
                    {
                        chargeAsset.objectDamage = 0;
                        shouldUpdateCount        = true;
                    }
                    if (chargeAsset.resourceDamage > 0 && Configuration.Instance.NegateResourceDamage)
                    {
                        chargeAsset.resourceDamage = 0;
                        shouldUpdateCount          = true;
                    }
                    if (shouldUpdateCount)
                    {
                        chargesModified++;
                    }
                }
                else if (asset is ItemMagazineAsset)
                {
                    ItemMagazineAsset magAsset = asset as ItemMagazineAsset;
                    if (magAsset.barricadeDamage > 0 && Configuration.Instance.NegateBarricadeDamage)
                    {
                        magAsset.barricadeDamage = 0;
                        shouldUpdateCount        = true;
                    }
                    if (magAsset.structureDamage > 0 && Configuration.Instance.NegateStructureDamage)
                    {
                        magAsset.structureDamage = 0;
                        shouldUpdateCount        = true;
                    }
                    if (magAsset.vehicleDamage > 0 && Configuration.Instance.NegateVehicleDamage)
                    {
                        magAsset.vehicleDamage = 0;
                        shouldUpdateCount      = true;
                    }

                    if (magAsset.objectDamage > 0 && Configuration.Instance.NegateObjectDamage)
                    {
                        magAsset.objectDamage = 0;
                        shouldUpdateCount     = true;
                    }
                    if (magAsset.resourceDamage > 0 && Configuration.Instance.NegateResourceDamage)
                    {
                        magAsset.resourceDamage = 0;
                        shouldUpdateCount       = true;
                    }
                    if (shouldUpdateCount)
                    {
                        magsModified++;
                    }
                }
                shouldUpdateCount = false;
                if (asset is ItemBarricadeAsset)
                {
                    ItemBarricadeAsset basset = asset as ItemBarricadeAsset;
                    if (basset.health < Configuration.Instance.MinElementSpawnHealth && Configuration.Instance.ModifyMinElementSpawnHealth)
                    {
                        basset.GetType().GetField("_health", bindingFlags).SetValue(basset, Configuration.Instance.MinElementSpawnHealth);
                        shouldUpdateCount = true;
                    }
                    if (!basset.proofExplosion && Configuration.Instance.MakeElementsExplosionProof && (Configuration.Instance.MakeElementsExplosionProofIncludeTraps ? true : !(asset is ItemTrapAsset)))
                    {
                        basset.GetType().GetField("_proofExplosion", bindingFlags).SetValue(basset, true);
                        shouldUpdateCount = true;
                    }
                    if (basset.isVulnerable && Configuration.Instance.MakeElementsInvulnerable)
                    {
                        basset.GetType().GetField("_isVulnerable", bindingFlags).SetValue(basset, false);
                        shouldUpdateCount = true;
                    }
                    if ((basset.build == EBuild.SIGN || basset.build == EBuild.SIGN_WALL || basset.build == EBuild.NOTE) && !basset.isLocked && Configuration.Instance.MakeSignsLocked)
                    {
                        basset.GetType().GetField("_isLocked", bindingFlags).SetValue(basset, true);
                        shouldUpdateCount = true;
                    }
                }
                if (asset is ItemStructureAsset)
                {
                    ItemStructureAsset sasset = asset as ItemStructureAsset;
                    if (sasset.health < Configuration.Instance.MinElementSpawnHealth && Configuration.Instance.ModifyMinElementSpawnHealth)
                    {
                        sasset.GetType().GetField("_health", bindingFlags).SetValue(sasset, Configuration.Instance.MinElementSpawnHealth);
                        shouldUpdateCount = true;
                    }
                    if (!sasset.proofExplosion && Configuration.Instance.MakeElementsExplosionProof)
                    {
                        sasset.GetType().GetField("_proofExplosion", bindingFlags).SetValue(sasset, true);
                        shouldUpdateCount = true;
                    }
                    if (sasset.isVulnerable && Configuration.Instance.MakeElementsInvulnerable)
                    {
                        sasset.GetType().GetField("_isVulnerable", bindingFlags).SetValue(sasset, false);
                        shouldUpdateCount = true;
                    }
                }
                if (asset is ItemStorageAsset)
                {
                    ItemStorageAsset stasset = asset as ItemStorageAsset;
                    // make displays locked, or normal unlocked containers locked(excluding the airdrop container.).
                    if ((stasset.isDisplay && !stasset.isLocked && Configuration.Instance.MakeDisplaysLocked) || (!stasset.isLocked && Configuration.Instance.MakeContainersLocked && stasset.id != 1374))
                    {
                        stasset.GetType().GetField("_isLocked", bindingFlags).SetValue(stasset, true);
                        shouldUpdateCount = true;
                    }
                    if (stasset.isDisplay && Configuration.Instance.ModDisplayGrid)
                    {
                        if (stasset.storage_y < Configuration.Instance.DisplayGridY)
                        {
                            stasset.GetType().GetField("_storage_y", bindingFlags).SetValue(stasset, Configuration.Instance.DisplayGridY);
                            shouldUpdateCount = true;
                        }
                        if (stasset.storage_x < Configuration.Instance.DisplayGridX)
                        {
                            stasset.GetType().GetField("_storage_x", bindingFlags).SetValue(stasset, Configuration.Instance.DisplayGridX);
                            shouldUpdateCount = true;
                        }
                    }
                }
                if (shouldUpdateCount)
                {
                    elementsModified++;
                }
            }

            Asset[] vehicleList = Assets.find(EAssetType.VEHICLE);
            for (int v = 0; v < vehicleList.Length; v++)
            {
                shouldUpdateCount = false;
                Asset asset      = vehicleList[v];
                bool  shouldSkip = false;
                for (int i = 0; i < Configuration.Instance.SkipVehicleIDs.Count; i++)
                {
                    if (asset.id == Configuration.Instance.SkipVehicleIDs[i])
                    {
                        shouldSkip = true;
                        break;
                    }
                }
                if (shouldSkip == true)
                {
                    continue;
                }

                VehicleAsset vAsset = asset as VehicleAsset;
                if ((vAsset.isVulnerable || vAsset.isVulnerableToBumper || vAsset.isVulnerableToEnvironment || vAsset.isVulnerableToExplosions) && Configuration.Instance.MakeVehiclesInvulnerable)
                {
                    vAsset.isVulnerable              = false;
                    vAsset.isVulnerableToBumper      = false;
                    vAsset.isVulnerableToEnvironment = false;
                    vAsset.isVulnerableToExplosions  = false;
                    shouldUpdateCount = true;
                }
                if (vAsset.isVulnerableToExplosions && Configuration.Instance.MakeVehiclesInvulnerableExplosions)
                {
                    vAsset.isVulnerableToExplosions = false;
                    shouldUpdateCount = true;
                }
                if (vAsset.canTiresBeDamaged && Configuration.Instance.MakeTiresInvulnerable)
                {
                    vAsset.canTiresBeDamaged = false;
                    shouldUpdateCount        = true;
                }
                if (vAsset.healthMax < Configuration.Instance.MinVehicleSpawnHealth && Configuration.Instance.ModifyMinVehicleSpawnHealth)
                {
                    vAsset.GetType().GetField("_healthMax", bindingFlags).SetValue(vAsset, Configuration.Instance.MinVehicleSpawnHealth);
                    shouldUpdateCount = true;
                }
                if (!vAsset.supportsMobileBuildables && Configuration.Instance.VehicleSetMobileBuildables)
                {
                    vAsset.GetType().GetProperty("supportsMobileBuildables", bindingFlags | BindingFlags.Public).SetValue(vAsset, true, null);
                    // Bundle hash needs to be disabled for these, as this flag for this needs to be set client side as well.
                    vAsset.GetType().GetField("_shouldVerifyHash", bindingFlags).SetValue(vAsset, false);
                    shouldUpdateCount = true;
                }
                if (shouldUpdateCount)
                {
                    vehiclesModified++;
                }
            }
            Logger.LogWarning(string.Format("Finished modification run, counts of bundles modified: Guns: {0}, Mags: {6}, Melee: {1}, Throwables: {2}, Traps: {3}, Charges: {4}, Vehicles: {5}, Elements: {7}.", gunsModified, meleesModified, throwablesModified, trapsModified, chargesModified, vehiclesModified, magsModified, elementsModified));
        }
Esempio n. 13
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            bool           hasPerm = false;
            UnturnedPlayer player  = (UnturnedPlayer)caller;

            if (command.Length == 0)
            {
                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_help_1"));
                return;
            }
            if (command.Length > 0)
            {
                if (player.HasPermission("car") || player.HasPermission("car.*") || player.HasPermission("*"))
                {
                    hasPerm = true;
                }
                if (!hasPerm && !(caller.IsAdmin))
                {
                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("lpx_no_perm"));
                    return;
                }
                else
                {
                    InteractableVehicle veh = player.Player.movement.getVehicle();
                    switch (command[0].ToLower())
                    {
                    case "refuel":
                        if (player.HasPermission("car.refuel") || player.HasPermission("car.*") || player.HasPermission("*"))
                        {
                            hasPerm = true;
                        }
                        if (!hasPerm && !(caller.IsAdmin))
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("lpx_no_perm"));
                            return;
                        }
                        if (command.Length < 2)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_refuel_help_1"));
                            return;
                        }
                        else
                        {
                            if (veh != null)
                            {
                                VehicleAsset vehi    = veh.asset;
                                ushort       fuel    = vehi.fuel;
                                ushort       maxfuel = vehi.fuel;
                                double       percent;
                                double       truefuel;
                                if (command[1] == "full" || command[1] == "all" || command[1] == "100")
                                {
                                    truefuel = (double)fuel - (double)veh.fuel;
                                    percent  = double.Parse(fuel.ToString()) / (double)maxfuel * 100.00;
                                    percent  = Math.Round(percent, 2);
                                }
                                else
                                {
                                    if (ushort.TryParse(command[1], out fuel))
                                    {
                                        if ((((double)veh.fuel / (double)maxfuel * 100.00) + (double)fuel) > 100.00)
                                        {
                                            truefuel = (double)maxfuel - (double)veh.fuel;
                                        }
                                        else
                                        {
                                            truefuel = (double)fuel / 100.00 * (double)maxfuel;
                                        }
                                        truefuel = Math.Round(truefuel, 0);
                                        percent  = Math.Round(((double)truefuel / (double)maxfuel) * 100.00, 2);
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_refuel_error2"));
                                        return;
                                    }
                                }

                                _ = decimal.Parse("1.3");
                                decimal.TryParse(LPXRemastered.Instance.Configuration.Instance.FuelPrice.ToString(), out decimal price);
                                if (price != 0.00m)
                                {
                                    decimal balance    = Uconomy.Instance.Database.GetBalance(player.Id);
                                    decimal totalprice = Math.Round(price * (decimal)truefuel / (decimal)10, 2);
                                    if (balance < totalprice)
                                    {
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_enough_currency", Uconomy.Instance.Configuration.Instance.MoneyName));
                                        return;
                                    }
                                    decimal bal = Uconomy.Instance.Database.IncreaseBalance(player.CSteamID.ToString(), (totalprice * -1));
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_refuel_paid", totalprice, Uconomy.Instance.Configuration.Instance.MoneyName, veh.instanceID.ToString(), percent.ToString()));
                                    if (bal >= 0.0m)
                                    {
                                        UnturnedChat.Say(player.CSteamID, LPXRemastered.Instance.Translate("new_balance_msg", new object[] { bal, Uconomy.Instance.Configuration.Instance.MoneyName }));
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_refuelled_1", percent.ToString()));
                                }
                                veh.askFillFuel((ushort)truefuel);
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_error_1"));
                                return;
                            }
                        }
                        break;

                    case "lock":
                        if (veh != null)
                        {
                            if (command.Length == 1)
                            {
                                if (LPXRemastered.Instance.DatabaseCar.CheckOwner(veh.instanceID.ToString()) == player.Id)
                                {
                                    LPXRemastered.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), true);
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_Locked", veh.instanceID.ToString()));
                                }
                                else
                                {
                                    string[] PlayersWithKey = LPXRemastered.Instance.DatabaseCar.GetGivenKeys(veh.instanceID.ToString());
                                    for (int x = 0; x < PlayersWithKey.Length; x++)
                                    {
                                        if (PlayersWithKey[x].Trim() == player.Id)
                                        {
                                            LPXRemastered.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), true);
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_Locked", veh.instanceID.ToString()));
                                            break;
                                        }
                                    }
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_error_1"));
                            return;
                        }
                        break;

                    case "unlock":
                        if (veh != null)
                        {
                            if (command.Length == 1)
                            {
                                if (LPXRemastered.Instance.DatabaseCar.CheckOwner(veh.instanceID.ToString()) == player.Id)
                                {
                                    LPXRemastered.Instance.DatabaseCar.AddLockedStatus(veh.instanceID.ToString(), false);
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_Unlocked", veh.instanceID.ToString()));
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_error_1"));
                            return;
                        }
                        break;

                    case "key":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_keyhelp"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_keyhelp2"));
                            return;
                        }
                        if (command.Length > 2)
                        {
                            if (LPXRemastered.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                if (LPXRemastered.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    UnturnedPlayer PlayerKey = UnturnedPlayer.FromName(command[2]);
                                    if (PlayerKey != null)
                                    {
                                        LPXRemastered.Instance.DatabaseCar.AddGivenKeys(command[1], PlayerKey.Id);
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_key_given", command[1], PlayerKey.CharacterName));
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("lpx_playernotfound"));
                                        return;
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "repair":
                        if (player.HasPermission("car.repair") || player.HasPermission("car.*") || player.HasPermission("*"))
                        {
                            hasPerm = true;
                        }
                        if (!hasPerm && !(caller.IsAdmin))
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("lpx_no_perm"));
                            return;
                        }
                        if (command.Length == 1)
                        {
                            if (veh != null)
                            {
                                VehicleAsset vehi = veh.asset;
                                int          repair;
                                double       percent;
                                repair = vehi.health - veh.health;
                                if (repair > 0)
                                {
                                    percent = Math.Round(((double)repair / (double)vehi.health) * 100.00, 2);
                                    if (LPXRemastered.Instance.Configuration.Instance.RepairPrice == 0)
                                    {
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_repaired", veh.instanceID.ToString(), percent));
                                    }
                                    else
                                    {
                                        _ = decimal.Parse("2");
                                        decimal.TryParse(LPXRemastered.Instance.Configuration.Instance.RepairPrice.ToString(), out decimal price);
                                        decimal balance    = Uconomy.Instance.Database.GetBalance(player.Id);
                                        decimal totalprice = Math.Round(price * (decimal)repair / (decimal)6, 2);
                                        if (balance < totalprice)
                                        {
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_enough_currency", Uconomy.Instance.Configuration.Instance.MoneyName));
                                            return;
                                        }
                                        decimal bal = Uconomy.Instance.Database.IncreaseBalance(player.CSteamID.ToString(), (totalprice * -1));
                                        if (bal >= 0.0m)
                                        {
                                            UnturnedChat.Say(player.CSteamID, LPXRemastered.Instance.Translate("new_balance_msg", new object[] { bal, Uconomy.Instance.Configuration.Instance.MoneyName }));
                                        }
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_repaired_price", veh.instanceID.ToString(), percent, totalprice, Uconomy.Instance.Configuration.Instance.MoneyName));
                                    }
                                    veh.askRepair((ushort)repair);
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_repair_notneeded", veh.instanceID.ToString()));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_error_1"));
                                return;
                            }
                        }
                        break;

                    case "locate":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_locate_help"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            if (LPXRemastered.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                if (LPXRemastered.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    string Status = "";
                                    if (ushort.TryParse(command[1], out ushort index))
                                    {
                                        InteractableVehicle vehicle = VehicleManager.getVehicle(index);
                                        _ = vehicle.tryRemovePlayer(out _, player.CSteamID, out Vector3 point, out _);
                                        if (vehicle.isEmpty)
                                        {
                                            Status += "It is Empty. ";
                                        }
                                        if (vehicle.isDrowned)
                                        {
                                            Status += "It is Drowned. ";
                                        }
                                        if (vehicle.isDriven)
                                        {
                                            Status += "It is Being Drove. ";
                                        }
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_located", index, Math.Round(point.x, 0), Math.Round(point.y, 0), Math.Round(point.z, 0), Status));
                                    }
                                    else
                                    {
                                        UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("lpx_invalid_input"));
                                        return;
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "rkey":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_help"));
                            return;
                        }
                        if (command.Length == 2)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_help2"));
                            return;
                        }
                        if (command.Length > 2)
                        {
                            if (LPXRemastered.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {
                                UnturnedPlayer target;
                                if (LPXRemastered.Instance.DatabaseCar.CheckOwner(command[1]) == player.Id)
                                {
                                    target = UnturnedPlayer.FromName(command[2]);
                                    if (target == null)
                                    {
                                        if (LPXRemastered.Instance.DatabaseCar.RemoveGiveKeysCar(command[1], command[2]))
                                        {
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_success", command[2], command[1]));
                                        }
                                        else
                                        {
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_keynotfound", command[1]));
                                            return;
                                        }
                                    }
                                    else
                                    {
                                        if (LPXRemastered.Instance.DatabaseCar.RemoveGiveKeysCar(command[1], target.Id))
                                        {
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_success", target.CharacterName, command[1]));
                                        }
                                        else
                                        {
                                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_rkey_keynotfound", command[1]));
                                            return;
                                        }
                                    }
                                }
                                else
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_commmand_notowner"));
                                    return;
                                }
                            }
                            else
                            {
                                UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_found"));
                                return;
                            }
                        }
                        break;

                    case "list":
                        string cars = LPXRemastered.Instance.DatabaseCar.GetAllOwnedCars(player.Id);
                        if (cars == "" || cars == " ")
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_zero_owned"));
                        }
                        else
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_list_all"));
                        }
                        break;

                    case "steal":
                        if (command.Length == 1)
                        {
                            UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_steal_help"));
                            return;
                        }
                        else
                        {
                            if (LPXRemastered.Instance.DatabaseCar.CheckCarExistInDB(command[1]))
                            {     /** La voiture existe **/
                                decimal[] stealVehPrice = { 100, 100, /**/ 100, 250, 500, /**/ 1000, 1500, 2000, /**/ 2500, 3000, 4000, 10000, /**/ 50000 };
                                decimal[] lLicencePrice = { 500, 750, /**/ 1000, 1500, 3500, /**/ 1250, 1750, 3750, /**/ 1500, 2000, 4000, 10000, /**/ 90000 };
                                string    strVehID      = LPXRemastered.Instance.DatabaseCar.GetCarID(command[1]);
                                int       vehID         = LPXRemastered.Instance.DatabaseCar.ConvertLicenceToInt(strVehID);
                                if (vehID == -1)
                                {
                                    break;
                                }
                                /** Prix vol vehicule **/
                                decimal vehprice = stealVehPrice[vehID];
                                if (player.HasPermission("Car_Steal_" + strVehID) || player.HasPermission("Car_Steal_*"))
                                {
                                    vehprice = 100;     /** Prix pour forcer le vehicule avec autorisation **/
                                }
                                /** Prix licence **/
                                decimal licPrice = 0;
                                if (!player.HasPermission("Licence_" + strVehID) && LPXRemastered.Instance.DatabaseCar.CheckLicence(player.Id, strVehID))
                                {
                                    licPrice = lLicencePrice[vehID];
                                }
                                decimal balance = Uconomy.Instance.Database.GetBalance(player.Id);
                                decimal price   = vehprice + licPrice;
                                if (balance < price)
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("car_not_enough_currency", Uconomy.Instance.Configuration.Instance.MoneyName));
                                    return;
                                }
                                /** Paiement du vol du vehicule **/
                                decimal bal = Uconomy.Instance.Database.IncreaseBalance(player.Id, (price * -1));
                                if (bal >= 0.0m)
                                {
                                    UnturnedChat.Say(caller, LPXRemastered.Instance.Translate("new_balance_msg", new object[] { bal, Uconomy.Instance.Configuration.Instance.MoneyName }));
                                }
                                /** Unlocking du vehicule **/
                                string oldowner = LPXRemastered.Instance.DatabaseCar.GetOwnerName(command[1]);
                                LPXRemastered.Instance.DatabaseCar.RemoveOwnership(command[1]);
                                LPXRemastered.Instance.DatabaseCar.AddOwnership(command[1], player.Id, player.DisplayName);
                                Logger.Log(player.CharacterName + " a vole la voiture numero " + command[1] + " de categorie " + vehID + " appartenant a " + oldowner);
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Esempio n. 14
0
        void OnPlayerChatted(UnturnedPlayer player, ref Color color, string message, EChatMode chatMode, ref bool cancel)
        {
            if (Utils.IsActive(player))
            {
                if (message == null)
                {
                    return;
                }

                string[] messageSplit = message.Split(' ');
                string   command      = messageSplit[0].ToLower();
                int      msgLength    = messageSplit.Length;

                if (Config.DontAnnounceCommandsInVanish && player.VanishMode)
                {
                    return;
                }

                if (command.Contains("/god") && player.HasPermission("god") && Config.AnnounceGod)
                {
                    if (player.GodMode)
                    {
                        Utils.Announce(Translate("announce_disable_god", player.DisplayName));
                    }
                    else
                    {
                        Utils.Announce(Translate("announce_enable_god", player.DisplayName));
                    }
                }

                else if (command.Contains("/vanish") && player.HasPermission("vanish") && Config.AnnounceVanish)
                {
                    if (player.VanishMode)
                    {
                        Utils.Announce(Translate("announce_disable_vanish", player.DisplayName));
                    }
                    else
                    {
                        Utils.Announce(Translate("announce_enable_vanish", player.DisplayName));
                    }
                }

                else if (command.Contains("/heal") && player.HasPermission("heal") && Config.AnnounceHeal)
                {
                    if (msgLength > 1)
                    {
                        UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                        if (target != null)
                        {
                            Utils.Announce(Translate("announce_heal_other", player.DisplayName, target.DisplayName));
                        }
                    }
                    else
                    {
                        Utils.Announce(Translate("announce_heal_self", player.DisplayName));
                    }
                }

                else if (command.Contains("/tp") && player.HasPermission("tp") && Config.AnnounceTp)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_tp", player.DisplayName, target.DisplayName));
                    }

                    else
                    {
                        foreach (Node node in LevelNodes.nodes)
                        {
                            if (node.type == ENodeType.LOCATION)
                            {
                                if (((LocationNode)node).name.ToLower().Contains(messageSplit[1].Replace(" ", "").Replace("\"", "")))
                                {
                                    Utils.Announce(Translate("announce_tp", player.DisplayName, ((LocationNode)node).name));
                                }
                            }
                        }
                    }
                }

                else if (command.Contains("/tphere") && player.HasPermission("tphere") && Config.AnnounceTphere)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_tphere", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/kick") && player.HasPermission("kick") && Config.AnnounceKick)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_kick", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/ban") && player.HasPermission("ban") && Config.AnnounceBan)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_ban", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/slay") && player.HasPermission("slay") && Config.AnnounceSlay)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_slay", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/spy") && player.HasPermission("spy") && Config.AnnounceSpy)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_spy", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/admin") && player.HasPermission("admin") && Config.AnnounceAdmin)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }

                    UnturnedPlayer target = UnturnedPlayer.FromName(messageSplit[1]);

                    if (target != null)
                    {
                        Utils.Announce(Translate("announce_admin", player.DisplayName, target.DisplayName));
                    }
                }

                else if (command.Contains("/airdrop") && player.HasPermission("airdrop") && Config.AnnounceAirdrop)
                {
                    if (msgLength < 1)
                    {
                        return;
                    }
                    Utils.Announce(Translate("announce_airdrop", player.DisplayName));
                }

                else if (command.Contains("/i") && player.HasPermission("i") && Config.AnnounceItem)
                {
                    if (msgLength < 2)
                    {
                        return;
                    }

                    int AssetCount = 1;

                    if (msgLength > 2)
                    {
                        int.TryParse(messageSplit[2].Replace("\"", ""), out AssetCount);
                    }

                    try
                    {
                        ushort.TryParse(messageSplit[1], out ushort AssetID);
                        Asset iAssetID = Assets.find(EAssetType.ITEM, AssetID);

                        Utils.Announce(Translate("announce_item", player.DisplayName, AssetCount, ((ItemAsset)iAssetID).itemName, iAssetID.id));
                    }
                    catch
                    {
                        ItemAsset AssetName = (Assets.find(EAssetType.ITEM).Cast <ItemAsset>().Where(i => i.itemName != null).OrderBy(i => i.itemName.Length).FirstOrDefault(i => i.itemName.ToLower().Contains(messageSplit[1].Replace("\"", "").ToLower())));

                        if (AssetName == null)
                        {
                            return;
                        }

                        Utils.Announce(Translate("announce_item", player.DisplayName, AssetCount, AssetName.itemName, AssetName.id));
                    }
                }

                else if (command.Contains("/v") && player.HasPermission("v") && Config.AnnounceVehicle)
                {
                    if (msgLength < 2)
                    {
                        return;
                    }

                    try
                    {
                        ushort.TryParse(messageSplit[1], out ushort AssetID);
                        Asset vAssetID = Assets.find(EAssetType.VEHICLE, AssetID);

                        Utils.Announce(Translate("announce_vehicle", player.DisplayName, ((VehicleAsset)vAssetID).vehicleName, vAssetID.id.ToString()));
                    }
                    catch
                    {
                        VehicleAsset AssetName = (Assets.find(EAssetType.VEHICLE).Cast <VehicleAsset>().Where(v => v.vehicleName != null).OrderBy(v => v.vehicleName.Length).FirstOrDefault(v => v.vehicleName.ToLower().Contains(messageSplit[1].Replace("\"", "").ToLower())));

                        if (AssetName == null)
                        {
                            return;
                        }

                        Utils.Announce(Translate("announce_vehicle", player.DisplayName, AssetName.vehicleName, AssetName.id.ToString()));
                    }
                }
            }
        }
Esempio n. 15
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            if (!LIGHT.Instance.Configuration.Instance.EnableShop)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("shop_disable"));
                return;
            }
            UnturnedPlayer player = (UnturnedPlayer)caller;
            string         message;

            if (command.Length == 0)
            {
                UnturnedChat.Say(player, LIGHT.Instance.Translate("cost_command_usage"));
                return;
            }
            if (command.Length == 2 && command[0] != "v")
            {
                UnturnedChat.Say(player, LIGHT.Instance.Translate("cost_command_usage"));
                return;
            }
            ushort id;

            switch (command[0])
            {
            case "v":
                string name = null;
                if (!ushort.TryParse(command[1], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.VEHICLE);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        VehicleAsset vAsset = (VehicleAsset)array2[i];
                        if (vAsset != null && vAsset.vehicleName != null && vAsset.vehicleName.ToLower().Contains(command[1].ToLower()))
                        {
                            id   = vAsset.id;
                            name = vAsset.vehicleName;
                            break;
                        }
                    }
                }
                if (name == null && id == 0)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", command[1]));
                    return;
                }
                else if (name == null && id != 0)
                {
                    try
                    {
                        name = ((VehicleAsset)Assets.find(EAssetType.VEHICLE, id)).vehicleName;
                    }
                    catch
                    {
                        UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", command[1]));
                        return;
                    }
                }
                decimal cost = LIGHT.Instance.ShopDB.GetVehicleCost(id);
                message = LIGHT.Instance.Translate("vehicle_cost_msg", new object[] { name, cost.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName });
                if (cost <= 0m)
                {
                    message = LIGHT.Instance.Translate("error_getting_cost", new object[] { name });
                }
                UnturnedChat.Say(player, message);
                break;

            default:
                name = null;
                if (!ushort.TryParse(command[0], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.ITEM);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        ItemAsset iAsset = (ItemAsset)array2[i];
                        if (iAsset != null && iAsset.itemName != null && iAsset.itemName.ToLower().Contains(command[0].ToLower()))
                        {
                            id   = iAsset.id;
                            name = iAsset.itemName;
                            break;
                        }
                    }
                }
                if (name == null && id == 0)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", command[0]));
                    return;
                }
                else if (name == null && id != 0)
                {
                    try
                    {
                        name = ((ItemAsset)Assets.find(EAssetType.ITEM, id)).itemName;
                    }
                    catch
                    {
                        UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", command[0]));
                        return;
                    }
                }
                cost = LIGHT.Instance.ShopDB.GetItemCost(id);
                decimal bbp = LIGHT.Instance.ShopDB.GetItemBuyPrice(id);
                if (LIGHT.Instance.Configuration.Instance.SaleEnable)
                {
                    decimal saleprice = Convert.ToDecimal(Convert.ToDouble(LIGHT.Instance.Configuration.Instance.SalePercentage) / 100.00);
                    if (LIGHT.Instance.sale.salesStart == true)
                    {
                        cost = (cost * (Convert.ToDecimal(1.00) - saleprice));
                    }
                }
                message = LIGHT.Instance.Translate("item_cost_msg", new object[] { name, cost.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName, bbp.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName });
                if (cost <= 0m)
                {
                    message = LIGHT.Instance.Translate("error_getting_cost", new object[] { name });
                }
                UnturnedChat.Say(player, message);
                break;
            }
        }
Esempio n. 16
0
        public void Cost(UnturnedPlayer playerid, string[] components)
        {
            string message;

            if (components.Length == 0 || (components.Length == 1 && (components[0].Trim() == string.Empty || components[0].Trim() == "v")))
            {
                message = ZaupShop.Instance.Translate("cost_command_usage", new object[] { });
                // We are going to print how to use
                UnturnedChat.Say(playerid, message);
                return;
            }
            if (components.Length == 2 && (components[0] != "v" || components[1].Trim() == string.Empty))
            {
                message = ZaupShop.Instance.Translate("cost_command_usage", new object[] { });
                // We are going to print how to use
                UnturnedChat.Say(playerid, message);
                return;
            }
            ushort id;

            switch (components[0])
            {
            case "v":
                string name = null;
                if (!ushort.TryParse(components[1], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.VEHICLE);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        VehicleAsset vAsset = (VehicleAsset)array2[i];
                        if (vAsset != null && vAsset.vehicleName != null && vAsset.vehicleName.ToLower().Contains(components[1].ToLower()))
                        {
                            id   = vAsset.id;
                            name = vAsset.vehicleName;
                            break;
                        }
                    }
                }
                if (Assets.find(EAssetType.VEHICLE, id) == null)
                {
                    message = ZaupShop.Instance.Translate("could_not_find", new object[] { components[1] });
                    UnturnedChat.Say(playerid, message);
                    return;
                }
                else if (name == null && id != 0)
                {
                    name = ((VehicleAsset)Assets.find(EAssetType.VEHICLE, id)).vehicleName;
                }
                decimal cost = ZaupShop.Instance.ShopDB.GetVehicleCost(id);
                message = ZaupShop.Instance.Translate("vehicle_cost_msg", new object[] { name, cost.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName });
                if (cost <= 0m)
                {
                    message = ZaupShop.Instance.Translate("error_getting_cost", new object[] { name });
                }
                UnturnedChat.Say(playerid, message);
                break;

            default:
                name = null;
                if (!ushort.TryParse(components[0], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.ITEM);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        ItemAsset iAsset = (ItemAsset)array2[i];
                        if (iAsset != null && iAsset.itemName != null && iAsset.itemName.ToLower().Contains(components[0].ToLower()))
                        {
                            id   = iAsset.id;
                            name = iAsset.itemName;
                            break;
                        }
                    }
                }
                if (Assets.find(EAssetType.ITEM, id) == null)
                {
                    message = ZaupShop.Instance.Translate("could_not_find", new object[] { components[0] });
                    UnturnedChat.Say(playerid, message);
                    return;
                }
                else if (name == null && id != 0)
                {
                    name = ((ItemAsset)Assets.find(EAssetType.ITEM, id)).itemName;
                }
                cost = ZaupShop.Instance.ShopDB.GetItemCost(id);
                decimal bbp = ZaupShop.Instance.ShopDB.GetItemBuyPrice(id);
                message = ZaupShop.Instance.Translate("item_cost_msg", new object[] { name, cost.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName, bbp.ToString(), Uconomy.Instance.Configuration.Instance.MoneyName });
                if (cost <= 0m)
                {
                    message = ZaupShop.Instance.Translate("error_getting_cost", new object[] { name });
                }
                UnturnedChat.Say(playerid, message);
                break;
            }
        }
Esempio n. 17
0
        private void setEngine(EEngine engine)
        {
            VehicleAsset asset = car.asset;

            asset.GetType().GetField("_engine", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, engine);
        }
Esempio n. 18
0
        private void setLockMouse(bool lockMouse)
        {
            VehicleAsset asset = car.asset;

            asset.GetType().GetField("_hasLockMouse", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, lockMouse);
        }
Esempio n. 19
0
        private void updateMaxSpeed()
        {
            VehicleAsset asset = car.asset;

            asset.GetType().GetField("_speedMax", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, car_speed);
        }
Esempio n. 20
0
        public void Execute(IRocketPlayer caller, params string[] command)
        {
            if (!LIGHT.Instance.Configuration.Instance.EnableShop)
            {
                UnturnedChat.Say(caller, LIGHT.Instance.Translate("shop_disable"));
                return;
            }
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (command.Length == 0)
            {
                UnturnedChat.Say(player, LIGHT.Instance.Translate("buy_command_usage"));
                return;
            }

            byte   amttobuy    = 1;
            string Itemname    = "";
            byte   CheckItemID = 0;
            bool   IsID        = byte.TryParse(command[0], out CheckItemID);
            bool   IsAmtKeyed  = false;

            if (command.Length > 1)
            {
                IsAmtKeyed = byte.TryParse(command[command.Length - 1], out amttobuy);
            }
            for (int i = 0; i < (command.Length - 1); i++)
            {
                if (i == (command.Length - 2))
                {
                    Itemname += command[i];
                }
                else
                {
                    Itemname += command[i] + " ";
                }
            }
            if (!IsAmtKeyed)
            {
                amttobuy = 1;
                if (command.Length == 2)
                {
                    Itemname = command[0] + " " + command[1];
                }
                else if (command.Length == 1)
                {
                    Itemname = command[0];
                }
            }
            string[] components = Parser.getComponentsFromSerial(command[0], '.');
            if (components.Length == 2 && components[0] != "v")
            {
                UnturnedChat.Say(player, LIGHT.Instance.Translate("buy_command_usage"));
                return;
            }
            ushort id;

            switch (components[0])
            {
            case "v":
                if (!LIGHT.Instance.Configuration.Instance.CanBuyVehicles)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("buy_vehicles_off"));
                    return;
                }
                string name = "";
                if (!ushort.TryParse(components[1], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.VEHICLE);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        VehicleAsset vAsset = (VehicleAsset)array2[i];
                        if (vAsset != null && vAsset.Name != null && vAsset.Name.ToLower().Contains(components[1].ToLower()))
                        {
                            id   = vAsset.Id;
                            name = vAsset.Name;
                            break;
                        }
                    }
                }
                if (name == null && id == 0)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", components[1]));
                    return;
                }
                else if (name == null && id != 0)
                {
                    try
                    {
                        name = ((VehicleAsset)Assets.find(EAssetType.VEHICLE, id)).Name;
                    }
                    catch
                    {
                        UnturnedChat.Say(caller, LIGHT.Instance.Translate("vehicle_invalid"));
                        return;
                    }
                }
                decimal cost    = LIGHT.Instance.ShopDB.GetVehicleCost(id);
                decimal balance = Uconomy.Instance.Database.GetBalance(player.Id);
                if (cost <= 0m)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("vehicle_not_available", name));
                    return;
                }
                if (balance < cost)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.DefaultTranslations.Translate("not_enough_currency_msg", Uconomy.Instance.Configuration.Instance.MoneyName, name));
                    return;
                }
                if (!player.GiveVehicle(id))
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("error_giving_item", name));
                    return;
                }
                decimal newbal = Uconomy.Instance.Database.IncreaseBalance(player.CSteamID.ToString(), (cost * -1));
                if (OnShopBuy != null)
                {
                    OnShopBuy(player, cost, 1, id, "vehicle");
                }
                player.Player.gameObject.SendMessage("ZaupShopOnBuy", new object[] { player, cost, amttobuy, id, "vehicle" }, SendMessageOptions.DontRequireReceiver);
                UnturnedChat.Say(player, LIGHT.Instance.Translate("vehicle_buy_msg", name, cost, Uconomy.Instance.Configuration.Instance.MoneyName, newbal, Uconomy.Instance.Configuration.Instance.MoneyName));
                break;

            default:
                if (!LIGHT.Instance.Configuration.Instance.CanBuyItems)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("buy_items_off"));
                    return;
                }
                name = null;
                if (!ushort.TryParse(Itemname, out id))
                {
                    Asset[] array  = Assets.find(EAssetType.ITEM);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        ItemAsset vAsset = (ItemAsset)array2[i];
                        if (vAsset != null && vAsset.Name != null && vAsset.Name.ToLower().Contains(Itemname.ToLower()))
                        {
                            id   = vAsset.Id;
                            name = vAsset.Name;
                            break;
                        }
                    }
                }
                if (name == null && id == 0)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("could_not_find", Itemname));
                    return;
                }
                else if (name == null && id != 0)
                {
                    try
                    {
                        name = ((ItemAsset)Assets.find(EAssetType.ITEM, id)).Name;
                    }
                    catch
                    {
                        UnturnedChat.Say(player, LIGHT.Instance.Translate("item_invalid"));
                        return;
                    }
                }
                cost = decimal.Round(LIGHT.Instance.ShopDB.GetItemCost(id) * amttobuy, 2);
                if (LIGHT.Instance.Configuration.Instance.SaleEnable)
                {
                    decimal saleprice = Convert.ToDecimal(Convert.ToDouble(LIGHT.Instance.Configuration.Instance.SalePercentage) / 100.00);
                    if (LIGHT.Instance.sale.salesStart == true)
                    {
                        cost = decimal.Round((cost * (Convert.ToDecimal(1.00) - saleprice)), 2);
                    }
                }
                balance = Uconomy.Instance.Database.GetBalance(player.Id);
                if (cost <= 0m)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("item_not_available", name));
                    return;
                }
                if (balance < cost)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("not_enough_currency_msg", Uconomy.Instance.Configuration.Instance.MoneyName, amttobuy, name));
                    return;
                }
                player.GiveItem(id, amttobuy);
                string[] freeItem = LIGHT.Instance.Database.GetFreeItem(caller.Id);
                bool     free     = false;
                for (int x = 0; x < freeItem.Length; x++)
                {
                    if (freeItem[x].Trim() == id.ToString().Trim())
                    {
                        free = true;
                        cost = 0;
                        break;
                    }
                }
                newbal = Uconomy.Instance.Database.IncreaseBalance(player.Id, (cost * -1));
                if (OnShopBuy != null)
                {
                    OnShopBuy(player, cost, amttobuy, id);
                }
                player.Player.gameObject.SendMessage("ZaupShopOnBuy", new object[] { player, cost, amttobuy, id, "item" }, SendMessageOptions.DontRequireReceiver);
                if (free)
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("item_buy_freemsg", amttobuy, name, LIGHT.Instance.Database.CheckUserGroup(caller.Id)));
                }
                else
                {
                    UnturnedChat.Say(player, LIGHT.Instance.Translate("item_buy_msg", name, cost, Uconomy.Instance.Configuration.Instance.MoneyName, newbal, Uconomy.Instance.Configuration.Instance.MoneyName, amttobuy));
                }
                break;
            }
        }
Esempio n. 21
0
        public void Execute(ICommandContext context)
        {
            var parameters = context.Parameters;

            if (parameters.Length == 0)
            {
                throw new CommandWrongUsageException();
            }
            if (parameters.Length < 2)
            {
                throw new CommandWrongUsageException(_parentPlugin.Translations.Get("no_itemid_given"));
            }
            if (parameters.Length == 2 && parameters[0] != "rem")
            {
                throw new CommandWrongUsageException(_parentPlugin.Translations.Get("no_cost_given"));
            }

            if (parameters.Length >= 2)
            {
                string[] type = Parser.getComponentsFromSerial(parameters[1], '.');
                if (type.Length > 1 && type[0] != "v")
                {
                    throw new CommandWrongUsageException(_parentPlugin.Translations.Get("v_not_provided"));
                }
                ushort id;
                if (type.Length > 1)
                {
                    if (!ushort.TryParse(type[1], out id))
                    {
                        throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                    }
                }
                else
                {
                    if (!ushort.TryParse(type[0], out id))
                    {
                        throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                    }
                }
                // All basic checks complete.  Let's get down to business.
                bool success = false;
                bool change  = false;
                bool pass    = false;
                switch (parameters[0])
                {
                case "chng":
                    change = true;
                    pass   = true;
                    goto case "add";

                case "add":
                    string ac = (pass) ? _parentPlugin.Translations.Get("changed") : _parentPlugin.Translations.Get("added");
                    switch (type[0])
                    {
                    case "v":
                        if (!IsAsset(id, "v"))
                        {
                            throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                        }
                        VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                        success = _parentPlugin.Database.AddVehicle(id, va.vehicleName, decimal.Parse(parameters[2]), change);
                        if (!success)
                        {
                            context.User.SendLocalizedMessage(_parentPlugin.Translations, "error_adding_or_changing", va.vehicleName);
                            return;
                        }
                        context.User.SendLocalizedMessage(_parentPlugin.Translations, "changed_or_added_to_shop", ac, va.vehicleName, parameters[2]);
                        break;

                    default:
                        if (!IsAsset(id, "i"))
                        {
                            throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                        }

                        ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                        success = _parentPlugin.Database.AddItem(id, ia.itemName, decimal.Parse(parameters[2]), change);
                        if (!success)
                        {
                            context.User.SendLocalizedMessage(_parentPlugin.Translations, "error_adding_or_changing", ia.itemName);
                            return;
                        }

                        context.User.SendLocalizedMessage(_parentPlugin.Translations, "changed_or_added_to_shop", ac, ia.itemName, parameters[2]);
                        break;
                    }
                    break;

                case "rem":
                    switch (type[0])
                    {
                    case "v":
                        if (!IsAsset(id, "i"))
                        {
                            throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                        }

                        VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                        success = _parentPlugin.Database.DeleteVehicle(id);
                        if (!success)
                        {
                            context.User.SendLocalizedMessage(_parentPlugin.Translations, "not_in_shop_to_remove", va.vehicleName);
                            return;
                        }

                        context.User.SendLocalizedMessage(_parentPlugin.Translations, "removed_from_shop", va.vehicleName);
                        break;

                    default:
                        if (!IsAsset(id, "i"))
                        {
                            throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                        }

                        ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                        success = _parentPlugin.Database.DeleteItem(id);
                        if (!success)
                        {
                            context.User.SendLocalizedMessage(_parentPlugin.Translations, "not_in_shop_to_remove", ia.itemName);
                            return;
                        }

                        context.User.SendLocalizedMessage(_parentPlugin.Translations, "removed_from_shop", ia.itemName);
                        break;
                    }
                    break;

                case "buy":
                    if (!IsAsset(id, "i"))
                    {
                        throw new CommandWrongUsageException(_parentPlugin.Translations.Get("invalid_id_given"));
                    }
                    ItemAsset iab = (ItemAsset)Assets.find(EAssetType.ITEM, id);

                    var buyb = parameters.Get <decimal>(2);
                    success = _parentPlugin.Database.SetBuyPrice(id, buyb);
                    if (!success)
                    {
                        context.User.SendLocalizedMessage(_parentPlugin.Translations, "not_in_shop_to_buyback", iab.itemName);
                        break;
                    }

                    context.User.SendLocalizedMessage(_parentPlugin.Translations, "set_buyback_price", iab.itemName, buyb.ToString());
                    break;

                default:
                    // We shouldn't get this, but if we do send an error.
                    context.User.SendLocalizedMessage(_parentPlugin.Translations, "not_in_shop_to_remove");
                    return;
                }
            }
        }
Esempio n. 22
0
        public bool Buy(UnturnedPlayer playerid, string[] components0)
        {
            string message;

            if (components0.Length == 0)
            {
                message = ZaupShop.Instance.Translate("buy_command_usage", new object[] {});
                // We are going to print how to use
                UnturnedChat.Say(playerid, message);
                return(false);
            }
            byte amttobuy = 1;

            if (components0.Length > 1)
            {
                if (!byte.TryParse(components0[1], out amttobuy))
                {
                    message = ZaupShop.Instance.Translate("invalid_amt", new object[] { });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
            }
            string[] components = Parser.getComponentsFromSerial(components0[0], '.');
            if ((components.Length == 2 && components[0].Trim() != "v") || (components.Length == 1 && components[0].Trim() == "v") || components.Length > 2 || components0[0].Trim() == string.Empty)
            {
                message = ZaupShop.Instance.Translate("buy_command_usage", new object[] { });
                // We are going to print how to use
                UnturnedChat.Say(playerid, message);
                return(false);
            }
            ushort id;

            switch (components[0])
            {
            case "v":
                if (!ZaupShop.Instance.Configuration.Instance.CanBuyVehicles)
                {
                    message = ZaupShop.Instance.Translate("buy_vehicles_off", new object[] { });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                string name = null;
                if (!ushort.TryParse(components[1], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.VEHICLE);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        VehicleAsset vAsset = (VehicleAsset)array2[i];
                        if (vAsset != null && vAsset.vehicleName != null && vAsset.vehicleName.ToLower().Contains(components[1].ToLower()))
                        {
                            id   = vAsset.id;
                            name = vAsset.vehicleName;
                            break;
                        }
                    }
                }
                if (Assets.find(EAssetType.VEHICLE, id) == null)
                {
                    message = ZaupShop.Instance.Translate("could_not_find", new object[] { components[1] });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                else if (name == null && id != 0)
                {
                    name = ((VehicleAsset)Assets.find(EAssetType.VEHICLE, id)).vehicleName;
                }
                decimal cost    = ZaupShop.Instance.ShopDB.GetVehicleCost(id);
                decimal balance = Uconomy.Instance.Database.GetBalance(playerid.CSteamID.ToString());
                if (cost <= 0m)
                {
                    message = ZaupShop.Instance.Translate("vehicle_not_available", new object[] { name });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                if (balance < cost)
                {
                    message = ZaupShop.Instance.Translate("not_enough_currency_msg", new object[] { Uconomy.Instance.Configuration.Instance.MoneyName, "1", name });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                if (!playerid.GiveVehicle(id))
                {
                    message = ZaupShop.Instance.Translate("error_giving_item", new object[] { name });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                decimal newbal = Uconomy.Instance.Database.IncreaseBalance(playerid.CSteamID.ToString(), (cost * -1));
                message = ZaupShop.Instance.Translate("vehicle_buy_msg", new object[] { name, cost, Uconomy.Instance.Configuration.Instance.MoneyName, newbal, Uconomy.Instance.Configuration.Instance.MoneyName });
                if (ZaupShop.Instance.OnShopBuy != null)
                {
                    ZaupShop.Instance.OnShopBuy(playerid, cost, 1, id, "vehicle");
                }
                playerid.Player.gameObject.SendMessage("ZaupShopOnBuy", new object[] { playerid, cost, amttobuy, id, "vehicle" }, SendMessageOptions.DontRequireReceiver);
                UnturnedChat.Say(playerid, message);
                return(true);

            default:
                if (!ZaupShop.Instance.Configuration.Instance.CanBuyItems)
                {
                    message = ZaupShop.Instance.Translate("buy_items_off", new object[] { });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                name = null;
                if (!ushort.TryParse(components[0], out id))
                {
                    Asset[] array  = Assets.find(EAssetType.ITEM);
                    Asset[] array2 = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        ItemAsset vAsset = (ItemAsset)array2[i];
                        if (vAsset != null && vAsset.itemName != null && vAsset.itemName.ToLower().Contains(components[0].ToLower()))
                        {
                            id   = vAsset.id;
                            name = vAsset.itemName;
                            break;
                        }
                    }
                }
                if (Assets.find(EAssetType.ITEM, id) == null)
                {
                    message = ZaupShop.Instance.Translate("could_not_find", new object[] { components[0] });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                else if (name == null && id != 0)
                {
                    name = ((ItemAsset)Assets.find(EAssetType.ITEM, id)).itemName;
                }
                cost    = decimal.Round(ZaupShop.Instance.ShopDB.GetItemCost(id) * amttobuy, 2);
                balance = Uconomy.Instance.Database.GetBalance(playerid.CSteamID.ToString());
                if (cost <= 0m)
                {
                    message = ZaupShop.Instance.Translate("item_not_available", new object[] { name });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                if (balance < cost)
                {
                    message = ZaupShop.Instance.Translate("not_enough_currency_msg", new object[] { Uconomy.Instance.Configuration.Instance.MoneyName, amttobuy, name });
                    UnturnedChat.Say(playerid, message);
                    return(false);
                }
                playerid.GiveItem(id, amttobuy);
                newbal  = Uconomy.Instance.Database.IncreaseBalance(playerid.CSteamID.ToString(), (cost * -1));
                message = ZaupShop.Instance.Translate("item_buy_msg", new object[] { name, cost, Uconomy.Instance.Configuration.Instance.MoneyName, newbal, Uconomy.Instance.Configuration.Instance.MoneyName, amttobuy });
                if (ZaupShop.Instance.OnShopBuy != null)
                {
                    ZaupShop.Instance.OnShopBuy(playerid, cost, amttobuy, id);
                }
                playerid.Player.gameObject.SendMessage("ZaupShopOnBuy", new object[] { playerid, cost, amttobuy, id, "item" }, SendMessageOptions.DontRequireReceiver);
                UnturnedChat.Say(playerid, message);
                return(true);
            }
        }
 public VehicleAssetTag(VehicleAsset asset)
 {
     Internal = asset;
 }
Esempio n. 24
0
 public VehicleAssetTag(VehicleAsset asset)
 {
     Internal = asset;
 }
Esempio n. 25
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (command.Length != 1)
            {
                UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                throw new WrongUsageOfCommandException(caller, this);
            }

            ushort?id = command.GetUInt16Parameter(0);

            if (!id.HasValue)
            {
                string itemString = command.GetStringParameter(0);

                if (itemString == null)
                {
                    UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                    throw new WrongUsageOfCommandException(caller, this);
                }

                Asset[] assets = SDG.Unturned.Assets.find(EAssetType.VEHICLE);
                for (int i = 0; i < assets.Length; i++)
                {
                    VehicleAsset ia = (VehicleAsset)assets[i];
                    if (ia != null && ia.vehicleName != null && ia.vehicleName.ToLower().Contains(itemString.ToLower()))
                    {
                        id = ia.id;
                        break;
                    }
                }

                if (!id.HasValue)
                {
                    UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                    throw new WrongUsageOfCommandException(caller, this);
                }
            }

            if (U.Settings.Instance.EnableVehicleBlacklist && !player.HasPermission("vehicleblacklist.bypass." + id))
            {
                if (U.Settings.Instance.Vehicles.Contains((ushort)id))
                {
                    UnturnedChat.Say(caller, U.Translate("command_v_blacklisted", id));
                    return;
                }
            }

            Asset  a         = SDG.Unturned.Assets.find(EAssetType.VEHICLE, id.Value);
            string assetName = ((VehicleAsset)a).vehicleName;

            if (VehicleTool.giveVehicle(player.Player, id.Value))
            {
                Logger.Log(U.Translate("command_v_giving_console", player.CharacterName, id));
                UnturnedChat.Say(caller, U.Translate("command_v_giving_private", assetName, id));
            }
            else
            {
                UnturnedChat.Say(caller, U.Translate("command_v_giving_failed_private", assetName, id));
            }
        }
Esempio n. 26
0
        public void Execute(IRocketPlayer caller, string[] msg)
        {
            bool console = (caller is ConsolePlayer);

            string[] permnames = { "shop.*", "shop.add", "shop.rem", "shop.chng", "shop.buy" };
            bool[]   perms     = { false, false, false, false, false };
            bool     anyuse    = false;
            string   message;

            foreach (Permission s in caller.GetPermissions())
            {
                switch (s.Name)
                {
                case "shop.*":
                    perms[0] = true;
                    anyuse   = true;
                    break;

                case "shop.add":
                    perms[1] = true;
                    anyuse   = true;
                    break;

                case "shop.rem":
                    perms[2] = true;
                    anyuse   = true;
                    break;

                case "shop.chng":
                    perms[3] = true;
                    anyuse   = true;
                    break;

                case "shop.buy":
                    perms[4] = true;
                    anyuse   = true;
                    break;

                case "*":
                    perms[0] = true;
                    perms[1] = true;
                    perms[2] = true;
                    perms[3] = true;
                    perms[4] = true;
                    anyuse   = true;
                    break;
                }
            }
            if (!console)
            {
                if (((UnturnedPlayer)caller).IsAdmin)
                {
                    perms[0] = true;
                    perms[1] = true;
                    perms[2] = true;
                    perms[3] = true;
                    perms[4] = true;
                    anyuse   = true;
                }
            }
            if (!anyuse)
            {
                // Assume this is a player
                UnturnedChat.Say(caller, "You don't have permission to use the /shop command.");
                return;
            }
            if (msg.Length == 0)
            {
                message = ZaupShop.Instance.Translate("shop_command_usage", new object[] {});
                // We are going to print how to use
                this.sendMessage(caller, message, console);
                return;
            }
            if (msg.Length < 2)
            {
                message = ZaupShop.Instance.Translate("no_itemid_given", new object[] {});
                this.sendMessage(caller, message, console);
                return;
            }
            if (msg.Length == 2 && msg[0] != "rem")
            {
                message = ZaupShop.Instance.Translate("no_cost_given", new object[] { });
                this.sendMessage(caller, message, console);
                return;
            }
            else if (msg.Length >= 2)
            {
                string[] type = Parser.getComponentsFromSerial(msg[1], '.');
                if (type.Length > 1 && type[0] != "v")
                {
                    message = ZaupShop.Instance.Translate("v_not_provided", new object[] { });
                    this.sendMessage(caller, message, console);
                    return;
                }
                ushort id;
                if (type.Length > 1)
                {
                    if (!ushort.TryParse(type[1], out id))
                    {
                        message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                }
                else
                {
                    if (!ushort.TryParse(type[0], out id))
                    {
                        message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                }
                // All basic checks complete.  Let's get down to business.
                bool success = false;
                bool change  = false;
                bool pass    = false;
                switch (msg[0])
                {
                case "chng":
                    if (!perms[3] && !perms[0])
                    {
                        message = ZaupShop.Instance.Translate("no_permission_shop_chng", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                    change = true;
                    pass   = true;
                    goto case "add";

                case "add":
                    if (!pass)
                    {
                        if (!perms[1] && !perms[0])
                        {
                            message = ZaupShop.Instance.Translate("no_permission_shop_add", new object[] { });
                            this.sendMessage(caller, message, console);
                            return;
                        }
                    }
                    string ac = (pass) ? ZaupShop.Instance.Translate("changed", new object[] { }) : ZaupShop.Instance.Translate("added", new object[] { });
                    switch (type[0])
                    {
                    case "v":
                        if (!this.IsAsset(id, "v"))
                        {
                            message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                            this.sendMessage(caller, message, console);
                            return;
                        }
                        VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                        message = ZaupShop.Instance.Translate("changed_or_added_to_shop", new object[] {
                            ac,
                            va.Name,
                            msg[2]
                        });
                        success = ZaupShop.Instance.ShopDB.AddVehicle((int)id, va.Name, decimal.Parse(msg[2]), change);
                        if (!success)
                        {
                            message = ZaupShop.Instance.Translate("error_adding_or_changing", new object[] { va.Name });
                        }
                        this.sendMessage(caller, message, console);
                        break;

                    default:
                        if (!this.IsAsset(id, "i"))
                        {
                            message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                            this.sendMessage(caller, message, console);
                            return;
                        }
                        ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                        message = ZaupShop.Instance.Translate("changed_or_added_to_shop", new object[] {
                            ac,
                            ia.Name,
                            msg[2]
                        });
                        success = ZaupShop.Instance.ShopDB.AddItem((int)id, ia.Name, decimal.Parse(msg[2]), change);
                        if (!success)
                        {
                            message = ZaupShop.Instance.Translate("error_adding_or_changing", new object[] { ia.Name });
                        }
                        this.sendMessage(caller, message, console);
                        break;
                    }
                    break;

                case "rem":
                    if (!perms[2] && !perms[0])
                    {
                        message = ZaupShop.Instance.Translate("no_permission_shop_rem", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                    switch (type[0])
                    {
                    case "v":
                        if (!this.IsAsset(id, "v"))
                        {
                            message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                            this.sendMessage(caller, message, console);
                            return;
                        }
                        VehicleAsset va = (VehicleAsset)Assets.find(EAssetType.VEHICLE, id);
                        message = ZaupShop.Instance.Translate("removed_from_shop", new object[] { va.Name });
                        success = ZaupShop.Instance.ShopDB.DeleteVehicle((int)id);
                        if (!success)
                        {
                            message = ZaupShop.Instance.Translate("not_in_shop_to_remove", new object[] { va.Name });
                        }
                        this.sendMessage(caller, message, console);
                        break;

                    default:
                        if (!this.IsAsset(id, "i"))
                        {
                            message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                            this.sendMessage(caller, message, console);
                            return;
                        }
                        ItemAsset ia = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                        message = ZaupShop.Instance.Translate("removed_from_shop", new object[] { ia.Name });
                        success = ZaupShop.Instance.ShopDB.DeleteItem((int)id);
                        if (!success)
                        {
                            message = ZaupShop.Instance.Translate("not_in_shop_to_remove", new object[] { ia.Name });
                        }
                        this.sendMessage(caller, message, console);
                        break;
                    }
                    break;

                case "buy":
                    if (!perms[4] && !perms[0])
                    {
                        message = ZaupShop.Instance.Translate("no_permission_shop_buy", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                    if (!this.IsAsset(id, "i"))
                    {
                        message = ZaupShop.Instance.Translate("invalid_id_given", new object[] { });
                        this.sendMessage(caller, message, console);
                        return;
                    }
                    ItemAsset iab = (ItemAsset)Assets.find(EAssetType.ITEM, id);
                    decimal   buyb;
                    decimal.TryParse(msg[2], out buyb);
                    message = ZaupShop.Instance.Translate("set_buyback_price", new object[] {
                        iab.Name,
                        buyb.ToString()
                    });
                    success = ZaupShop.Instance.ShopDB.SetBuyPrice((int)id, buyb);
                    if (!success)
                    {
                        message = ZaupShop.Instance.Translate("not_in_shop_to_buyback", new object[] { iab.Name });
                    }
                    this.sendMessage(caller, message, console);
                    break;

                default:
                    // We shouldn't get this, but if we do send an error.
                    message = ZaupShop.Instance.Translate("not_in_shop_to_remove", new object[] { });;
                    this.sendMessage(caller, message, console);
                    return;
                }
            }
        }
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer Player = (UnturnedPlayer)caller;

            if (command.Length != 1)
            {
                UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                throw new WrongUsageOfCommandException(caller, this);
            }

            ushort?      VehicleID    = command.GetUInt16Parameter(0);
            VehicleAsset VehicleMatch = null;

            if (!VehicleID.HasValue)
            {
                string VehicleString = command.GetStringParameter(0);

                if (VehicleString == null)
                {
                    UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                    throw new WrongUsageOfCommandException(caller, this);
                }

                VehicleMatch = Assets.find(EAssetType.VEHICLE).Cast <VehicleAsset>()
                               .Where(veh => !String.IsNullOrEmpty(veh.vehicleName))
                               .FirstOrDefault(veh => veh.vehicleName.ToUpperInvariant().Contains(VehicleString.ToUpperInvariant()));

                if (VehicleMatch != null)
                {
                    VehicleID = VehicleMatch.id;
                }

                if (!VehicleID.HasValue)
                {
                    UnturnedChat.Say(caller, U.Translate("command_generic_invalid_parameter"));
                    throw new WrongUsageOfCommandException(caller, this);
                }
            }

            VehicleMatch ??= (VehicleAsset)Assets.find(EAssetType.VEHICLE, VehicleID.Value);

            if (!SpawnPermissions.Instance.CheckPermission(false, VehicleMatch.id, Player, out bool WaiveCooldwons))
            {
                UnturnedChat.Say(caller, SpawnPermissions.Instance.Translate("vehicle_denied", VehicleMatch.id, VehicleMatch.vehicleName));

                if (WaiveCooldwons)
                {
                    throw new WrongUsageOfCommandException(caller, this);
                }

                return;
            }

            if (VehicleTool.giveVehicle(Player.Player, VehicleMatch.id))
            {
                Logger.Log(U.Translate("command_v_giving_console", Player.CharacterName, VehicleMatch.id));
                UnturnedChat.Say(caller, U.Translate("command_v_giving_private", VehicleMatch.vehicleName, VehicleMatch.id));
            }
            else
            {
                UnturnedChat.Say(caller, U.Translate("command_v_giving_failed_private", VehicleMatch.vehicleName, VehicleMatch.id));
            }
        }