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.5")]
[Description("RoamTasks - random periodic tasks for rewards")]
public class RoamTasks : RustPlugin {
[PluginReference]
private Plugin Economics;
[PluginReference]
private Plugin ServerRewards;
private float uiBarFadeInDuration = 0.2f;
private float uiBarFadeOutDuration = 0.2f;
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"
}
}
}
}
, {
"OnFishCatch", 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"
}
}
, new TaskConfig {
Name = "Ride Pedal Bikes", Enabled = true, RoamDuration = 600, RequiredAmount = 1200, RewardPool = "Tier1", ShortName = new List<string> {
"bikedriverseat"
}
}
, new TaskConfig {
Name = "Ride Motor Bikes", Enabled = true, RoamDuration = 800, RequiredAmount = 3000, RewardPool = "Tier2", ShortName = new List<string> {
"motorbikedriverseat"
}
}
}
}
, {
"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("bikedriverseat")) {
var taskToAdd = new TaskConfig {
Name = "Ride Pedal Bikes", Enabled = true, RoamDuration = 600, RequiredAmount = 1200, RewardPool = "Tier1", ShortName = new List<string> {
"bikedriverseat"
}
}
;
config.HookTasks["OnEntityMounted"].Add(taskToAdd);
Puts($"Added new Task - {taskToAdd.Name}");
}
if (!TaskExists("motorbikedriverseat")) {
var taskToAdd = new TaskConfig {
Name = "Ride Motor Bikes", Enabled = true, RoamDuration = 800, RequiredAmount = 3000, RewardPool = "Tier2", ShortName = new List<string> {
"motorbikedriverseat"
}
}
;
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("Command Reward Msg")]
public string CommandRewardFormat {
get;
set;
}
= "<color=#ffbf00>{customName}</color>";
[JsonProperty("Economics Amount (Plugin)")]
public double EconomicsRewardAmount {
get;
set;
}
= 420.0;
[JsonProperty("Economics Custom Name (Plugin)")]
public string EconomicsRewardCustomName {
get;
set;
}
= "$";
[JsonProperty("Economics Reward Msg")]
public string EconomicsRewardFormat {
get;
set;
}
= "<color=#3e9c35>{customName}</color>{amount}";
[JsonProperty("ServerRewards Amount (Plugin)")]
public int ServerRewardsAmount {
get;
set;
}
= 420;
[JsonProperty("ServerRewards Custom Name (Plugin)")]
public string ServerRewardsRewardCustomName {
get;
set;
}
= "RP";
[JsonProperty("ServerRewards Reward Msg")]
public string ServerRewardsRewardFormat {
get;
set;
}
= "{amount}<color=#cd4632>{customName}</color>";
}
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;
// ... [Code preview truncated due to length. Full source in attached file] ...