C#:
// #define TESTING
#define EDITING_MODE
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Epic.OnlineServices.UserInfo;
using Facepunch;
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 Oxide.Plugins.DailyRewardsExtensionMethods;
using Rust;
using UnityEngine;
using Color = UnityEngine.Color;
using Random = UnityEngine.Random;
#if CARBON
using Carbon.Base;
using Carbon.Modules;
#endif
namespace Oxide.Plugins {
[Info("Daily Rewards", "Mevent", "1.1.3")]
public class DailyRewards : RustPlugin {
#region Fields
[PluginReference]
private Plugin AFKAPI = null, ImageLibrary = null, WipeBlock = null, NoEscape = null, Notify = null, UINotify = null, LangAPI = null;
private static DailyRewards _instance;
#if CARBON
private ImageDatabaseModule imageDatabase;
#endif
private bool _enabledImageLibrary;
private const bool LangRu = false;
private const string Layer = "UI.DailyRewards", MainLayer = "UI.DailyRewards.Main", ModalLayer = "UI.DailyRewards.Modal", ModalMainLayer = "UI.DailyRewards.Modal.Main", SecondModalLayer = "UI.DailyRewards.Second.Modal", SecondModalMainLayer = "UI.DailyRewards.Second.Modal.Main", SelectItemModalLayer = "UI.DailyRewards.Select.Item.Modal", CMD_Main_Console = "UI_DailyRewards", PERM_EDIT = "dailyrewards.edit";
private TimeZoneInfo _pluginTimeZone;
private Dictionary<int, AwardInfo> _awardsByID = new();
#endregion
#region Config
private static Configuration _config;
private class Configuration {
[JsonProperty(PropertyName = LangRu ? "Команды" : "Commands", ObjectCreationHandling = ObjectCreationHandling.Replace)]
public string[] Commands = {
"rewards", "daily"
}
;
[JsonProperty(PropertyName = LangRu ? "Включить работу с Notify?" : "Work with Notify?")]
public bool UseNotify = true;
[JsonProperty(PropertyName = LangRu ? "Включить работу с LangAPI?" : "Work with LangAPI?")]
public bool UseLangAPI = true;
[JsonProperty(PropertyName = LangRu ? "Вайпать при новом сохранении карты" : "Wipe on new map save")]
public bool WipeOnNewSave = false;
[JsonProperty(PropertyName = LangRu ? "Настройка задержки" : "Cooldown Settings")]
public CooldownSettings Cooldown = new() {
Enabled = true, DefaultCooldown = 3600, Cooldowns = new Dictionary<string, float> {
["dailyrewards.vip"]
= 3100, ["dailyrewards.premium"] = 2600
}
, CheckAFK = false
}
;
[JsonProperty(PropertyName = LangRu ? "Ежедневные награды" : "Daily awards", ObjectCreationHandling = ObjectCreationHandling.Replace)]
public SortedDictionary<int, AwardDayInfo> DailyAwards = new() {
[1]
= new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/7Gs1yFn/image.png", Title = "GUNS", Awards = new List<AwardInfo> {
AwardInfo.CreateItem("pistol.revolver"), AwardInfo.CreateItem("ammo.pistol", 64)
}
, IsSpecialDay = false
}
, [2] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/RhL03Qn/image.png", Title = "GUNS", Awards = new List<AwardInfo> {
AwardInfo.CreateItem("pistol.m92"), AwardInfo.CreateItem("ammo.pistol", 128)
}
, IsSpecialDay = false
}
, [3] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/1ZFQKS7/image.png", Title = "GUNS", Awards = new List<AwardInfo> {
AwardInfo.CreateItem("rifle.semiauto"), AwardInfo.CreateItem("ammo.rifle", 64)
}
, IsSpecialDay = false
}
, [4] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/5BNXFPZ/image.png", Title = "GUNS", Awards = new List<AwardInfo> {
AwardInfo.CreateItem("rifle.m39"), AwardInfo.CreateItem("ammo.rifle", 128)
}
, IsSpecialDay = false
}
, [5] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/Cbz55sP/image.png", Title = "GUNS", Awards = new List<AwardInfo> {
AwardInfo.CreateItem("rifle.ak"), AwardInfo.CreateItem("ammo.rifle", 128), AwardInfo.CreateItem("ammo.rifle", 128)
}
, IsSpecialDay = false
}
, [6] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/NZnjSFz/kuyura.png", Title = "CASH", Awards = new List<AwardInfo> {
AwardInfo.CreateCommand("deposit %steamid% 100", 1, "https://i.ibb.co/NZnjSFz/kuyura.png")
}
, IsSpecialDay = false
}
, [7] = new AwardDayInfo {
Enabled = true, Image = "https://i.ibb.co/NZnjSFz/kuyura.png", Title = "CASH", Awards = new List<AwardInfo> {
AwardInfo.CreateCommand("deposit %steamid% 1000", 1, "https://i.ibb.co/NZnjSFz/kuyura.png")
}
, IsSpecialDay = true
}
}
;
[JsonProperty(PropertyName = LangRu ? "Настройки инвентаря" : "Inventory settings")]
public InventorySettings Inventory = new() {
Enabled = true, RetainItemsOnWipe = true, UseCooldownAfterWipe = false, CooldownAfterWipe = 0, UseBuildingBlocked = false, UseCombatBlocked = false, UseRaidBlocked = false
}
;
[JsonProperty(PropertyName = LangRu ? "Разрешение (прим: dailyrewards.use)" : "Permission (ex: dailyrewards.use)")]
public string Permission = "dailyrewards.use";
[JsonProperty(PropertyName = LangRu ? "Настройки сброса дня" : "Daily reset settings")]
public ResetSettings Reset = new() {
TimeZone = "Europe/London", Time = "05:00"
}
;
[JsonProperty(PropertyName = LangRu ? "Настройки оповещений" : "Notification settings")]
public NotificationsSettings Notifications = new() {
OnCooldownEnded = new NotificationsSettings.CooldownEnded {
Type = 2130354, ShowOnPlayerConnected = false, ShowOnCooldownEnded = false
}
, HasCooldown = new NotificationsSettings.CooldownHas {
Type = 2130355, ShowOnPlayerConnected = false
}
, PickedUpDailyReward = new NotificationsSettings.TakedDay {
Type = 2130356, ShowOnPlayerPickedUpReward = true
}
}
;
[JsonProperty(PropertyName = LangRu ? "Показывать интерфейс с наградами когда игрок подключился к серверу?" : "Show UI with rewards when player connects to server?")]
public bool ShowUIWhenPlayerConnected = false;
[JsonProperty(PropertyName = LangRu ? "Настройки UI" : "UI settings")]
public InterfaceSettings UI = InterfaceSettings.GenerateFullscreenTemplate();
[JsonProperty(PropertyName = LangRu ? "Настройки UI в меню" : "Menu UI settings")]
public InterfaceSettings MenuUI = InterfaceSettings.GenerateMenuTemplateV2();
public VersionNumber Version;
#region Helpers
public AwardDayInfo GetDailyAwards(int day) {
return DailyAwards.GetValueOrDefault(day);
}
#endregion
}
private abstract class Switchable {
[JsonProperty(PropertyName = LangRu ? "Включено" : "Enabled")]
public bool Enabled;
}
private class NotificationsSettings {
[JsonProperty(PropertyName = LangRu ? "При окончании задержки" : "On Cooldown Ended")]
public CooldownEnded OnCooldownEnded;
[JsonProperty(PropertyName = LangRu ? "При наличии задержки" : "Has Cooldown")]
public CooldownHas HasCooldown;
[JsonProperty(PropertyName = LangRu ? "При получении ежедневной награды" : "Picked up daily reward")]
public TakedDay PickedUpDailyReward;
public class TakedDay {
[JsonProperty(PropertyName = LangRu ? "Тип" : "Type")]
public int Type;
[JsonProperty(PropertyName = LangRu ? "Показывать когда игрок забрал ежедневную награду?" : "Show when the player has picked up the daily reward?")]
public bool ShowOnPlayerPickedUpReward;
public void Show(BasePlayer player) {
_instance.SendNotify(player, NotifyTakedAward, Type);
}
}
public class CooldownEnded {
[JsonProperty(PropertyName = LangRu ? "Тип" : "Type")]
public int Type;
[JsonProperty(PropertyName = LangRu ? "Показывать при подключении игрока к серверу?" : "Show when a player has connected to the server?")]
public bool ShowOnPlayerConnected;
[JsonProperty(PropertyName = LangRu ? "Показывать при окончании задержки?" : "Show when the cooldown is over?")]
public bool ShowOnCooldownEnded;
public void Show(BasePlayer player) {
_instance.SendNotify(player, NotifyCooldownEnded, Type);
}
}
public class CooldownHas {
[JsonProperty(PropertyName = LangRu ? "Тип" : "Type")]
public int Type;
[JsonProperty(PropertyName = LangRu ? "Показывать при подключении игрока к серверу?" : "Show when a player has connected to the server?")]
public bool ShowOnPlayerConnected;
public void Show(BasePlayer player, string leftTime) {
_instance.SendNotify(player, NotifyHasCooldown, Type, leftTime);
}
}
}
private class InterfaceSettings {
#region Fields
[JsonProperty(PropertyName = LangRu? "Ширина награды" : "Award Width")]
public float AwardWidth;
[JsonProperty(PropertyName = LangRu? "Высота награды" : "Award Height")]
public float AwardHeight;
[JsonProperty(PropertyName = LangRu? "Отступ по X между наградами" : "Award Indent (X)")]
public float AwardIndentX;
[JsonProperty(PropertyName = LangRu? "Количество наград на линии" : "Awards On Line")]
public int AwardsOnLine;
[JsonProperty(PropertyName = LangRu ? "Отступ сверху" : "Up Indent")]
public float UpIndent;
[JsonProperty(PropertyName = LangRu ? "Цвет доступного дня" : "Available Day Color")]
public IColor AvaiableDayColor;
[JsonProperty(PropertyName = LangRu ? "Фон" : "Background")]
public BackgroundSettings Background;
[JsonProperty(PropertyName = LangRu ? "Изображение при отсутствии награды" : "No Award Image")]
public string NoAwardImage;
[JsonProperty(PropertyName = LangRu ? "Цвет заблокированного дня" : "Blocked Day Color")]
public IColor BlockedDayColor;
[JsonProperty(PropertyName = LangRu ? "Цвет заблокированного дня с задержкой" : "Blocked With Cooldown Day Color")]
public IColor BlockedWithCooldownDayColor;
[JsonProperty(PropertyName = LangRu ? "Изображение кнопки Назад" : "Button Back Image")]
public string ButtonBackImage;
[JsonProperty(PropertyName = LangRu ? "Изображение кнопки Вперёд" : "Button Next Image")]
public string ButtonNextImage;
[JsonProperty(PropertyName = LangRu ? "Изображение иконки редактирования" : "Edit Image")]
public string EditImage;
[JsonProperty(PropertyName = LangRu ? "Цвет особого дня" : "Special Day Color")]
public IColor SpecialDayColor;
[JsonProperty(PropertyName = LangRu ? "Изображение особого дня на финальном дне" : "Special day Image for the final day")]
public string SpecialDayImageForFinalDay;
[JsonProperty(PropertyName = LangRu ? "Цвет полосы прогресса" : "Progress Bar Color")]
public IColor ProgressBarColor;
[JsonProperty(PropertyName = LangRu ? "Изображение иконки Rust" : "Rust Icon Image")]
public string RustIconImage;
[JsonProperty(PropertyName = LangRu ? "Изображение секретного дня" : "Secret Day Image")]
public string SecretDayImage;
[JsonProperty(PropertyName = LangRu ? "Изображение иконки выбора предмета" : "Select Item Image")]
public string SelectItemImage;
[JsonProperty(PropertyName = LangRu ? "Показывать изображение на секретном дне?" : "Show image on secret day?")]
public bool ShowImageOnSecretDay;
[JsonProperty(PropertyName = LangRu ? "Цвет полученного дня" : "Taked Day Color")]
public IColor TakedDayColor;
[JsonProperty(PropertyName = LangRu ? "Использовать цвет для полностью заполненной полосы прогресса" : "Use color for a fully filled progress bar?")]
public bool UseFullyFilledProgressBarColor;
[JsonProperty(PropertyName = LangRu ? "Цвет полностью заполненной полосы прогресса" : "Fully Filled Progress Bar Color")]
public IColor FullyFilledProgressBarColor;
[JsonProperty(PropertyName = LangRu ? "Использовать цвет для особого дня?" : "Use color for the special day?")]
public bool UseSpecialDayColor;
[JsonProperty(PropertyName = LangRu ? "Основная панель" : "Main Panel")]
public ImageSettings ContentPanel;
[JsonProperty(PropertyName = LangRu ? "Заголовок плагина" : "Plugin title")]
public TextSettings TitlePlugin;
[JsonProperty(PropertyName = LangRu ? "Описание плагина" : "Plugin description")]
public TextSettings DescriptionPlugin;
[JsonProperty(PropertyName = LangRu? "Показать линию?" : "Show line?")]
public bool ShowLine;
[JsonProperty(PropertyName = LangRu? "Линия" : "Line")]
public ImageSettings HeaderLine = new();
[JsonProperty(PropertyName = LangRu ? "Кнопка инвентаря" : "Inventory button")]
public ButtonSettings InventoryButton;
[JsonProperty(PropertyName = LangRu ? "Кнопка закрытия" : "Close button")]
public ButtonSettings CloseButton;
[JsonProperty(PropertyName = LangRu ? "Кнопка настроек" : "Settings button")]
public ImageSettings SettingsButton;
[JsonProperty(PropertyName = LangRu ? "Кнопка Назад (активная)" : "Back page button (active)")]
public ButtonSettings PageButtonBackWhenActive;
[JsonProperty(PropertyName = LangRu ? "Кнопка Назад (неактивная)" : "Back page button (inactive)")]
public ButtonSettings PageButtonBackWhenInactive;
[JsonProperty(PropertyName = LangRu ? "Кнопка Вперёд (активная)" : "Next page button (active)")]
public ButtonSettings PageButtonNextWhenActive;
[JsonProperty(PropertyName = LangRu ? "Кнопка Вперёд (неактивная)" : "Next page button (inactive)")]
public ButtonSettings PageButtonNextWhenInactive;
[JsonProperty(PropertyName = LangRu ? "Фон полосы прогресса" : "Progress bar background")]
public ImageSettings ProgressBarBackground;
[JsonProperty(PropertyName = LangRu ? "Панель задержки" : "Cooldown panel")]
public ImageSettings CooldownPanel;
[JsonProperty(PropertyName = LangRu ? "Заголовок задержки" : "Cooldown title")]
public TextSettings CooldownTitle;
[JsonProperty(PropertyName = LangRu ? "Панель оставшихся дней" : "Left Days panel")]
public ImageSettings LeftDaysPanel;
[JsonProperty(PropertyName = LangRu ? "Заголовок оставшихся дней" : "Left Days title")]
public TextSettings LeftDaysTitle;
[JsonProperty(PropertyName = LangRu ? "Количество оставшихся дней" : "Left Days amount")]
public TextSettings LeftDaysAmount;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Кнопка Назад (активная)" : "[Award Info] Back page button (active)")]
public ButtonSettings AwardInfoPageButtonBackWhenActive;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Кнопка Назад (неактивная)" : "[Award Info] Back page button (inactive)")]
public ButtonSettings AwardInfoPageButtonBackWhenInactive;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Кнопка Вперёд (активная)" : "[Award Info] Next page button (active)")]
public ButtonSettings AwardInfoPageButtonNextWhenActive;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Кнопка Вперёд (неактивная)" : "[Award Info] Next page button (inactive)")]
public ButtonSettings AwardInfoPageButtonNextWhenInactive;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Количество страниц" : "[Award Info] Pages amount")]
public TextSettings AwardInfoPagesNumber;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Кнопка закрытия" : "[Award Info] Close button")]
public ButtonSettings AwardInfoCloseButton;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Заголовок" : "[Award Info] Title")]
public TextSettings AwardInfoTitle;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Панель" : "[Award Info] Panel")]
public ImageSettings AwardInfoPanel;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Панель (в режиме редактирования)" : "[Award Info] Panel (in editing mode)")]
public ImageSettings AwardInfoPanelInEditing;
[JsonProperty(PropertyName = LangRu ? "[Информация о награде] Цвет фона предмета" : "[Award Info] Item background color")]
public IColor AwardInfoItemBackgroundColor;
[JsonProperty(PropertyName = LangRu ? "Настройка инвентаря" : "Inventory settings")]
public InventoryUI Inventory = new();
#endregion Fields
#region Classes
public class InventoryUI {
[JsonProperty(PropertyName = LangRu ? "Заголовок" : "Title")]
public TextSettings Title;
[JsonProperty(PropertyName = LangRu ? "Описание" : "Description")]
public TextSettings Description;
[JsonProperty(PropertyName = LangRu ? "Кнопка Назад" : "Back Button")]
public ButtonSettings ButtonBack;
[JsonProperty(PropertyName = LangRu ? "Кнопка Закрыть" : "Close Button")]
public ButtonSettings ButtonClose;
[JsonProperty(PropertyName = LangRu? "Показать линию?" : "Show line?")]
public bool ShowLine;
[JsonProperty(PropertyName = LangRu? "Линия" : "Line")]
public ImageSettings Line = new();
[JsonProperty(PropertyName = LangRu? "Ширина предмета в инвентаре" : "Inventory Item Width")]
public float InventoryItemWidth;
[JsonProperty(PropertyName = LangRu? "Высота предмета в инвентаре" : "Inventory Item Height")]
public float InventoryItemHeight;
[JsonProperty(PropertyName = LangRu? "Отступ между предметами в инвентаре (X)" : "Inventory Items Margin (X)")]
public float InventoryItemMarginX;
[JsonProperty(PropertyName = LangRu? "Отступ между предметами в инвентаре (Y)" : "Inventory Items Margin (Y)")]
public float InventoryItemMarginY;
[JsonProperty(PropertyName = LangRu? "Количество предметов на строке в инвентаре" : "Inventory Items On Line")]
public int InventoryItemsOnLine;
[JsonProperty(PropertyName = LangRu? "Максимальное количество строк предметов в инвентаре" : "Inventory Max Items Lines")]
public int InventoryMaxItemsLines;
[JsonProperty(PropertyName = LangRu? "Отступ сверху для предметов в инвентаре" : "Top indent for items in inventory")]
public float InventoryItemsTopIndent;
#region Public Methods
public int GetInventoryTotalAmount() {
return InventoryMaxItemsLines * InventoryItemsOnLine;
}
#endregion
}
#endregion
#region Templates
public static InterfaceSettings GenerateFullscreenTemplate() {
return new InterfaceSettings {
AwardWidth = 145, AwardHeight = 215, AwardIndentX = 10, AwardsOnLine = 7, UpIndent = 15, Background = new BackgroundSettings {
AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0", DisplayType = "Overlay", Sprite = "assets/content/textures/generic/fulltransparent.tga", Image = "https://i.ibb.co/K6LTT51/image-1.png", Material = string.Empty, Color = IColor.Create("#FFFFFF")
}
, NoAwardImage = "https://i.ibb.co/sW7csSS/image.png", ShowImageOnSecretDay = false, SecretDayImage = "https://i.ibb.co/P4K4HvY/image.png", EditImage = "https://i.ibb.co/XyJfGSv/image.png", SelectItemImage = "https://i.ibb.co/pJF7XJN/search.png", RustIconImage = "https://i.ibb.co/Tbt6ZWS/image.png", TakedDayColor = IColor.Create("#525557"), AvaiableDayColor = IColor.Create("#EF5125"), BlockedDayColor = IColor.Create("#525557"), BlockedWithCooldownDayColor = IColor.Create("#525557"), UseSpecialDayColor = false, ContentPanel = new ImageSettings {
AnchorMin = "0 0.5", AnchorMax = "1 0.5", OffsetMin = "40 -100", OffsetMax = "-40 115", Color = IColor.Create("#000000", 0)
}
, TitlePlugin = new TextSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-537.5 160", OffsetMax = "537.5 225", Align = TextAnchor.UpperLeft, IsBold = true, FontSize = 52, Color = IColor.Create("#DCDCDC")
}
, DescriptionPlugin = new TextSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-537.5 35", OffsetMax = "537.5 150", Align = TextAnchor.UpperLeft, IsBold = false, FontSize = 20, Color = IColor.Create("#FFFFFF", 90)
}
, ShowLine = false, HeaderLine = new ImageSettings(), InventoryButton = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-180 -55", OffsetMax = "-90 -15", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125"), Sprite = string.Empty, Material = string.Empty, Image = string.Empty, ImageColor = IColor.Create("#FFFFFF")
}
, CloseButton = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-80 -55", OffsetMax = "-40 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125"), Sprite = "assets/icons/close.png", Material = null, Image = string.Empty, ImageColor = IColor.Create("#FFFFFF")
}
, SettingsButton = new ImageSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-225 -55", OffsetMax = "-185 -15", Color = IColor.Create("#519229")
}
, PageButtonBackWhenActive = new ButtonSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-590 -135", OffsetMax = "-560 -105", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#EF5125")
}
, PageButtonBackWhenInactive = new ButtonSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-590 -135", OffsetMax = "-560 -105", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, PageButtonNextWhenActive = new ButtonSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "560 -135", OffsetMax = "590 -105", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#EF5125")
}
, PageButtonNextWhenInactive = new ButtonSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "560 -135", OffsetMax = "590 -105", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, ProgressBarBackground = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-537.5 -255", OffsetMax = "537.5 -250", Sprite = string.Empty, Material = string.Empty, Image = string.Empty, Color = IColor.Create("#646668")
}
, CooldownPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-100 -305", OffsetMax = "120 -275", Color = IColor.Create("#EF5125")
}
, CooldownTitle = new TextSettings {
AnchorMin = "0 0", AnchorMax = "0 1", OffsetMin = "-450 0", OffsetMax = "-10 0", Align = TextAnchor.MiddleRight, IsBold = false, FontSize = 20, Color = IColor.Create("#FFFFFF", 90)
}
, LeftDaysPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "495 -300", OffsetMax = "550 -280", Color = IColor.Create("#EF5125")
}
, LeftDaysTitle = new TextSettings {
AnchorMin = "0 0", AnchorMax = "0 1", OffsetMin = "-200 0", OffsetMax = "-5 0", Align = TextAnchor.MiddleRight, IsBold = true, FontSize = 16, Color = IColor.Create("#FFFFFF", 90)
}
, LeftDaysAmount = new TextSettings {
AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 16, Color = IColor.Create("#FFFFFF", 90)
}
, SpecialDayColor = IColor.Create("#FF9A1E"), SpecialDayImageForFinalDay = "https://i.ibb.co/Zd1jcwz/image.png", ButtonBackImage = "https://i.ibb.co/27g86Sk/image.png", ButtonNextImage = "https://i.ibb.co/SPT0vN1/image.png", ProgressBarColor = IColor.Create("#EF5125"), UseFullyFilledProgressBarColor = false, FullyFilledProgressBarColor = IColor.Create("#FF9A1E"), AwardInfoPageButtonBackWhenActive = new ButtonSettings {
AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "30 120", OffsetMax = "60 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#EF5125")
}
, AwardInfoPageButtonBackWhenInactive = new ButtonSettings {
AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "30 120", OffsetMax = "60 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, AwardInfoPageButtonNextWhenActive = new ButtonSettings {
AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-60 120", OffsetMax = "-30 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#EF5125")
}
, AwardInfoPageButtonNextWhenInactive = new ButtonSettings {
AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-60 120", OffsetMax = "-30 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, AwardInfoPagesNumber = new TextSettings {
AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-125 120", OffsetMax = "125 150", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 22, Color = IColor.Create("#FFFFFF", 40)
}
, AwardInfoCloseButton = new ButtonSettings {
AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-180 30", OffsetMax = "180 85", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 32, Color = IColor.Create("#FDEDE9"), ButtonColor = IColor.Create("#519229")
}
, AwardInfoTitle = new TextSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "0 -100", OffsetMax = "0 0", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 36, Color = IColor.Create("#DCDCDC")
}
, AwardInfoPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-210 -317.5", OffsetMax = "210 317.5", Color = IColor.Create("#202224")
}
, AwardInfoPanelInEditing = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-410 -317.5", OffsetMax = "10 317.5", Color = IColor.Create("#202224")
}
, AwardInfoItemBackgroundColor = IColor.Create("#38393F"), Inventory = new InventoryUI {
Title = new TextSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-550 160", OffsetMax = "550 225", Align = TextAnchor.UpperLeft, IsBold = true, FontSize = 52, Color = IColor.Create("#DCDCDC")
}
, Description = new TextSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-550 35", OffsetMax = "550 150", Align = TextAnchor.UpperLeft, IsBold = true, FontSize = 20, Color = IColor.Create("#FFFFFF", 90)
}
, ButtonBack = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-180 -55", OffsetMax = "-90 -15", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125")
}
, ButtonClose = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-80 -55", OffsetMax = "-40 -15", Color = IColor.Create("#000000", 0), ButtonColor = IColor.Create("#EF5125"), Sprite = "assets/icons/close.png"
}
, InventoryItemWidth = 120, InventoryItemHeight = 120, InventoryItemMarginX = 10, InventoryItemMarginY = 10, InventoryItemsOnLine = 8, InventoryMaxItemsLines = 2, InventoryItemsTopIndent = 65
}
}
;
}
public static InterfaceSettings GenerateMenuTemplateV1() {
return new InterfaceSettings {
AwardWidth = 145, AwardHeight = 215, AwardIndentX = 30, AwardsOnLine = 7, UpIndent = -125, Background = new BackgroundSettings {
AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0", DisplayType = "Overlay", Sprite = "assets/content/textures/generic/fulltransparent.tga", Image = "https://i.ibb.co/K6LTT51/image-1.png", Material = string.Empty, Color = IColor.Create("#FFFFFF")
}
, NoAwardImage = "https://i.ibb.co/sW7csSS/image.png", ShowImageOnSecretDay = false, SecretDayImage = "https://i.ibb.co/P4K4HvY/image.png", EditImage = "https://i.ibb.co/XyJfGSv/image.png", SelectItemImage = "https://i.ibb.co/pJF7XJN/search.png", RustIconImage = "https://i.ibb.co/Tbt6ZWS/image.png", TakedDayColor = IColor.Create("#525557"), AvaiableDayColor = IColor.Create("#EF5125"), BlockedDayColor = IColor.Create("#525557"), BlockedWithCooldownDayColor = IColor.Create("#525557"), UseSpecialDayColor = false, ContentPanel = new ImageSettings {
AnchorMin = "0 0.5", AnchorMax = "1 0.5", OffsetMin = "40 -140", OffsetMax = "-47 75", Color = IColor.Create("#000000", 0)
}
, TitlePlugin = new TextSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "40 -70", OffsetMax = "-45 -20", Align = TextAnchor.UpperLeft, IsBold = false, FontSize = 0, Color = IColor.Create("#000000", 0)
}
, DescriptionPlugin = new TextSettings {
AnchorMin = "0 1", AnchorMax = "0 1", OffsetMin = "40 -120", OffsetMax = "840 -20", Align = TextAnchor.MiddleLeft, IsBold = false, FontSize = 18, Color = IColor.Create("#E2DBD3", 90)
}
, ShowLine = false, HeaderLine = new ImageSettings(), InventoryButton = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-130 -90", OffsetMax = "-40 -50", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125"), Sprite = string.Empty, Material = string.Empty, Image = string.Empty, ImageColor = IColor.Create("#FFFFFF")
}
, CloseButton = new ButtonSettings(), SettingsButton = new ImageSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-175 -90", OffsetMax = "-135 -50", Color = IColor.Create("#519229")
}
, PageButtonBackWhenActive = new ButtonSettings {
AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "-30 -40", OffsetMax = "-10 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#EF5125")
}
, PageButtonBackWhenInactive = new ButtonSettings {
AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "-30 -40", OffsetMax = "-10 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, PageButtonNextWhenActive = new ButtonSettings {
AnchorMin = "1 0.5", AnchorMax = "1 0.5", OffsetMin = "10 -40", OffsetMax = "30 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#EF5125")
}
, PageButtonNextWhenInactive = new ButtonSettings {
AnchorMin = "1 0.5", AnchorMax = "1 0.5", OffsetMin = "10 -40", OffsetMax = "30 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, ProgressBarBackground = new ImageSettings {
AnchorMin = "0 0.5", AnchorMax = "1 0.5", OffsetMin = "40 -190", OffsetMax = "-47 -186", Color = IColor.Create("#646668")
}
, CooldownPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-112 -250", OffsetMax = "105 -220", Color = IColor.Create("#EF5125")
}
, CooldownTitle = new TextSettings {
AnchorMin = "0 0", AnchorMax = "0 1", OffsetMin = "-450 0", OffsetMax = "-10 0", Align = TextAnchor.MiddleRight, IsBold = false, FontSize = 20, Color = IColor.Create("#FFFFFF", 90)
}
, LeftDaysPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "340 -250", OffsetMax = "395 -220", Color = IColor.Create("#EF5125")
}
, LeftDaysTitle = new TextSettings {
AnchorMin = "0 0", AnchorMax = "0 1", OffsetMin = "-200 0", OffsetMax = "-5 0", Align = TextAnchor.MiddleRight, IsBold = true, FontSize = 16, Color = IColor.Create("#FFFFFF", 90)
}
, LeftDaysAmount = new TextSettings {
AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 16, Color = IColor.Create("#FFFFFF", 90)
}
, SpecialDayColor = IColor.Create("#FF9A1E"), SpecialDayImageForFinalDay = "https://i.ibb.co/Zd1jcwz/image.png", ButtonBackImage = "https://i.ibb.co/27g86Sk/image.png", ButtonNextImage = "https://i.ibb.co/SPT0vN1/image.png", ProgressBarColor = IColor.Create("#EF5125"), UseFullyFilledProgressBarColor = false, FullyFilledProgressBarColor = IColor.Create("#FF9A1E"), AwardInfoPageButtonBackWhenActive = new ButtonSettings {
AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "30 120", OffsetMax = "60 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#EF5125")
}
, AwardInfoPageButtonBackWhenInactive = new ButtonSettings {
AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "30 120", OffsetMax = "60 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/27g86Sk/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, AwardInfoPageButtonNextWhenActive = new ButtonSettings {
AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-60 120", OffsetMax = "-30 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#EF5125")
}
, AwardInfoPageButtonNextWhenInactive = new ButtonSettings {
AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-60 120", OffsetMax = "-30 150", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#000000", 00), Sprite = string.Empty, Material = string.Empty, Image = "https://i.ibb.co/SPT0vN1/image.png", ImageColor = IColor.Create("#FFFFFF", 20)
}
, AwardInfoPagesNumber = new TextSettings {
AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-125 120", OffsetMax = "125 150", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 22, Color = IColor.Create("#FFFFFF", 40)
}
, AwardInfoCloseButton = new ButtonSettings {
AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-180 30", OffsetMax = "180 85", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 32, Color = IColor.Create("#FDEDE9"), ButtonColor = IColor.Create("#519229")
}
, AwardInfoTitle = new TextSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "0 -100", OffsetMax = "0 0", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 36, Color = IColor.Create("#DCDCDC")
}
, AwardInfoPanel = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-210 -317.5", OffsetMax = "210 317.5", Color = IColor.Create("#202224")
}
, AwardInfoPanelInEditing = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-410 -317.5", OffsetMax = "10 317.5", Color = IColor.Create("#202224")
}
, AwardInfoItemBackgroundColor = IColor.Create("#38393F"), Inventory = new InventoryUI {
Title = new TextSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "40 -70", OffsetMax = "-45 -20", Align = TextAnchor.UpperLeft, IsBold = false, FontSize = 0, Color = IColor.Create("#000000", 0)
}
, Description = new TextSettings {
AnchorMin = "0 1", AnchorMax = "0 1", OffsetMin = "40 -120", OffsetMax = "840 -20", Align = TextAnchor.MiddleLeft, IsBold = false, FontSize = 18, Color = IColor.Create("#E2DBD3", 90)
}
, ShowLine = false, Line = new(), ButtonBack = new ButtonSettings {
AnchorMin = "1 1", AnchorMax = "1 1", OffsetMin = "-130 -90", OffsetMax = "-40 -50", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125")
}
, ButtonClose = new ButtonSettings(), InventoryItemWidth = 100, InventoryItemHeight = 100, InventoryItemMarginX = 8, InventoryItemMarginY = 8, InventoryItemsOnLine = 10, InventoryMaxItemsLines = 3, InventoryItemsTopIndent = 60
}
}
;
}
public static InterfaceSettings GenerateMenuTemplateV2() {
return new InterfaceSettings {
AwardWidth = 145, AwardHeight = 215, AwardIndentX = 32, AwardsOnLine = 5, UpIndent = -85, Background = new BackgroundSettings {
AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0", DisplayType = "Overlay", Sprite = "assets/content/textures/generic/fulltransparent.tga", Image = "https://i.ibb.co/K6LTT51/image-1.png", Material = string.Empty, Color = IColor.Create("#FFFFFF")
}
, NoAwardImage = "https://i.ibb.co/sW7csSS/image.png", ShowImageOnSecretDay = false, SecretDayImage = "https://i.ibb.co/P4K4HvY/image.png", EditImage = "https://i.ibb.co/XyJfGSv/image.png", SelectItemImage = "https://i.ibb.co/pJF7XJN/search.png", RustIconImage = "https://i.ibb.co/Tbt6ZWS/image.png", TakedDayColor = IColor.Create("#525557"), AvaiableDayColor = IColor.Create("#EF5125"), BlockedDayColor = IColor.Create("#525557"), BlockedWithCooldownDayColor = IColor.Create("#525557"), UseSpecialDayColor = false, ContentPanel = new ImageSettings {
AnchorMin = "0 0.5", AnchorMax = "1 0.5", OffsetMin = "40 -140", OffsetMax = "-47 75", Color = IColor.Create("#000000", 0)
}
, TitlePlugin = new TextSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "40 -70", OffsetMax = "-45 -20", Align = TextAnchor.UpperLeft, IsBold = true, FontSize = 32, Color = IColor.Create("#CF432D", 90)
}
, DescriptionPlugin = new TextSettings {
AnchorMin = "0 1", AnchorMax = "0 1", OffsetMin = "40 -200", OffsetMax = "840 -90", Align = TextAnchor.MiddleLeft, IsBold = false, FontSize = 18, Color = IColor.Create("#E2DBD3", 90)
}
, ShowLine = true, HeaderLine = new ImageSettings {
AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "40 -71", OffsetMax = "-82 -69", Color = IColor.Create("#373737", 50)
}
, InventoryButton = new ButtonSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "346 150", OffsetMax = "436 190", Align = TextAnchor.MiddleCenter, IsBold = true, FontSize = 14, Color = IColor.Create("#FFFFFF"), ButtonColor = IColor.Create("#EF5125"), Sprite = string.Empty, Material = string.Empty, Image = string.Empty, ImageColor = IColor.Create("#FFFFFF")
}
, CloseButton = new ButtonSettings(), SettingsButton = new ImageSettings {
AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "301 150", OffsetMax = "341 190", Color = IColor.Create("#519229")
}
, PageButtonBackWhenActive = new ButtonSettings {
AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "-30 -40", OffsetMax = "-10 -15", Align = TextAnchor.MiddleCenter, IsBold = false, FontSize = 14, Color = IColor.Create("
// ... [Code preview truncated due to length. Full source in attached file] ...