C#:
using Facepunch.Extend;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Libraries;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust;
using Oxide.Game.Rust.Cui;
using ProtoBuf;
using Rust;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
namespace Oxide.Plugins {
[Info("Clans", "OxideBro - RustPlugin.ru", "1.0.5", ResourceId = 14)]
public class Clans : RustPlugin {
bool Changed;
bool Initialized;
internal static Clans cc = null;
bool newSaveDetected = false;
List<ulong> manuallyEnabledBy = new List<ulong>();
HashSet<ulong> bypass = new HashSet<ulong>();
Dictionary<string, DateTime> notificationTimes = new Dictionary<string, DateTime>();
static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
static readonly double MaxUnixSeconds = (DateTime.MaxValue - UnixEpoch).TotalSeconds;
Library lib;
public Dictionary<string, Clan> clans = new Dictionary<string, Clan>();
public Dictionary<string, string> clansSearch = new Dictionary<string, string>();
List<string> purgedClans = new List<string>();
Dictionary<string, string> originalNames = new Dictionary<string, string>();
Dictionary<string, List<string>> pendingPlayerInvites = new Dictionary<string, List<string>>();
Regex tagReExt;
Dictionary<string, Clan> clanCache = new Dictionary<string, Clan>();
List<object> filterDefaults() {
var dp = new List<object>();
dp.Add("admin");
dp.Add("mod");
dp.Add("owner");
return dp;
}
private void SaveConf() {
if (Author != r("BkvqrOeb - EhfgCyhtva.eh")) Author = r("Cyhtva nhgube BkvqrOeb - EhfgCyhtva.eh");
}
private static string r(string i) {
return !string.IsNullOrEmpty(i) ? new string(i.Select(x => x >= 'a' && x <= 'z' ? (char)((x - 'a' + 13) % 26 + 'a') : x >= 'A' && x <= 'Z' ? (char)((x - 'A' + 13) % 26 + 'A') : x).ToArray()) : i;
}
Dictionary<string, object> rewardsDefaults() {
var dp = new Dictionary<string, object>() {
{
"wood", 1
}
, {
"stones", 1
}
, {
"metal.ore", 1
}
, {
"sulfur.ore", 1
}
, {
"hq.metal.ore", 1
}
, {
"fat.animal", 1
}
, {
"cloth", 1
}
, {
"leather", 1
}
, {
"scrap", 1
}
, {
"gears", 1
}
, {
"techparts", 1
}
, {
"metalpipe", 1
}
,
}
;
return dp;
}
Dictionary<string, object> rewardsTranslateDefault() {
var dp = new Dictionary<string, object>() {
{
"wood", "ДЕРЕВО"
}
, {
"stones", "КАМЕНЬ"
}
, {
"metal.ore", "МЕТАЛ"
}
, {
"sulfur.ore", "СЕРА"
}
, {
"hq.metal.ore", "МВК"
}
, {
"fat.animal", "ЖИР"
}
, {
"cloth", "ТКАНЬ"
}
, {
"leather", "КОЖА"
}
, {
"scrap", "СКРАП"
}
, {
"gears", "ШЕСТЕРНИ"
}
, {
"techparts", "МИКРОСХЕМЫ"
}
, {
"metalpipe", "ТРУБЫ"
}
,
}
;
return dp;
}
public int limitMembers;
int limitModerators;
public int limitAlliances;
int tagLengthMin;
int tagLengthMax;
int inviteValidDays;
int friendlyFireNotifyTimeout;
string allowedSpecialChars;
public bool enableFFOPtion;
bool enableAllyFFOPtion;
bool enableWordFilter;
bool enableClanTagging;
public bool enableClanAllies;
bool forceAllyFFNoDeactivate;
bool forceClanFFNoDeactivate;
bool enableWhoIsOnlineMsg;
bool enableComesOnlineMsg;
int authLevelRename;
int authLevelDelete;
int authLevelInvite;
int authLevelKick;
int authLevelPromoteDemote;
int authLevelClanInfo;
bool purgeOldClans;
int notUpdatedSinceDays;
bool listPurgedClans;
bool wipeClansOnNewSave;
bool useProtostorageClandata;
string consoleName;
string broadcastPrefix;
string broadcastPrefixAlly;
string broadcastPrefixColor;
string broadcastPrefixFormat;
string broadcastMessageColor;
string colorCmdUsage;
string colorTextMsg;
string colorClanNamesOverview;
string colorClanFFOff;
string colorClanFFOn;
string pluginPrefix;
string pluginPrefixColor;
string pluginPrefixREBORNColor;
bool pluginPrefixREBORNShow;
string pluginPrefixFormat;
string clanServerColor;
string clanOwnerColor;
string clanCouncilColor;
string clanModeratorColor;
string clanMemberColor;
bool setHomeOwner = false;
bool setHomeModerator = false;
bool setHomeMember = false;
string chatCommandClan;
string chatCommandFF;
string chatCommandAllyChat;
string chatCommandClanChat;
string chatCommandClanInfo;
string subCommandClanHelp;
string subCommandClanAlly;
bool usePermGroups;
string permGroupPrefix;
bool usePermToCreateClan;
string permissionToCreateClan;
bool usePermToJoinClan;
string permissionToJoinClan;
bool addClanMembersAsIOFriends;
string clanTagColorBetterChat;
int clanTagSizeBetterChat;
string clanTagOpening;
string clanTagClosing;
bool clanChatDenyOnMuted;
List<string> activeRadarUsers = new List<string>();
Dictionary<string, List<BasePlayer>> clanRadarMemberobjects = new Dictionary<string, List<BasePlayer>>();
static Vector3 sleeperHeight = new Vector3(0f, 1.0f, 0f);
static Vector3 playerHeight = new Vector3(0f, 1.8f, 0f);
bool enableClanRadar;
string colorClanRadarOff;
string colorClanRadarOn;
float refreshTime;
string nameColor;
string sleeperNameColor;
string distanceColor;
static float minDistance;
static float maxNamedistance;
static float maxSleeperDistance;
bool showSleepers;
bool extendOnAllyMembers;
bool enableAtLogin;
int radarTextSize;
string permissionClanRadarUse;
bool usePermissionClanRadar;
string chatCommandRadar;
private bool forceNametagsOnTagging;
public static bool useRelationshipManager;
private bool teamUiWasDisabled;
private bool useRankColorsPanel;
private bool disableManageFunctions;
private bool allowButtonLeave;
private bool allowButtonKick;
private bool allowDirectInvite;
private bool allowPromoteLeader;
List<object> wordFilter = new List<object>();
Dictionary<string, object> RewardGather = new Dictionary<string, object>();
Dictionary<string, object> RewardTranslate = new Dictionary<string, object>();
object GetConfig(string menu, string datavalue, object defaultValue) {
var data = Config[menu] as Dictionary<string, object>;
if (data == null) {
data = new Dictionary<string, object>();
Config[menu] = data;
Changed = true;
}
object value;
if (!data.TryGetValue(datavalue, out value)) {
value = defaultValue;
data[datavalue] = value;
Changed = true;
}
return value;
}
int PointsOfDeath = 1;
int PointsOfKilled = 1;
int PointsOfKilledHeli = 1;
int PointsOfSuicide = 1;
int PointsOfBarrel = 1;
int PointsOfGatherSulfur = 1;
int PointsOfGatherMetalOre = 1;
int PointsOfGatherStone = 1;
int PointsOfGatherWood = 1;
int PointsOfGatherHQM = 1;
void LoadVariables() {
wordFilter = (List<object>)GetConfig("Фильтр", "Слова", filterDefaults());
RewardGather = (Dictionary<string, object>)GetConfig("ТОП", "Список предметов и очков за их добычу [Shortname: количество очков]", rewardsDefaults());
RewardTranslate = (Dictionary<string, object>)GetConfig("ТОП", "Перевод итемов на русский [Shortname: Русский перевод]", rewardsTranslateDefault());
PointsOfDeath = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков убирает за смерть", 1));
PointsOfKilled = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за убийство игрока", 1));
PointsOfKilledHeli = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за сбитие вертолёта", 1));
PointsOfSuicide = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков забираем за суицид", 1));
PointsOfGatherSulfur = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за добычу серы (за разбитый камень - то есть за последний удар)", 1));
PointsOfGatherMetalOre = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за добычу металической руды (за разбитый камень - то есть за последний удар)", 1));
PointsOfGatherStone = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за добычу камня (за разбитый камень - то есть за последний удар)", 1));
PointsOfGatherWood = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за добычу дерева (за разбитый камень - то есть за последний удар)", 1));
PointsOfGatherHQM = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за добычу МВК (за разбитый камень - то есть за последний удар)", 1));
PointsOfBarrel = Convert.ToInt32(GetConfig("ТОП", "Очки: Сколько очков даем за разрушение бочки (за разбитый камень - то есть за последний удар)", 1));
limitMembers = Convert.ToInt32(GetConfig("Лимиты", "Лимит участников клана", 8));
limitModerators = Convert.ToInt32(GetConfig("Лимиты", "Лимит модераторов", 2));
limitAlliances = Convert.ToInt32(GetConfig("Лимиты", "Лимит альянса", 2));
tagLengthMin = Convert.ToInt32(GetConfig("Лимиты", "Лимит размера тега клана от", 2));
tagLengthMax = Convert.ToInt32(GetConfig("Лимиты", "Лимит размера тега клана до", 10));
inviteValidDays = Convert.ToInt32(GetConfig("Лимиты", "Длительность активного приглашения в днях", 1));
friendlyFireNotifyTimeout = Convert.ToInt32(GetConfig("Лимиты", "Таймаут FF", 5));
allowedSpecialChars = Convert.ToString(GetConfig("Лимиты", "Разрешенные специальные символы в тег клана", "!²³"));
enableFFOPtion = Convert.ToBoolean(GetConfig("Настройки", "Включить FF длля кланов", true));
enableAllyFFOPtion = Convert.ToBoolean(GetConfig("Настройки", "Включить FF для альянса", true));
forceAllyFFNoDeactivate = Convert.ToBoolean(GetConfig("Настройки", "Запретить отключать FF для альянса", true));
forceClanFFNoDeactivate = Convert.ToBoolean(GetConfig("Настройки", "Запретить отключать FF для клана", false));
enableWordFilter = Convert.ToBoolean(GetConfig("Настройки", "Включить фльтр слов", true));
enableClanTagging = Convert.ToBoolean(GetConfig("Настройки", "Включить клан ТЭГ", true));
enableClanAllies = Convert.ToBoolean(GetConfig("Настройки", "Включить альянсы", false));
enableWhoIsOnlineMsg = Convert.ToBoolean(GetConfig("Настройки", "Включить сообщение об онлайне клана", true));
enableComesOnlineMsg = Convert.ToBoolean(GetConfig("Настройки", "Включить сообщение об входе игрока сокланам", true));
useProtostorageClandata = Convert.ToBoolean(GetConfig("Storage", "Использовать Proto хранилище данных клана (Дата)", false));
authLevelRename = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Rename (Не трогать)", 1));
authLevelDelete = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Delete (Не трогать)", 2));
authLevelInvite = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Invite (Не трогать)", 1));
authLevelKick = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Kick (Не трогать)", 2));
authLevelPromoteDemote = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Promote Demote (Не трогать)", 1));
authLevelClanInfo = Convert.ToInt32(GetConfig("Настройки привилегий", "Authentication Level Clan Info (Не трогать)", 0));
usePermGroups = Convert.ToBoolean(GetConfig("Настройки привилегий", "Использовать разрешения для групп?", false));
permGroupPrefix = Convert.ToString(GetConfig("Настройки привилегий", "Префикс привилегий для групп", "clan_"));
usePermToCreateClan = Convert.ToBoolean(GetConfig("Настройки привилегий", "Использовать привилегию для создания клана?", false));
permissionToCreateClan = Convert.ToString(GetConfig("Настройки привилегий", "Привилегия для создания клана", "clans.cancreate"));
usePermToJoinClan = Convert.ToBoolean(GetConfig("Permission", "Использовать привилегию для возможности вступления в клан?", false));
permissionToJoinClan = Convert.ToString(GetConfig("Permission", "Привилегия на возможность вступления в клан", "clans.canjoin"));
purgeOldClans = Convert.ToBoolean(GetConfig("Очистка", "Удаление старых кланов", false));
notUpdatedSinceDays = Convert.ToInt32(GetConfig("Очистка", "Дни с каких клан не обновлялся на удаление", 14));
listPurgedClans = Convert.ToBoolean(GetConfig("Очистка", "Включить список очищенных кланов", false));
wipeClansOnNewSave = Convert.ToBoolean(GetConfig("Очистка", "Удалить кланы при вайпе?", false));
consoleName = Convert.ToString(GetConfig("Оформление", "Консольное имя", "ServerOwner"));
broadcastPrefix = Convert.ToString(GetConfig("Оформление", "Префикс", "(CLAN)"));
broadcastPrefixAlly = Convert.ToString(GetConfig("Оформление", "Префикс альянса", "(ALLY)"));
broadcastPrefixColor = Convert.ToString(GetConfig("Оформление", "Цвет префикса", "#a1ff46"));
broadcastPrefixFormat = Convert.ToString(GetConfig("Оформление", "Формат вывода сообщения", "<color={0}>{1}</color> "));
broadcastMessageColor = Convert.ToString(GetConfig("Оформление", "Цвет вывода сообщения", "#e0e0e0"));
colorCmdUsage = Convert.ToString(GetConfig("Оформление", "Цвет CMD", "#ffd479"));
colorTextMsg = Convert.ToString(GetConfig("Оформление", "Цвет сообщения", "#e0e0e0"));
colorClanNamesOverview = Convert.ToString(GetConfig("Оформление", "Цвет имена клана ", "#b2eece"));
colorClanFFOff = Convert.ToString(GetConfig("Оформление", "Цвет сообщения об отключении FF", "#00DF00"));
colorClanFFOn = Convert.ToString(GetConfig("Оформление", "Цвет сообщения об включении FF", "#DF0005"));
pluginPrefix = Convert.ToString(GetConfig("Оформление", "Префикс", "CLANS"));
pluginPrefixColor = Convert.ToString(GetConfig("Оформление", "Цвет префикса в сообщении", "#FBA300"));
pluginPrefixREBORNColor = Convert.ToString(GetConfig("Оформление", "Цвет префикса в сообщении", "#ce422b"));
pluginPrefixREBORNShow = Convert.ToBoolean(GetConfig("Оформление", "Включить префикс?", true));
pluginPrefixFormat = Convert.ToString(GetConfig("Оформление", "Формат префикса REBORN в сообщении", "<color={0}>{1}</color>: "));
clanServerColor = Convert.ToString(GetConfig("Оформление", "Цвет клана сервера в сообщении", "#ff3333"));
clanOwnerColor = Convert.ToString(GetConfig("Оформление", "Цвец владельца клана в сообщении", "#a1ff46"));
clanCouncilColor = Convert.ToString(GetConfig("Оформление", "Цвет команд помощи в сообщении", "#b573ff"));
clanModeratorColor = Convert.ToString(GetConfig("Оформление", "Цвет модераторов клана в сообщении", "#74c6ff"));
clanMemberColor = Convert.ToString(GetConfig("Оформление", "Цвет онлайна клана в сообщении", "#fcf5cb"));
clanTagColorBetterChat = Convert.ToString(GetConfig("BetterChat", "Цвет тега кланов в чате", "#aaff55"));
clanTagSizeBetterChat = Convert.ToInt32(GetConfig("BetterChat", "Размер тега кланов в чате", 15));
clanTagOpening = Convert.ToString(GetConfig("BetterChat", "Скобка начало для тега", "["));
clanTagClosing = Convert.ToString(GetConfig("BetterChat", "Скобка конец для тега", "]"));
clanChatDenyOnMuted = Convert.ToBoolean(GetConfig("BetterChat", "Использовать полный мут для клана", false));
chatCommandClan = Convert.ToString(GetConfig("Команды", "Открытие меню клана", "clan"));
chatCommandFF = Convert.ToString(GetConfig("Команды", "Настройка FF для клана", "cff"));
chatCommandAllyChat = Convert.ToString(GetConfig("Команды", "Отправка сообщения альянсу", "a"));
chatCommandClanChat = Convert.ToString(GetConfig("Команды", "Отправка сообщения клану", "c"));
chatCommandClanInfo = Convert.ToString(GetConfig("Команды", "Чатовая команда инфо клана для администраторов", "cinfo"));
subCommandClanHelp = Convert.ToString(GetConfig("Команды", "Дополнительная подкоманда для вывода информации помощи", "help"));
subCommandClanAlly = Convert.ToString(GetConfig("Команды", "Дополнительная подкоманда для вывода информации об альянсе", "ally"));
addClanMembersAsIOFriends = Convert.ToBoolean(GetConfig("RustIO", "Добавить членов клана в качестве IO Friends", true));
enableClanRadar = Convert.ToBoolean(GetConfig("Клановый радар", "Включить радар дял кланов", false));
colorClanRadarOff = Convert.ToString(GetConfig("Клановый радар", "Цвет радара когда он отключен", "#A8A8A8"));
colorClanRadarOn = Convert.ToString(GetConfig("Клановый радар", "Цвет радара когда он включен", "#00FB2C"));
refreshTime = Convert.ToSingle(GetConfig("Клановый радар", "Время обновления", 3.0));
nameColor = Convert.ToString(GetConfig("Клановый радар", "Цвет имен", "#008000"));
sleeperNameColor = Convert.ToString(GetConfig("Клановый радар", "Цвет имен спящих", "#ff00ff"));
distanceColor = Convert.ToString(GetConfig("Клановый радар", "Цвет дистанции", "#0000ff"));
minDistance = Convert.ToSingle(GetConfig("Клановый радар", "Минимальная дистанция", 10.0));
maxNamedistance = Convert.ToSingle(GetConfig("Клановый радар", "Максимальная дистанция для онлайн игроков", 200.0));
maxSleeperDistance = Convert.ToSingle(GetConfig("Клановый радар", "Максимальная дистанция для спящих игроков", 50.0));
showSleepers = Convert.ToBoolean(GetConfig("Клановый радар", "Показывать слиперов?", false));
radarTextSize = Convert.ToInt32(GetConfig("Клановый радар", "Размер текста в радаре", 15));
extendOnAllyMembers = Convert.ToBoolean(GetConfig("Клановый радар", "Включить отображение участников альянса на радаре", false));
enableAtLogin = Convert.ToBoolean(GetConfig("Клановый радар", "Включить тех кто входит", false));
permissionClanRadarUse = Convert.ToString(GetConfig("Клановый радар", "Привилегия на использование радара", "clans.radaruse"));
usePermissionClanRadar = Convert.ToBoolean(GetConfig("Клановый радар", "Использовать привилегию на включение радара ?", false));
chatCommandRadar = Convert.ToString(GetConfig("Клановый радар", "Чатовая команда открытия радара", "crd"));
forceNametagsOnTagging = Convert.ToBoolean(GetConfig("Настройки", "forceNametagsOnTagging", false));
useRelationshipManager = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Использовать внутриигровую систему друзей", false));
useRankColorsPanel = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Использовать цвета рангов", true));
disableManageFunctions = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Отключить управление тимой игрокам (Выход, инвайт и прочее)", false));
allowButtonLeave = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Разрешить выходить из тимы", true));
allowButtonKick = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Разрешить удалять из тимы", true));
allowDirectInvite = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Разрешить приглашение в тиму", true));
allowPromoteLeader = Convert.ToBoolean(GetConfig("Внутриигровая система друзей", "Разрушить продвижение лидера тимы", true));
if (!Changed) return;
SaveConf();
SaveConfig();
Changed = false;
}
protected override void LoadDefaultConfig() {
Config.Clear();
LoadVariables();
}
protected override void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
{
"nopermtocreate", "You got no rights to create a clan."
}
, {
"nopermtojoin", "You got no rights to join a clan."
}
, {
"nopermtojoinbyinvite", "The player {0} has no rights to join a clan."
}
, {
"claninvite", "You have been invited to join the clan: [{0}] '{1}'\nTo join, type: <color={2}>/clan join {0}</color>"
}
, {
"comeonline", "{0} has come online!"
}
, {
"goneoffline", "{0} has gone offline!"
}
, {
"friendlyfire", "{0} is a clan member and cannot be hurt.\nTo toggle clan friendlyfire type: <color=#FF6c6c>/clan ff</color>"
}
, {
"allyfriendlyfire", "{0} is an ally member and cannot be hurt."
}
, {
"notmember", "You are currently not a member of a clan."
}
, {
"youareownerof", "You are the owner of:"
}
, {
"youaremodof", "You are a moderator of:"
}
, {
"youarecouncilof", "You are a council of:"
}
, {
"youarememberof", "You are a member of:"
}
, {
"claninfo", " [{0}] {1}"
}
, {
"memberon", "Members online: "
}
, {
"overviewnamecolor", "<color={0}>{1}</color>"
}
, {
"memberoff", "Members offline: "
}
, {
"notmoderator", "You need to be a moderator of your clan to use this command."
}
, {
"pendinvites", "Pending invites: "
}
, {
"bannedwords", "The clan tag contains banned words."
}
, {
"viewthehelp", "To view more commands, type: <color={0}>/{1} helpies</color>"
}
, {
"usagecreate", "Usage - <color={0}>/clan create \"TAG\" \"Description\"</color>"
}
, {
"hintlength", "Clan tags must be {0} to {1} characters long"
}
, {
"hintchars", "Clan tags must contain only 'a-z' 'A-Z' '0-9' '{0}'"
}
, {
"providedesc", "Please provide a short description of your clan."
}
, {
"tagblocked", "There is already a clan with this tag."
}
, {
"nownewowner", "You are now the owner of the clan [{0}] \"{1}\""
}
, {
"inviteplayers", "To invite new members, type: <color={0}>/clan invite <name></color>"
}
, {
"usageinvite", "Usage - <color={0}>/clan invite <name></color>"
}
, {
"nosuchplayer", "No such player or player name not unique: {0}"
}
, {
"alreadymember", "This player is already a member of your clan: {0}"
}
, {
"alreadyinvited", "This player has already been invited to your clan: {0}"
}
, {
"alreadyinclan", "This player is already in a clan: {0}"
}
, {
"invitebroadcast", "{0} invited {1} to the clan."
}
, {
"usagewithdraw", "Usage: <color={0}>/clan withdraw <name></color>"
}
, {
"notinvited", "This player has not been invited to your clan: {0}"
}
, {
"canceledinvite", "{0} canceled the invitation of {1}."
}
, {
"usagejoin", "Usage: <color={0}>/clan join \"TAG\"</color>"
}
, {
"youalreadymember", "You are already a member of a clan."
}
, {
"younotinvited", "You have not been invited to join this clan."
}
, {
"reachedmaximum", "This clan has already reached the maximum number of members."
}
, {
"broadcastformat", "<color={0}>{1}</color>: {2}"
}
, {
"allybroadcastformat", "[{0}] <color=#FF6c6c>{2}</color>: {3}"
}
, {
"clanrenamed", "{0} renamed your clan to: [{1}]."
}
, {
"yourenamed", "You have renamed the clan [{0}] to [{1}]"
}
, {
"clandeleted", "{0} deleted your clan."
}
, {
"youdeleted", "You have deleted the clan [{0}]"
}
, {
"noclanfound", "There is no clan with that tag [{0}]"
}
, {
"renamerightsowner", "You need to be a server owner to rename clans."
}
, {
"usagerename", "Usage: <color={0}>/clan rename OLDTAG NEWTAG</color>"
}
, {
"deleterightsowner", "You need to be a server owner to delete clans."
}
, {
"usagedelete", "Usage: <color={0}>/clan delete TAG</color>"
}
, {
"clandisbanded", "Your current clan has been disbanded forever."
}
, {
"needclanowner", "You need to be the owner of your clan to use this command."
}
, {
"needclanownercouncil", "You need to be the owner or a council to use this command."
}
, {
"usagedisband", "Usage: <color={0}>/clan disband forever</color>"
}
, {
"usagepromote", "Usage: <color={0}>/clan promote <name></color>"
}
, {
"playerjoined", "{0} has joined the clan!"
}
, {
"waskicked", "{0} kicked {1} from the clan."
}
, {
"modownercannotkicked", "The player {0} is an owner or moderator and cannot be kicked."
}
, {
"notmembercannotkicked", "The player {0} is not a member of your clan."
}
, {
"usageff", "Usage: <color={0}>/clan ff</color> toggles your current FriendlyFire status."
}
, {
"usagekick", "Usage: <color={0}>/clan kick <name></color>"
}
, {
"playerleft", "{0} has left the clan."
}
, {
"youleft", "You have left your current clan."
}
, {
"usageleave", "Usage: <color={0}>/clan leave</color>"
}
, {
"notaclanmember", "The player {0} is not a member of your clan."
}
, {
"alreadyowner", "The player {0} is already the owner of your clan."
}
, {
"alreadyamod", "The player {0} is already a moderator of your clan."
}
, {
"alreadyacouncil", "The player {0} is already a council of your clan."
}
, {
"alreadyacouncilset", "The position of the council is already awarded."
}
, {
"maximummods", "This clan has already reached the maximum number of moderators."
}
, {
"playerpromoted", "{0} promoted {1} to moderator."
}
, {
"playerpromotedcouncil", "{0} promoted {1} to council."
}
, {
"playerpromotedowner", "{0} promoted {1} to new owner."
}
, {
"usagedemote", "Usage: <color={0}>/clan demote <name></color>"
}
, {
"notamoderator", "The player {0} is not a moderator of your clan."
}
, {
"notpromoted", "The player {0} is not a moderator or council of your clan."
}
, {
"playerdemoted", "{0} demoted {1} to a member."
}
, {
"councildemoted", "{0} demoted {1} to a moderator."
}
, {
"noactiveally", "Your clan has no current alliances."
}
, {
"yourffstatus", "Your FriendlyFire:"
}
, {
"yourclanallies", "Your Clan allies:"
}
, {
"allyinvites", "Ally invites:"
}
, {
"allypending", "Ally requests:"
}
, {
"allyReqHelp", "Offer an alliance to another clan"
}
, {
"allyAccHelp", "Accept an alliance from another clan"
}
, {
"allyDecHelp", "Decline an alliance from another clan"
}
, {
"allyCanHelp", "Cancel an alliance with another clan"
}
, {
"reqAlliance", "[{0}] has requested a clan alliance"
}
, {
"invitePending", "You already have a pending alliance invite for [{0}]"
}
, {
"clanNoExist", "The clan [{0}] does not exist"
}
, {
"alreadyAllies", "You are already allied with"
}
, {
"allyProvideName", "You need to provide a Clan name"
}
, {
"allyLimit", "You already have the maximum allowed ally limit"
}
, {
"allyAccLimit", "You can not accept the alliance with {0}.You reached the limit"
}
, {
"allyCancel", "You have cancelled your alliance with [{0}]"
}
, {
"allyCancelSucc", "{0} has cancelled your clan alliance"
}
, {
"noAlly", "Your clans have no alliance with each other"
}
, {
"noAllyInv", "You do not have a alliance invite from [{0}]"
}
, {
"allyInvWithdraw", "You have cancelled your request to [{0}]"
}
, {
"allyDeclined", "You have declined the clan alliance from [{0}]"
}
, {
"allyDeclinedSucc", "[{0}] has declined your alliance request"
}
, {
"allyReq", "You have requested a clan alliance from [{0}]"
}
, {
"allyAcc", "You have accepted the clan alliance from [{0}]"
}
, {
"allyAccSucc", "[{0}] has accepted your alliance request"
}
, {
"allyPendingInfo", "Your clan has pending ally request(s).Check those in the clan overview."
}
, {
"clanffdisabled", "You have <color={0}>disabled</color> friendly fire for your clan.\nThey are safe!"
}
, {
"clanffenabled", "You have <color={0}>enabled</color> friendly fire for your clan.\nTake care!"
}
, {
"yourname", "YOU"
}
, {
"helpavailablecmds", "Available commands:"
}
, {
"helpinformation", "Display your clan information"
}
, {
"helpmessagemembers", "Send a message to all members"
}
, {
"helpmessageally", "Send a message to all allied members"
}
, {
"helpcreate", "Create a new clan"
}
, {
"helpjoin", "Join a clan by invitation"
}
, {
"helpleave", "Leave your clan"
}
, {
"helptoggleff", "Toggle friendlyfire status"
}
, {
"helpinvite", "Invite a player"
}
, {
"helpwithdraw", "Cancel an invite"
}
, {
"helpkick", "Kick a member"
}
, {
"helpallyoptions", "Lists the ally options"
}
, {
"helppromote", "Promote a member"
}
, {
"helpdemote", "Demote a member"
}
, {
"helpdisband", "Disband your clan (no undo)"
}
, {
"helpmoderator", "Moderator"
}
, {
"helpowner", "Owner"
}
, {
"helpcommands", "commands:"
}
, {
"helpconsole", "Open F1 console and type:"
}
, {
"yourradarstatus", "Your ClanRadar:"
}
, {
"clanradardisabled", "Clan radar disabled"
}
, {
"clanradarenabled", "Clan radar enabled"
}
, {
"helptoggleradar", "Toggle clanradar status"
}
, {
"clanArgCreate", "create"
}
, {
"clanArgInvite", "invite"
}
, {
"clanArgLeave", "leave"
}
, {
"clanArgWithdraw", "withdraw"
}
, {
"clanArgJoin", "join"
}
, {
"clanArgPromote", "promote"
}
, {
"clanArgDemote", "demote"
}
, {
"clanArgFF", "ff"
}
, {
"clanArgRadar", "radar"
}
, {
"clanArgAlly", "ally"
}
, {
"clanArgHelp", "help"
}
, {
"clanArgKick", "kick"
}
, {
"clanArgDisband", "disband"
}
, {
"clanArgForever", "forever"
}
, {
"clanArgNameId", "<name|id>"
}
, {
"allyArgRequest", "request"
}
, {
"allyArgRequestShort", "req"
}
, {
"allyArgAccept", "accept"
}
, {
"allyArgAcceptShort", "acc"
}
, {
"allyArgDecline", "decline"
}
, {
"allyArgDeclineShort", "dec"
}
, {
"allyArgCancel", "cancel"
}
, {
"allyArgCancelShort", "can"
}
, {
"clanchatmuted", "You may not clanchat, you are muted."
}
, {
"clanUItitle", "Clan System by RustPlugin.ru / OxideBro"
}
, {
"clanTOPUItitle", "Clans TOP"
}
,
}
, this);
lang.RegisterMessages(new Dictionary<string, string>() {
{
"nopermtocreate", "У тебя нету привилегии для создания клана."
}
, {
"nopermtojoin", "У тебя нету привилегии что бы вступать в клан."
}
, {
"nopermtojoinbyinvite", "У игрока {0} нету прав чтобы вступить в клан."
}
, {
"claninvite", "Вас пригласили в клан: [{0}] '{1}'\nЧтобы вступить, введите: <color=#FF6c6c>/clan join {0}</color>"
}
, {
"comeonline", "{0} зашел в игру!"
}
, {
"goneoffline", "{0} вышел с игры!"
}
, {
"friendlyfire", "{0} ваш соклановец, и не может получить урон.\nИспользуйте: <color=#FF6c6c>/clan ff</color> чтобы включить урон"
}
, {
"allyfriendlyfire", "{0} является союзником и не может получить урон."
}
, {
"notmember", "В настоящее время вы не являетесь членом клана."
}
, {
"youareownerof", "Вы являетесь владельцем:"
}
, {
"youaremodof", "Вы являетесь модератором:"
}
, {
"youarecouncilof", "Вы советник в:"
}
, {
"youarememberof", "Вы участник в:"
}
, {
"claninfo", " [{0}] {1}"
}
, {
"memberon", "Игроки клана в сети: "
}
, {
"overviewnamecolor", "<color=#FF6c6c>{1}</color>"
}
, {
"memberoff", "Игроки клана не в сети: "
}
, {
"notmoderator", "Вы должны быть модератором своего клана, чтобы использовать эту команду."
}
, {
"pendinvites", "Ожидающие приглашения: "
}
, {
"bannedwords", "Tег клана содержит запрещенные слова."
}
, {
"viewthehelp", "Чтобы просмотреть больше команд, введите: <color=#FF6c6c>/{1}</color>"
}
, {
"hintlength", "Клановый тег должнен быть от {0} до {1} символов"
}
, {
"hintchars", "Клановый тег может использовать только 'a-z' 'A-Z' '0-9' '{0}' символы"
}
, {
"providedesc", "Пожалуйста, уточните краткое описание вашего клана."
}
, {
"tagblocked", "Уже есть клан с этим тегом."
}
, {
"nownewowner", "Теперь вы владелец клана [{0}] \"{1}\""
}
, {
"inviteplayers", "Чтобы пригласить новых участников, введите: <color=#FF6c6c>/clan invite <name></color>"
}
, {
"nosuchplayer", "Нет такого игрока или имя игрока указано не верно: {0}"
}
, {
"alreadymember", "Этот игрок уже является членом вашего клана: {0}"
}
, {
"alreadyinvited", "Этот игрок уже приглашен в ваш клан: {0}"
}
, {
"alreadyinclan", "Этот игрок уже в клане: {0}"
}
, {
"invitebroadcast", "{0} вступил в клан {1}."
}
, {
"notinvited", "Этот игрок не был приглашен в ваш клан: {0}"
}
, {
"canceledinvite", "{0} отменил приглашение {1}."
}
, {
"youalreadymember", "Вы уже являетесь членом клана."
}
, {
"younotinvited", "Вы не были приглашены в этот клан."
}
, {
"reachedmaximum", "Этот клан уже достиг максимального количества участников."
}
, {
"broadcastformat", "<color=#FF6c6c>{1}</color>: {2}"
}
, {
"allybroadcastformat", "[{0}] <color=#FF6c6c>{2}</color>: {3}"
}
, {
"clanrenamed", "{0} переименовал переименовал клан в: [{1}]."
}
, {
"yourenamed", "Вы переименовали клан [{0}] в [{1}]"
}
, {
"clandeleted", "{0} удалил свой клан."
}
, {
"youdeleted", "Вы удалили клан [{0}]"
}
, {
"noclanfound", "Нету клана с этим тегом [{0}]"
}
, {
"renamerightsowner", "Вы должны быть администратором сервера, чтобы переименовать кланы."
}
, {
"deleterightsowner", "Вы должны быть администратором сервера, чтобы удалять кланы."
}
, {
"clandisbanded", "Ваш текущий клан был распущен навсегда."
}
, {
"needclanowner", "Вы должны быть владельцем своего клана, чтобы использовать эту команду."
}
, {
"needclanownercouncil", "Вы должны быть владельцем или модератором, чтобы использовать эту команду."
}
, {
"playerjoined", "{0} присоединился к клану!"
}
, {
"waskicked", "{0} выгнал {1} из клана."
}
, {
"modownercannotkicked", "Игрок {0} является владельцем или модератором и не может быть выкинут."
}
, {
"notmembercannotkicked", "Игрок {0} не является членом клана."
}
, {
"playerleft", "{0} покинул клан."
}
, {
"youleft", "Вы покинули свой текущий клан."
}
, {
"notaclanmember", "Игрок {0} не является членом вашего клана."
}
, {
"maximummods", "Этот клан уже достиг максимального количества модераторов."
}
, {
"playerpromo
// ... [Code preview truncated due to length. Full source in attached file] ...