C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
// Reference: 0Harmony
using Oxide.Core.Plugins;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using UnityEngine;
using Oxide.Core;
using System.Collections.Generic;
using System.Linq;
using Network;
using System;
using Oxide.Core.Libraries.Covalence;
using System.Globalization;
using System.IO;
using Oxide.Core.Configuration;
using Oxide.Game.Rust.Cui;
using Steamworks.ServerList;
using Rust;
using ProtoBuf;
using Oxide.Core.Libraries;
using CompanionServer.Handlers;
using System.Runtime;
using Facepunch;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Rust;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using static ConsoleSystem;
using System.Reflection;
using System.Collections;
using System.Net.Http.Headers;
using Oxide.Game.Rust.Libraries;
using UnityEngine.AI;
using UnityEngine.UIElements;
using Instancing;
using UnityEngine.PlayerLoop;
using Time = UnityEngine.Time;
using Harmony;
using System.Reflection.Emit;
namespace Oxide.Plugins {
[Info("Rust Arena", "Billy Joe", "1.0.2")]
[Description("A combat arena plugin allowing for multiple PvP arenas with players.")]
public class RustArena : CovalencePlugin {
#region Arena Trigger
private List<GameObject> _arenaTriggers = new List<GameObject>();
private class ArenaTrigger : FacepunchBehaviour {
public int arenaId = -1;
private void OnTriggerEnter(Collider col) {
BasePlayer player = col?.GetComponentInParent<BasePlayer>();
if (player == null) return;
if (Instance.CheckPlayerInventory(player)) {
player.ChatMessage("<color=#990000>Your Inventory MUST BE EMPTY to so you use Arena Event</color>!");
return;
}
if (Instance.FindArenaMap(Instance._save.ArenaData[arenaId].mapName) == -1) {
player.ChatMessage("This arena does not have a map setup, contact an admin.");
return;
}
if (Instance._save.ArenaData[arenaId].vipArena && !Instance.permission.UserHasPermission(player.UserIDString, "rustarena.vip")) {
if (string.IsNullOrEmpty(Instance.ArenaInfo[arenaId].arenaOwner)) {
player.ChatMessage("This is a vip arena, you do not have vip.");
return;
}
}
Instance.TeamSelectUi(player, arenaId);
}
private void OnTriggerExit(Collider col) {
BasePlayer player = col?.GetComponentInParent<BasePlayer>();
if (player == null) return;
CuiHelper.DestroyUi(player, "TeamSelection");
Instance.playerData[player.UserIDString].currentUi = "";
}
}
#endregion
#region Classes
public class RustArenaPlayer {
public string currentUi = "";
public int ActiveMenu;
public bool arenaText = true;
public Timer arenaTextTimer = null;
// Settings Menu
public int WLPage, DWLPage, ABPage, AUBPage, TWLPage, TDWLPage, SAPage, RRPage = 1;
public PlayerTeams selectedTeam = PlayerTeams.TeamA;
// Arena Info
public int arenaId = -1;
public PlayerTeams team = PlayerTeams.None;
public bool canTakeDamage = false;
// Player Status
public bool isOut = false;
public bool isReady = false;
// Players Stats
public int RoundDamage = 0;
public int RoundKills = 0;
public bool died = false;
//public Vector3 PlayerOldLocation;
}
public class WeaponKit {
public string KitName;
public List<string> weaponShortName;
public List<WeaponAmmo> weaponAmmo;
public List<AttachmentInfo> attachments;
}
public class AttachmentInfo {
public int weapon;
public string attachmentShortName;
}
public class WeaponAmmo {
public string ammoShortName;
public int ammoCount;
}
public class ArmorKit {
public ArmorKits Helmet;
public ArmorKits Chest;
public ArmorKits Gloves;
public ArmorKits Pants;
public ArmorKits Boots;
}
public class ArmorKits {
public string armorName;
public string armorShortName;
public ArmorType armorType;
}
public class ArenaSettings {
public string arenaOwner;
public bool isPublic = true;
public bool antiGhost;
public bool onlyHeadshot;
public bool friendlyFire;
public bool allowPickup = true;
public bool cleanupEntities = true;
public bool scopes;
public bool teamWl;
public bool sidesSwitched;
public int roundCount = 10;
public ActiveKit ActiveKit;
public PlayerTeams roundWinner = PlayerTeams.None;
public bool roundStarted;
public bool isStarting;
public HashSet<GameObject> Objects = new HashSet<GameObject>();
public HashSet<BaseEntity> Items = new HashSet<BaseEntity>();
public List<string> ArenaWhitelistedIDs;
public List<string> ArenaBannedIDs;
public Dictionary<PlayerTeams, int> Score;
public Dictionary<PlayerTeams, List<string>> TeamWhitelist;
public Dictionary<PlayerTeams, List<string>> TeamPlayers;
public Dictionary<PlayerTeams, string> TeamNames;
}
public class ActiveKit {
public WeaponKit WeaponKit;
public ArmorKit ArmorKit;
public int WoodWalls;
public int Medkits;
public int Syrimges;
public int Bandages;
}
public class Arena {
public int arenaId;
public string zone = "";
public bool vipArena = false;
public string mapName = "";
}
public class MapData {
public string mapName = "";
public string mapImage = string.Empty;
public Dictionary<PlayerTeams, Vector3> spawns = new Dictionary<PlayerTeams, Vector3>();
}
#endregion
#region Defines
private static HarmonyInstance _harmony;
public static RustArena Instance;
private const string Permcreatearena = "rustarena.create";
private const string Permdeletearena = "rustarena.delete";
private const string Permsetspawns = "rustarena.setspawns";
private const string Permsetenter = "rustarena.setentrance";
private const string SidebarPanelActiveColor = "0.04841581 0.5112139 0.6037736 0.8";
private const string SidebarPanelUnactiveColor = "0 0 0 0";
private const string SettingsToggleActiveColor = "0.1294118 0.3568628 0.214585 0.8";
private const string SettingsToggleUnactiveColor = "0.3584906 0.1302065 0.1302065 0.8";
private const string KitActiveColor = "0.1294118 0.3568628 0.214585 0.8";
private const string KitUnactiveColor = "0.07450981 0.07450981 0.07450981 0.8";
// Search Boxes
private Dictionary<string, string> _teamANameInput = new Dictionary<string, string>();
private Dictionary<string, string> _teamBNameInput = new Dictionary<string, string>();
public Dictionary<string, RustArenaPlayer> playerData = new Dictionary<string, RustArenaPlayer>();
public Dictionary<Connection, int> arenaConnections = new Dictionary<Connection, int>();
public Dictionary<int, ArenaSettings> ArenaInfo = new Dictionary<int, ArenaSettings>();
public Timer arenaText;
ArenaSettings arenaSettings;
#endregion
#region ENums
public enum PlayerTeams {
TeamA, TeamB, Spectator, None
}
public enum ArmorType {
Headgear, Chest, Gloves, Pants, Boots, None
}
#endregion
#region Localization
protected override void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
["NoPermission"]
= "<color=orange>[Rust Arena]</color> You do not have permission to use this command.", ["NoArena"] = "<color=orange>[Rust Arena]</color> You have tried to join a arena that has not been setup yet, contact an admin!", ["AlreadyInArena"] = "<color=orange>[Rust Arena]</color> You're already in an arena, please leave your current one first.", ["PrivateArena"] = "<color=orange>[Rust Arena]</color> This arena is private and you are not whitelisted, please contact the arena owner.", ["BannedFromArena"] = "<color=orange>[Rust Arena]</color> The arena owner has <color=red>banned</color> you from this arena, you can join this arena if you are unbanned or the arena closes.", ["JoinedArenaTeam"] = "<color=orange>[Rust Arena]</color> You have joined Arena {0}, and are currently on {1}.", ["PlayerJoinedArena"] = "<color=orange>[Rust Arena]</color> {0} has joined the Arena.", ["JoinedArenaNoTeam"] = "<color=orange>[Rust Arena]</color> You have joined Arena {0}, although you have not been whitelisted for any teams.Contact the arena owner to be able to join a team.", ["NotInArena"] = "<color=orange>[Rust Arena]</color> You're currently not in any arena, please join one before using this command.", ["LeftArena"] = "<color=orange>[Rust Arena]</color> {0} has left the arena.", ["NewArenaOwner"] = "<color=orange>[Rust Arena]</color> {0} is the new owner of the arena.", ["NoPlayersToTransfer"] = "<color=orange>[Rust Arena]</color> There is nobody in the arena to transfer to!", ["ReadyState"] = "<color=orange>[Rust Arena]</color> {0} is {1}", ["SetEntrance"] = "<color=orange>[Rust Arena]</color> You have set/updated the entrance for Arena {0}", ["SetLobbySpawn"] = "<color=orange>[Rust Arena]</color> You have set/updated the lobby spawn.", ["SetSpawnPoint"] = "<color=orange>[Rust Arena]</color> You have set/updated the spawn point for {0} in Arena {1}", ["CreatedArena"] = "<color=orange>[Rust Arena]</color> You have created Arena {0}, this has been saved to the data file.", ["DeletedArena"] = "<color=orange>[Rust Arena]</color> You have deleted Arena {0}, this has been saved to the data file.", ["InvalidID"] = "<color=orange>[Rust Arena]</color> There is no Arena {0} in the data file, please try a different ID.", ["HealedAllPlayers"] = "<color=orange>[Rust Arena]</color> Arena Owner has healed every player in the arena.", ["ClearedAllEntities"] = "<color=orange>[Rust Arena]</color> Arena Owner has cleared all entities in the arena.", ["SwitchedSides"] = "<color=orange>[Rust Arena]</color> Arena Owner has switched the teams sides of the arena.", ["CannotSwitch"] = "<color=orange>[Rust Arena]</color> You cannot switch sides while there is a round in-progress.", ["CanNotReset"] = "<color=orange>[Rust Arena]</color> Cannot reset the arena while there is a round in-progress.", ["ResetArena"] = "<color=orange>[Rust Arena]</color> Arena Owner has reset the entire arena.", ["AlreadyRoundInProg"] = "<color=orange>[Rust Arena]</color> You can not force start when there is a round in-progress.", ["EndedRoundForced"] = "<color=orange>[Rust Arena]</color> Arena Owner has forced stopped the round, no score has been updated.", ["ArenaForceStarted"] = "<color=orange>[Rust Arena]</color> Arena Owner has force started the round.", ["RoundStartingIn"] = "<color=orange>[Rust Arena]</color> Round Starting in: <color=green>{0} Sec(s)</color>", ["RoundStarted"] = "<color=orange>[Rust Arena]</color> <color=green>Round Started!</color>", ["RoundOver"] = "<color=orange>[Rust Arena]</color> {0} has won the round, round report available.", ["PlrBannedFromArena"] = "<color=orange>[Rust Arena]</color> {0} has been <color=red>banned</color> from the arena by the arena owner.", ["UnwhitelistedFromTeam"] = "<color=orange>[Rust Arena]</color> You have been removed as you are/were not on the whitelist for that team.", ["ArenaAlreadyExist"] = "<color=orange>[Rust Arena]</color> An arena with that ID already exist, please try again.", ["MissingArgs"] = "<color=orange>[Rust Arena]</color> The command you entered is missing aruments, please follow the commands provided on product page.", ["HostSwitchedArena"] = "<color=orange>[Rust Arena]</color> The host has switched the arena to {0}.", ["WonTheRound"] = "{0} HAS WON THE ROUND", ["HostEndedRound"] = "THERE IS NO ROUND WINNER", ["NoArenaToSwitch"] = "THERE ARE <color=red>NO ARENAS</color> AVAILABE", ["TeamAKilledTeamB"] = "<size=14><color=#3399ff> {0}</color> | <color=#cc0000>{1}</color></size>", ["TeamBKilledTeamA"] = "<size=14><color=#cc0000> {0}</color> | <color=#3399ff>{1}</color></size>", ["GameOver"] = "<color=orange>[Rust Arena]</color> <color=red>GAME OVER!</color> <color=#3399ff>{0}</color> have won the game, GG!.", ["NoPlayersOnOtherTeam"] = "<color=orange>[Rust Arena]</color> There must be a player on the other team for you to be able to start the arena.", ["NotWhitelistedForTeam"] = "<color=orange>[Rust Arena]</color> You are not whitelisted to switch to that team.", ["Ready"] = "Ready", ["NotReady"] = "Not Ready", ["ArenaIsPublic"] = "<color=orange>[Rust Arena]</color> Arena Owner has set the arena to public.", ["ArenaIsPrivate"] = "<color=orange>[Rust Arena]</color> Arena Owner has set the arena to private.", ["ArenaHeadshotOnly"] = "<color=orange>[Rust Arena]</color> Arena Owner has set the arena to headshot only.", ["ArenaNotHeadshot"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned off headshot only.", ["ArenaIsFF"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned on friendly-fire.", ["ArenaIsNotFF"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned off friendly-fire.", ["ArenaScopes"] = "<color=orange>[Rust Arena]</color> Arena Owner has given everyone scopes.", ["ArenaNoScopes"] = "<color=orange>[Rust Arena]</color> Arena Owner has removed everyones scopes.", ["ArenaCleanupEnts"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned on entity cleanup.", ["ArenaNoCleanupEnts"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned off entity cleanup.", ["ArenaAllowPickup"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned on player pickup.", ["ArenaNoPickup"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned off player pickup.", ["ArenaTeamWL"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned on team whitelist.", ["ArenaNoTeamWL"] = "<color=orange>[Rust Arena]</color> Arena Owner has turned off team whitelist.",
}
, this);
}
private string GetMessage(string langKey, string playerId = null, params object[] args) => string.Format(lang.GetMessage(langKey, this, playerId), args);
private void SendMessage(IPlayer player, string langKey, params object[] args) {
if (player.IsConnected) player.Message(GetMessage(langKey, player.Id, args));
}
private void SendMessageToArena(int arenaId, string langKey, params object[] args) {
string message = GetMessage(langKey, args : args);
if (string.IsNullOrEmpty(message) || arenaId == -1) return;
foreach (BasePlayer player in PlayersInArena(arenaId, true)) {
if (player != null) player.ChatMessage(message);
}
}
#endregion
#region Data
public class SaveData {
public Vector3 LobbySpawnpoint;
public Dictionary<int, Arena> ArenaData = new Dictionary<int, Arena>();
public List<MapData> ArenaMaps = new List<MapData>();
public Dictionary<int, Vector3> ArenaEntrances = new Dictionary<int, Vector3>();
}
private SaveData _save;
private void SaveArenaData() => Interface.Oxide.DataFileSystem.WriteObject("RustArena", _save);
#endregion
#region Config
public class Skins {
[JsonProperty(PropertyName = "Use Custom Skins")]
public bool useCustomSkins;
[JsonProperty(PropertyName = "Team A Skins")]
public TeamOutfitSkins TeamASkins;
[JsonProperty(PropertyName = "Team B Skins")]
public TeamOutfitSkins TeamBSkins;
}
public class TeamOutfitSkins {
[JsonProperty(PropertyName = "Metal Facemask Skin")]
public ulong MetalFaceSkin;
[JsonProperty(PropertyName = "Hoodie Skin")]
public ulong HoodieSkin;
[JsonProperty(PropertyName = "Metal Chest Skin")]
public ulong MetalChestSkin;
[JsonProperty(PropertyName = "Kilt Skin")]
public ulong KiltSkin;
[JsonProperty(PropertyName = "Pants Skin")]
public ulong PantsSkin;
[JsonProperty(PropertyName = "Boots Skin")]
public ulong BootsSkin;
}
public class WeaponSettings {
[JsonProperty(PropertyName = "Default Weapon Kit (0-24)")]
public int DefaultWeaponKit;
[JsonProperty(PropertyName = "Weapon Kits List")]
public List<WeaponKit> WeaponKits;
}
public class AttireSettings {
[JsonProperty(PropertyName = "Default Headgear Item (0-4)")]
public int DefaultHeadger;
[JsonProperty(PropertyName = "Default Chest Item (5-9)")]
public int DefaultChest;
[JsonProperty(PropertyName = "Default Gloves Item (10-14)")]
public int DefaultGloves;
[JsonProperty(PropertyName = "Default Headgear Item (15-20)")]
public int DefaultPants = 15;
[JsonProperty(PropertyName = "Default Boots Item (20-24)")]
public int DefaultBoots = 20;
[JsonProperty(PropertyName = "Armor Kits (5 Options each type)")]
public List<ArmorKits> ArmorKits;
}
public class KitSettings {
[JsonProperty(PropertyName = "Weapon Kit Settings")]
public WeaponSettings weaponSettings;
[JsonProperty(PropertyName = "Attire Kit Settings")]
public AttireSettings attireSettings;
[JsonProperty(PropertyName = "Max Syringes")]
public int MaxSyringes;
[JsonProperty(PropertyName = "Max Medkits")]
public int MaxMedkits;
[JsonProperty(PropertyName = "Max Bandages")]
public int MaxBandages;
[JsonProperty(PropertyName = "Max Wood Walls")]
public int MaxWoodWalls;
}
static Configuration config;
public class Configuration {
[JsonProperty(PropertyName = "Server Always Day?")]
public bool AlwaysDay;
[JsonProperty(PropertyName = "Skin Settings")]
public Skins skinSettings;
[JsonProperty(PropertyName = "Kit Settings")]
public KitSettings kitSettings;
public static Configuration DefaultConfig() {
return new Configuration {
AlwaysDay = false, skinSettings = new Skins {
useCustomSkins = true, TeamASkins = new TeamOutfitSkins {
MetalFaceSkin = 2432948498, MetalChestSkin = 2432947351, HoodieSkin = 2416648557, PantsSkin = 2416647256, KiltSkin = 1826194479, BootsSkin = 2454376365,
}
, TeamBSkins = new TeamOutfitSkins {
MetalFaceSkin = 2105454370, MetalChestSkin = 2105505757, HoodieSkin = 2080975449, PantsSkin = 2080977144, KiltSkin = 2120628865, BootsSkin = 2090776132,
}
}
, kitSettings = new KitSettings {
MaxSyringes = 10, MaxMedkits = 2, MaxBandages = 9, MaxWoodWalls = 10, weaponSettings = new WeaponSettings {
//Interger for kit in list (0-24)
DefaultWeaponKit = 0, //List of weapons, this is the max there can be.Feel free to change or remove as you wish.WeaponKits = new List<WeaponKit>()
{
new WeaponKit {
KitName = "AK", weaponShortName = new List<string>() {
"rifle.ak"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "AK BOLT", weaponShortName = new List<string>() {
"rifle.ak", "rifle.bolt"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "AK L96", weaponShortName = new List<string>() {
"rifle.ak", "rifle.l96"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "BOLT", weaponShortName = new List<string>() {
"rifle.bolt"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "LR300", weaponShortName = new List<string>() {
"rifle.lr300"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "LR BOLT", weaponShortName = new List<string>() {
"rifle.lr300", "rifle.bolt"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "LR L96", weaponShortName = new List<string>() {
"rifle.lr300", "rifle.l96"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "L96", weaponShortName = new List<string>() {
"rifle.l96"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "M249", weaponShortName = new List<string>() {
"lmg.m249"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 500
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "M39", weaponShortName = new List<string>() {
"rifle.m39"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "SEMI", weaponShortName = new List<string>() {
"rifle.semiauto"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.rifle", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "MP5", weaponShortName = new List<string>() {
"smg.mp5"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "THOMPSON", weaponShortName = new List<string>() {
"smg.thompson"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "CUSTOM SMG", weaponShortName = new List<string>() {
"smg.2"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "M92", weaponShortName = new List<string>() {
"pistol.m92"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 250
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "PYTHON", weaponShortName = new List<string>() {
"pistol.python"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 120
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "P250", weaponShortName = new List<string>() {
"pistol.semiauto"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 150
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "REVOLVER", weaponShortName = new List<string>() {
"pistol.revolver"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.pistol", ammoCount = 120
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "SPAS-12", weaponShortName = new List<string>() {
"shotgun.spas12"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.shotgun", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "PUMP", weaponShortName = new List<string>() {
"shotgun.pump"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.shotgun", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "PIPE", weaponShortName = new List<string>() {
"shotgun.waterpipe"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "ammo.shotgun", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
}
}
, new WeaponKit {
KitName = "COMPOUND BOW", weaponShortName = new List<string>() {
"bow.compound"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "arrow.wooden", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
}
}
, new WeaponKit {
KitName = "CROSSBOW", weaponShortName = new List<string>() {
"crossbow"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "arrow.wooden", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
new AttachmentInfo {
weapon = 0, attachmentShortName = "weapon.mod.lasersight"
}
}
}
, new WeaponKit {
KitName = "HUNTING BOW", weaponShortName = new List<string>() {
"bow.hunting"
}
, weaponAmmo = new List<WeaponAmmo>() {
new WeaponAmmo {
ammoShortName = "arrow.wooden", ammoCount = 60
}
}
, attachments = new List<AttachmentInfo>() {
}
}
, new WeaponKit {
KitName = "MELEE", weaponShortName = new List<string>() {
"longsword", "mace", "machete", "salvaged.cleaver", "salvaged.sword", "knife.butcher"
}
, weaponAmmo = new List<WeaponAmmo>() {
}
, attachments = new List<AttachmentInfo>() {
}
}
}
,
}
, attireSettings = new AttireSettings {
DefaultHeadger = 0, DefaultChest = 5, DefaultGloves = 10, DefaultPants = 15, DefaultBoots = 20, ArmorKits = new List<ArmorKits>() {
new ArmorKits {
armorName = "METAL FACEMASK", armorShortName = "metal.facemask", armorType = ArmorType.Headgear
}
, new ArmorKits {
armorName = "COFFEE CAN", armorShortName = "coffeecan.helmet", armorType = ArmorType.Headgear
}
, new ArmorKits {
armorName = "HEAVY HELMET", armorShortName = "heavy.plate.helmet", armorType = ArmorType.Headgear
}
, new ArmorKits {
armorName = "WOLF HEADRESS", armorShortName = "hat.wolf", armorType = ArmorType.Headgear
}
, new ArmorKits {
armorName = "GLOWING EYES", armorShortName = "gloweyes", armorType = ArmorType.Headgear
}
, new ArmorKits {
armorName = "METAL CHEST", armorShortName = "metal.plate.torso", armorType = ArmorType.Chest
}
, new ArmorKits {
armorName = "ROADSIGN JACKET", armorShortName = "roadsign.jacket", armorType = ArmorType.Chest
}
, new ArmorKits {
armorName = "HEAVY JACKET", armorShortName = "heavy.plate.jacket", armorType = ArmorType.Chest
}
, new ArmorKits {
armorName = "WOOD CHEST", armorShortName = "wood.armor.jacket", armorType = ArmorType.Chest
}
, new ArmorKits {
armorName = "NO CHEST", armorShortName = "", armorType = ArmorType.Chest
}
, new ArmorKits {
armorName = "TACTICAL GLOVES", armorShortName = "tactical.gloves", armorType = ArmorType.Gloves
}
, new ArmorKits {
armorName = "ROADSIGN GLOVES", armorShortName = "roadsign.gloves", armorType = ArmorType.Gloves
}
, new ArmorKits {
armorName = "LEATHER GLOVES", armorShortName = "burlap.gloves", armorType = ArmorType.Gloves
}
, new ArmorKits {
armorName = "BURLAP GLOVES", armorShortName = "burlap.gloves", armorType = ArmorType.Gloves
}
, new ArmorKits {
armorName = "NO GLOVES", armorShortName = "", armorType = ArmorType.Gloves
}
, new ArmorKits {
armorName = "ROADSIGN KILT", armorShortName = "roadsign.kilt", armorType = ArmorType.Pants
}
, new ArmorKits {
armorName = "HEAVY PANTS", armorShortName = "heavy.plate.pants", armorType = ArmorType.Pants
}
, new ArmorKits {
armorName = "WOOD PANTS", armorShortName = "wood.armor.pants", armorType = ArmorType.Pants
}
, new ArmorKits {
armorName = "HIDE PANTS", armorShortName = "attire.hide.helterneck", armorType = ArmorType.Pants
}
, new ArmorKits {
armorName = "NO PANTS", armorShortName = "", armorType = ArmorType.Pants
}
, new ArmorKits {
armorName = "BOOTS", armorShortName = "shoes.boots", armorType = ArmorType.Boots
}
, new ArmorKits {
armorName = "HIDE BOOTS", armorShortName = "attire.hide.boots", armorType = ArmorType.Boots
}
, new ArmorKits {
armorName = "BURLAP SHOES", armorShortName = "burlap.shoes", armorType = ArmorTy
// ... [Code preview truncated due to length. Full source in attached file] ...