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; }
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); }
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); } }
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); }
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"))); }
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); } }
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; } } } }
// 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; } }
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; } } }
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)); }
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; } } } }
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())); } } } }
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; } }
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; } }
private void setEngine(EEngine engine) { VehicleAsset asset = car.asset; asset.GetType().GetField("_engine", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, engine); }
private void setLockMouse(bool lockMouse) { VehicleAsset asset = car.asset; asset.GetType().GetField("_hasLockMouse", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, lockMouse); }
private void updateMaxSpeed() { VehicleAsset asset = car.asset; asset.GetType().GetField("_speedMax", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(asset, car_speed); }
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; } }
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; } } }
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; }
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)); } }
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)); } }