C#:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Facepunch.Extend;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("SoPass", "Xoloproshka", "1.2.0")]
public class SoPass : RustPlugin
{
/*
* ТИПЫ ЗАДАЧ
* 1.Добыть
* 2.Убить
* 3.Скрафтить
* 4.Изучить
* 5.Залутать
* 6.Поставить
* 7.Починить
* 8.Собрать с земли
* 9.Улучшиить постройку(Например Оюъект задачи-foundation, Тогда в оружие или инструмент-дерево,камень,металл или мвк)
* 10.Использовать карточку доступа
* 11.Купить в магазине
*/
#region CFG+DATA
private Dictionary<ulong, PlayerData> _playerData = new Dictionary<ulong, PlayerData>();
private ConfigData cfg { get; set; }
internal class Reward
{
[JsonProperty("Шортнейм(Шортнейм предмета или название команды или название набора)")]
public string ShortName = "";
[JsonProperty("Кол-во")] public int Amount;
[JsonProperty("Скинайди")] public ulong SkinId;
[JsonProperty("Команда(Если надо)")] public string command = "";
[JsonProperty("Использовать набор?")] public bool nabor = false;
[JsonProperty("Картинка(Если команда или набор)")]
public string URL = "";
[JsonProperty(
"Набор: Список предметов и команд(Если используете набор все параметры кроме \"Картинка\" и \"Шортнейм\" оставить пустыми и поставить использовать набор на true)")]
public List<Items> itemList;
internal class Items
{
[JsonProperty("Шортнейм")] public string ShortName = "";
[JsonProperty("Кол-во")] public int Amount;
[JsonProperty("Скинайди")] public ulong SkinId;
[JsonProperty("Команда(Если надо)")] public string command = "";
}
}
private class ConfigData
{
[JsonProperty("Список задач для классов(\"Название класса\":{ Список задач)}")]
public Dictionary<string, List<Quest>> _listQuest;
[JsonProperty("Список классов")] public List<ClassPlayer> _classList;
internal class ClassPlayer
{
[JsonProperty("Название")] public string Name = "";
[JsonProperty("Картинка")] public string URL = "";
[JsonProperty("Пермищен")] public string Perm = "";
[JsonProperty("Описание")] public string Text = "";
}
public static ConfigData GetNewConf()
{
var newConfig = new ConfigData();
newConfig._listQuest = new Dictionary<string, List<Quest>>()
{
["Солдат"] = new List<Quest>()
{
new Quest()
{
DisplayName = "Начальный квест",
Lvl = 1,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "stones",
URL = "",
Amount = 1000,
command = "",
nabor = false,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "Набор дерева",
URL = "https://www.pngkey.com/png/full/78-786188_shop-icon-icon-ca-hng.png",
Amount = 0,
command = "",
nabor = true,
itemList = new List<Reward.Items>()
{
new Reward.Items()
{
ShortName = "wood",
Amount = 1000,
command = "",
SkinId = 0
}
}
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить лук",
amount = 1,
type = 3,
need = "bow.hunting"
},
new Zadachi()
{
DisplayName = "Скрафтить стрелы",
amount = 15,
type = 3,
need = "arrow.wooden"
}
}
},
new Quest()
{
DisplayName = "Подняться выше",
Lvl = 2,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "metal.fragments",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.refined",
nabor = false,
Amount = 100,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "furnace",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить арбалет",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Скрафтить скоростных стрел",
amount = 21,
type = 3,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Скрафтить костеной нож",
amount = 1,
type = 3,
need = "knife.bone"
},
new Zadachi()
{
DisplayName = "Убить медведя",
amount = 1,
type = 2,
need = "bear"
},
new Zadachi()
{
DisplayName = "Добыть кожу",
amount = 100,
type = 1,
need = "leather"
}
}
},
new Quest()
{
DisplayName = "Ну ты красавчик",
Lvl = 3,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "sulfur.ore",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.ore",
nabor = false,
Amount = 3500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "wood",
nabor = false,
Amount = 5000,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить печку",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Поставить печку",
amount = 1,
type = 6,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Изучить железный топор",
amount = 1,
type = 4,
need = "hatchet"
},
new Zadachi()
{
DisplayName = "Добыть дерево",
amount = 1,
type = 1,
need = "wood"
},
}
},
new Quest()
{
DisplayName = "Убийственные цели",
Lvl = 4,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "syringe.medical",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "scrap",
nabor = false,
Amount = 450,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "lowgradefuel",
nabor = false,
Amount = 250,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить томсон",
amount = 1,
type = 3,
need = "smg.thompson"
},
new Zadachi()
{
DisplayName = "Поставить пистолетный патрон",
amount = 100,
type = 6,
need = "ammo.pistol"
},
new Zadachi()
{
DisplayName = "Изучить ледоруб",
amount = 1,
type = 4,
need = "icepick.salvaged"
},
new Zadachi()
{
DisplayName = "Добыть серы",
amount = 1,
type = 1,
need = "sulfur.ore"
},
}
},
new Quest()
{
DisplayName = "Подготовка к жоскому финалу",
Lvl = 5,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "syringe.medical",
nabor = false,
Amount = 15,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "scrap",
nabor = false,
Amount = 1000,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "rifle.bolt",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Поставить верстак 3 уровня",
amount = 1,
type = 6,
need = "workbench3.deployed"
},
new Zadachi()
{
DisplayName = "Скрафтить калаш",
amount = 1,
type = 3,
need = "rifle.ak"
},
new Zadachi()
{
DisplayName = "Скрафтить патроны 5.56",
amount = 100,
type = 3,
need = "ammo.rifle"
},
}
},
new Quest()
{
DisplayName = "Финальная битва",
Lvl = 6,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "sulfur.ore",
nabor = false,
Amount = 7000,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.refined",
nabor = false,
Amount = 500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "rifle.l96",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Взорвать танк с помощью С4",
amount = 1,
type = 2,
need = "bradleyapc",
Weapon = "explosive.timed.deployed"
},
new Zadachi()
{
DisplayName = "Сбить вертолет с калаша",
amount = 1,
type = 2,
need = "patrolhelicopter",
Weapon = "rifle.ak"
},
new Zadachi()
{
DisplayName = "Убить HeavyNPC",
amount = 10,
type = 2,
need = "heavyscientist"
},
new Zadachi()
{
DisplayName = "Убить игроков с калаша",
amount = 15,
type = 2,
need = "player",
Weapon = "rifle.ak"
},
}
}
},
["Фармер"] = new List<Quest>()
{
new Quest()
{
DisplayName = "Начальный квест",
Lvl = 1,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "stones",
URL = "",
Amount = 1000,
command = "",
nabor = false,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "wood",
URL = "",
Amount = 1000,
command = "",
nabor = false,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить лук",
amount = 1,
type = 3,
need = "bow.hunting"
},
new Zadachi()
{
DisplayName = "Скрафтить стрелы",
amount = 15,
type = 3,
need = "arrow.wooden"
}
}
},
new Quest()
{
DisplayName = "Подняться выше",
Lvl = 2,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "metal.fragments",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.refined",
nabor = false,
Amount = 100,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "furnace",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить арбалет",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Скрафтить скоростных стрел",
amount = 21,
type = 3,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Скрафтить костеной нож",
amount = 1,
type = 3,
need = "knife.bone"
},
new Zadachi()
{
DisplayName = "Убить медведя",
amount = 1,
type = 2,
need = "bear"
},
new Zadachi()
{
DisplayName = "Добыть кожу",
amount = 100,
type = 1,
need = "leather"
}
}
},
new Quest()
{
DisplayName = "Ну ты красавчик",
Lvl = 3,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "sulfur.ore",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.ore",
nabor = false,
Amount = 3500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "wood",
nabor = false,
Amount = 5000,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить печку",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Поставить печку",
amount = 1,
type = 6,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Изучить железный топор",
amount = 1,
type = 4,
need = "hatchet"
},
new Zadachi()
{
DisplayName = "Добыть дерево",
amount = 1,
type = 1,
need = "wood"
},
}
},
new Quest()
{
DisplayName = "Убийственные цели",
Lvl = 4,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "syringe.medical",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "scrap",
nabor = false,
Amount = 450,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "lowgradefuel",
nabor = false,
Amount = 250,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить томсон",
amount = 1,
type = 3,
need = "smg.thompson"
},
new Zadachi()
{
DisplayName = "Поставить пистолетный патрон",
amount = 100,
type = 6,
need = "ammo.pistol"
},
new Zadachi()
{
DisplayName = "Изучить ледоруб",
amount = 1,
type = 4,
need = "icepick.salvaged"
},
new Zadachi()
{
DisplayName = "Добыть серы",
amount = 1,
type = 1,
need = "sulfur.ore"
},
}
},
new Quest()
{
DisplayName = "Подготовка к жоскому финалу",
Lvl = 5,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "syringe.medical",
nabor = false,
Amount = 15,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "scrap",
nabor = false,
Amount = 1000,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "rifle.bolt",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Поставить верстак 3 уровня",
amount = 1,
type = 6,
need = "workbench3.deployed"
},
new Zadachi()
{
DisplayName = "Скрафтить калаш",
amount = 1,
type = 3,
need = "rifle.ak"
},
new Zadachi()
{
DisplayName = "Скрафтить патроны 5.56",
amount = 100,
type = 3,
need = "ammo.rifle"
},
}
},
new Quest()
{
DisplayName = "Финальная битва",
Lvl = 6,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "sulfur.ore",
nabor = false,
Amount = 7000,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.refined",
nabor = false,
Amount = 500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "rifle.l96",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Взорвать танк с помощью С4",
amount = 1,
type = 2,
need = "bradleyapc",
Weapon = "explosive.timed.deployed"
},
new Zadachi()
{
DisplayName = "Сбить вертолет с калаша",
amount = 1,
type = 2,
need = "patrolhelicopter",
Weapon = "rifle.ak"
},
new Zadachi()
{
DisplayName = "Убить HeavyNPC",
amount = 10,
type = 2,
need = "heavyscientist"
},
new Zadachi()
{
DisplayName = "Убить игроков с калаша",
amount = 15,
type = 2,
need = "player",
Weapon = "rifle.ak"
},
}
}
},
["Строитель"] = new List<Quest>()
{
new Quest()
{
DisplayName = "Начальный квест",
Lvl = 1,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "stones",
URL = "",
Amount = 1000,
command = "",
nabor = false,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "wood",
URL = "",
Amount = 1000,
command = "",
nabor = false,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить лук",
amount = 1,
type = 3,
need = "bow.hunting"
},
new Zadachi()
{
DisplayName = "Скрафтить стрелы",
amount = 15,
type = 3,
need = "arrow.wooden"
}
}
},
new Quest()
{
DisplayName = "Подняться выше",
Lvl = 2,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "metal.fragments",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.refined",
nabor = false,
Amount = 100,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "furnace",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить арбалет",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Скрафтить скоростных стрел",
amount = 21,
type = 3,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Скрафтить костеной нож",
amount = 1,
type = 3,
need = "knife.bone"
},
new Zadachi()
{
DisplayName = "Убить медведя",
amount = 1,
type = 2,
need = "bear"
},
new Zadachi()
{
DisplayName = "Добыть кожу",
amount = 100,
type = 1,
need = "leather"
}
}
},
new Quest()
{
DisplayName = "Ну ты красавчик",
Lvl = 3,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "sulfur.ore",
nabor = false,
Amount = 2500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "metal.ore",
nabor = false,
Amount = 3500,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "wood",
nabor = false,
Amount = 5000,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить печку",
amount = 1,
type = 3,
need = "crossbow"
},
new Zadachi()
{
DisplayName = "Поставить печку",
amount = 1,
type = 6,
need = "arrow.hv"
},
new Zadachi()
{
DisplayName = "Изучить железный топор",
amount = 1,
type = 4,
need = "hatchet"
},
new Zadachi()
{
DisplayName = "Добыть дерево",
amount = 1,
type = 1,
need = "wood"
},
}
},
new Quest()
{
DisplayName = "Убийственные цели",
Lvl = 4,
_listReward = new List<Reward>()
{
new Reward()
{
ShortName = "syringe.medical",
nabor = false,
Amount = 1,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "scrap",
nabor = false,
Amount = 450,
itemList = new List<Reward.Items>()
},
new Reward()
{
ShortName = "lowgradefuel",
nabor = false,
Amount = 250,
itemList = new List<Reward.Items>()
}
},
_listZadach = new List<Zadachi>()
{
new Zadachi()
{
DisplayName = "Скрафтить томсон",
amount = 1,
type = 3,
need = "smg.thompson"
},
new Zadachi()
{
DisplayName = "Поставить пистолетный патрон",
amount = 100,
type = 6,
need = "ammo.pistol"
},
new Zadachi()
{
DisplayName = "Изучить ледоруб",
amount = 1,
type = 4,
need = "icepick.salvaged"
},
new Zadachi()
{
DisplayName = "Добыть серы",
amount = 1,
ty
// ... [Code preview truncated due to length. Full source in attached file] ...