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

FREE GuessTheNumber : 2.2.3 2.2.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using Oxide.Core.Plugins;
using System.Text;
using UnityEngine;
using System.Linq;
using Oxide.Game.Rust.Cui;
using Oxide.Core;
namespace Oxide.Plugins {
    /*==============================================================================================================
    *    
    *    THANKS to Dora the original creator of this plugin
    *    THANKS to redBDGR the previous maintainer of this plugin upto v2.0.2
    *    THANKS to Krungh Crow the previous maintainer of this plugin upto v2.1.3
    *
     ==============================================================================================================*/
    [Info("Guess The Number", "Mabel", "2.2.3")]
    [Description("An event that requires player to guess the correct number")]
    class GuessTheNumber : RustPlugin {
        [PluginReference]
        private readonly Plugin Battlepass, ServerRewards, Economics, SkillTree, XPerience;
        private Data data;
        public Dictionary<ulong, int> playerInfo = new Dictionary<ulong, int>();
        bool useEconomics = true;
        bool useEconomicsloss = true;
        bool useServerRewards = false;
        bool useServerRewardsloss = false;
        bool useBattlepass1 = false;
        bool useBattlepass2 = false;
        bool useBattlepassloss = false;
        bool useSkillTree = false;
        bool useSkillTreeloss = false;
        bool useXPerience = false;
        bool useXPerienceloss = false;
        bool useItem = false;
        bool useCommand = false;
        bool autoEventsEnabled = false;
        bool showAttempts = false;
        bool showAttemptsTips = false;
        bool useChat = false;
        bool useGameTip = true;
        float gameTipDuration = 20f;
        float autoEventTime = 600f;
        float eventLength = 30f;
        int minDefault = 1;
        int maxDefault = 1000;
        int maxTries = 1;
        int MinPlayer = 1;
        int economicsWinReward = 20;
        int economicsLossReward = 10;
        int serverRewardsWinReward = 20;
        int serverRewardsLossReward = 10;
        int battlepassWinReward1 = 20;
        int battlepassWinReward2 = 20;
        int battlepassLossReward1 = 10;
        int battlepassLossReward2 = 10;
        int skillTreeWinReward = 100;
        int skillTreeLossReward = 50;
        int xPerienceWinReward = 100;
        int xPerienceLossReward = 50;
        int itemWinReward = 100;
        string itemName = "scrap";
        ulong itemSkin = 0;
        string itemCustomName = "";
        string commandName = "Display Name For Reward Messages";
        string commandToExecute = "o.grant user {playerId} some.permission";
        string chatCommand = "top";
        string Prefix = "[<color=#abf229>GuessTheNumber</color>] ";
        ulong SteamIDIcon = 0;
        private bool AddSecondCurrency;
        private bool AddFirstCurrency;
        const string permissionNameADMIN = "guessthenumber.admin";
        const string permissionNameENTER = "guessthenumber.enter";
        bool Changed = false;
        bool eventActive = false;
        Timer eventTimer;
        Timer autoRepeatTimer;
        int minNumber = 0;
        int maxNumber = 0;
        bool hasEconomics = false;
        bool hasServerRewards = false;
        bool hasBattlepass = false;
        bool hasSkillTree = false;
        bool hasXPerince = false;
        int number = 0;
        void LoadVariables() {
            //UI Chat Command
            chatCommand = Convert.ToString(GetConfig("LeaderBoard UI Settings", "Command", "top"));
            //Announce
            showAttempts = Convert.ToBoolean(GetConfig("Announce Settings", "Show all Guess Attempts to chat", false));
            showAttemptsTips = Convert.ToBoolean(GetConfig("Announce Settings", "Show all Guess Attempts to GameTips", false));
            useChat = Convert.ToBoolean(GetConfig("Announce Settings", "Use Chat Messages", false));
            Prefix = Convert.ToString(GetConfig("Announce Settings", "Prefix", "[<color=#abf229>Guess The Number</color>] "));
            SteamIDIcon = Convert.ToUInt64(GetConfig("Announce Settings", "SteamID", 76561199090290915));
            useGameTip = Convert.ToBoolean(GetConfig("Announce Settings", "Use Game Tip Messages", true));
            gameTipDuration = Convert.ToInt32(GetConfig("Announce Settings", "Game Tip Duration", 20));
            //Online
            MinPlayer = Convert.ToInt32(GetConfig("Online Settings", "Minimum amount of players to be online to start the game", "1"));
            //Events
            autoEventsEnabled = Convert.ToBoolean(GetConfig("Event Settings", "Auto Events Enabled", false));
            autoEventTime = Convert.ToInt32(GetConfig("Event Settings", "Auto Event Repeat Time", 600));
            eventLength = Convert.ToInt32(GetConfig("Event Settings", "Event Length", 30));
            minDefault = Convert.ToInt32(GetConfig("Event Settings", "Default Number Min", 1));
            maxDefault = Convert.ToInt32(GetConfig("Event Settings", "Default Number Max", 100));
            maxTries = Convert.ToInt32(GetConfig("Event Settings", "Max Tries", 1));
            //Economics
            useEconomics = Convert.ToBoolean(GetConfig("Reward Economics Settings", "Use Economics", true));
            useEconomicsloss = Convert.ToBoolean(GetConfig("Reward Economics Settings", "Use Economics on loss", true));
            economicsWinReward = Convert.ToInt32(GetConfig("Reward Economics Settings", "Amount (win)", 20));
            economicsLossReward = Convert.ToInt32(GetConfig("Reward Economics Settings", "Amount (loss)", 10));
            //ServerRewards
            useServerRewards = Convert.ToBoolean(GetConfig("Reward ServerRewards Settings", "Use ServerRewards", false));
            useServerRewardsloss = Convert.ToBoolean(GetConfig("Reward ServerRewards Settings", "Use ServerRewards on loss", false));
            serverRewardsWinReward = Convert.ToInt32(GetConfig("Reward ServerRewards Settings", "Amount (win)", 20));
            serverRewardsLossReward = Convert.ToInt32(GetConfig("Reward ServerRewards Settings", "Amount (loss)", 10));
            //Battlepass
            useBattlepass1 = Convert.ToBoolean(GetConfig("Reward Battlepass Settings", "Use Battlepass 1st currency", false));
            useBattlepass2 = Convert.ToBoolean(GetConfig("Reward Battlepass Settings", "Use Battlepass 2nd currency", false));
            useBattlepassloss = Convert.ToBoolean(GetConfig("Reward Battlepass Settings", "Use Battlepass on loss", false));
            battlepassWinReward1 = Convert.ToInt32(GetConfig("Reward Battlepass Settings", "Amount 1st currency (win)", 20));
            battlepassWinReward2 = Convert.ToInt32(GetConfig("Reward Battlepass Settings", "Amount 2nd currency (win)", 20));
            battlepassLossReward1 = Convert.ToInt32(GetConfig("Reward Battlepass Settings", "Amount 1st currency (loss)", 10));
            battlepassLossReward2 = Convert.ToInt32(GetConfig("Reward Battlepass Settings", "Amount 2nd currency (loss)", 10));
            //SkillTree
            useSkillTree = Convert.ToBoolean(GetConfig("Reward SkillTree Settings", "Use SkillTree", false));
            useSkillTreeloss = Convert.ToBoolean(GetConfig("Reward SkillTree Settings", "Use SkillTree on loss", false));
            skillTreeWinReward = Convert.ToInt32(GetConfig("Reward SkillTree Settings", "Amount (win)", 100));
            skillTreeLossReward = Convert.ToInt32(GetConfig("Reward SkillTree Settings", "Amount (loss)", 50));
            //XPerience
            useXPerience = Convert.ToBoolean(GetConfig("Reward XPerience Settings", "Use XPerience", false));
            useXPerienceloss = Convert.ToBoolean(GetConfig("Reward XPerience Settings", "Use XPerience on loss", false));
            xPerienceWinReward = Convert.ToInt32(GetConfig("Reward XPerience Settings", "Amount (win)", 100));
            xPerienceLossReward = Convert.ToInt32(GetConfig("Reward XPerience Settings", "Amount (loss)", 50));
            //Item
            useItem = Convert.ToBoolean(GetConfig("Reward Item Settings", "Use Item", false));
            itemName = Convert.ToString(GetConfig("Reward Item Settings", "Item Shortname", "scrap"));
            itemSkin = Convert.ToUInt64(GetConfig("Reward Item Settings", "Item Skin ID", 0));
            itemCustomName = Convert.ToString(GetConfig("Reward Item Settings", "Custom Display Name", ""));
            itemWinReward = Convert.ToInt32(GetConfig("Reward Item Settings", "Amount", 100));
            //Command
            useCommand = Convert.ToBoolean(GetConfig("Reward Command Settings", "Use Command", false));
            commandName = Convert.ToString(GetConfig("Reward Command Settings", "Command Name", "Display Name For Reward Messages"));
            commandToExecute = Convert.ToString(GetConfig("Reward Command Settings", "Command To Execute", "o.grant user {playerId} some.permission"));
            if (!Changed) return;
            SaveConfig();
            Changed = false;
        }
        protected override void LoadDefaultConfig() {
            Config.Clear();
            LoadVariables();
        }
        void Init() {
            LoadData();
            permission.RegisterPermission(permissionNameADMIN, this);
            permission.RegisterPermission(permissionNameENTER, this);
            LoadVariables();
        }
        void Unload() {
            killUI();
            if (autoEventsEnabled) if (!autoRepeatTimer.Destroyed) {
                autoRepeatTimer.Destroy();
            }
            return;
        }
        private void OnServerInitialized() {
            LoadVariables();
            cmd.AddChatCommand(chatCommand, this, nameof(TopCommand));
            if (autoEventsEnabled) {
                if (eventActive) {
                    return;
                }
                autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => {
                    if (BasePlayer.activePlayerList.Count >= MinPlayer) {
                        minNumber = minDefault;
                        maxNumber = maxDefault;
                        number = Convert.ToInt32(Math.Round(Convert.ToDouble(UnityEngine.Random.Range(Convert.ToSingle(minNumber), Convert.ToSingle(maxNumber)))));
                        StartEvent();
                    }
                    else {
                        return;
                    }
                }
                );
            }
            if (!Economics) hasEconomics = false;
            else hasEconomics = true;
            if (!ServerRewards) hasServerRewards = false;
            else hasServerRewards = true;
            if (!Battlepass) hasBattlepass = false;
            else hasBattlepass = true;
            if (!SkillTree) hasSkillTree = false;
            else hasSkillTree = true;
            if (!XPerience) hasXPerince = false;
            else hasXPerince = true;
        }
        void Loaded() {
            lang.RegisterMessages(new Dictionary<string, string> {
                ["No Permission"]
                = "You cannot use this command!", ["Event Already Active"] = "There is currently already an event that is active!", ["Event Started"] = "A random number event has started, correctly guess the random number to win a prize!\nUse /guess <number> to enter between <color=#abf229>{0}</color> and <color=#abf229>{1}</color>", ["Help Message"] = "<color=#abf229>/gtn start</color> (this will use the default min/max set in the config)", ["Help Message1"] = "<color=#abf229>/gtn start <min number> <max number></color> (allows you to set custom min/max numbers)", ["Help Message2"] = "<color=#abf229>/gtn end</color> (will end the current event)", ["No Event"] = "There are no current events active", ["Max Tries"] = "You have already guessed the maximum number of times", ["Event Win"] = "<color=#abf229>{0}</color> has won the event! (correct number was <color=#abf229>{1}</color>)", ["Battlepass Reward1"] = "For winning you are rewarded (BP1) : <color=#abf229>{0}</color>", ["Battlepass loss Reward1"] = "Incorrect answer you get (BP1) : <color=#abf229>{0}</color>", ["Battlepass Reward2"] = "For winning you are rewarded (BP2) : <color=#abf229>{0}</color>", ["Battlepass loss Reward2"] = "Incorrect answer you get (BP2) : <color=#abf229>{0}</color>", ["Economics Reward"] = "For winning you are rewarded $ <color=#abf229>{0}</color>", ["Economics loss Reward"] = "Incorrect answer you get $ <color=#abf229>{0}</color>", ["ServerRewards Reward"] = "For winning you are rewarded <color=#abf229>{0}</color> RP", ["ServerRewards loss Reward"] = "Incorrect answer you get <color=#abf229>{0}</color> RP", ["Wrong Number"] = "You guessed the wrong number\nGuesses remaining this round : <color=#abf229>{0}</color>", ["/guess Invalid Syntax"] = "Invalid syntax! /guess <number>", ["Event Timed Out"] = "The event time has run out and no one successfully guessed the number!\nThe Number to guess was : <color=#abf229>{0}</color>", ["Invalid Guess Entry"] = "The guess you entered was invalid! numbers only please", ["Event Created"] = "The event has been succesfully created, the winning number is <color=#abf229>{0}</color>", ["GTN console invalid syntax"] = "Invalid syntax! gtn <start/end> <min number> <max number>", ["SkillTree Reward"] = "For winning you are rewarded <color=#abf229>{0}</color> XP", ["SkillTree loss Reward"] = "Incorrect answer you get <color=#abf229>{0}</color> XP", ["XPerience Reward"] = "For winning you are rewarded <color=#abf229>{0}</color> XP", ["XPerience loss Reward"] = "Incorrect answer you get <color=#abf229>{0}</color> XP", ["Item Reward"] = "For winning you are rewarded <color=#abf229>{0}</color>", ["Command Reward"] = "For winning you are rewarded <color=#abf229>{0}</color>", ["UI_TITLE"] = "Guess The Number", ["UI_TOP_TEXT"] = "Top 10 Players", ["UI_NO_PLAYERS"] = "Nobody Has Played Yet! :(", ["UI_PLAYERS"] = "{0}.{1} - Wins: <color=#abf229>{2}</color>"
            }
            , this);
        }
        [ConsoleCommand("gtn")]
        void GTNCONSOLECMD(ConsoleSystem.Arg args) {
            if (args.Connection != null) return;
            if (args.Args == null) {
                args.ReplyWith(msg("GTN console invalid syntax"));
                return;
            }
            if (args.Args.Length == 0) {
                args.ReplyWith(msg("GTN console invalid syntax"));
                return;
            }
            if (args.Args.Length > 3) {
                args.ReplyWith(msg("GTN console invalid syntax"));
                return;
            }
            if (args.Args[0] == null) {
                args.ReplyWith(msg("GTN console invalid syntax"));
                return;
            }
            if (args.Args[0] == "start") {
                if (eventActive) {
                    args.ReplyWith(msg("Event Already Active"));
                    return;
                }
                if (args.Args.Length == 3) {
                    minNumber = Convert.ToInt32(args.Args[1]);
                    maxNumber = Convert.ToInt32(args.Args[2]);
                    if (minNumber != 0 && maxNumber != 0) {
                        number = Convert.ToInt32(Math.Round(Convert.ToDouble(UnityEngine.Random.Range(Convert.ToSingle(minNumber), Convert.ToSingle(maxNumber)))));
                        StartEvent();
                        args.ReplyWith(string.Format(msg("Event Created"), number.ToString()));
                    }
                    else {
                        args.ReplyWith(msg("Invalid Params"));
                        return;
                    }
                }
                else {
                    minNumber = minDefault;
                    maxNumber = maxDefault;
                    number = Convert.ToInt32(Math.Round(Convert.ToDouble(UnityEngine.Random.Range(Convert.ToSingle(minNumber), Convert.ToSingle(maxNumber)))));
                    StartEvent();
                    args.ReplyWith(string.Format(msg("Event Created"), number.ToString()));
                }
                if (autoEventsEnabled) if (!autoRepeatTimer.Destroyed) {
                    autoRepeatTimer.Destroy();
                    autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => StartEvent());
                }
                return;
            }
            else if (args.Args[0] == "end") {
                if (eventActive == false) {
                    args.ReplyWith(msg("No Event"));
                    return;
                }
                if (!eventTimer.Destroyed || eventTimer != null) eventTimer.Destroy();
                if (autoEventsEnabled) if (!autoRepeatTimer.Destroyed) {
                    autoRepeatTimer.Destroy();
                    autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => StartEvent());
                }
                eventActive = false;
                args.ReplyWith("The current event has been cancelled");
                if (useChat) {
                    SendMessageToActivePlayers(msg("Event Timed Out"));
                }
                if (useGameTip) {
                    SendToastToActivePlayers(msg("Event Timed Out"));
                }
            }
            else args.ReplyWith(msg("GTN console invalid syntax"));
            return;
        }
        [ChatCommand("gtn")]
        private void startGuessNumberEvent(BasePlayer player, string cmd, string[] args) {
            if (!permission.UserHasPermission(player.UserIDString, permissionNameADMIN)) {
                if (useChat) {
                    Player.Message(player, $"{lang.GetMessage("No Permission", this, player.UserIDString)}", Prefix, SteamIDIcon);
                }
                if (useGameTip) {
                    player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("No Permission", this, player.UserIDString)}");
                }
                return;
            }
            if (args.Length == 0) {
                player.ChatMessage(DoHelpMenu());
                return;
            }
            if (args.Length > 3) {
                player.ChatMessage(DoHelpMenu());
                return;
            }
            if (args[0] == null) {
                player.ChatMessage(DoHelpMenu());
                return;
            }
            if (args[0] == "start") {
                if (eventActive) {
                    if (useChat) {
                        Player.Message(player, $"{lang.GetMessage("Event Already Active", this, player.UserIDString)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("Event Already Active", this, player.UserIDString)}");
                    }
                    return;
                }
                if (args.Length == 3) {
                    minNumber = Convert.ToInt32(args[1]);
                    maxNumber = Convert.ToInt32(args[2]);
                    if (minNumber != 0 && maxNumber != 0) {
                        number = Convert.ToInt32(Math.Round(Convert.ToDouble(UnityEngine.Random.Range(Convert.ToSingle(minNumber), Convert.ToSingle(maxNumber)))));
                        StartEvent();
                        if (useChat) {
                            Player.Message(player, $"{string.Format(lang.GetMessage("Event Created", this, player.UserIDString), number)}", Prefix, SteamIDIcon);
                        }
                        if (useGameTip) {
                            player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Event Created", this, player.UserIDString), number)}", gameTipDuration);
                            timer.Once(gameTipDuration, () => {
                                player.SendConsoleCommand("gametip.hidegametip");
                            }
                            );
                        }
                    }
                    else {
                        if (useChat) {
                            Player.Message(player, $"{lang.GetMessage("Invalid Params", this, player.UserIDString)}", Prefix, SteamIDIcon);
                        }
                        if (useGameTip) {
                            player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("Invalid Params", this, player.UserIDString)}");
                        }
                        return;
                    }
                }
                else {
                    minNumber = minDefault;
                    maxNumber = maxDefault;
                    number = Convert.ToInt32(Math.Round(Convert.ToDouble(UnityEngine.Random.Range(Convert.ToSingle(minNumber), Convert.ToSingle(maxNumber)))));
                    StartEvent();
                    if (useChat) {
                        Player.Message(player, $"{string.Format(lang.GetMessage("Event Created", this, player.UserIDString), number)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Event Created", this, player.UserIDString), number)}", gameTipDuration);
                        timer.Once(gameTipDuration, () => {
                            player.SendConsoleCommand("gametip.hidegametip");
                        }
                        );
                    }
                }
                if (autoEventsEnabled) if (!autoRepeatTimer.Destroyed) {
                    autoRepeatTimer.Destroy();
                    autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => StartEvent());
                }
                return;
            }
            else if (args[0] == "end") {
                if (eventActive == false) {
                    if (useChat) {
                        Player.Message(player, $"{lang.GetMessage("No Event", this, player.UserIDString)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("No Event", this, player.UserIDString)}");
                    }
                    return;
                }
                if (!eventTimer.Destroyed || eventTimer != null) eventTimer.Destroy();
                if (autoEventsEnabled) if (!autoRepeatTimer.Destroyed) {
                    autoRepeatTimer.Destroy();
                    autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => StartEvent());
                }
                eventActive = false;
                if (useChat) {
                    SendMessageToActivePlayers(msg("Event Timed Out"));
                }
                if (useGameTip) {
                    SendToastToActivePlayers(msg("Event Timed Out"));
                }
            }
            else {
                if (useChat) {
                    Player.Message(player, $"{lang.GetMessage("Help Message", this, player.UserIDString)}", Prefix, SteamIDIcon);
                }
                if (useGameTip) {
                    player.SendConsoleCommand("gametip.showgametip", $"{lang.GetMessage("Help Message", this, player.UserIDString)}", gameTipDuration);
                    timer.Once(gameTipDuration, () => {
                        player.SendConsoleCommand("gametip.hidegametip");
                    }
                    );
                }
            }
            return;
        }
        [ChatCommand("guess")]
        private void numberReply(BasePlayer player, string cmd, string[] args) {
            if (!permission.UserHasPermission(player.UserIDString, permissionNameENTER)) {
                if (useChat) {
                    Player.Message(player, $"{lang.GetMessage("No Permission", this, player.UserIDString)}", Prefix, SteamIDIcon);
                }
                if (useGameTip) {
                    player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("No Permission", this, player.UserIDString)}");
                }
                return;
            }
            if (!eventActive) {
                if (useChat) {
                    Player.Message(player, $"{lang.GetMessage("No Event", this, player.UserIDString)}", Prefix, SteamIDIcon);
                }
                if (useGameTip) {
                    player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("No Event", this, player.UserIDString)}");
                }
                return;
            }
            if (args.Length == 1) {
                if (!IsNumber(args[0])) {
                    if (useChat) {
                        Player.Message(player, $"{lang.GetMessage("Invalid Guess Entry", this, player.UserIDString)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("Invalid Guess Entry", this, player.UserIDString)}");
                    }
                    return;
                }
                int playerNum = Convert.ToInt32(args[0]);
                if (!playerInfo.ContainsKey(player.userID)) playerInfo.Add(player.userID, 0);
                if (playerInfo[player.userID] >= maxTries) {
                    if (useChat) {
                        Player.Message(player, $"{lang.GetMessage("Max Tries", this, player.UserIDString)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("Max Tries", this, player.UserIDString)}");
                    }
                    return;
                }
                if (args[0] == "0") {
                    if (useChat) {
                        Player.Message(player, $"{lang.GetMessage("You are not allowed to guess this number", this, player.UserIDString)}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("You are not allowed to guess this number", this, player.UserIDString)}");
                    }
                    return;
                }
                if (showAttempts == true) {
                    SendMessageToActivePlayers($"<color=#abf229>{player.displayName}</color> guessed {args[0].ToString()}");
                }
                if (showAttemptsTips == true) {
                    SendToastToActivePlayers($"<color=#abf229>{player.displayName}</color> guessed {args[0].ToString()}");
                }
                if (playerNum == number) {
                    if (useChat) {
                        SendMessageToActivePlayers(string.Format(msg("Event Win", player.UserIDString), player.displayName, number.ToString()));
                    }
                    if (useGameTip) {
                        SendToastToActivePlayers(string.Format(msg("Event Win", player.UserIDString), player.displayName, number));
                    }
                    if (hasEconomics) {
                        if (useEconomics) {
                            if ((bool)Economics?.Call("Deposit", (ulong)player.userID, (double)economicsWinReward)) {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("Economics Reward", this, player.UserIDString), economicsWinReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Economics Reward", this, player.UserIDString), economicsWinReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (hasServerRewards) {
                        if (useServerRewards) {
                            ServerRewards?.Call("AddPoints", (ulong)player.userID, (int)serverRewardsWinReward);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("ServerRewards Reward", this, player.UserIDString), serverRewardsWinReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("ServerRewards Reward", this, player.UserIDString), serverRewardsWinReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (hasBattlepass) {
                        if (useBattlepass1) {
                            Battlepass?.Call("AddFirstCurrency", (ulong)player.userID, battlepassWinReward1);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("Battlepass Reward1", this, player.UserIDString), battlepassWinReward1)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Battlepass Reward1", this, player.UserIDString), battlepassWinReward1)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                        if (useBattlepass2) {
                            Battlepass?.Call("AddSecondCurrency", (ulong)player.userID, battlepassWinReward2);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("Battlepass Reward2", this, player.UserIDString), battlepassWinReward2)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Battlepass Reward2", this, player.UserIDString), battlepassWinReward2)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (hasSkillTree) {
                        if (useSkillTree) {
                            SkillTree?.Call("AwardXP", (ulong)player.userID, (double)skillTreeWinReward);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("SkillTree Reward", this, player.UserIDString), skillTreeWinReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("SkillTree Reward", this, player.UserIDString), skillTreeWinReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (hasXPerince) {
                        if (useXPerience) {
                            XPerience?.Call("GiveXP", player, (double)xPerienceWinReward);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("XPerience Reward", this, player.UserIDString), xPerienceWinReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("XPerience Reward", this, player.UserIDString), xPerienceWinReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (useItem) {
                        int amount = itemWinReward;
                        var item = ItemManager.CreateByName(itemName, amount, itemSkin);
                        var displayName = string.IsNullOrEmpty(itemCustomName) ? item.info.displayName.translated : itemCustomName;
                        item.name = displayName;
                        player.GiveItem(item);
                        if (useChat) {
                            Player.Message(player, $"{string.Format(lang.GetMessage("Item Reward", this, player.UserIDString), displayName)}", Prefix, SteamIDIcon);
                        }
                        if (useGameTip) {
                            player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Item Reward", this, player.UserIDString), displayName)}", gameTipDuration);
                            timer.Once(gameTipDuration, () => {
                                player.SendConsoleCommand("gametip.hidegametip");
                            }
                            );
                        }
                    }
                    if (useCommand) {
                        var formattedCommand = commandToExecute.Replace("{playerId}", player.UserIDString);
                        Server.Command(formattedCommand);
                        if (useChat) {
                            Player.Message(player, $"{string.Format(lang.GetMessage("Command Reward", this, player.UserIDString), commandName)}", Prefix, SteamIDIcon);
                        }
                        if (useGameTip) {
                            player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Command Reward", this, player.UserIDString), commandName)}", gameTipDuration);
                            timer.Once(gameTipDuration, () => {
                                player.SendConsoleCommand("gametip.hidegametip");
                            }
                            );
                        }
                    }
                    LogWinner(player.displayName);
                    number = 0;
                    eventActive = false;
                    playerInfo.Clear();
                    eventTimer.Destroy();
                    autoRepeatTimer = timer.Repeat(autoEventTime, 0, () => StartEvent());
                }
                else {
                    playerInfo[player.userID]++;
                    if (useChat) {
                        Player.Message(player, $"{string.Format(lang.GetMessage("Wrong Number", this, player.UserIDString), (playerInfo[player.userID] - maxTries))}", Prefix, SteamIDIcon);
                    }
                    if (useGameTip) {
                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Wrong Number", this, player.UserIDString), (playerInfo[player.userID] - maxTries))}", gameTipDuration);
                        timer.Once(gameTipDuration, () => {
                            player.SendConsoleCommand("gametip.hidegametip");
                        }
                        );
                    }
                    if (hasEconomics) {
                        if (useEconomics) {
                            if (useEconomicsloss) {
                                if ((bool)Economics?.Call("Deposit", (ulong)player.userID, (double)economicsLossReward)) {
                                    if (useChat) {
                                        Player.Message(player, $"{string.Format(lang.GetMessage("Economics loss Reward", this, player.UserIDString), economicsLossReward)}", Prefix, SteamIDIcon);
                                    }
                                    if (useGameTip) {
                                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Economics loss Reward", this, player.UserIDString), economicsLossReward)}", gameTipDuration);
                                        timer.Once(gameTipDuration, () => {
                                            player?.SendConsoleCommand("gametip.hidegametip");
                                        }
                                        );
                                    }
                                }
                            }
                        }
                    }
                    if (hasServerRewards) {
                        if (useServerRewards) {
                            if (useServerRewardsloss) {
                                ServerRewards?.Call("AddPoints", (ulong)player.userID, (int)serverRewardsLossReward);
                                {
                                    if (useChat) {
                                        Player.Message(player, $"{string.Format(lang.GetMessage("ServerRewards loss Reward", this, player.UserIDString), serverRewardsLossReward)}", Prefix, SteamIDIcon);
                                    }
                                    if (useGameTip) {
                                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("ServerRewards loss Reward", this, player.UserIDString), serverRewardsLossReward)}", gameTipDuration);
                                        timer.Once(gameTipDuration, () => {
                                            player?.SendConsoleCommand("gametip.hidegametip");
                                        }
                                        );
                                    }
                                }
                            }
                        }
                    }
                    if (hasBattlepass) {
                        if (useBattlepass1) {
                            if (useBattlepassloss) {
                                Battlepass?.Call("AddFirstCurrency", (ulong)player.userID, battlepassLossReward1);
                                {
                                    if (useChat) {
                                        Player.Message(player, $"{string.Format(lang.GetMessage("Battlepass loss Reward1", this, player.UserIDString), battlepassLossReward1)}", Prefix, SteamIDIcon);
                                    }
                                    if (useGameTip) {
                                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Battlepass loss Reward1", this, player.UserIDString), battlepassLossReward1)}", gameTipDuration);
                                        timer.Once(gameTipDuration, () => {
                                            player?.SendConsoleCommand("gametip.hidegametip");
                                        }
                                        );
                                    }
                                }
                            }
                        }
                        if (useBattlepass2) {
                            if (useBattlepassloss) {
                                Battlepass?.Call("AddSecondCurrency", (ulong)player.userID, battlepassWinReward2);
                                {
                                    if (useChat) {
                                        Player.Message(player, $"{string.Format(lang.GetMessage("Battlepass loss Reward2", this, player.UserIDString), battlepassLossReward2)}", Prefix, SteamIDIcon);
                                    }
                                    if (useGameTip) {
                                        player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("Battlepass loss Reward2", this, player.UserIDString), battlepassLossReward2)}", gameTipDuration);
                                        timer.Once(gameTipDuration, () => {
                                            player?.SendConsoleCommand("gametip.hidegametip");
                                        }
                                        );
                                    }
                                }
                            }
                        }
                    }
                    if (hasSkillTree) {
                        if (useSkillTreeloss) {
                            SkillTree?.Call("AwardXP", (ulong)player.userID, (double)skillTreeLossReward);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("SkillTree loss Reward", this, player.UserIDString), skillTreeLossReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("SkillTree loss Reward", this, player.UserIDString), skillTreeLossReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player?.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                    if (hasXPerince) {
                        if (useXPerienceloss) {
                            XPerience?.Call("GiveXP", player, (double)xPerienceLossReward);
                            {
                                if (useChat) {
                                    Player.Message(player, $"{string.Format(lang.GetMessage("XPerience loss Reward", this, player.UserIDString), xPerienceLossReward)}", Prefix, SteamIDIcon);
                                }
                                if (useGameTip) {
                                    player.SendConsoleCommand("gametip.showgametip", $"{string.Format(lang.GetMessage("XPerience loss Reward", this, player.UserIDString), xPerienceLossReward)}", gameTipDuration);
                                    timer.Once(gameTipDuration, () => {
                                        player?.SendConsoleCommand("gametip.hidegametip");
                                    }
                                    );
                                }
                            }
                        }
                    }
                }
            }
            else {
                if (useChat) {
                    Player.Message(player, $"{lang.GetMessage("/guess Invalid Syntax", this, player.UserIDString)}", Prefix, SteamIDIcon);
                }
                if (useGameTip) {
                    player.ShowToast(GameTip.Styles.Red_Normal, $"{lang.GetMessage("/guess Invalid Syntax", this, player.UserIDString)}");
                }
            }
            return;
        }
        void StartEvent() {
            if (eventActive) {
                return;
            }
            if (number == 0) {
                return;
            }
            else {
                if (useChat) {
                    SendMessageToActivePlayers($"{string.Format(lang.GetMessage("Event Started", this), minNumber, maxNumber)}");
                }
                if (useGameTip) {
                    SendToastToActivePlayers($"{string.Format(lang.GetMessage("Event Started", this), minNumber, maxNumber)}");
                }
                Puts($"Started a random game and the number to guess is {number.ToString()}");
                eventActive = true;
                eventTimer = timer.Once(eventLength, () => {
                    if (useChat) {
                        SendMessageToActivePlayers($"{string.Format(lang.GetMessage("Event Timed Out", this), number)}");
                    }
                    if (useGameTip) {
                        SendToastToActivePlayers($"{string.Format(lang.GetMessage("Event Timed Out", this), number)}");
                    }
                    eventActive = false;
                    playerInfo.Clear();
                }
                );
            }
        }
        string DoHelpMenu() {
            StringBuilder x = new StringBuilder();
            x.AppendLine(msg("Help Message"));
            x.AppendLine(msg("Help Message1"));
            x.AppendLine(msg("Help Message2"));
            return x.ToString().TrimEnd();
        }
        bool IsNumber(string str) {
            foreach (char c in str) if (c < '0' || c > '9') return false;
            return true;
        }
        object GetConfig(string menu, string datavalue, object defaultValue) {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null) {
                data = new Dictionary<string, object>();
                Config[menu] = data;
                Changed = true;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value)) {
                value = defaultValue;
                data[datavalue] = value;
                Changed = true;
            }
            return value;
        }
        string msg(string key, string id = null) => lang.GetMessage(key, this, id);
        void SendToastToActivePlayers(string messageKey) {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                if (player != null) {
                    player.SendConsoleCommand("gametip.showgametip", lang.GetMessage(messageKey, this, player.UserIDString), gameTipDuration);
                    timer.Once(gameTipDuration, () => {
                        player?.SendConsoleCommand("gametip.hidegametip");
                    }
                    );
                }
            }
        }
        void SendMessageToActivePlayers(string messageKey) {
            foreach (BasePlayer player in BasePl
// ... [Code preview truncated due to length. Full source in attached file] ...

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