C#:
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using Oxide.Game.Rust.Cui;
using Oxide.Core.Plugins;
namespace Oxide.Plugins {
[Info("IQMarker", "Mercury", "0.0.5")]
[Description("Маркеры для ваших любимчиков")]
class IQMarker : RustPlugin {
#region Reference
[PluginReference]
Plugin ImageLibrary, Friends;
public string GetImage(string shortname, ulong skin = 0) => (string)ImageLibrary?.Call("GetImage", shortname, skin);
public bool AddImage(string url, string shortname, ulong skin = 0) => (bool)ImageLibrary?.Call("AddImage", url, shortname, skin);
public void SendImage(BasePlayer player, string imageName, ulong imageId = 0) => ImageLibrary?.Call("SendImage", player, imageName, imageId);
public bool HasImage(string imageName) => (bool)ImageLibrary?.Call("HasImage", imageName);
public bool IsFriends(ulong TargetID, ulong PlayerID) {
if (Friends == null) return false;
if ((bool)Friends.Call("HasFriend", PlayerID, TargetID)) return true;
else return false;
}
public void LoadedImage() {
var Icon = config.MarkesSettings.IconSetting.IconList;
for (int i = 0; i < Icon.Count; i++) {
if (!HasImage($"ICON_{Icon[i].PNG}_{i}")) AddImage(Icon[i].PNG, $"ICON_{Icon[i].PNG}_{i}");
}
}
public void CachedImage(BasePlayer player) {
var Icon = config.MarkesSettings.IconSetting.IconList;
for (int i = 0; i < Icon.Count; i++) SendImage(player, $"ICON_{Icon[i].PNG}_{i}");
}
#endregion
#region Vars
public static string PermissionUseMarker = "iqmarker.use";
public static string PermissionUseColorList = "iqmarker.usecolorlist";
public static string PermissionUseCustomColor = "iqmarker.usecustomcolor";
public static string PermissionUseSizer = "iqmarker.usesize";
public void RegisteredPermissions() {
var ColorList = config.AccessSettings.ColorListMarker;
var Markers = config.MarkesSettings;
var HealtBar = Markers.HealthBarSetting;
var DamageText = Markers.DamageTextSetting;
var Icon = Markers.IconSetting;
Register(PermissionUseMarker);
Register(PermissionUseColorList);
Register(PermissionUseCustomColor);
Register(PermissionUseSizer);
Register(HealtBar.PermissionsHealthBar);
Register(HealtBar.PermissionsHealtBarDamageText);
Register(HealtBar.PermissionsHealtBarWounded);
Register(DamageText.PermissionsDamageText);
Register(DamageText.PermissionsDamageTextWounded);
Register(Icon.PermissionsIcon);
Register(Icon.PermissionsIconWounded);
Register(Icon.PermissionsIconDamageText);
for (int i = 0; i < Icon.IconList.Count; i++) Register(Icon.IconList[i].Permissions);
for (int i = 0; i < ColorList.Count; i++) Register(ColorList[i].Permissions);
}
public void ReturnSettingsMore(BasePlayer player) {
if (!DataInformation.ContainsKey(player.userID)) return;
var Data = DataInformation[player.userID];
var HealthBar = Data.HealthBarMore;
var DamageText = Data.DamageTextMore;
var Icon = Data.IconMore;
var Markers = config.MarkesSettings;
var HealtBarCfg = Markers.HealthBarSetting;
var DamageTextCfg = Markers.DamageTextSetting;
var IconCfg = Markers.IconSetting;
if (HealthBar.TurnDamageText) if (!permission.UserHasPermission(player.UserIDString, HealtBarCfg.PermissionsHealtBarDamageText)) HealthBar.TurnDamageText = false;
if (HealthBar.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, HealtBarCfg.PermissionsHealtBarWounded)) HealthBar.TurnWounded = false;
if (DamageText.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, DamageTextCfg.PermissionsDamageTextWounded)) DamageText.TurnWounded = false;
if (Icon.TurnDamageText) if (!permission.UserHasPermission(player.UserIDString, IconCfg.PermissionsIconDamageText)) Icon.TurnDamageText = false;
if (Icon.TurnWounded) if (!permission.UserHasPermission(player.UserIDString, IconCfg.PermissionsIconWounded)) Icon.TurnWounded = false;
}
public void Register(string Permissions) {
if (!IsNullOrWhiteSpace(Permissions)) if (!permission.PermissionExists(Permissions, this)) permission.RegisterPermission(Permissions, this);
}
#endregion
public static bool IsNullOrWhiteSpace(string value) {
if (value == null) {
return true;
}
for (int i = 0; i < value.Length; i++) {
if (!char.IsWhiteSpace(value[i])) {
return false;
}
}
return true;
}
#region Configuration
private static Configuration config = new Configuration();
private class Configuration {
[JsonProperty("Настройка плагина")]
public AccessSetting AccessSettings = new AccessSetting();
[JsonProperty("Настройка интерфейса плагина")]
public SettingsInterface SettingsInterfaces = new SettingsInterface();
[JsonProperty("Настройка маркеров")]
public MarkersSetting MarkesSettings = new MarkersSetting();
[JsonProperty("Настройка для новых пользователей(Будьте внимательны,эти настройки даются по умолчанию вне зависимости от прав,если игрок их выключит и у него не будет прав, они ему потребуются для повторного включения)")]
public UserSettings UserSetting = new UserSettings();
internal class AccessSetting {
[JsonProperty("true - включить настройку маркеров/false - отключить настройку")]
public bool UseSettingsMarker;
[JsonProperty("Настройка доступных цветов для маркера")]
public List<ColorList> ColorListMarker = new List<ColorList>();
internal class ColorList {
[JsonProperty("Права доступа для этого цвета")]
public string Permissions;
[JsonProperty("HEX цвет")]
public string HexColor;
}
}
internal class UserSettings {
[JsonProperty("Включен ли маркер для новых игроков?(true - да/false - нет)")]
public bool DefaultTurnOnMarker;
[JsonProperty("Стандартный цвет маркера для новых игроков(HEX)")]
public string DefaultHexMarker;
[JsonProperty("Стандартный вид маркера для новых игркоов (0 - Текст с дамагом | 1 - Полоса ХП | 2 - Иконка)")]
public MarkerType DefaultMarkerType;
[JsonProperty("Стандартный размер маркера для новых игркоов (0 - Маленький | 1 - Средний | 2 - Большой)")]
public TypeSize DefaultMarkerSize;
[JsonProperty("Дополнительные настройки полосы ХП для новых игрков")]
public HealthBar DefaultHealthBar = new HealthBar();
[JsonProperty("Дополнительные настройки текста с уроном для новых игрков")]
public DamageText DefaultDamageText = new DamageText();
[JsonProperty("Дополнительные настройки иконки для новых игрков")]
public Icon DefaultIcon = new Icon();
internal class HealthBar {
[JsonProperty("Включить отображение текста с дамагом(true - да/false - нет)")]
public bool TurnDamageText;
[JsonProperty("Включить отображение иконки падения(true - да/false - нет)")]
public bool TurnWounded;
}
internal class DamageText {
[JsonProperty("Включить отображение текста с дамагом(true - да /false - нет)")]
public bool TurnWounded;
}
internal class Icon {
[JsonProperty("Включить отображение текста с дамагом(true - да / false - нет)")]
public bool TurnDamageText;
[JsonProperty("Включить отображение иконки падения(true - да/false - нет)")]
public bool TurnWounded;
}
}
internal class MarkersSetting {
[JsonProperty("Настройка маркера HealthBar")]
public HealthBarSettings HealthBarSetting = new HealthBarSettings();
[JsonProperty("Настройка маркера DamageText")]
public DamageText DamageTextSetting = new DamageText();
[JsonProperty("Настройка маркера Icon")]
public Icon IconSetting = new Icon();
internal class HealthBarSettings {
[JsonProperty("Общая настройка")]
public GeneralSettings GeneralSetting = new GeneralSettings();
[JsonProperty("Пермишенс для доступа к типу маркера HealthBar")]
public string PermissionsHealthBar;
[JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение урона рядом с показателем")]
public string PermissionsHealtBarDamageText;
[JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение иконки с падением игрока")]
public string PermissionsHealtBarWounded;
}
internal class DamageText {
[JsonProperty("Общая настройка")]
public GeneralSettings GeneralSetting = new GeneralSettings();
[JsonProperty("Пермишенс для доступа к типу маркера DamageText")]
public string PermissionsDamageText;
[JsonProperty("Пермишенс для доступа дополнению DamageText , отображение иконки с падением игрока")]
public string PermissionsDamageTextWounded;
}
internal class Icon {
[JsonProperty("Общая настройка")]
public GeneralSettings GeneralSetting = new GeneralSettings();
[JsonProperty("Пермишенс для доступа к типу маркера Icon")]
public string PermissionsIcon;
[JsonProperty("Пермишенс для доступа дополнению Icon , отображение урона рядом с показателем")]
public string PermissionsIconDamageText;
[JsonProperty("Пермишенс для доступа дополнению HealthBar , отображение иконки с падением игрока")]
public string PermissionsIconWounded;
[JsonProperty("Список иконок(Название - ссылка на иконку 64х64)")]
public List<IconListClass> IconList = new List<IconListClass>();
internal class IconListClass {
public string Permissions;
public string PNG;
}
}
internal class GeneralSettings {
[JsonProperty("Отображаемое имя")]
public string DisplayName;
[JsonProperty("Описание")]
public string Description;
}
}
internal class SettingsInterface {
[JsonProperty("Настройка основнвой панели")]
public MainPanel InterfaceMainPanel = new MainPanel();
[JsonProperty("Настройка панели с настройкой маркера")]
public SettingsMarker InterfaceSettingsMarker = new SettingsMarker();
[JsonProperty("HEX цвета текста")]
public string HexLabels;
internal class MainPanel {
[JsonProperty("HEX заднего фона")]
public string HexBackground;
[JsonProperty("Material заднего фона")]
public string MaterialBackground;
[JsonProperty("Sprite логотипа")]
public string SpriteLogoBackground;
}
internal class SettingsMarker {
[JsonProperty("HEX кнопки настройки")]
public string HexButtonMain;
[JsonProperty("HEX поля ввода для настройки цвета маркера")]
public string HexButtonInputPanel;
[JsonProperty("HEX выбранного элемента отображения маркера")]
public string HexActiveShowMarker;
[JsonProperty("HEX не выбранного элемента отображения маркера")]
public string HexInActiveShowMarker;
[JsonProperty("Sprite не выбранного элемента отображения маркера")]
public string SpriteActiveShowMarker;
[JsonProperty("Sprite выбранного элемента отображения маркера")]
public string SpriteInActiveShowMarker;
[JsonProperty("HEX панели с типом маркера")]
public string HexTypeMarkerPanel;
[JsonProperty("HEX кнопки с доступным типом маркера")]
public string HexTypeMarkerAcces;
[JsonProperty("HEX кнопки с недоступным типом маркера")]
public string HexTypeMarkerDeading;
[JsonProperty("HEX кнопки с выбранным типом маркера")]
public string HexTypeMarkerTaking;
}
}
public static Configuration GetNewConfiguration() {
return new Configuration {
#region AccessSettings
AccessSettings = new AccessSetting {
UseSettingsMarker = true, ColorListMarker = new List<AccessSetting.ColorList> {
new AccessSetting.ColorList {
HexColor = "#FF6666", Permissions = "iqmarker.red"
}
, new AccessSetting.ColorList {
HexColor = "#FF3366", Permissions = "iqmarker.default"
}
, new AccessSetting.ColorList {
HexColor = "#FF33CC", Permissions = "iqmarker.default"
}
, new AccessSetting.ColorList {
HexColor = "#FF66FF", Permissions = "iqmarker.purple"
}
, new AccessSetting.ColorList {
HexColor = "#9900FF", Permissions = "iqmarker.purple"
}
, new AccessSetting.ColorList {
HexColor = "#00CCFF", Permissions = "iqmarker.aqua"
}
, new AccessSetting.ColorList {
HexColor = "#33CC66", Permissions = "iqmarker.green"
}
, new AccessSetting.ColorList {
HexColor = "#FF9933", Permissions = "iqmarker.default"
}
,
}
}
,
#endregion
#region Markers
MarkesSettings = new MarkersSetting {
HealthBarSetting = new MarkersSetting.HealthBarSettings {
PermissionsHealthBar = "iqmarker.healthbar", PermissionsHealtBarWounded = "iqmarker.healthbarwound", PermissionsHealtBarDamageText = "iqmarker.damagetext", GeneralSetting = new MarkersSetting.GeneralSettings {
DisplayName = "<size=16><b>ИНДИКАТОР ЗДОРОВЬЯ</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ПОЯВЛЯТЬСЯ ИНДИКАТОР ЗДОРОВЬЯ ЦЕЛИ,КОТОРУЮ ВЫ АТАКУЕТЕ</size>"
}
}
, DamageTextSetting = new MarkersSetting.DamageText {
PermissionsDamageText = "iqmarker.damagetext", PermissionsDamageTextWounded = "iqmarker.damagetextwound", GeneralSetting = new MarkersSetting.GeneralSettings {
DisplayName = "<size=16><b>ТЕКСТОВЫЙ ИНДИКАТОР</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ОТОБРАЖАТЬСЯ НАНЕСЕННЫЙ УРОН</size>"
}
}
, IconSetting = new MarkersSetting.Icon {
PermissionsIcon = "iqmarker.icon", PermissionsIconDamageText = "iqmarker.icondamagetext", PermissionsIconWounded = "iqmarker.iconwound", IconList = new List<MarkersSetting.Icon.IconListClass> {
new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/mIbPpj3.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/XCSkVNk.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/RACMuqg.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/tqtF73m.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/uIHaR7Q.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/Dbxnsm1.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/bzsU7kE.png"
}
, new MarkersSetting.Icon.IconListClass {
Permissions = "", PNG = "https://i.imgur.com/2Wke9lp.png"
}
,
}
, GeneralSetting = new MarkersSetting.GeneralSettings {
DisplayName = "<size=16><b>ИНДИКАТОР ИКОНКА</b></size>", Description = "<size=11>ПРИ ПОПАДАНИИ БУДЕТ ОТОБРАЖАТЬСЯ ИКОНКА С ПОПАДАНИЕМ</size>"
}
}
}
,
#endregion
#region Interface
SettingsInterfaces = new SettingsInterface {
HexLabels = "#FFFFFFFF", InterfaceMainPanel = new SettingsInterface.MainPanel {
HexBackground = "#444440A6", MaterialBackground = "assets/content/ui/uibackgroundblur-ingamemenu.mat", SpriteLogoBackground = "assets/icons/workshop.png",
}
, InterfaceSettingsMarker = new SettingsInterface.SettingsMarker {
HexButtonInputPanel = "#93C34680", HexButtonMain = "#93C34680", HexActiveShowMarker = "#93C34680", HexInActiveShowMarker = "#C3454580", SpriteInActiveShowMarker = "assets/icons/vote_down.png", SpriteActiveShowMarker = "assets/icons/vote_up.png", HexTypeMarkerPanel = "#FFFFFF29", HexTypeMarkerAcces = "#93C344FF", HexTypeMarkerTaking = "#93C34480", HexTypeMarkerDeading = "#C3454580",
}
,
}
,
#endregion
#region DefaultUser
UserSetting = new UserSettings {
DefaultTurnOnMarker = true, DefaultHexMarker = "#05bec5", DefaultMarkerType = MarkerType.Icon, DefaultMarkerSize = TypeSize.Middle, DefaultDamageText = new UserSettings.DamageText {
TurnWounded = false,
}
, DefaultHealthBar = new UserSettings.HealthBar {
TurnDamageText = false, TurnWounded = false,
}
, DefaultIcon = new UserSettings.Icon {
TurnWounded = true, TurnDamageText = true
}
,
}
#endregion
}
;
}
}
protected override void LoadConfig() {
base.LoadConfig();
try {
config = Config.ReadObject<Configuration>();
if (config == null) LoadDefaultConfig();
}
catch {
PrintWarning($"Ошибка чтения #57 конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
LoadDefaultConfig();
}
NextTick(SaveConfig);
}
protected override void LoadDefaultConfig() => config = Configuration.GetNewConfiguration();
protected override void SaveConfig() => Config.WriteObject(config);
#endregion
#region Data
public enum TypeSize {
Little, Middle, Big
}
public enum MarkerType {
DamageText, HealthBar, Icon,
}
[JsonProperty("Информация о настройках хитов игрока")]
public Dictionary<ulong, SettingsUser> DataInformation = new Dictionary<ulong, SettingsUser>();
public class SettingsUser {
public bool TurnMarker;
public bool HitAnimal;
public bool HitPlayer;
public bool HitBuilding;
public bool HitEntity;
public bool HitTransport;
public bool HitNPC;
public string HexMarker;
public TypeSize typeSize;
public MarkerType markerType;
public HealthBar HealthBarMore = new HealthBar();
public DamageText DamageTextMore = new DamageText();
public Icon IconMore = new Icon();
internal class HealthBar {
public bool TurnDamageText;
public bool TurnWounded;
}
internal class DamageText {
public bool TurnWounded;
}
internal class Icon {
public bool TurnDamageText;
public bool TurnWounded;
public int IndexMarker;
}
}
void ReadData() {
DataInformation = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, SettingsUser>>("IQMarker/SettingsUser");
}
void WriteData() {
timer.Every(60f, () => {
Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("IQMarker/SettingsUser", DataInformation);
}
);
}
void RegisteredDataUser(BasePlayer player) {
var Default = config.UserSetting;
if (!DataInformation.ContainsKey(player.userID)) DataInformation.Add(player.userID, new SettingsUser {
TurnMarker = Default.DefaultTurnOnMarker, HitAnimal = true, HitPlayer = true, HitBuilding = true, HitEntity = true, HitNPC = true, HitTransport = true, HexMarker = Default.DefaultHexMarker, typeSize = Default.DefaultMarkerSize, markerType = Default.DefaultMarkerType, HealthBarMore = new SettingsUser.HealthBar {
TurnDamageText = Default.DefaultHealthBar.TurnDamageText, TurnWounded = Default.DefaultHealthBar.TurnWounded,
}
, DamageTextMore = new SettingsUser.DamageText {
TurnWounded = Default.DefaultDamageText.TurnWounded,
}
, IconMore = new SettingsUser.Icon {
IndexMarker = 0, TurnDamageText = Default.DefaultIcon.TurnDamageText, TurnWounded = Default.DefaultIcon.TurnWounded,
}
}
);
}
#endregion
#region Hooks
private void OnServerInitialized() {
PrintWarning("Загружаем изображения..");
LoadedImage();
ReadData();
foreach (var player in BasePlayer.activePlayerList) OnPlayerConnected(player);
WriteData();
PrintWarning("Регистрируем права..");
RegisteredPermissions();
PrintWarning("Проверяем права игроков..");
PrintWarning("Плагин загружен успешно!");
}
void OnPlayerConnected(BasePlayer player) {
RegisteredDataUser(player);
CachedImage(player);
ReturnSettingsMore(player);
}
void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) {
if (info == null || entity == null) return;
var Attacker = info?.InitiatorPlayer;
if (info.damageTypes.Total() < 1) return;
if (Attacker == null || !(bool)(Attacker is BasePlayer) || Attacker.IsNpc || Attacker.IsDead()) return;
if (entity is BaseCorpse) return;
if (!DataInformation.ContainsKey(Attacker.userID)) return;
var Data = DataInformation[Attacker.userID];
if (Data.HitAnimal) if (entity is BaseAnimalNPC || entity is Horse) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
if (Data.HitBuilding) if (entity is BuildingBlock) if (!entity.IsDestroyed) Interface_Attack_Hit(Attacker, info);
if (Data.HitNPC) if (entity is NPCMurderer || entity is NPCPlayer) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
if (Data.HitPlayer) if (entity is BasePlayer) if (entity.ToPlayer().userID != Attacker.userID) if (!entity.IsDead()) Interface_Attack_Hit(Attacker, info);
if (Data.HitTransport) if (entity is BaseVehicleSeat) Interface_Attack_Hit(Attacker, info);
if (Data.HitEntity) if (entity.PrefabName.Contains("barrel") || entity.PrefabName.Contains("external") || entity is BaseOven || entity is StorageContainer || entity is SleepingBag || entity is VendingMachine || entity is Barricade || entity is MiningQuarry || entity is AutoTurret) if (!entity.IsDestroyed) Interface_Attack_Hit(Attacker, info);
}
#endregion
#region Commands
[ChatCommand("hit")]
void ChatCommandHit(BasePlayer player) {
Interface_Main_Menu(player);
}
[ConsoleCommand("hit")]
void ConsoleCommandsHit(ConsoleSystem.Arg arg) {
BasePlayer player = arg.Player();
string KeyArg = arg.Args[0].ToLower();
switch (KeyArg) {
case "debug" : {
if (player == null || !player.IsConnected) return;
if (!player.IsAdmin) return;
PrintWarning($"{player.displayName} - использовал DEBUG режим");
DebugPlayerHit(player);
PrintToConsole("Успешно использован DEBUG");
break;
}
case "turn" : {
string TurnStatus = arg.Args[1].ToLower();
switch (TurnStatus) {
case "on" : {
if (DataInformation.ContainsKey(player.userID)) DataInformation[player.userID].TurnMarker = true;
ButtonUpdateTurn(player);
break;
}
case "off" : {
if (DataInformation.ContainsKey(player.userID)) DataInformation[player.userID].TurnMarker = false;
ButtonUpdateTurn(player);
break;
}
}
break;
}
case "func" : {
string Func = arg.Args[1].ToLower();
switch (Func) {
case "selecttype" : {
string Type = arg.Args[2].ToLower();
SelectType(player, Type);
break;
}
case "sethex" : {
if (arg.Args.Length != 3) return;
if (IsNullOrWhiteSpace(arg.Args[2])) return;
string Hex = arg.Args[2].ToLower();
DataInformation[player.userID].HexMarker = Hex;
Interface_Update_Marker_Show(player);
break;
}
case "setsize" : {
if (IsNullOrWhiteSpace(arg.Args[2])) return;
TypeSize SizeType = (TypeSize)Enum.Parse(typeof(TypeSize), arg.Args[2]);
DataInformation[player.userID].typeSize = SizeType;
Interface_MP_Loaded_Size(player);
Interface_Update_Marker_Show(player);
break;
}
case "settype" : {
if (IsNullOrWhiteSpace(arg.Args[2])) return;
MarkerType MarkerType = (MarkerType)Enum.Parse(typeof(MarkerType), arg.Args[2]);
DataInformation[player.userID].markerType = MarkerType;
Interface_MP_Loaded_Markers(player);
Interface_Update_Marker_Show(player);
break;
}
}
break;
}
case "ui" : {
string UIElement = arg.Args[1].ToLower();
switch (UIElement) {
case "settings" : {
Interface_Settings_Menu(player);
Interface_Hex_Settings_Menu(player);
break;
}
case "setting_marker" : {
string Action = arg.Args[2].ToLower();
switch (Action) {
case "healthbar" : {
string HealthBarMore = arg.Args[3].ToLower();
switch (HealthBarMore) {
case "damagetext_turn" : {
if (DataInformation[player.userID].HealthBarMore.TurnDamageText) DataInformation[player.userID].HealthBarMore.TurnDamageText = false;
else DataInformation[player.userID].HealthBarMore.TurnDamageText = true;
Interface_Update_Marker_Show(player);
Show_More_Settings_Marker(player, MarkerType.HealthBar);
break;
}
case "wounded_turn" : {
if (DataInformation[player.userID].HealthBarMore.TurnWounded) DataInformation[player.userID].HealthBarMore.TurnWounded = false;
else DataInformation[player.userID].HealthBarMore.TurnWounded = true;
Interface_Update_Marker_Show(player);
Show_More_Settings_Marker(player, MarkerType.HealthBar);
break;
}
}
break;
}
case "damage_text" : {
string DamageTextMore = arg.Args[3].ToLower();
switch (DamageTextMore) {
case "wounded_turn" : {
if (DataInformation[player.userID].DamageTextMore.TurnWounded) DataInformation[player.userID].DamageTextMore.TurnWounded = false;
else DataInformation[player.userID].DamageTextMore.TurnWounded = true;
Interface_Update_Marker_Show(player);
Show_More_Settings_Marker(player, MarkerType.DamageText);
break;
}
}
break;
}
case "icon" : {
string setfpsреальнокрутой = "автор переписи - твой повелитель сетфпс";
string IconMore = arg.Args[3].ToLower();
switch (IconMore) {
case "damagetext_turn" : {
if (DataInformation[player.userID].IconMore.TurnDamageText) DataInformation[player.userID].IconMore.TurnDamageText = false;
else DataInformation[player.userID].IconMore.TurnDamageText = true;
Interface_Update_Marker_Show(player);
Show_More_Settings_Marker(player, MarkerType.Icon);
break;
}
case "wounded_turn" : {
if (DataInformation[player.userID].IconMore.TurnWounded) DataInformation[player.userID].IconMore.TurnWounded = false;
else DataInformation[player.userID].IconMore.TurnWounded = true;
Interface_Update_Marker_Show(player);
Show_More_Settings_Marker(player, MarkerType.Icon);
break;
}
case "marker_icon_set" : {
int IndexMarker = Convert.ToInt32(arg.Args[4]);
DataInformation[player.userID].IconMore.IndexMarker = IndexMarker;
Interface_Update_Marker_Show(player);
break;
}
}
break;
}
}
break;
}
}
break;
}
}
}
#endregion
#region Metods
public void SelectType(BasePlayer player, string Type) {
if (IsNullOrWhiteSpace(Type)) return;
if (!DataInformation.ContainsKey(player.userID)) return;
var Data = DataInformation[player.userID];
switch (Type.ToLower()) {
case "animal" : {
if (!Data.HitAnimal) Data.HitAnimal = true;
else Data.HitAnimal = false;
break;
}
case "player" : {
if (!Data.HitPlayer) Data.HitPlayer = true;
else Data.HitPlayer = false;
break;
}
case "building" : {
if (!Data.HitBuilding) Data.HitBuilding = true;
else Data.HitBuilding = false;
break;
}
case "entity" : {
if (!Data.HitEntity) Data.HitEntity = true;
else Data.HitEntity = false;
break;
}
case "transport" : {
if (!Data.HitTransport) Data.HitTransport = true;
else Data.HitTransport = false;
break;
}
case "npc" : {
if (!Data.HitNPC) Data.HitNPC = true;
else Data.HitNPC = false;
break;
}
}
Interface_Settings_Menu(player);
}
void DebugPlayerHit(BasePlayer player) {
var ColorList = config.AccessSettings.ColorListMarker;
var Markers = config.MarkesSettings;
var HealtBar = Markers.HealthBarSetting;
var DamageText = Markers.DamageTextSetting;
var Icon = Markers.IconSetting;
string ID = player.UserIDString;
GrantedPermission(ID, PermissionUseMarker);
GrantedPermission(ID, PermissionUseColorList);
GrantedPermission(ID, PermissionUseCustomColor);
GrantedPermission(ID, PermissionUseSizer);
GrantedPermission(ID, HealtBar.PermissionsHealthBar);
GrantedPermission(ID, HealtBar.PermissionsHealtBarDamageText);
GrantedPermission(ID, HealtBar.PermissionsHealtBarWounded);
GrantedPermission(ID, DamageText.PermissionsDamageText);
GrantedPermission(ID, DamageText.PermissionsDamageTextWounded);
GrantedPermission(ID, Icon.PermissionsIcon);
GrantedPermission(ID, Icon.PermissionsIconWounded);
GrantedPermission(ID, Icon.PermissionsIconDamageText);
for (int i = 0; i < Icon.IconList.Count; i++) GrantedPermission(ID, Icon.IconList[i].Permissions);
for (int i = 0; i < ColorList.Count; i++) GrantedPermission(ID, ColorList[i].Permissions);
}
private void GrantedPermission(string id, string perm) {
if (!permission.UserHasPermission(id, perm)) permission.GrantUserPermission(id, perm, this);
}
#endregion
#region Interface
public static string PARENT_IQ_MARKER_MAIN = "PARENT_IQ_MARKER_MAIN";
public static string PARENT_IQ_MARKER_MARKERS_PANEL = "PARENT_IQ_MARKER_MARKERS_PANEL";
public static string PARENT_IQ_MARKER_MARKERS_PANEL_MORE_SETTINGS = "PARENT_IQ_MARKER_MARKERS_PANEL_MORE_SETTINGS";
public static string PARENT_IQ_MARKER_ATTACK_HIT = "PARENT_IQ_MARKER_ATTACK_HIT";
#region Interface Main
public void Interface_Main_Menu(BasePlayer player) {
CuiElementContainer container = new CuiElementContainer();
CuiHelper.DestroyUi(player, PARENT_IQ_MARKER_MAIN);
var Interface = config.SettingsInterfaces;
container.Add(new CuiPanel {
CursorEnabled = true, RectTransform = {
AnchorMin = "0 0", AnchorMax = "1 1"
}
, Image = {
Color = HexToRustFormat(Interface.InterfaceMainPanel.HexBackground), Material = Interface.InterfaceMainPanel.MaterialBackground
}
}
, "Overlay", PARENT_IQ_MARKER_MAIN);
container.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.8677083 0.9370371", AnchorMax = "0.9921876 0.9888889"
}
, Button = {
Close = PARENT_IQ_MARKER_MAIN, Color = "0 0 0 0"
}
, Text = {
Text = lang.GetMessage("UI_CLOSE_BTN", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleCenter
}
}
, PARENT_IQ_MARKER_MAIN);
container.Add(new CuiElement {
Parent = PARENT_IQ_MARKER_MAIN, Components = {
new CuiImageComponent {
Sprite = Interface.InterfaceMainPanel.SpriteLogoBackground
}
, new CuiRectTransformComponent {
AnchorMin = $"0.015625 0.8453708", AnchorMax = $"0.08229167 0.9638893"
}
,
}
}
);
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.08645834 0.8611111", AnchorMax = "0.2541667 0.9796296"
}
, Text = {
Text = lang.GetMessage("UI_TITLE_MAIN", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerLeft
}
}
, PARENT_IQ_MARKER_MAIN);
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.08802464 0.9287037", AnchorMax = "0.2541667 0.9796296"
}
, Text = {
Text = lang.GetMessage("UI_TITLE_DESCRIPTION", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerLeft
}
}
, PARENT_IQ_MARKER_MAIN);
if (config.AccessSettings.UseSettingsMarker) {
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.6880208 0.9083464", AnchorMax = "0.9869792 0.9398148"
}
, Text = {
Text = lang.GetMessage("UI_DETAL_INFO_TITLE", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperLeft
}
}
, PARENT_IQ_MARKER_MAIN);
container.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.6880208 0.9462963", AnchorMax = "0.8609375 0.9824074"
}
, Button = {
Command = "hit ui settings", Color = HexToRustFormat(Interface.InterfaceSettingsMarker.HexButtonMain)
}
, Text = {
Text = lang.GetMessage("UI_SETTING_BUTTON", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleCenter
}
}
, PARENT_IQ_MARKER_MAIN);
}
CuiHelper.AddUi(player, container);
Interface_Marker_Panels(player);
ButtonUpdateTurn(player);
}
public void ButtonUpdateTurn(BasePlayer player) {
CuiElementContainer container = new CuiElementContainer();
CuiHelper.DestroyUi(player, "TURN_BTN");
string LangTurn = DataInformation[player.userID].TurnMarker ? "UI_TURN_SKILL_OFF" : "UI_TURN_SKILL_ON";
string CommandTurn = DataInformation[player.userID].TurnMarker ? "hit turn off" : "hit turn on";
container.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.08645833 0.8361111", AnchorMax = "0.2494792 0.8685217"
}
, Button = {
Command = CommandTurn, Color = "0 0 0 0"
}
, Text = {
Text = lang.GetMessage(LangTurn, this, player.UserIDString), Align = TextAnchor.UpperLeft
}
}
, PARENT_IQ_MARKER_MAIN, "TURN_BTN");
CuiHelper.AddUi(player, container);
Interface_Update_Marker_Show(player);
}
#endregion
#region Interface Settings Menu
public void Interface_Settings_Menu(BasePlayer player) {
CuiElementContainer container = new CuiElementContainer();
CuiHelper.DestroyUi(player, "TYPE_SHOW_SETTINGS");
var Interface = config.SettingsInterfaces;
var Data = DataInformation[player.userID];
string CommandSelect = "hit func selecttype {0}";
container.Add(new CuiPanel {
RectTransform = {
AnchorMin = "0.5010417 0.8314815", AnchorMax = "0.9843747 0.912037"
}
, Image = {
Color = "0 0 0 0"
}
}
, PARENT_IQ_MARKER_MAIN, "TYPE_SHOW_SETTINGS");
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0 0", AnchorMax = "1 0.5977009"
}
, Text = {
Text = lang.GetMessage("UI_SETTING_TYPE_SHOW", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
}
}
, "TYPE_SHOW_SETTINGS");
#region Animal
string SpriteAnimal = Data.HitAnimal ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
string ColorAnimal = Data.HitAnimal ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
container.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.002151709 0.6206903", AnchorMax = "0.1648663 1"
}
, Button = {
Command = String.Format(CommandSelect, "animal"), Color = HexToRustFormat(ColorAnimal)
}
, Text = {
Text = ""
}
}
, "TYPE_SHOW_SETTINGS", "ANIMAL_BTN");
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.221476 0", AnchorMax = "1 1"
}
, Text = {
Text = lang.GetMessage("UI_SETTINGS_TYPE_ANIMAL", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleLeft
}
}
, "ANIMAL_BTN");
container.Add(new CuiElement {
Parent = "ANIMAL_BTN", Components = {
new CuiImageComponent {
Sprite = SpriteAnimal
}
, new CuiRectTransformComponent {
AnchorMin = $"0.03355689 0.1515158", AnchorMax = $"0.19463 0.8787915"
}
,
}
}
);
#endregion
#region Player
string SpritePlayer = Data.HitPlayer ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
string ColorPlayer = Data.HitPlayer ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
container.Add(new CuiButton {
RectTransform = {
// ... [Code preview truncated due to length. Full source in attached file] ...