Иконка ресурса

FREE Battlepass : 1.37.13 1.37.13

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
//#define TESTING

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Random = UnityEngine.Random;

namespace Oxide.Plugins
{
	[Info("Battlepass", "Mevent", "1.37.13")]
	public class Battlepass : RustPlugin
	{
		#region Fields

		[PluginReference] private Plugin
			ImageLibrary = null,
			PlayerDatabase = null,
			Notify = null,
			UINotify = null,
			NoEscape = null;

		private const string Layer = "UI.Battlepass";
		private const string ModalLayer = "UI.Battlepass.Modal";

		private static Battlepass _instance;

		private bool _needUpdate;

		private Timer _updateMissions;

		private Timer _refreshCooldown;

		private bool _enabledImageLibrary;

		private readonly Dictionary<int, ItemCase> _itemById = new Dictionary<int, ItemCase>();

		private readonly Dictionary<BasePlayer, List<ItemCase>> _openedCaseItems =
			new Dictionary<BasePlayer, List<ItemCase>>();

		private List<GeneralMission> _generalMissions = new List<GeneralMission>();

		private List<int> _privateMissions = new List<int>();

		private readonly List<BasePlayer> _missionPlayers = new List<BasePlayer>();

		private DateTime _nextTime;

		private readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0);

		private enum MissionType
		{
			Gather,
			Kill,
			Craft,
			Look,
			Build,
			Upgrade,
			Fishing,
			LootCrate,
			Swipe,
			RaidableBases,
			RecycleItem,
			HackCrate,
			PurchaseFromNpc
		}

		private class GeneralMission
		{
			public readonly int ID;
			public readonly MissionConfig Mission;

			public GeneralMission(int id, MissionConfig mission)
			{
				ID = id;
				Mission = mission;
			}

			public void Check(BasePlayer player, ref PlayerData data, MissionType type, Item item = null,
				BaseEntity entity = null,
				int greade = 0, int itemAmount = -1,
				string mode = null,
				ItemDefinition definition = null)
			{
				var mission = Mission;

				if (!_config.Missions.ContainsKey(ID) || mission.Type != type) return;

				data.Missions.TryAdd(ID, 0);

				if (data.Missions[ID] >= mission.Amount) return;

				var amount = GetMissionAmount(mission, item, entity, greade, itemAmount, mode, definition);

				data.Missions[ID] += amount;

				if (data.Missions[ID] >= mission.Amount)
				{
					CompleteMission(player, mission);
					if (_config.ResetQuestAfterComplete) data.Missions[ID] = 0;
				}
			}
		}

		private enum ItemType
		{
			Item,
			Command,
			Plugin
		}

		#endregion

		#region Config

		private static Configuration _config;

		private class Configuration
		{
			[JsonProperty(PropertyName = "Command")]
			public string Command = "pass";

			[JsonProperty(PropertyName = "Commands for Missions page")]
			public string[] MissionsCommands = {"passmissions", "pmissions"};

			[JsonProperty(PropertyName = "Commands for Cases page")]
			public string[] CasesCommands = {"passcase"};

			[JsonProperty(PropertyName = "Commands for Inventory page")]
			public string[] InventoryCommands = {"passinv"};

			[JsonProperty(PropertyName = "Work with Notify?")]
			public bool UseNotify = true;

			[JsonProperty(PropertyName = "Permission")]
			public string Permission = "battlepass.use";

			[JsonProperty(PropertyName = "Background")]
			public string Background = "https://i.imgur.com/Duv8iVm.jpg";

			[JsonProperty(PropertyName = "Logo")] public readonly string Logo = "https://i.imgur.com/mhRO2AN.png";

			[JsonProperty(PropertyName = "Reset the quest after completing it?")]
			public bool ResetQuestAfterComplete = false;

			[JsonProperty(PropertyName = "Wipe Settings")]
			public WipeSettings Wipe = new WipeSettings
			{
				Players = false,
				Missions = false
			};

			[JsonProperty(PropertyName = "Currency 1")]
			public FirstCurrencyClass FirstCurrency = new FirstCurrencyClass
			{
				Image = "https://i.imgur.com/qhPQblv.png",
				useDefaultCur = true,
				AddHook = "Deposit",
				BalanceHook = "Balance",
				RemoveHook = "Withdraw",
				Plug = "Economics",
				Rates = new Dictionary<string, float>
				{
					["battlepass.vip"] = 2f,
					["battlepass.premium"] = 3f
				}
			};

			[JsonProperty(PropertyName = "Use 2nd currency?")]
			public bool useSecondCur = true;

			[JsonProperty(PropertyName = "Currency 2")]
			public SecondCurrencyClass SecondCurrency = new SecondCurrencyClass
			{
				Permission = "battlepass.vip",
				Image = "https://i.imgur.com/6aZllLI.png",
				useDefaultCur = true,
				AddHook = "Deposit",
				BalanceHook = "Balance",
				RemoveHook = "Withdraw",
				Plug = "Economics"
			};

			[JsonProperty(PropertyName = "Image Top Awards")]
			public string AdvanceAwardImg = "https://i.imgur.com/bUDH1sf.png";

			[JsonProperty(PropertyName = "Background for cases")]
			public string CaseBG = "https://i.imgur.com/tlMMjqc.png";

			[JsonProperty(PropertyName = "Cases", ObjectCreationHandling = ObjectCreationHandling.Replace)]
			public List<CaseClass> Cases = new List<CaseClass>
			{
				new CaseClass
				{
					DisplayName = "Case 'Pirate Treasure'",
					Permission = "battlepass.vip",
					Image = "https://i.imgur.com/tsPPUhg.png",
					FCost = 3000,
					PCost = 1500,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				},
				new CaseClass
				{
					DisplayName = "Legendary case",
					Permission = "battlepass.use",
					Image = "https://i.imgur.com/3mtbqji.png",
					FCost = 2000,
					PCost = 1000,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				},
				new CaseClass
				{
					DisplayName = "Master Case",
					Permission = "battlepass.use",
					Image = "https://i.imgur.com/NvHk5Sw.png",
					FCost = 1500,
					PCost = 750,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				},
				new CaseClass
				{
					DisplayName = "Professional case",
					Permission = "battlepass.use",
					Image = "https://i.imgur.com/kZyZqy9.png",
					FCost = 1000,
					PCost = 500,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				},
				new CaseClass
				{
					DisplayName = "Amateur case",
					Permission = "battlepass.use",
					Image = "https://i.imgur.com/5bur68a.png",
					FCost = 500,
					PCost = 250,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				},
				new CaseClass
				{
					DisplayName = "Newbie case",
					Permission = "",
					Image = "https://i.imgur.com/9KIoJ2G.png",
					FCost = 150,
					PCost = 75,
					Items = new List<ItemCase>
					{
						new ItemCase
						{
							Title = "Wood (2000 pcs.)",
							Chance = 80,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "wood",
							Skin = 0,
							Amount = 2000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Stones (3000 pcs.)",
							Chance = 70,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "stones",
							Skin = 0,
							Amount = 3000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Assault rifle",
							Chance = 50,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "rifle.ak",
							Skin = 0,
							Amount = 1,
							Command = string.Empty,
							PluginAward = new PluginAward()
						},
						new ItemCase
						{
							Title = "Sulfur (10000 pcs.)",
							Chance = 25,
							Type = ItemType.Item,
							Image = string.Empty,
							DisplayName = string.Empty,
							Shortname = "sulfur",
							Skin = 0,
							Amount = 10000,
							Command = string.Empty,
							PluginAward = new PluginAward()
						}
					}
				}
			};

			[JsonProperty(PropertyName = "Total missions per day")]
			public int MissionsCount = 7;

			[JsonProperty(PropertyName =
				"How many hours are missions updated?")]
			public int MissionHours = 24;

			[JsonProperty(PropertyName = "Settings shared missions",
				ObjectCreationHandling = ObjectCreationHandling.Replace)]
			public Dictionary<int, MissionConfig> Missions = new Dictionary<int, MissionConfig>
			{
				[1] = new MissionConfig
				{
					Description = "Collect 5000 stones",
					Type = MissionType.Gather,
					Shortname = "stones",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 5000,
					MainAward = 50,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 1031,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[2] = new MissionConfig
				{
					Description = "Kill 3 players",
					Type = MissionType.Kill,
					Shortname = "player",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 3,
					MainAward = 90,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10311,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[3] = new MissionConfig
				{
					Description = "Craft 15 rockets",
					Type = MissionType.Craft,
					Shortname = "ammo.rocket.basic",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 15,
					MainAward = 75,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 10312,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[4] = new MissionConfig
				{
					Description = "Loot 10 metal springs",
					Type = MissionType.Look,
					Shortname = "metalspring",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 10,
					MainAward = 50,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 10313,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[5] = new MissionConfig
				{
					Description = "Build 25 high exterior stone walls to protect your home",
					Type = MissionType.Build,
					Shortname = "wall.external.high.stone",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 25,
					MainAward = 100,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10314,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[6] = new MissionConfig
				{
					Description = "Upgrade 10 Foundations to Metal",
					Type = MissionType.Upgrade,
					Shortname = "foundation.prefab",
					Skin = 0,
					Grade = 3,
					Amount = 10,
					MainAward = 60,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10315,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[7] = new MissionConfig
				{
					Description = "Collect 10000 wood",
					Type = MissionType.Gather,
					Shortname = "wood",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 10000,
					MainAward = 50,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 10316,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[8] = new MissionConfig
				{
					Description = "Craft 3 Armored Doors",
					Type = MissionType.Craft,
					Shortname = "door.hinged.toptier",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 3,
					MainAward = 85,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 10317,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "rifle.ak",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 0
				},
				[9] = new MissionConfig
				{
					Description = "Catch 10 herring",
					Type = MissionType.Fishing,
					Shortname = "fish.herring",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 10,
					MainAward = 50,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				},
				[10] = new MissionConfig
				{
					Description = "Swipe the Blue Keycard on monuments 10 times",
					Type = MissionType.Swipe,
					Shortname = "keycard_blue",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 10,
					MainAward = 50,
					Mode = string.Empty,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				},
				[11] = new MissionConfig
				{
					Description = "Win the RaidableBases event 3 times",
					Type = MissionType.RaidableBases,
					Shortname = string.Empty,
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 3,
					MainAward = 50,
					Mode = string.Empty,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				},
				[12] = new MissionConfig
				{
					Description = "Recycle 15 Rifle Body",
					Type = MissionType.RecycleItem,
					Shortname = "riflebody",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 15,
					MainAward = 50,
					Mode = string.Empty,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				},
				[13] = new MissionConfig
				{
					Description = "Hack 3 locked crates",
					Type = MissionType.HackCrate,
					Shortname = "codelockedhackablecrate",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 3,
					MainAward = 50,
					Mode = string.Empty,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				},
				[14] = new MissionConfig
				{
					Description = "Buy 1000 scrap from bots",
					Type = MissionType.PurchaseFromNpc,
					Shortname = "scrap",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 1000,
					MainAward = 50,
					Mode = string.Empty,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 10318,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = false,
					SecondAward = 25
				}
			};

			[JsonProperty(PropertyName = "Settings challenge of the day",
				ObjectCreationHandling = ObjectCreationHandling.Replace)]
			public readonly Dictionary<int, MissionConfig> PrivateMissions = new Dictionary<int, MissionConfig>
			{
				[1] = new MissionConfig
				{
					Description = "Collect 5000 stones",
					Type = MissionType.Gather,
					Shortname = "stones",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 5000,
					MainAward = 50,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 10319,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				},
				[2] = new MissionConfig
				{
					Description = "Kill 3 players",
					Type = MissionType.Kill,
					Shortname = "player",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 3,
					MainAward = 90,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 103110,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				},
				[3] = new MissionConfig
				{
					Description = "Craft 15 rockets",
					Type = MissionType.Craft,
					Shortname = "ammo.rocket.basic",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 15,
					MainAward = 75,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 103111,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				},
				[4] = new MissionConfig
				{
					Description = "Loot 10 metal springs",
					Type = MissionType.Look,
					Shortname = "metalspring",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 10,
					MainAward = 50,
					UseAdvanceAward = true,
					AdvanceAward = new ItemCase
					{
						ID = 103112,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				},
				[5] = new MissionConfig
				{
					Description = "Build 25 high exterior stone walls to protect your home",
					Type = MissionType.Build,
					Shortname = "wall.external.high.stone",
					Skin = 0,
					Grade = 0,
					DisplayName = string.Empty,
					Amount = 25,
					MainAward = 100,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 103113,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				},
				[6] = new MissionConfig
				{
					Description = "Upgrade 10 Foundations to Metal",
					Type = MissionType.Upgrade,
					Shortname = "foundation.prefab",
					Skin = 0,
					Grade = 3,
					Amount = 10,
					MainAward = 60,
					UseAdvanceAward = false,
					AdvanceAward = new ItemCase
					{
						ID = 103114,
						Image = "https://i.imgur.com/IkEWGT8.png",
						Amount = 1,
						DisplayName = string.Empty,
						Shortname = "",
						Skin = 1230963555,
						Title = "Talon AK-47"
					},
					UseSecondAward = true,
					SecondAward = 25
				}
			};

			[JsonProperty(PropertyName = "Enable logging to the console?")]
			public readonly bool LogToConsole = true;

			[JsonProperty(PropertyName = "Enable logging to the file?")]
			public readonly bool LogToFile = true;

			[JsonProperty(PropertyName = "PlayerDatabase")]
			public readonly PlayerDatabaseConf PlayerDatabase = new PlayerDatabaseConf(false, "Battlepass");

			[JsonProperty(PropertyName = "Loot Settings (for storage containers)")]
			public readonly LootSettings StorageLoot = new LootSettings
			{
				Enabled = true,
				Containers = new Dictionary<string, List<ulong>>
				{
					["box.wooden.large"] = new List<ulong>
					{
						2764183607,
						624269671
					},
					["stocking_small_deployed"] = new List<ulong>
					{
						0
					}
				}
			};

			[JsonProperty(PropertyName = "Cooldown After Wipe (0 - disable)")]
			public CooldownSettings WipeCooldown = new CooldownSettings
			{
				Inventory = 0
			};

			[JsonProperty(PropertyName = "Give out case items immediately to the player?")]
			public bool CaseItemsToPlayer = false;

			[JsonProperty(PropertyName = "Give an advance reward to the player's inventory?")]
			public bool AdRewardToInventory = false;

			[JsonProperty(PropertyName = "Notify the player when a mission is completed?")]
			public bool NotifyMissionCompleted = true;

			[JsonProperty(PropertyName = "Block (NoEscape)")]
			public bool BlockNoEscape = false;

			[JsonProperty(PropertyName = "Interface")]
			public UserInterface UI = new UserInterface
			{
				Header = new UserInterface.HeaderInfo(),
				Colors = new UserInterface.ColorsData(),
				Missions = new UserInterface.MissionsScreen(),
				Cases = new UserInterface.CasesScreen(),
				CaseInfo = new UserInterface.CasesInfoScreen(),
				Inventory = new UserInterface.InventoryScreen()
			};

			[JsonProperty(PropertyName = "Tabs")] public TabsSettings Tabs = new TabsSettings
			{
				Margin = 0f,
				Missions = new TabInterface(true, 0, 256f, 256f, "https://i.imgur.com/f2GN8m7.png",
					new UserInterface.InterfacePosition
					{
						AnchorMin = "0.5 0.5",
						AnchorMax = "0.5 0.5",
						OffsetMin = "-105 -75",
						OffsetMax = "105 135"
					},
					new UserInterface.Button
					{
						AnchorMin = "0.5 0",
						AnchorMax = "0.5 0",
						OffsetMin = "-105 5",
						OffsetMax = "105 35",
						Align = TextAnchor.MiddleCenter,
						FontSize = 16,
						Font = "robotocondensed-bold.ttf",
						ButtonColor = new UserInterface.ColorsData.IColor("#000000",
							00),
						Color = "1 1 1 1",
						FadeIn = 0
					},
					"Mission btn",
					"UI_Battlepass missions",
					false),
				Cases = new TabInterface(true, 1, 256f, 256f, "https://i.imgur.com/2lMM2bS.png",
					new UserInterface.InterfacePosition
					{
						AnchorMin = "0.5 0.5",
						AnchorMax = "0.5 0.5",
						OffsetMin = "-105 -75",
						OffsetMax = "105 135"
					},
					new UserInterface.Button
					{
						AnchorMin = "0.5 0",
						AnchorMax = "0.5 0",
						OffsetMin = "-105 5",
						OffsetMax = "105 35",
						Align = TextAnchor.MiddleCenter,
						Color = "1 1 1 1",
						FadeIn = 0,
						FontSize = 16,
						Font = "robotocondensed-bold.ttf",
						ButtonColor = new UserInterface.ColorsData.IColor("#000000",
							00)
					},
					"Cases btn",
					"UI_Battlepass cases",
					false),
				Inventory = new TabInterface(true, 2, 256f, 256f, "https://i.imgur.com/vvJe7KO.png",
					new UserInterface.InterfacePosition
					{
						AnchorMin = "0.5 0.5",
						AnchorMax = "0.5 0.5",
						OffsetMin = "-105 -75",
						OffsetMax = "105 135"
					},
					new UserInterface.Button
					{
						AnchorMin = "0.5 0",
						AnchorMax = "0.5 0",
						OffsetMin = "-105 5",
						OffsetMax = "105 35",
						Align = TextAnchor.MiddleCenter,
						Color = "1 1 1 1",
						FadeIn = 0,
						FontSize = 16,
						Font = "robotocondensed-bold.ttf",
						ButtonColor = new UserInterface.ColorsData.IColor("#000000",
							00)
					},
					"Inventory btn",
					"UI_Battlepass inventory",
					false),
				CustomTabs = new List<TabInterface>
				{
					new TabInterface(false, 3, 256f, 256f, "https://i.imgur.com/C83Rprq.png",
						new UserInterface.InterfacePosition
						{
							AnchorMin = "0.5 0.5",
							AnchorMax = "0.5 0.5",
							OffsetMin = "-105 -75",
							OffsetMax = "105 135"
						},
						new UserInterface.Button
						{
							AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-105 5", OffsetMax = "105 35",
							Align = TextAnchor.MiddleCenter,
							FontSize = 16,
							ButtonColor = new UserInterface.ColorsData.IColor("#000000", 00)
						},
						"Leaders",
						"leaders",
						true)
				}
			};

			public VersionNumber Version;
		}

		private class TabsSettings
		{
			[JsonProperty(PropertyName = "Margin")]
			public float Margin;

			[JsonProperty(PropertyName = "Missions")]
			public TabInterface Missions;

			[JsonProperty(PropertyName = "Cases")] public TabInterface Cases;

			[JsonProperty(PropertyName = "Inventory")]
			public TabInterface Inventory;

			[JsonProperty(PropertyName = "Custom Tabs", ObjectCreationHandling = ObjectCreationHandling.Replace)]
			public List<TabInterface> CustomTabs;

			[JsonIgnore] private List<TabInterface> _tabsList;

			[JsonIgnore]
			public List<TabInterface> Tabs
			{
				get
				{
					if (_tabsList == null)
						_tabsList = GetTabs();

					return _tabsList;
				}
			}

			private List<TabInterface> GetTabs()
			{
				var list = new List<TabInterface>
				{
					Missions,
					Cases,
					Inventory
				};

				list.AddRange(CustomTabs);

				list.Sort((x, y) => x.Index.CompareTo(y.Index));

				return list;
			}
		}

		private class TabInterface
		{
			[JsonProperty(PropertyName = "Enabled")]
			public bool Enabled;

			[JsonProperty(PropertyName = "Index")] public int Index;

			[JsonProperty(PropertyName = "Width")] public float Width;

			[JsonProperty(PropertyName = "Height")]
			public float Height;

			[JsonProperty(PropertyName = "Image")] public string Image;

			[JsonProperty(PropertyName = "Image Position")]
			public UserInterface.InterfacePosition ImagePosition;

			[JsonProperty(PropertyName = "Button")]
			public UserInterface.Button Button;

			[JsonProperty(PropertyName = "Lang Key")]
			public string LangKey;

			[JsonProperty(PropertyName = "Command")]
			public string Command;

			[JsonProperty(PropertyName = "Close Menu")]
			public bool CloseMenu;

			public TabInterface(bool enabled, int index, float width, float height, string image,
				UserInterface.InterfacePosition imagePosition, UserInterface.Button button,
				string langKey,
				string command,
				bool closeMenu)
			{
				Enabled = enabled;
				Index = index;
				Width = width;
				Height = height;
				Image = image;
				ImagePosition = imagePosition;
				Button = button;
				LangKey = langKey;
				Command = command;
				CloseMenu = closeMenu;
			}
		}

		private class WipeSettings
		{
			[JsonProperty(PropertyName = "Wipe Players?")]
			public bool Players;

			[JsonProperty(PropertyName = "Wipe Missions?")]
			public bool Missions;
		}

		private class UserInterface
		{
			[JsonProperty(PropertyName = "Header")]
			public HeaderInfo Header;

			[JsonProperty(PropertyName = "Colors")]
			public ColorsData Colors;

			[JsonProperty(PropertyName = "Missions")]
			public MissionsScreen Missions;

			[JsonProperty(PropertyName = "Cases")] public CasesScreen Cases;

			[JsonProperty(PropertyName = "Case Page")]
			public CasesInfoScreen CaseInfo;

			[JsonProperty(PropertyName = "Inventory")]
			public InventoryScreen Inventory;

			public class InterfacePosition
			{
				public string AnchorMin;

				public string AnchorMax;

				public string OffsetMin;

				public string OffsetMax;
			}

			public class Label : InterfacePosition
			{
				[JsonProperty("FontSize")] public int FontSize = 14;

				[JsonProperty("Font")] public string Font = "robotocondensed-bold.ttf";

				[JsonConverter(typeof(StringEnumConverter))] [JsonProperty("Align")]
				public TextAnchor Align = TextAnchor.UpperLeft;

				[JsonProperty("Color")] public string Color = "1 1 1 1";

				[JsonProperty("FadeIn")] public float FadeIn;
			}

			public class Button : Label
			{
				[JsonProperty(PropertyName = "Button Color")]
				public ColorsData.IColor ButtonColor;
			}

			public class OutlineInfo
			{
				[JsonProperty(PropertyName = "Color")]
				public ColorsData.IColor Color = new ColorsData.IColor("#FFFFFF");

				[JsonProperty(PropertyName = "Size")] public string Size = "1.5";
			}

			public class ColorsData
			{
				[JsonProperty(PropertyName = "Color 1")]
				public IColor Color1 = new IColor("#E54D41");

				[JsonProperty(PropertyName = "Color 2")]
				public IColor Color2 = new IColor("#BF2E24");

				[JsonProperty(PropertyName = "Color 3")]
				public IColor Color3 = new IColor("#BD5C22");

				[JsonProperty(PropertyName = "Color 4")]
				public IColor Color4 = new IColor("#BD5C22", 40);

				[JsonProperty(PropertyName = "Color 5")]
				public IColor Color5 = new IColor("#000000", 00);

				public class IColor
				{
					[JsonProperty(PropertyName = "HEX")] public string Hex;

					[JsonProperty(PropertyName = "Opacity (0 - 100)")]
					public readonly float Alpha;

					[JsonIgnore] private string _color;

					[JsonIgnore]
					public string Get
					{
						get
						{
							if (string.IsNullOrEmpty(_color))
								_color = GetColor();

							return _color;
						}
					}

					private string GetColor()
					{
						if (string.IsNullOrEmpty(Hex)) Hex = "#FFFFFF";

						var str = Hex.Trim('#');
						if (str.Length != 6) throw new Exception(Hex);
						var r = byte.Parse(str.Substring(0, 2), NumberStyles.HexNumber);
						var g = byte.Parse(str.Substring(2, 2), NumberStyles.HexNumber);
						var b = byte.Parse(str.Substring(4, 2), NumberStyles.HexNumber);

						return $"{(double) r / 255} {(double) g / 255} {(double) b / 255} {Alpha / 100}";
					}

					public IColor()
					{
					}

					public IColor(string hex, float alpha = 100)
					{
						Hex = hex;
						Alpha = alpha;
					}
				}
			}

			public class HeaderInfo
			{
				[JsonProperty(PropertyName = "Height")]
				public float Height = 35f;

				[JsonProperty(PropertyName = "Logo Position")]
				public InterfacePosition Logo = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-350 -9",
					OffsetMax = "-250 9"
				};

				[JsonProperty(PropertyName = "Line")] public InterfacePosition Line = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-240.5 -9",
					OffsetMax = "-239.5 9"
				};

				[JsonProperty(PropertyName = "Player Name")]
				public InterfacePosition PlayerName = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-230 -9",
					OffsetMax = "80 9"
				};

				[JsonProperty(PropertyName = "First Currency")]
				public InterfacePosition FirstCurrency = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "230 -10",
					OffsetMax = "250 10"
				};

				[JsonProperty(PropertyName = "Balance of First Currency")]
				public Label BalanceFirstCurrency = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "0 -10",
					OffsetMax = "225 10",
					FontSize = 12,
					Align = TextAnchor.MiddleRight,
					Color = "1 1 1 1",
					FadeIn = 0,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Second Currency")]
				public InterfacePosition SecondCurrency = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "315 -10",
					OffsetMax = "335 10"
				};

				[JsonProperty(PropertyName = "Balance of Second Currency")]
				public Label BalanceSecondCurrency = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "0 -10",
					OffsetMax = "310 10",
					FontSize = 12,
					Align = TextAnchor.MiddleRight,
					Color = "1 1 1 1",
					FadeIn = 0,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Exit Button")]
				public Button Exit = new Button
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "200 295",
					OffsetMax = "320 315",
					Align = TextAnchor.MiddleRight,
					Color = "1 1 1 1",
					FadeIn = 0,
					FontSize = 16,
					Font = "robotocondensed-bold.ttf",
					ButtonColor = new ColorsData.IColor("#000000",
						00)
				};
			}

			public class MissionsScreen
			{
				[JsonProperty(PropertyName = "Back")] public Button Back = new Button
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "200 295",
					OffsetMax = "320 315",
					Align = TextAnchor.MiddleRight, FontSize = 16,
					ButtonColor = new ColorsData.IColor("#000000", 00)
				};

				[JsonProperty(PropertyName = "Private Mission | Progress Bar")]
				public InterfacePosition ProgressBar = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 230",
					OffsetMax = "-15 235"
				};

				[JsonProperty(PropertyName = "Private Mission | Progress Title")]
				public Label ProgressTitle = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 240",
					OffsetMax = "0 255",
					Align = TextAnchor.MiddleLeft,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | Progress Amount")]
				public Label ProgressAmount = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 240",
					OffsetMax = "-15 255",
					Align = TextAnchor.MiddleRight,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | Title")]
				public Label PMTitle = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 260",
					OffsetMax = "0 290",
					Align = TextAnchor.MiddleLeft,
					FontSize = 16
				};

				[JsonProperty(PropertyName = "Private Mission | Title Description")]
				public Label PMTitleDescription = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "15 260",
					OffsetMax = "320 290",
					Align = TextAnchor.MiddleLeft,
					FontSize = 16
				};

				[JsonProperty(PropertyName = "Private Mission | Description")]
				public Label PMDescription = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "15 200",
					OffsetMax = "325 255",
					Align = TextAnchor.UpperLeft,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | Title Award")]
				public Label PMTitleAward = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "15 195",
					OffsetMax = "150 215",
					Align = TextAnchor.MiddleLeft,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | First Currency Image")]
				public InterfacePosition FirstCurrencyImage = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "85 195",
					OffsetMax = "105 215"
				};

				[JsonProperty(PropertyName = "Private Mission | First Currency")]
				public Label FirstCurrency = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "55 195",
					OffsetMax = "80 215",
					Align = TextAnchor.MiddleRight,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | Second Currency Image")]
				public InterfacePosition SecondCurrencyImage = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "135 195",
					OffsetMax = "155 215"
				};

				[JsonProperty(PropertyName = "Private Mission | Second Currency")]
				public Label SecondCurrency = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "100 195",
					OffsetMax = "130 215",
					Align = TextAnchor.MiddleRight,
					FontSize = 11,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Private Mission | Line")]
				public InterfacePosition Line1 = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-335 164.5",
					OffsetMax = "325 165.5"
				};

				[JsonProperty(PropertyName = "Title")] public Label Title = new Label
				{
					AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-320 95", OffsetMax = "0 165",
					Align = TextAnchor.MiddleLeft,
					FontSize = 14
				};

				[JsonProperty(PropertyName = "Cooldown")]
				public Label Cooldown = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-150 95",
					OffsetMax = "150 165",
					Align = TextAnchor.MiddleCenter,
					FontSize = 14,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "Background for missions")]
				public InterfacePosition Background = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-355 55",
					OffsetMax = "310 55"
				};

				[JsonProperty(PropertyName = "Pages")] public InterfacePosition Pages = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "315 -115",
					OffsetMax = "325 95"
				};
			}

			public class CasesScreen
			{
				[JsonProperty(PropertyName = "Back")] public Button Back = new Button
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "200 295",
					OffsetMax = "320 315",
					Align = TextAnchor.MiddleRight, FontSize = 16,
					ButtonColor = new ColorsData.IColor("#000000", 00)
				};

				[JsonProperty(PropertyName = "Title")] public Label Title = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 250",
					OffsetMax = "0 290",
					Align = TextAnchor.MiddleLeft,
					FontSize = 26
				};

				[JsonProperty(PropertyName = "Up Indent for cases")]
				public float CaseUpIdent = 335;

				[JsonProperty(PropertyName = "Left Indent for cases")]
				public float CaseLeftIdent = 40;

				[JsonProperty(PropertyName = "Case Height")]
				public float CaseHeight = 195f;

				[JsonProperty(PropertyName = "Case Width")]
				public float CaseWidth = 205f;

				[JsonProperty(PropertyName = "Cases Margin")]
				public float CaseMargin = 10f;

				[JsonProperty(PropertyName = "Case Image")]
				public InterfacePosition CaseImage = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-70 -65",
					OffsetMax = "70 75"
				};

				[JsonProperty(PropertyName = "Case Look Button")]
				public Button CaseShow = new Button
				{
					AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-58 15", OffsetMax = "58 35",
					Align = TextAnchor.MiddleCenter,
					FontSize = 12,
					ButtonColor = new ColorsData.IColor("#000000", 00)
				};
			}

			public class CasesInfoScreen
			{
				[JsonProperty(PropertyName = "Amount Awards On Page")]
				public int AwardsOnPage = 10;

				[JsonProperty(PropertyName = "Back")] public Button Back = new Button
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "200 295",
					OffsetMax = "320 315",
					Align = TextAnchor.MiddleRight, FontSize = 16,
					ButtonColor = new ColorsData.IColor("#000000", 00)
				};

				[JsonProperty(PropertyName = "Title")] public Label Title = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 250",
					OffsetMax = "0 290",
					Align = TextAnchor.MiddleLeft,
					FontSize = 26
				};

				[JsonProperty(PropertyName = "Case Title")]
				public Label CaseTitle = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-320 200",
					OffsetMax = "0 250",
					Align = TextAnchor.MiddleLeft, FontSize = 18
				};

				[JsonProperty(PropertyName = "Case Image")]
				public InterfacePosition CaseImage = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-290 5",
					OffsetMax = "-110 185"
				};

				[JsonProperty(PropertyName = "Buy Amount")]
				public Label BuyAmount = new Label
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-310 -25",
					OffsetMax = "-110 -5",
					Align = TextAnchor.MiddleLeft,
					FontSize = 12,
					Font = "robotocondensed-regular.ttf"
				};

				[JsonProperty(PropertyName = "First Currency")]
				public InterfacePosition FirstCurrency = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-210 -30",
					OffsetMax = "-135 0"
				};

				[JsonProperty(PropertyName = "Second Currency")]
				public InterfacePosition SecondCurrency = new InterfacePosition
				{
					AnchorMin = "0.5 0.5",
					AnchorMax = "0.5 0.5",
					OffsetMin = "-130 -30",
					OffsetMax = "-55 0"
				};

				[JsonProperty(PropertyName = "Awards Title")]
				public Label AwardsTitle = ne
// ... [Code preview truncated due to length. Full source in attached file] ...

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху