using Newtonsoft.Json; using Oxide.Core; using Oxide.Core.Libraries.Covalence; using Oxide.Plugins; using System; using UnityEngine; using CompanionServer; namespace Oxide.Plugins // Here it begins { [Info("WelcomeConsole", "Disguise", "0.2.2")] [Description("Give a warm welcome to your players in a fancy way.")] class WelcomeConsole : RustPlugin { #region Config private static ConfigData configData; private class ConfigData { [JsonProperty(PropertyName = "Texts")] public Text text { get; set; } [JsonProperty(PropertyName = "Text Colors")] public TextColor textcolor { get; set; } [JsonProperty(PropertyName = "Text Sizes")] public TextSize textsize { get; set; } [JsonProperty(PropertyName = "Chat")] public Chat chat { get; set; } [JsonProperty(PropertyName = "Admin")] public Admin admin { get; set; } [JsonProperty(PropertyName = "Version")] public VersionNumber version { get; set; } } private class Text { [JsonProperty(PropertyName = "Welcome")] public string welcome { get; set; } [JsonProperty(PropertyName = "Server Name")] public string servername { get; set; } [JsonProperty(PropertyName = "Server Description")] public string serverdescription { get; set; } [JsonProperty(PropertyName = "GLHF / Endline")] public string glhf { get; set; } } private class TextColor { [JsonProperty(PropertyName = "Welcome HEX")] public string welcomehex { get; set; } [JsonProperty(PropertyName = "Server Name HEX")] public string servernamehex { get; set; } [JsonProperty(PropertyName = "Server Description HEX")] public string serverdescriptionhex { get; set; } [JsonProperty(PropertyName = "GLHF / Endline HEX")] public string glhfhex { get; set; } } private class TextSize { [JsonProperty(PropertyName = "Welcome & Server Name size")] public int welcomesize { get; set; } [JsonProperty(PropertyName = "Server Description size")] public int descriptionsize { get; set; } [JsonProperty(PropertyName = "GLHF / Endline size")] public int glhfsize { get; set; } } private class Chat { [JsonProperty(PropertyName = "Enable Welcome Message")] public bool prnt_to_chat { get; set; } [JsonProperty(PropertyName = "Chat Message (When Player Connects)")] public string chat_msg { get; set; } [JsonProperty(PropertyName = "Enable Welcome Broadcast")] public bool enable_bc_c { get; set; } [JsonProperty(PropertyName = "Broadcast Message (When Player Connects)")] public string chat_bc_c { get; set; } [JsonProperty(PropertyName = "Enable Farewell Broadcast")] public bool enable_bc_dc { get; set; } [JsonProperty(PropertyName = "Broadcast Message (When Player Disconnects)")] public string chat_bc_dc { get; set; } [JsonProperty(PropertyName = "Chat Icon (Steam64ID, use 0 to set as default)")] public ulong chat_icon { get; set; } } private class Admin { [JsonProperty(PropertyName = "Enable Greet Admins")] public bool greet_admins { get; set; } [JsonProperty(PropertyName = "Chat Message")] public string chat_msg_admin { get; set; } } private ConfigData GetBaseConfig() { return new ConfigData { text = new Text { welcome = "Welcome to", servername = "My Server Name", serverdescription = "This is the server description.\n- 2x gather rate\n- custom monuments\n- For more info, go to: discord.gg/mylink", glhf = "Good Luck & Have Fun!" }, textcolor = new TextColor { welcomehex = "#ffff00", servernamehex = "#00ffa2", serverdescriptionhex = "#ffffff", glhfhex = "#ffffaa" }, textsize = new TextSize { welcomesize = 30, descriptionsize = 12, glhfsize = 10 }, chat = new Chat { prnt_to_chat = true, chat_msg = "Press F1 to view the information about the server.", enable_bc_c = true, chat_bc_c = "is connected", enable_bc_dc = false, chat_bc_dc = "is disconnected", chat_icon = 76561199163635223 }, admin = new Admin { greet_admins = true, chat_msg_admin = "is here to give you anxiety." }, version = Version }; } protected override void LoadConfig() { base.LoadConfig(); configData = Config.ReadObject(); if (configData.version < Version) UpdateConfigValues(); Config.WriteObject(configData, true); } protected override void LoadDefaultConfig() => configData = GetBaseConfig(); protected override void SaveConfig() => Config.WriteObject(configData, true); private void UpdateConfigValues() { PrintWarning("Config File Update Detected! Updating config file..."); ConfigData baseConfig = GetBaseConfig(); configData.version = Version; PrintWarning("Config File Update Completed! You can continue..."); } #endregion #region Actions private void OnPlayerConnected(BasePlayer player, string message) { if (configData.chat.enable_bc_c) { string msg = $"{player.displayName} {configData.chat.chat_bc_c}"; Server.Broadcast(msg, configData.chat.chat_icon); } } private void OnPlayerDisconnected(BasePlayer player, string message) { if (configData.chat.enable_bc_dc) { string msg = $"{player.displayName} {configData.chat.chat_bc_dc}"; Server.Broadcast(msg, configData.chat.chat_icon); } } private void OnPlayerSleepEnded(BasePlayer player, string message) { if (configData.chat.prnt_to_chat) { string msg = $"{configData.chat.chat_msg}"; SendReply(player, msg, configData.chat.chat_icon); } if (configData.admin.greet_admins && player.IsAdmin) { string msg = $"{player.displayName} {configData.admin.chat_msg_admin}"; Server.Broadcast(msg, configData.chat.chat_icon); } PrintToConsole(player, $"{configData.text.welcome} {configData.text.servername}\n\n{configData.text.serverdescription}\n\n{configData.text.glhf}"); } #endregion } }