C#:
using Oxide.Core.Plugins;
using System;
using System.Collections.Generic;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Newtonsoft.Json;
namespace Oxide.Plugins {
[Info("IQMarker", "Mercury", "1.1.10")]
[Description("Маркеры для ваших любимчиков")]
class IQMarker : RustPlugin {
public static string PARENT_IQ_MARKER_MAIN = "PARENT_IQ_MARKER_MAIN";
public string GetImage(string shortname, ulong skin = 0) => (string)ImageLibrary?.Call("GetImage", shortname, skin);
public void Interface_Update_Marker_Show(BasePlayer player) {
CuiElementContainer container = new CuiElementContainer();
CuiHelper.DestroyUi(player, "MARKER_UPDATE_ME");
CuiHelper.DestroyUi(player, "DAMAGE_TEXT_TURN");
CuiHelper.DestroyUi(player, "WOUNDED_TURN_ICO_TEXT");
CuiHelper.DestroyUi(player, "WOUNDED_TURN_ICO");
var Data = DataInformation[player.userID];
var Interface = config.SettingsInterfaces;
string HexMarker = Data.HexMarker;
if (!DataInformation[player.userID].TurnMarker) {
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.1598962 0.8769602", AnchorMax = "0.4145834 0.9903497"
}
, Text = {
Text = lang.GetMessage("UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN", this, player.UserIDString), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
CuiHelper.AddUi(player, container);
return;
}
switch (Data.markerType) {
case MarkerType.DamageText : {
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = Resizer[Data.typeSize].AnchorMin, AnchorMax = Resizer[Data.typeSize].AnchorMax
}
, Text = {
Text = Math.Round(player.health).ToString(), FontSize = Resizer[Data.typeSize].FontSize, Color = HexToRustFormat(HexMarker), Font = "robotocondensed-bold.ttf", Align = TextAnchor.LowerCenter
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
if (Data.DamageTextMore.TurnWounded) {
container.Add(new CuiElement {
Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
new CuiImageComponent {
Sprite = "assets/icons/fall.png"
}
, new CuiRectTransformComponent {
AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
}
,
}
}
);
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
}
, Text = {
Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
}
break;
}
case MarkerType.HealthBar : {
container.Add(new CuiPanel {
RectTransform = {
AnchorMin = Resizer[Data.typeSize].healthBarCoordinate.AnchorMin, AnchorMax = Resizer[Data.typeSize].healthBarCoordinate.AnchorMax
}
, Image = {
Color = HexToRustFormat(HexMarker + "5D")
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "MARKER_UPDATE_ME");
container.Add(new CuiPanel {
RectTransform = {
AnchorMin = "0 0", AnchorMax = $"1 0.{Math.Round(player.health)}", OffsetMin = "0.8 0.8", OffsetMax = "-1 0.8"
}
, Image = {
Color = HexToRustFormat(HexMarker)
}
}
, "MARKER_UPDATE_ME");
if (Data.HealthBarMore.TurnDamageText) {
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.1921883 0.9022918", AnchorMax = "0.4255208 0.9408925"
}
, Text = {
Text = String.Format(lang.GetMessage("UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT", this, player.UserIDString), Math.Round(player.health)), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "DAMAGE_TEXT_TURN");
}
if (Data.HealthBarMore.TurnWounded) {
container.Add(new CuiElement {
Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
new CuiImageComponent {
Sprite = "assets/icons/fall.png"
}
, new CuiRectTransformComponent {
AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
}
,
}
}
);
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
}
, Text = {
Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
}
break;
}
case MarkerType.Icon : {
string MarkerKey = "ICON_{0}_{1}";
string Marker = String.Format(MarkerKey, config.MarkesSettings.IconSetting.IconList[Data.IconMore.IndexMarker].PNG, Data.IconMore.IndexMarker);
container.Add(new CuiElement {
Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = $"MARKER_UPDATE_ME", Components = {
new CuiRawImageComponent {
Png = GetImage(Marker), Color = HexToRustFormat(HexMarker)
}
, new CuiRectTransformComponent {
AnchorMin = Resizer[Data.typeSize].AnchorMin, AnchorMax = Resizer[Data.typeSize].AnchorMax
}
,
}
}
);
if(Data.IconMore.TurnDamageText) {
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.1921883 0.9022918", AnchorMax = "0.4255208 0.9408925"
}
, Text = {
Text = String.Format(lang.GetMessage("UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT", this, player.UserIDString), Math.Round(player.health)), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "DAMAGE_TEXT_TURN");
}
if (Data.IconMore.TurnWounded) {
container.Add(new CuiElement {
Parent = PARENT_IQ_MARKER_MARKERS_PANEL, Name = "WOUNDED_TURN_ICO", Components = {
new CuiImageComponent {
Sprite = "assets/icons/fall.png"
}
, new CuiRectTransformComponent {
AnchorMin = "0.1911466 0.9372742", AnchorMax = "0.2036465 0.9662247"
}
,
}
}
);
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.20625 0.9312425", AnchorMax = "0.4229166 0.9698432"
}
, Text = {
Text = lang.GetMessage("UI_ELEMENT_MORE_MARKER_WOUNDED", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleLeft
}
}
, PARENT_IQ_MARKER_MARKERS_PANEL, "WOUNDED_TURN_ICO_TEXT");
}
break;
}
}
CuiHelper.AddUi(player, container);
}
public static string PermissionUseSizer = "iqmarker.usesize";
private void OnServerInitialized() {
PrintWarning(LanguageEn ? "Loaded images.." : "Загружаем изображения..");
LoadedImage();
foreach (var player in BasePlayer.activePlayerList) OnPlayerConnected(player);
PrintWarning(LanguageEn ? "Registering rights.." : "Регистрируем права..");
RegisteredPermissions();
PrintWarning(LanguageEn ? "We check the rights of the players.." : "Проверяем права игроков..");
PrintWarning(LanguageEn ? "Plugin loaded successfully!" : "Плагин загружен успешно!");
}
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);
}
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 static string PermissionUseCustomColor = "iqmarker.usecustomcolor";
[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(LanguageEn ? $"{player.displayName} - used DEBUG mode" : $"{player.displayName} - использовал DEBUG режим");
DebugPlayerHit(player);
PrintToConsole(LanguageEn ? "DEBUG successfully used" : "Успешно использован 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 (String.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 (String.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 (String.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 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;
}
}
}
void WriteData() => Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("IQMarker/SettingsUser", DataInformation);
public void SelectType(BasePlayer player, string Type) {
if (String.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);
}
public class ResizerAttackHit {
public readonly Dictionary<TypeSize, TypeResize> ResizerAttack = new Dictionary<TypeSize, TypeResize> {
[TypeSize.Big]
= new TypeResize {
IconParams = new TypeResize.Params {
AnchorMin = "0.4833336 0.4666665", AnchorMax = "0.5166664 0.5259269",
}
, HealthBar = new TypeResize.Params {
AnchorMin = "0.4359384 0.4731481", AnchorMax = "0.4406259 0.5277778",
}
, FontSizeText = 20,
}
, [TypeSize.Middle] = new TypeResize {
IconParams = new TypeResize.Params {
AnchorMin = "0.4875002 0.473148", AnchorMax = "0.5125002 0.5175922"
}
, HealthBar = new TypeResize.Params {
AnchorMin = "0.43698 0.4805555", AnchorMax = "0.4395834 0.5166664",
}
, FontSizeText = 15,
}
, [TypeSize.Little] = new TypeResize {
IconParams = new TypeResize.Params {
AnchorMin = "0.4916668 0.4796295", AnchorMax = "0.5083334 0.509259"
}
, HealthBar = new TypeResize.Params {
AnchorMin = "0.4375008 0.487037", AnchorMax = "0.4390625 0.5101849",
}
, FontSizeText = 10,
}
}
;
internal class TypeResize {
public Params IconParams = new Params();
public Params HealthBar = new Params();
public int FontSizeText;
internal class Params {
public string AnchorMin;
public string AnchorMax;
}
}
}
public enum MarkerType {
DamageText, HealthBar, Icon,
}
/// <summary>
/// Обновление х.х.х
/// - Исправление после обновления игры
/// </summary>
///
private const Boolean LanguageEn = false;
public void Register(string Permissions) {
if (!String.IsNullOrWhiteSpace(Permissions)) if (!permission.PermissionExists(Permissions, this)) permission.RegisterPermission(Permissions, this);
}
public static string PARENT_IQ_MARKER_MARKERS_PANEL = "PARENT_IQ_MARKER_MARKERS_PANEL";
public void Interface_Hex_Settings_Menu(BasePlayer player) {
if (!permission.UserHasPermission(player.UserIDString, PermissionUseCustomColor)) return;
CuiElementContainer container = new CuiElementContainer();
CuiHelper.DestroyUi(player, "HEX_SHOW_SETTINGS");
var Interface = config.SettingsInterfaces;
var Data = DataInformation[player.userID];
string CommandSetHex = "hit func sethex {0}";
container.Add(new CuiPanel {
RectTransform = {
AnchorMin = "0.5010417 0.7740743", AnchorMax = "0.9843747 0.8435205"
}
, Image = {
Color = "0 0 0 0"
}
}
, PARENT_IQ_MARKER_MAIN, "HEX_SHOW_SETTINGS");
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0 0", AnchorMax = "1 0.5977009"
}
, Text = {
Text = lang.GetMessage("UI_SETTING_HEX_SHOW", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
}
}
, "HEX_SHOW_SETTINGS");
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.378233 0.4266549", AnchorMax = "0.5959055 1"
}
, Text = {
Text = lang.GetMessage("UI_SETTING_HEX_SHOW_YOUR", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Font = "robotocondensed-bold.ttf", Align = TextAnchor.UpperRight
}
}
, "HEX_SHOW_SETTINGS");
string SetHex = "";
container.Add(new CuiPanel {
RectTransform = {
AnchorMin = "0.6056038 0.6399806", AnchorMax = "1 0.95"
}
, Image = {
Color = HexToRustFormat(Interface.InterfaceSettingsMarker.HexButtonInputPanel), Material = "assets/content/ui/uibackgroundblur-ingamemenu.mat"
}
}
, "HEX_SHOW_SETTINGS", "HEX_SHOW_SETTINGS" + ".Input");
container.Add(new CuiElement {
Parent = "HEX_SHOW_SETTINGS" + ".Input", Name = "HEX_SHOW_SETTINGS" + ".Input.Current", Components = {
new CuiInputFieldComponent {
Text = SetHex, FontSize = 12, Command = String.Format(CommandSetHex, SetHex), Align = TextAnchor.MiddleCenter, CharsLimit = 10
}
, new CuiRectTransformComponent {
AnchorMin = "0 0", AnchorMax = "1 1"
}
}
}
);
CuiHelper.AddUi(player, container);
}
public static string PARENT_IQ_MARKER_ATTACK_HIT = "PARENT_IQ_MARKER_ATTACK_HIT";
private Boolean IsArenaTournament(BasePlayer player) {
Item itemPlayer = player.GetActiveItem();
if (itemPlayer == null) return true;
return ArenaTournament && ArenaTournament.Call<Boolean>("IsOnTournament", player.userID.Get());
}
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}");
}
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);
}
void OnPlayerConnected(BasePlayer player) {
RegisteredDataUser(player);
CachedImage(player);
ReturnSettingsMore(player);
}
public Dictionary<ulong, SettingsUser> DataInformation = new Dictionary<ulong, SettingsUser>();
protected override void SaveConfig() => Config.WriteObject(config);
protected override void LoadConfig() {
base.LoadConfig();
try {
config = Config.ReadObject<Configuration>();
if (config == null) LoadDefaultConfig();
}
catch {
PrintWarning(LanguageEn ? $"Error reading # 57 configuration 'oxide/config/{Name}', creating a new configuration!!" : $"Ошибка чтения #57 конфигурации 'oxide/config/{Name}', создаём новую конфигурацию!!");
LoadDefaultConfig();
}
NextTick(SaveConfig);
}
private new void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
["UI_TITLE_DESCRIPTION"]
= "<size=15>CHOOSE YOURSELF</size>", ["UI_TITLE_MAIN"] = "<size=50><b>MARKER</b></size>", ["UI_CLOSE_BTN"] = "<size=30><b>CLOSE</b></size>", ["UI_TURN_SKILL_ON"] = "<size=20><b><color=#93C346FF>ON MARKER</color></b></size>", ["UI_TURN_SKILL_OFF"] = "<size=20><b><color=#FF5331FF>OFF MARKER</color></b></size>", ["UI_DETAL_INFO_TITLE"] = "<b><size=14>YOU CAN CUSTOMIZE THE MARKER MORE DETAILS</size></b>", ["UI_SETTING_BUTTON"] = "<b><size=15>SETTING MARKER</size></b>", ["UI_SETTING_TYPE_SHOW"] = "<b><size=17>CHOOSE WHERE YOU WILL HAVE A MARKER TO BE DISPLAYED</size></b>", ["UI_SETTING_HEX_SHOW"] = "<b><size=17>ENTER YOUR OWN COLOR IN HEX FOR MARKER</size></b>", ["UI_SETTING_HEX_SHOW_YOUR"] = "<b><size=20>YOUR HEX :</size></b>", ["UI_SETTINGS_TYPE_ANIMAL"] = "<size=12><b>ANIMAL</b></size>", ["UI_SETTINGS_TYPE_PLAYER"] = "<size=12><b>PLAYER</b></size>", ["UI_SETTINGS_TYPE_BUILDING"] = "<size=12><b>BUILDING</b></size>", ["UI_SETTINGS_TYPE_ENTITY"] = "<size=12><b>ENTITY</b></size>", ["UI_SETTINGS_TYPE_TRANSPORT"] = "<size=12><b>TRANSPORT</b></size>", ["UI_SETTINGS_TYPE_NPC"] = "<size=12><b>SCIENTIEST</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER"] = "<size=50><b>MARKERK:</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN"] = "<size=35><b><color=#FF5331FF>MARKER TURN OFF</color></b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE"] = "<size=17><b>CHOOSE ONE OF THE AVAILABLE SIZES FOR THE MARKER</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_COLOR"] = "<size=17><b>CHOOSE ONE OF THE AVAILABLE COLORS FOR THE MARKER</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_LITTLE"] = "<size=18>LITTLE</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_MIDDLE"] = "<size=18>MIDDLE</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_BIG"] = "<size=18>BIG</size>", ["UI_ATTAKER_KILLEN"] = "KILLED", ["UI_MARKER_PANEL_SHOW_MARKER_LIST_TITLE"] = "<size=20><b>CHOOSE A CONVENIENT MARKER TYPE </b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_DEADING"] = "<size=15><b>NOT AVAILABLE FOR SELECTION</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_TAKING"] = "<size=15><b>SELECTED TYPE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_ACCES"] = "<size=15><b>SELECT THIS TYPE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE"] = "<size=20><b>YOU CAN CHOOSE AN ADDITIONAL SETTING</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_DESCRIPTION"] = "<size=12><b>SET YOUR OWN MARKER AS YOU WILL BE COMFORTABLE</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_DAMAGE_TEXT"] = "<size=16><b>DISPLAY DAMAGE NEAR THE {0}</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_WOUNDED_ICO"] = "<size=16><b>DISPLAYING THE FALL ICON WHEN THE PLAYER IS FALLING</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_ICOLIST_ICO"] = "<size=16><b>DISPLAYING THE MARKER ICON</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_YES"] = "<size=18><b>TURN ON</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_NO"] = "<size=18><b>TURN OFF</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_DEADING"] = "<size=18><b>NO ACCESS</b></size>", ["UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT"] = "<size=13>{0} - damage done near markerr</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED"] = "<size=13>- player fall display </size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_HEADSHOT"] = "<color=#CC8227><b>HEADSHOT</b></color>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_FRIENDS"] = "<color=#4EB145FF><b>FRIENDS</b></color>",
}
, this);
lang.RegisterMessages(new Dictionary<string, string> {
["UI_TITLE_DESCRIPTION"]
= "<size=15>ВЫБЕРИТЕ СЕБЕ УДОБНЫЙ</size>", ["UI_TITLE_MAIN"] = "<size=50><b>МАРКЕР</b></size>", ["UI_CLOSE_BTN"] = "<size=30><b>ЗАКРЫТЬ</b></size>", ["UI_TURN_SKILL_ON"] = "<size=20><b><color=#93C346FF>ВКЛЮЧИТЬ МАРКЕР</color></b></size>", ["UI_TURN_SKILL_OFF"] = "<size=20><b><color=#FF5331FF>ВЫКЛЮЧИТЬ МАРКЕР</color></b></size>", ["UI_DETAL_INFO_TITLE"] = "<b><size=14>ВЫ МОЖЕТЕ НАСТРОИТЬ МАРКЕР БОЛЕЕ ДЕТАЛЬНО</size></b>", ["UI_SETTING_BUTTON"] = "<b><size=15>НАСТРОИТЬ МАРКЕР</size></b>", ["UI_SETTING_TYPE_SHOW"] = "<b><size=17>ВЫБЕРИТЕ ПРИ ПОПАДАНИИ В КОГО БУДЕТ ОТОБРАЖАТЬСЯ МАРКЕР</size></b>", ["UI_SETTING_HEX_SHOW"] = "<b><size=17>ВВЕДИТЕ СОБСТВЕННЫЙ ЦВЕТ В ФОРМАТЕ HEX ДЛЯ МАРКЕРА</size></b>", ["UI_SETTING_HEX_SHOW_YOUR"] = "<b><size=20>ВАШ HEX :</size></b>", ["UI_SETTINGS_TYPE_ANIMAL"] = "<size=12><b>ЖИВОТНЫЕ</b></size>", ["UI_SETTINGS_TYPE_PLAYER"] = "<size=12><b>ИГРОКИ</b></size>", ["UI_SETTINGS_TYPE_BUILDING"] = "<size=12><b>ПОСТРОЙКИ</b></size>", ["UI_SETTINGS_TYPE_ENTITY"] = "<size=12><b>ПРЕДМЕТЫ</b></size>", ["UI_SETTINGS_TYPE_TRANSPORT"] = "<size=12><b>ТРАНСПОРТ</b></size>", ["UI_SETTINGS_TYPE_NPC"] = "<size=12><b>УЧЕНЫЕ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER"] = "<size=50><b>МАРКЕР:</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_OFF_TURN"] = "<size=35><b><color=#FF5331FF>МАРКЕР ВЫКЛЮЧЕН</color></b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE"] = "<size=17><b>ВЫБЕРИТЕ ОДИН ИЗ ДОСТУПНЫХ РАЗМЕРОВ ДЛЯ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_COLOR"] = "<size=17><b>ВЫБЕРИТЕ ОДИН ИЗ ДОСТУПНЫХ ЦВЕТОВ ДЛЯ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_LITTLE"] = "<size=18>МАЛЕНЬКИЙ</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_MIDDLE"] = "<size=18>СРЕДНИЙ</size>", ["UI_MARKER_PANEL_SHOW_MARKER_SIZE_BIG"] = "<size=18>БОЛЬШОЙ</size>", ["UI_ATTAKER_KILLEN"] = "УБИТ", ["UI_MARKER_PANEL_SHOW_MARKER_LIST_TITLE"] = "<size=20><b>ВЫБЕРИТЕ УДОБНЫЙ ТИП МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_DEADING"] = "<size=15><b>НЕДОСТУПЕН ДЛЯ ВЫБОРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_TAKING"] = "<size=15><b>ВЫБРАННЫЙ ТИП</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_BTN_ACCES"] = "<size=15><b>ВЫБРАТЬ ДАННЫЙ ТИП</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE"] = "<size=20><b>ВЫ МОЖЕТЕ ВЫБРАТЬ ДОПОЛНИТЕЛЬНУЮ НАСТРОЙКУ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_DESCRIPTION"] = "<size=12><b>НАСТРОЙТЕ СВОЙ МАРКЕР ТАК,КАК ВАМ БУДЕТ УДОБНО</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_DAMAGE_TEXT"] = "<size=16><b>ОТОБРАЖЕНИЕ УРОНА РЯДОМ С {0}</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_WOUNDED_ICO"] = "<size=16><b>ОТОБРАЖЕНИЕ ИКОНКИ ПАДЕНИЯ ПРИ ПАДЕНИИ ИГРОКА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_TITLE_ICOLIST_ICO"] = "<size=16><b>ОТОБРАЖЕНИЕ ИКОНКИ МАРКЕРА</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_YES"] = "<size=18><b>ВКЛЮЧИТЬ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_NO"] = "<size=18><b>ВЫКЛЮЧИТЬ</b></size>", ["UI_MARKER_PANEL_SHOW_MARKER_MORE_SETTINGS_BTN_DEADING"] = "<size=18><b>НЕДОСТУПНО</b></size>", ["UI_ELEMENT_MORE_MARKER_DAMAGE_TEXT"] = "<size=13>{0} - нанесенный урон возле маркера</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED"] = "<size=13>- отображение падения игрока</size>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_HEADSHOT"] = "<color=#CC8227><b>ГОЛОВА</b></color>", ["UI_ELEMENT_MORE_MARKER_WOUNDED_HIT_ATTACK_FRIENDS"] = "<color=#4EB145FF><b>ДРУГ</b></color>",
}
, this, "ru");
PrintWarning(LanguageEn ? "Language file uploaded successfully" : "Языковой файл загружен успешно");
}
void ReadData() {
DataInformation = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, SettingsUser>>("IQMarker/SettingsUser");
}
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,
}
}
);
}
void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) {
if (info == null || entity == null) return;
var Attacker = info?.InitiatorPlayer;
if (Attacker == null || !(bool)(Attacker is BasePlayer) || Attacker.IsNpc || Attacker.IsDead()) return;
if (info.damageTypes == null || info.damageTypes.Total() < 1) return;
if (entity is BaseCorpse) return;
if (!DataInformation.ContainsKey(Attacker.userID)) return;
if (IsArenaTournament(Attacker)) return;
var Data = DataInformation[Attacker.userID];
if (Data.HitAnimal) if (entity is BaseAnimalNPC || entity is RidableHorse) if (!entity.IsDead()) {
Interface_Attack_Hit(Attacker, info);
return;
}
if (Data.HitBuilding) if (entity is BuildingBlock) if (!entity.IsDestroyed) {
Interface_Attack_Hit(Attacker, info);
return;
}
if (Data.HitNPC) if (entity is HumanNPC || entity.IsNpc || (bool)(entity as BaseNpc) || entity is NPCPlayer || entity is ScientistNPC) if (!entity.IsDead()) {
Interface_Attack_Hit(Attacker, info);
return;
}
if (Data.HitPlayer) if (entity is BasePlayer) if (entity.ToPlayer().userID != Attacker.userID) if (!entity.IsDead()) {
Interface_Attack_Hit(Attacker, info);
return;
}
if (Data.HitTransport) if (entity is ModularCar || entity is BaseVehicleSeat || entity is BaseModularVehicle || entity is BaseVehicleModule) {
Interface_Attack_Hit(Attacker, info);
return;
}
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 Composter || entity is Barricade || entity is MiningQuarry || entity is AutoTurret || entity is ElectricWindmill) if (!entity.IsDestroyed) {
Interface_Attack_Hit(Attacker, info);
return;
}
}
[ChatCommand("hit")]
void ChatCommandHit(BasePlayer player) {
Interface_Main_Menu(player);
}
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 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");
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"
}
,
}
}
);
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 = {
AnchorMin = "0.1691778 0.6206903", AnchorMax = "0.3318927 1"
}
, Button = {
Command = String.Format(CommandSelect, "player"), Color = HexToRustFormat(ColorPlayer)
}
, Text = {
Text = ""
}
}
, "TYPE_SHOW_SETTINGS", "PLAYER_BTN");
container.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0.221476 0", AnchorMax = "1 1"
}
, Text = {
Text = lang.GetMessage("UI_SETTINGS_TYPE_PLAYER", this, player.UserIDString), Color = HexToRustFormat(Interface.HexLabels), Align = TextAnchor.MiddleLeft
}
}
, "PLAYER_BTN");
container.Add(new CuiElement {
Parent = "PLAYER_BTN", Components = {
new CuiImageComponent {
Sprite = SpritePlayer
}
, new CuiRectTransformComponent {
AnchorMin = $"0.03355689 0.1515158", AnchorMax = $"0.19463 0.8787915"
}
,
}
}
);
string SpriteBuilding = Data.HitBuilding ? Interface.InterfaceSettingsMarker.SpriteActiveShowMarker : Interface.InterfaceSettingsMarker.SpriteInActiveShowMarker;
string ColorBuilding = Data.HitBuilding ? Interface.InterfaceSettingsMarker.HexActiveShowMarker : Interface.InterfaceSettingsMarker.HexInActiveShowMarker;
container.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.3362046 0.6206903", AnchorMax = "0.4989195 1"
}
, Button = {
Command = String.Format(CommandSelect, "building"), Color = HexToRustFormat(ColorBuilding)
}
, Text = {
Text = ""
}
}
, "TYPE_SHOW_SETTINGS
// ... [Code preview truncated due to length. Full source in attached file] ...