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

FREE RoamTasks : 1.1.2 1.1.2

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Newtonsoft.Json;
using Oxide.Core;
using Rust;
using UnityEngine;
using Oxide.Game.Rust.Cui;
using System;
using System.IO;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using Oxide.Core.Plugins;
using Network;
using System.Runtime.Serialization;
namespace Oxide.Plugins {
    [Info("RoamTasks", "Ridamees", "1.1.2")]
    [Description("RoamTasks - random periodic tasks for rewards")]
    public class RoamTasks : RustPlugin {
        [PluginReference]
        private Plugin Economics;
        [PluginReference]
        private Plugin ServerRewards;
        private float uiBarFadeInDuration = 1f;
        private float uiBarFadeOutDuration = 1f;
        private float GameTipDuration = 4.3f;
        private class GeneralConfig {
            [JsonProperty("Log Task Completion")]
            public bool LogTasks {
                get;
                set;
            }
            = false;
            [JsonProperty("Automatically Add Latest Tasks")]
            public bool AddLatestTasks {
                get;
                set;
            }
            = true;
            [JsonProperty("Only Command Start Tasks")]
            public bool onlyCommandStartTask {
                get;
                set;
            }
            = false;
            [JsonProperty("Next Task Minimum(seconds)")]
            public int NextRoamMin {
                get;
                set;
            }
            = 600;
            [JsonProperty("Next Task Maximum(seconds)")]
            public int NextRoamMax {
                get;
                set;
            }
            = 1800;
            [JsonProperty("Start Sound")]
            public bool StartSound {
                get;
                set;
            }
            = true;
            [JsonProperty("Start Sound Vibration")]
            public bool StartSoundVibration {
                get;
                set;
            }
            = true;
            [JsonProperty("GameTip Notifications")]
            public bool GameTipEnabled {
                get;
                set;
            }
            = true;
            [JsonProperty("GameTip Reward Message")]
            public string gameTipMessage {
                get;
                set;
            }
            = "<color=#8cc83c>You received: {rewardDisplayName}</color>";
            [JsonProperty("GameTip Start Message")]
            public string gameTipStartMessage {
                get;
                set;
            }
            = "Roam Available";
            [JsonProperty("Chat Notifications")]
            public bool ChatEnabled {
                get;
                set;
            }
            = true;
            [JsonProperty("Chat Announce Task Complete")]
            public bool ChatTaskCompleteAnnounce {
                get;
                set;
            }
            = true;
            [JsonProperty("Chat Announce Task Complete - Message ")]
            public string ChatTaskCompleteAnnounceMessage {
                get;
                set;
            }
            = "{config.General.scientistName}Participant <color=#55aaff>{playerName}</color> has completed the roam.{RankReward}";
            [JsonProperty("Chat Announce Task Complete - Max Players")]
            public int ChatTaskCompleteAnnounceMaxPlayers {
                get;
                set;
            }
            = 3;
            [JsonProperty("Chat Player Limit Messages")]
            public string[] MaxCompleteMessage {
                get;
                set;
            }
            = new string[] {
                "\nLimited to {selectedMaxComplete} participants!", "\nMaximum {selectedMaxComplete} participants allowed!", "\nOnly {selectedMaxComplete} participants allowed!", "\nMaximum {selectedMaxComplete} participants!"
            }
            ;
            [JsonProperty("Chat Icon | 0 = Disabled")]
            public ulong ChatIcon {
                get;
                set;
            }
            = 76561199350559937;
            [JsonProperty("Chat Name")]
            public string scientistName {
                get;
                set;
            }
            = "<color=#aaff55>Scientist</color>: ";
            [JsonProperty("Chat Reward Message")]
            public string chatMessage {
                get;
                set;
            }
            = "{scientistName}You received {rewardDisplayName}.";
            [JsonProperty("Chat Next Roam Notification")]
            public bool NextRoamMessageEnabled {
                get;
                set;
            }
            = true;
            [JsonProperty("Chat Next Roam Message")]
            public string NextRoamMessage {
                get;
                set;
            }
            = "{scientistName}Next roam in {NextRoamTime}.";
            [JsonProperty("{RankReward} Text ")]
            public string RankRewardMessageAddon {
                get;
                set;
            }
            = "\n+ {playerRank}{playerRankSuffix} participant bonus.";
            [JsonProperty("Chat Start Messages")]
            public string[] scientistMessages {
                get;
                set;
            }
            = new string[] {
                "Attention.Roam available.", "Alert.Roam initiated.", "Attention.Roam authorized.", "Warning.Roam initiated.Proceed with caution.", "Attention.Roam accessible.", "Alert.Roam authorized."
            }
            ;
            [JsonProperty("UI Location X")]
            public float UIx {
                get;
                set;
            }
            = 0.5f;
            [JsonProperty("UI Location Y")]
            public float UIy {
                get;
                set;
            }
            = 0f;
            [JsonProperty("Position Bonus Rewards")]
            public bool PositionBonusRewards {
                get;
                set;
            }
            = true;
        }
        private PluginConfig config;
        private class PluginConfig {
            [JsonProperty("GeneralConfig")]
            public GeneralConfig General {
                get;
                set;
            }
            = new GeneralConfig();
            [JsonProperty("Position Bonus Rewards List")]
            public Dictionary<int, RewardConfig> RankBonusRewards {
                get;
                set;
            }
            = new Dictionary<int, RewardConfig> {
                {
                    1, new RewardConfig {
                        RewardEnabled = true, RewardType = new List<int> {
                            1
                        }
                        , RewardItems = new List<RewardItem> {
                            new RewardItem {
                                ItemType = "xmas.present.large", ItemAmount = 1
                            }
                        }
                    }
                }
                , {
                    2, new RewardConfig {
                        RewardEnabled = true, RewardType = new List<int> {
                            1
                        }
                        , RewardItems = new List<RewardItem> {
                            new RewardItem {
                                ItemType = "xmas.present.medium", ItemAmount = 1
                            }
                        }
                    }
                }
                , {
                    3, new RewardConfig {
                        RewardEnabled = true, RewardType = new List<int> {
                            1
                        }
                        , RewardItems = new List<RewardItem> {
                            new RewardItem {
                                ItemType = "xmas.present.small", ItemAmount = 3
                            }
                        }
                    }
                }
            }
            ;
            [JsonProperty("RewardPool Configuration - Tiers and Rewards: Each Tier has a List of Rewards.Each Reward has multiple Types.One reward from set Tier's Rewards List is randomly selected based on configured Chance.(Add as many Tiers/Rewards as needed)")]
            public Dictionary<string, RewardPoolConfig> RewardPools {
                get;
                set;
            }
            = new Dictionary<string, RewardPoolConfig> {
                {
                    "Tier1", new RewardPoolConfig {
                        RewardConfigs = new List<RewardConfigOption> {
                            new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "pistol.semiauto", ItemAmount = 1, ItemSkinID = 830255284
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.pistol", ItemAmount = 32
                                        }
                                        , new RewardItem {
                                            ItemType = "bandage", ItemAmount = 3
                                        }
                                    }
                                }
                                , Chance = 0.5f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "pistol.revolver", ItemAmount = 1
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.pistol", ItemAmount = 64
                                        }
                                        , new RewardItem {
                                            ItemType = "cloth", ItemAmount = 50
                                        }
                                    }
                                }
                                , Chance = 0.35f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "explosive.satchel", ItemAmount = 2
                                        }
                                        , new RewardItem {
                                            ItemType = "grenade.f1", ItemAmount = 2
                                        }
                                        , new RewardItem {
                                            ItemType = "metal.fragments", ItemAmount = 100
                                        }
                                    }
                                }
                                , Chance = 0.15f
                            }
                        }
                    }
                }
                , {
                    "Tier2", new RewardPoolConfig {
                        RewardConfigs = new List<RewardConfigOption> {
                            new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "rifle.semiauto", ItemAmount = 1
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.rifle", ItemAmount = 64
                                        }
                                        , new RewardItem {
                                            ItemType = "syringe.medical", ItemAmount = 5
                                        }
                                    }
                                }
                                , Chance = 0.5f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "smg.2", ItemAmount = 1
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.pistol", ItemAmount = 64
                                        }
                                        , new RewardItem {
                                            ItemType = "lowgradefuel", ItemAmount = 30
                                        }
                                    }
                                }
                                , Chance = 0.35f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "ammo.rifle.explosive", ItemAmount = 64
                                        }
                                        , new RewardItem {
                                            ItemType = "hq.metal.ore", ItemAmount = 50
                                        }
                                    }
                                }
                                , Chance = 0.15f
                            }
                        }
                    }
                }
                , {
                    "Tier3", new RewardPoolConfig {
                        RewardConfigs = new List<RewardConfigOption> {
                            new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "rifle.lr300", ItemAmount = 1
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.rifle", ItemAmount = 128
                                        }
                                        , new RewardItem {
                                            ItemType = "largemedkit", ItemAmount = 3
                                        }
                                    }
                                }
                                , Chance = 0.5f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "rifle.bolt", ItemAmount = 1
                                        }
                                        , new RewardItem {
                                            ItemType = "ammo.rifle.hv", ItemAmount = 64
                                        }
                                        , new RewardItem {
                                            ItemType = "hq.metal.ore", ItemAmount = 100
                                        }
                                    }
                                }
                                , Chance = 0.35f
                            }
                            , new RewardConfigOption {
                                RewardConfig = new RewardConfig {
                                    RewardEnabled = true, RewardType = new List<int> {
                                        1
                                    }
                                    , RewardItems = new List<RewardItem> {
                                        new RewardItem {
                                            ItemType = "ammo.rifle.explosive", ItemAmount = 128
                                        }
                                        , new RewardItem {
                                            ItemType = "explosive.timed", ItemAmount = 1
                                        }
                                    }
                                }
                                , Chance = 0.15f
                            }
                        }
                    }
                }
            }
            ;
            [JsonProperty("Tasks Configuration: Tasks are categorized by Hooks.First Task = TaskID 1, increments per task.MaxComplete 0 = no players complete limit | (Tip) - useful console commands 'RoamTask List' & 'RoamTask Start (Hook) (TaskID)' ")]
            public Dictionary<string, List<TaskConfig>> HookTasks {
                get;
                set;
            }
            = new Dictionary<string, List<TaskConfig>> {
                {
                    "OnEntityDeath", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Destroy Barrels", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 5, RewardPool = "Tier1", ShortName = new List<string> {
                                "loot-barrel-1", "loot-barrel-2", "loot_barrel_1", "loot_barrel_2", "oil_barrel"
                            }
                        }
                        , new TaskConfig {
                            Name = "Destroy Barrels", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 15, RewardPool = "Tier2", ShortName = new List<string> {
                                "loot-barrel-1", "loot-barrel-2", "loot_barrel_1", "loot_barrel_2", "oil_barrel"
                            }
                        }
                        , new TaskConfig {
                            Name = "Destroy Barrels", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 30, RewardPool = "Tier3", ShortName = new List<string> {
                                "loot-barrel-1", "loot-barrel-2", "loot_barrel_1", "loot_barrel_2", "oil_barrel"
                            }
                        }
                        , new TaskConfig {
                            Name = "Destroy Roadsigns", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 4, RewardPool = "Tier1", ShortName = new List<string> {
                                "roadsign1", "roadsign2", "roadsign3", "roadsign4", "roadsign5", "roadsign6", "roadsign7", "roadsign8", "roadsign9"
                            }
                        }
                        , new TaskConfig {
                            Name = "Destroy Roadsigns", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 9, RewardPool = "Tier2", ShortName = new List<string> {
                                "roadsign1", "roadsign2", "roadsign3", "roadsign4", "roadsign5", "roadsign6", "roadsign7", "roadsign8", "roadsign9"
                            }
                        }
                        , new TaskConfig {
                            Name = "Hunt for Boars", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "boar"
                            }
                        }
                        , new TaskConfig {
                            Name = "Hunt for Bears", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "bear", "polarbear"
                            }
                        }
                        , new TaskConfig {
                            Name = "Hunt for Deer", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "stag"
                            }
                        }
                        , new TaskConfig {
                            Name = "Hunt for Wolves", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "wolf"
                            }
                        }
                        , new TaskConfig {
                            Name = "Kill Scientists", Enabled = true, MaxComplete = 3, RoamDuration = 800, RequiredAmount = 3, RewardPool = "Tier2", ShortName = new List<string> {
                                "scientistnpc_cargo", "scientistnpc_cargo_turret_any", "scientistnpc_cargo_turret_lr300", "scientistnpc_excavator", "scientistnpc_heavy", "scientistnpc_junkpile_pistol", "scientistnpc_oilrig", "scientistnpc_patrol", "scientistnpc_roam", "scientistnpc_roam_nvg_variant", "scientistnpc_full_any", "scientistnpc_full_lr300", "scientistnpc_full_mp5", "scientistnpc_full_pistol", "scientistnpc_full_shotgun", "scientistnpc_arena"
                            }
                        }
                    }
                }
                , {
                    "OnEntityTakeDamage", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Damage Patrol Heli", Enabled = false, RoamDuration = 1200, RequiredAmount = 1000, RewardPool = "Tier3", ShortName = new List<string> {
                                "patrolhelicopter"
                            }
                        }
                        , new TaskConfig {
                            Name = "Damage Bradley APC", Enabled = false, RoamDuration = 1200, RequiredAmount = 1000, RewardPool = "Tier3", ShortName = new List<string> {
                                "bradleyapc"
                            }
                        }
                        , new TaskConfig {
                            Name = "Damage Tugboats", Enabled = false, RoamDuration = 1200, RequiredAmount = 300, RewardPool = "Tier3", ShortName = new List<string> {
                                "tugboat"
                            }
                        }
                    }
                }
                , {
                    "OnDispenserGather", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Gather Wood", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 1000, RewardPool = "Tier1", ShortName = new List<string> {
                                "wood"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Stone", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 1000, RewardPool = "Tier1", ShortName = new List<string> {
                                "stones"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Sulfur Ore", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 1000, RewardPool = "Tier1", ShortName = new List<string> {
                                "sulfur.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Metal Ore", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 1000, RewardPool = "Tier1", ShortName = new List<string> {
                                "metal.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Wood", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 4500, RewardPool = "Tier2", ShortName = new List<string> {
                                "wood"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Stone", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 4500, RewardPool = "Tier2", ShortName = new List<string> {
                                "stones"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Sulfur Ore", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 4000, RewardPool = "Tier2", ShortName = new List<string> {
                                "sulfur.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Metal Ore", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 4000, RewardPool = "Tier2", ShortName = new List<string> {
                                "metal.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Wood", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 10000, RewardPool = "Tier3", ShortName = new List<string> {
                                "wood"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Stone", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 10000, RewardPool = "Tier3", ShortName = new List<string> {
                                "stones"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Sulfur Ore", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 10000, RewardPool = "Tier3", ShortName = new List<string> {
                                "sulfur.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Gather Metal Ore", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 10000, RewardPool = "Tier3", ShortName = new List<string> {
                                "metal.ore"
                            }
                        }
                    }
                }
                , {
                    "OnCollectiblePickup", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Pickup Wood", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 400, RewardPool = "Tier1", ShortName = new List<string> {
                                "wood"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Stone", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 400, RewardPool = "Tier1", ShortName = new List<string> {
                                "stones"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Metal Ore", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 400, RewardPool = "Tier1", ShortName = new List<string> {
                                "metal.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Sulfur Ore", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 400, RewardPool = "Tier1", ShortName = new List<string> {
                                "sulfur.ore"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Hemp", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 50, RewardPool = "Tier1", ShortName = new List<string> {
                                "cloth"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Mushrooms", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 5, RewardPool = "Tier1", ShortName = new List<string> {
                                "mushroom"
                            }
                        }
                        , new TaskConfig {
                            Name = "Pickup Berries", Enabled = true, MaxComplete = 5, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "black.berry", "blue.berry", "green.berry", "red.berry", "white.berry", "yellow.berry"
                            }
                        }
                    }
                }
                , {
                    "OnLootEntity", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Open Normal Crates", Enabled = true, MaxComplete = 8, RoamDuration = 600, RequiredAmount = 5, RewardPool = "Tier1", ShortName = new List<string> {
                                "crate_normal_2", "crate_normal_2_food", "crate_normal_2_medical", "crate_normal_2", "crate_tools"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Foodboxes", Enabled = true, MaxComplete = 6, RoamDuration = 600, RequiredAmount = 3, RewardPool = "Tier1", ShortName = new List<string> {
                                "foodbox"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Military Crates", Enabled = true, MaxComplete = 5, RoamDuration = 800, RequiredAmount = 2, RewardPool = "Tier2", ShortName = new List<string> {
                                "crate_normal"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Military Crates", Enabled = true, MaxComplete = 3, RoamDuration = 1200, RequiredAmount = 4, RewardPool = "Tier3", ShortName = new List<string> {
                                "crate_normal"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Elite Crates", Enabled = true, RoamDuration = 1200, RequiredAmount = 2, RewardPool = "Tier3", ShortName = new List<string> {
                                "crate_elite"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Supply Drops", Enabled = false, RoamDuration = 1200, RequiredAmount = 1, RewardPool = "Tier3", ShortName = new List<string> {
                                "supply_drop"
                            }
                        }
                        , new TaskConfig {
                            Name = "Open Locked Crates", Enabled = false, RoamDuration = 1200, RequiredAmount = 1, RewardPool = "Tier3", ShortName = new List<string> {
                                "codelockedhackablecrate"
                            }
                        }
                    }
                }
                , {
                    "OnFishCaught", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Catch Fish", Enabled = true, RoamDuration = 800, RequiredAmount = 5, RewardPool = "Tier2", ShortName = new List<string> {
                                "fish.anchovy", "fish.catfish", "fish.herring", "fish.minnows", "fish.orangeroughy", "fish.salmon", "fish.sardine", "fish.smallshark", "fish.troutsmall", "fish.yellowperch"
                            }
                        }
                    }
                }
                , {
                    "OnItemCraftFinished", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Craft Eokas", Enabled = false, RoamDuration = 600, RequiredAmount = 5, RewardPool = "Tier1", ShortName = new List<string> {
                                "pistol.eoka"
                            }
                        }
                    }
                }
                , {
                    "OnCardSwipe", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Swipe Green Keycards", Enabled = true, RoamDuration = 600, RequiredAmount = 1, RewardPool = "Tier1", ShortName = new List<string> {
                                "keycard_green"
                            }
                        }
                        , new TaskConfig {
                            Name = "Swipe Green Keycards", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 3, RewardPool = "Tier2", ShortName = new List<string> {
                                "keycard_green"
                            }
                        }
                        , new TaskConfig {
                            Name = "Swipe Blue Keycards", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 1, RewardPool = "Tier2", ShortName = new List<string> {
                                "keycard_blue"
                            }
                        }
                        , new TaskConfig {
                            Name = "Swipe Blue Keycards", Enabled = true, MaxComplete = 4, RoamDuration = 1200, RequiredAmount = 3, RewardPool = "Tier3", ShortName = new List<string> {
                                "keycard_blue"
                            }
                        }
                        , new TaskConfig {
                            Name = "Swipe Red Keycards", Enabled = true, MaxComplete = 4, RoamDuration = 1200, RequiredAmount = 1, RewardPool = "Tier3", ShortName = new List<string> {
                                "keycard_red"
                            }
                        }
                    }
                }
                , {
                    "OnEntityMounted", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Drive Modular Cars", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 3000, RewardPool = "Tier2", ShortName = new List<string> {
                                "modularcardriverseat"
                            }
                        }
                        , new TaskConfig {
                            Name = "Fly Minicopters", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 3000, RewardPool = "Tier2", ShortName = new List<string> {
                                "miniheliseat"
                            }
                        }
                        , new TaskConfig {
                            Name = "Fly Scrapheli", Enabled = true, MaxComplete = 4, RoamDuration = 1200, RequiredAmount = 5000, RewardPool = "Tier3", ShortName = new List<string> {
                                "transporthelipilot"
                            }
                        }
                        , new TaskConfig {
                            Name = "Drive Submarines", Enabled = true, MaxComplete = 4, RoamDuration = 1200, RequiredAmount = 3200, RewardPool = "Tier3", ShortName = new List<string> {
                                "submarinesolodriverstanding", "submarineduodriverseat"
                            }
                        }
                        , new TaskConfig {
                            Name = "Sail Tugboats", Enabled = true, MaxComplete = 4, RoamDuration = 1200, RequiredAmount = 3200, RewardPool = "Tier3", ShortName = new List<string> {
                                "tugboatdriver"
                            }
                        }
                        , new TaskConfig {
                            Name = "Sail Normal Boats", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 2600, RewardPool = "Tier2", ShortName = new List<string> {
                                "smallboatdriver", "rhibdriver"
                            }
                        }
                        , new TaskConfig {
                            Name = "Sail Kayaks", Enabled = true, MaxComplete = 12, RoamDuration = 600, RequiredAmount = 800, RewardPool = "Tier1", ShortName = new List<string> {
                                "kayakseat"
                            }
                        }
                        , new TaskConfig {
                            Name = "Drive Trains", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 3200, RewardPool = "Tier2", ShortName = new List<string> {
                                "workcartdriver"
                            }
                        }
                        , new TaskConfig {
                            Name = "Ride Horses", Enabled = true, RoamDuration = 600, RequiredAmount = 1200, RewardPool = "Tier1", ShortName = new List<string> {
                                "saddletest"
                            }
                        }
                        , new TaskConfig {
                            Name = "Use Ziplines", Enabled = true, RoamDuration = 600, RequiredAmount = 600, RewardPool = "Tier1", ShortName = new List<string> {
                                "ziplinemountable"
                            }
                        }
                        , new TaskConfig {
                            Name = "Fly Attackheli", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 5000, RewardPool = "Tier3", ShortName = new List<string> {
                                "attackhelidriver"
                            }
                        }
                        , new TaskConfig {
                            Name = "Use Parachutes", Enabled = true, MaxComplete = 6, RoamDuration = 1200, RequiredAmount = 1500, RewardPool = "Tier3", ShortName = new List<string> {
                                "parachuteseat"
                            }
                        }
                    }
                }
                , {
                    "OnBigWheelWin", new List<TaskConfig> {
                        new TaskConfig {
                            Name = "Win Gambling Wheel", Enabled = true, RoamDuration = 600, RequiredAmount = 50, RewardPool = "Tier1", ShortName = new List<string> {
                                "scrap"
                            }
                        }
                        , new TaskConfig {
                            Name = "Win Gambling Wheel", Enabled = true, RoamDuration = 800, RequiredAmount = 150, RewardPool = "Tier2", ShortName = new List<string> {
                                "scrap"
                            }
                        }
                        , new TaskConfig {
                            Name = "Win Gambling Wheel", Enabled = true, RoamDuration = 1200, RequiredAmount = 250, RewardPool = "Tier3", ShortName = new List<string> {
                                "scrap"
                            }
                        }
                    }
                }
            }
            ;
        }
        private void AddLatestTasks() {
            if (!TaskExists("attackhelidriver")) {
                var taskToAdd = new TaskConfig {
                    Name = "Fly Attackheli", Enabled = true, MaxComplete = 6, RoamDuration = 800, RequiredAmount = 5000, RewardPool = "Tier3", ShortName = new List<string> {
                        "attackhelidriver"
                    }
                }
                ;
                config.HookTasks["OnEntityMounted"].Add(taskToAdd);
                Puts($"Added new Task - {taskToAdd.Name}");
            }
            if (!TaskExists("parachuteseat")) {
                var taskToAdd = new TaskConfig {
                    Name = "Use Parachutes", Enabled = true, MaxComplete = 6, RoamDuration = 1200, RequiredAmount = 1500, RewardPool = "Tier3", ShortName = new List<string> {
                        "parachuteseat"
                    }
                }
                ;
                config.HookTasks["OnEntityMounted"].Add(taskToAdd);
                Puts($"Added new Task - {taskToAdd.Name}");
            }
        }
        private bool TaskExists(string shortName) {
            return config.HookTasks.ContainsKey("OnEntityMounted") && config.HookTasks["OnEntityMounted"].Any(task => task.ShortName.Contains(shortName));
        }
        private class RewardConfig {
            [JsonProperty("Enabled")]
            public bool RewardEnabled {
                get;
                set;
            }
            = false;
            [JsonProperty("Types - ( Items = 1, Command = 2, Eco = 3, SR = 4 ) - Usage - 1, 2, 3, 4")]
            public List<int> RewardType {
                get;
                set;
            }
            = new List<int>();
            [JsonProperty("Items")]
            public List<RewardItem> RewardItems {
                get;
                set;
            }
            = new List<RewardItem>();
            [JsonProperty("Command")]
            public string RewardCommand {
                get;
                set;
            }
            = "oxide.usergroup add {player.id} vip";
            [JsonProperty("Command Custom Name")]
            public string CommandRewardCustomName {
                get;
                set;
            }
            = "VIP";
            [JsonProperty("Economics Amount (Plugin)")]
            public double EconomicsRewardAmount {
                get;
                set;
            }
            = 420.0;
            [JsonProperty("Economics Custom Name (Plugin)")]
            public string EconomicsRewardCustomName {
                get;
                set;
            }
            = "$";
            [JsonProperty("ServerRewards Amount (Plugin)")]
            public int ServerRewardsAmount {
                get;
                set;
            }
            = 420;
            [JsonProperty("ServerRewards Custom Name (Plugin)")]
            public string ServerRewardsRewardCustomName {
                get;
                set;
            }
            = "RP";
        }
        private class RewardItem {
            [JsonProperty("Item Type")]
            public string ItemType {
                get;
                set;
            }
            = "scrap";
            [JsonProperty("Item Amount")]
            public int ItemAmount {
                get;
                set;
            }
            = 42;
            [JsonProperty("Item Custom Name")]
            public string ItemCustomName {
                get;
                set;
            }
            = "";
            [JsonProperty("Item Skin ID")]
            public ulong ItemSkinID {
                get;
                set;
            }
            = 0;
        }
        private class RewardPoolConfig {
            [JsonProperty(" -- Rewards List -- ")]
            public List<RewardConfigOption> RewardConfigs {
                get;
                set;
            }
            = new List<RewardConfigOption>();
        }
        private class RewardConfigOption {
            [JsonProperty(" -- Reward")]
            public RewardConfig RewardConfig {
                get;
                set;
            }
            [JsonProperty(" -- Reward Select Chance % (0.0 - 1.0)")]
            public float Chance {
                get;
                set;
            }
        }
        private int taskIdCounter = 1;
        TaskConfig selectedTaskConfig = null;
        private class TaskConfig {
            public TaskConfig() {
            }
            [JsonIgnore]
            public string TaskID {
                get;
                set;
            }
            public string Name {
                get;
                set;
            }
            public bool Enabled {
                get;
                set;
            }
            public int MaxComplete {
                get;
                set;
            }
            public int RoamDuration {
                get;
                set;
            }
            public string RewardPool {
                get;
                set;
            }
            public int RequiredAmount {
                get;
                set;
            }
            public List<string> ShortName {
                get;
                set;
            }
        }
        protected override void LoadDefaultConfig() {
            config = Config.ReadObject<PluginConfig>() ?? new PluginConfig();
            if (config.RewardPools == null) {
                config.RewardPools = new Dictionary<string, RewardPoolConfig>();
            }
            if (config.HookTasks == null) {
                config.HookTasks = new Dictionary<string, List<TaskConfig>>();
            }
            if (config.General.AddLatestTasks == true) {
                AddLatestTasks();
            }
            Config.WriteObject(config, true);
        }
        private void LoadConfigVariables() {
            LoadDefaultConfig();
        }
        private void Init() {
            UnsubscribeAll();
            LoadConfigVariables();
            LoadSteamAvatarUserID();
            if (config != null && config.
// ... [Code preview truncated due to length. Full source in attached file] ...

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