C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using Random = System.Random;
using UnityEngine;
using Newtonsoft.Json;
namespace Oxide.Plugins {
[Info("HitMarker", "Nimant", "1.0.7")]
class HitMarker : RustPlugin {
private const string cIHLGWrLFxHwfqf = "hitmarker.allow";
private const float mxSuIPPsnMZma = 0.1f;
private const float TxstyHOpBCa = 0.05f;
private const float CsEpOEiiXZOfDmmVGUzo = 0.475f;
private const float bCjfVjsxVU = 0.515f;
private const float fVuPXiKnoBsTxJPxDwhpPYBiJGSK = 0.51f;
private const float JgstOELKoXAvrXDnHxIxe = 0.54f;
private const int loccnjUtnC = 50;
[PluginReference]
private Plugin Friends, Clans;
private static string gcWPwWAbDvoj = "<size={size}>УБИТ!</size>";
private static string xVvoWCQbVHiJkArYT = "<size={size}>УПАЛ!</size>";
private static string HUbywDLYQxZpcfyIZtBGjNg = "<size={size}>{AMOUNT}</size>";
private static Random OGrRDtPrfHJdAU = new Random();
private static bool FXQkzpxAbGxwagXDyRrEfXHILoey = false;
private static HashSet<ulong> ruWNKAcPrAOrSmQwcMZteU = new HashSet<ulong>();
private static Dictionary<ulong, List<kEwbIDIJsgSgnwKOIUXgLbcW>> YGkVETxGqglqHoPn = new Dictionary<ulong, List<kEwbIDIJsgSgnwKOIUXgLbcW>>();
private static Dictionary<ulong, Timer> FcdNjGetaY = new Dictionary<ulong, Timer>();
private static Dictionary<ulong, int> laSBwzRkumLxBDBBjzOJBqj = new Dictionary<ulong, int>();
private static Dictionary<ulong, HitTempData> flHeXIVrydYisoPBSMBiReddBgrjY = new Dictionary<ulong, HitTempData>();
private class HitTempData {
public HitInfo MUAUkIaqFvTuA;
public float timeSS;
}
private class kEwbIDIJsgSgnwKOIUXgLbcW {
public int ggZIuTgSovSrpkdyfeiIMdmf;
public int uEuAZsimMxlqwonGsJUkDIQDQ;
public int HhUBjxgQqThGu;
public bool LhMtUuVAmozivZQacqbkMWwx;
public bool pApKUPbssTybVBiMNazM;
public bool jnKoqwkpEzGepPl;
public bool AwTAeBMWepLNXcoHFv;
public ulong SEzGtVTwQnXQuIjeFMKLGEg;
public string LvWrAscAHbEHzVCFiwOH;
public double WjHeyYyMjWxNnbFkqiX;
public double RNqzlriyIJfnrtYzqFJwOPnbR;
public double pPkndKdmLcxqOGpzO;
public double rjRXEgwnOCoYSBSM;
public BasePlayer bxYoZcnQuNDxFdiwLtmkMR;
}
private void Init() {
FXQkzpxAbGxwagXDyRrEfXHILoey = false;
YGkVETxGqglqHoPn.Clear();
FcdNjGetaY.Clear();
laSBwzRkumLxBDBBjzOJBqj.Clear();
flHeXIVrydYisoPBSMBiReddBgrjY.Clear();
permission.RegisterPermission(cIHLGWrLFxHwfqf, this);
gQjYpZeIwRXoXxB();
LoadDefaultMessages();
NLIwDoolziFSj();
if (KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ == null) {
KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ = true;
GGmOSrMUWVzsYdaef(KqRadQfSsRBYpaxKJADK);
}
if (KqRadQfSsRBYpaxKJADK.jLsSmWFTRcJMfO == null) {
KqRadQfSsRBYpaxKJADK.jLsSmWFTRcJMfO = 0.1f;
GGmOSrMUWVzsYdaef(KqRadQfSsRBYpaxKJADK);
}
gcWPwWAbDvoj = gcWPwWAbDvoj.Replace("{size}", $"{KqRadQfSsRBYpaxKJADK.iwNKLuHFjfeIvGGcZVBLuRbgWe}");
xVvoWCQbVHiJkArYT = xVvoWCQbVHiJkArYT.Replace("{size}", $"{KqRadQfSsRBYpaxKJADK.iwNKLuHFjfeIvGGcZVBLuRbgWe}");
HUbywDLYQxZpcfyIZtBGjNg = HUbywDLYQxZpcfyIZtBGjNg.Replace("{size}", $"{KqRadQfSsRBYpaxKJADK.iwNKLuHFjfeIvGGcZVBLuRbgWe}");
}
private void OnServerSave() => zGogzytbIaCBaLphnXxAHLAOEk();
private void Unload() {
FXQkzpxAbGxwagXDyRrEfXHILoey = true;
foreach(var ANjkhmglvjfUktZpJVaFsgmLPXcq in BasePlayer.activePlayerList.Where(x=> x != null && x.userID.IsSteamId())) if (YGkVETxGqglqHoPn.ContainsKey(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) foreach(var zGtimTCZwTeZWPVBlfCjW in YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID]) CuiHelper.DestroyUi(ANjkhmglvjfUktZpJVaFsgmLPXcq, zGtimTCZwTeZWPVBlfCjW.LvWrAscAHbEHzVCFiwOH);
zGogzytbIaCBaLphnXxAHLAOEk();
}
[ChatCommand("hitmarker")]
private void mSJMEETrZGx(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, string LGPgUREhgDKUGd, string[] oYHWLaoSYuZRq) {
if (KqRadQfSsRBYpaxKJADK.XPXjPERWqFsnXIVDxdIsriFRdn && !IpIkVfHmlVWzrluxOmgK(ANjkhmglvjfUktZpJVaFsgmLPXcq, cIHLGWrLFxHwfqf)) {
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.NO.PERM"));
return;
}
if (oYHWLaoSYuZRq.Length == 0) {
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("CMD.HM.HELP"));
return;
}
var XLxlaZMfQnWxtoslSYaDCR = oYHWLaoSYuZRq[0].ToLower();
if (XLxlaZMfQnWxtoslSYaDCR != "on" && XLxlaZMfQnWxtoslSYaDCR != "off") {
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, string.Format(NjXYwhBoXJnIJIyBcyS("CMD.HM.UNKNOWN.ARG"), oYHWLaoSYuZRq[0]));
return;
}
switch (XLxlaZMfQnWxtoslSYaDCR) {
case "on" : if (KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ == true) {
if (!ruWNKAcPrAOrSmQwcMZteU.Contains(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ALREADY.ON"));
else {
ruWNKAcPrAOrSmQwcMZteU.Remove(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID);
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ON"));
}
}
else {
if (ruWNKAcPrAOrSmQwcMZteU.Contains(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ALREADY.ON"));
else {
ruWNKAcPrAOrSmQwcMZteU.Add(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID);
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ON"));
}
}
break;
case "off" : if (KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ == true) {
if (ruWNKAcPrAOrSmQwcMZteU.Contains(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ALREADY.OFF"));
else {
ruWNKAcPrAOrSmQwcMZteU.Add(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID);
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.OFF"));
}
}
else {
if (!ruWNKAcPrAOrSmQwcMZteU.Contains(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.ALREADY.OFF"));
else {
ruWNKAcPrAOrSmQwcMZteU.Remove(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID);
SendReply(ANjkhmglvjfUktZpJVaFsgmLPXcq, NjXYwhBoXJnIJIyBcyS("HM.OFF"));
}
}
break;
}
}
private void OnEntityDeath(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, HitInfo info) => fjAqTTlTtNhhmhwfNiNWjOsoVl(ANjkhmglvjfUktZpJVaFsgmLPXcq, info, true);
private void OnEntityTakeDamage(BasePlayer bxYoZcnQuNDxFdiwLtmkMR, HitInfo MUAUkIaqFvTuA) {
if (bxYoZcnQuNDxFdiwLtmkMR == null || MUAUkIaqFvTuA == null || (!KqRadQfSsRBYpaxKJADK.sLaArqRLFndkwbcKmerhszr && !bxYoZcnQuNDxFdiwLtmkMR.UserIDString.IsSteamId())) return;
if (!flHeXIVrydYisoPBSMBiReddBgrjY.ContainsKey(bxYoZcnQuNDxFdiwLtmkMR.userID)) flHeXIVrydYisoPBSMBiReddBgrjY.Add(bxYoZcnQuNDxFdiwLtmkMR.userID, new HitTempData());
flHeXIVrydYisoPBSMBiReddBgrjY[bxYoZcnQuNDxFdiwLtmkMR.userID].MUAUkIaqFvTuA = MUAUkIaqFvTuA;
flHeXIVrydYisoPBSMBiReddBgrjY[bxYoZcnQuNDxFdiwLtmkMR.userID].timeSS = UnityEngine.Time.realtimeSinceStartup;
}
private void OnPlayerHealthChange(BasePlayer bxYoZcnQuNDxFdiwLtmkMR, float oldvalue, float newvalue) {
var doYZQWsbYOxiDGibhqz = oldvalue - newvalue;
if (bxYoZcnQuNDxFdiwLtmkMR == null || doYZQWsbYOxiDGibhqz <= 0f) return;
if (flHeXIVrydYisoPBSMBiReddBgrjY.ContainsKey(bxYoZcnQuNDxFdiwLtmkMR.userID) && UnityEngine.Time.realtimeSinceStartup - flHeXIVrydYisoPBSMBiReddBgrjY[bxYoZcnQuNDxFdiwLtmkMR.userID].timeSS < 0.1f) fjAqTTlTtNhhmhwfNiNWjOsoVl(bxYoZcnQuNDxFdiwLtmkMR, flHeXIVrydYisoPBSMBiReddBgrjY[bxYoZcnQuNDxFdiwLtmkMR.userID].MUAUkIaqFvTuA, false, doYZQWsbYOxiDGibhqz);
}
private void fjAqTTlTtNhhmhwfNiNWjOsoVl(BasePlayer bxYoZcnQuNDxFdiwLtmkMR, HitInfo MUAUkIaqFvTuA, bool AwTAeBMWepLNXcoHFv = false, float doYZQWsbYOxiDGibhqz = -1f) {
if (bxYoZcnQuNDxFdiwLtmkMR == null || MUAUkIaqFvTuA == null || (!KqRadQfSsRBYpaxKJADK.sLaArqRLFndkwbcKmerhszr && !bxYoZcnQuNDxFdiwLtmkMR.UserIDString.IsSteamId())) return;
var sbtdBqjUoyeJiSul = MUAUkIaqFvTuA.InitiatorPlayer;
if (sbtdBqjUoyeJiSul == null || sbtdBqjUoyeJiSul == bxYoZcnQuNDxFdiwLtmkMR) return;
if (KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ == true && ruWNKAcPrAOrSmQwcMZteU.Contains(sbtdBqjUoyeJiSul.userID)) return;
if (KqRadQfSsRBYpaxKJADK.IsLtYqAGrSuGcZ == false && !ruWNKAcPrAOrSmQwcMZteU.Contains(sbtdBqjUoyeJiSul.userID)) return;
if (KqRadQfSsRBYpaxKJADK.XPXjPERWqFsnXIVDxdIsriFRdn && !IpIkVfHmlVWzrluxOmgK(sbtdBqjUoyeJiSul, cIHLGWrLFxHwfqf)) return;
var MwxZKxfmLIWUVVtAYWxqYUMc = MUAUkIaqFvTuA.isHeadshot;
var ucyOYcSqcqjGoFfsAzyZIyNgEj = false;
if (bxYoZcnQuNDxFdiwLtmkMR.UserIDString.IsSteamId()) {
if (KqRadQfSsRBYpaxKJADK.MNviJyUDUjbj) ucyOYcSqcqjGoFfsAzyZIyNgEj = tHbVwsIGuSBLt(sbtdBqjUoyeJiSul, bxYoZcnQuNDxFdiwLtmkMR);
if (!ucyOYcSqcqjGoFfsAzyZIyNgEj && Friends != null) ucyOYcSqcqjGoFfsAzyZIyNgEj = (Friends?.Call("AreFriends", sbtdBqjUoyeJiSul.userID, bxYoZcnQuNDxFdiwLtmkMR.userID) as bool?) ?? false;
if (!ucyOYcSqcqjGoFfsAzyZIyNgEj && Clans != null) {
var oBuElMKRfk = Clans?.Call("GetClanOf", sbtdBqjUoyeJiSul) as string;
if (!string.IsNullOrEmpty(oBuElMKRfk)) {
var XUuOYCGeJbJW = Clans?.Call("GetClanOf", bxYoZcnQuNDxFdiwLtmkMR) as string;
ucyOYcSqcqjGoFfsAzyZIyNgEj = oBuElMKRfk == XUuOYCGeJbJW;
}
}
}
doYZQWsbYOxiDGibhqz = doYZQWsbYOxiDGibhqz < 0f ? (float)(Math.Round(BEEoMRsGINcMfW(MUAUkIaqFvTuA.damageTypes.types), 0, MidpointRounding.AwayFromZero)) : doYZQWsbYOxiDGibhqz;
ZrGhMoTDeEHLrf(sbtdBqjUoyeJiSul, bxYoZcnQuNDxFdiwLtmkMR, (int)Math.Round(doYZQWsbYOxiDGibhqz), MwxZKxfmLIWUVVtAYWxqYUMc, ucyOYcSqcqjGoFfsAzyZIyNgEj, AwTAeBMWepLNXcoHFv);
}
private static string KyFwiLxHZACkCcNMMDjHZbDU(ulong userID) {
if (!laSBwzRkumLxBDBBjzOJBqj.ContainsKey(userID)) laSBwzRkumLxBDBBjzOJBqj.Add(userID, loccnjUtnC);
if (laSBwzRkumLxBDBBjzOJBqj[userID] >= loccnjUtnC) laSBwzRkumLxBDBBjzOJBqj[userID] = 0;
else laSBwzRkumLxBDBBjzOJBqj[userID]++;
return laSBwzRkumLxBDBBjzOJBqj[userID].ToString();
}
private static float BEEoMRsGINcMfW(float[] DuVqDfjbyBcQETStZKcNnccrGRxwMk) {
var RUnvUjwXhdXDJM = 0f;
for (int i = 0; i < (int)DuVqDfjbyBcQETStZKcNnccrGRxwMk.Length;
i++) {
float UErGcPYgznBthXCUFaeeqfN = DuVqDfjbyBcQETStZKcNnccrGRxwMk[i];
if (!float.IsNaN(UErGcPYgznBthXCUFaeeqfN)) {
if (!float.IsInfinity(UErGcPYgznBthXCUFaeeqfN)) RUnvUjwXhdXDJM = RUnvUjwXhdXDJM + UErGcPYgznBthXCUFaeeqfN;
}
}
return RUnvUjwXhdXDJM;
}
private static bool tHbVwsIGuSBLt(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, BasePlayer HJsROxBLeRY) => ANjkhmglvjfUktZpJVaFsgmLPXcq.currentTeam != (long)0 && ANjkhmglvjfUktZpJVaFsgmLPXcq.currentTeam == HJsROxBLeRY.currentTeam;
private bool IpIkVfHmlVWzrluxOmgK(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, string DWjATqYNzEjdezbLwfw) => permission.UserHasGroup(ANjkhmglvjfUktZpJVaFsgmLPXcq.UserIDString, DWjATqYNzEjdezbLwfw);
private void ZrGhMoTDeEHLrf(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, BasePlayer bxYoZcnQuNDxFdiwLtmkMR, int doYZQWsbYOxiDGibhqz, bool isHeadshot, bool ucyOYcSqcqjGoFfsAzyZIyNgEj, bool AwTAeBMWepLNXcoHFv) {
if (ANjkhmglvjfUktZpJVaFsgmLPXcq == null || bxYoZcnQuNDxFdiwLtmkMR == null) return;
if (!YGkVETxGqglqHoPn.ContainsKey(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) YGkVETxGqglqHoPn.Add(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID, new List<kEwbIDIJsgSgnwKOIUXgLbcW>());
if (AwTAeBMWepLNXcoHFv && YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID].Count > 0) YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID].RemoveAt(YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID].Count-1);
var zGtimTCZwTeZWPVBlfCjW = new kEwbIDIJsgSgnwKOIUXgLbcW();
zGtimTCZwTeZWPVBlfCjW.ggZIuTgSovSrpkdyfeiIMdmf = 0;
zGtimTCZwTeZWPVBlfCjW.uEuAZsimMxlqwonGsJUkDIQDQ = doYZQWsbYOxiDGibhqz;
zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu = 0;
zGtimTCZwTeZWPVBlfCjW.LhMtUuVAmozivZQacqbkMWwx = isHeadshot;
zGtimTCZwTeZWPVBlfCjW.pApKUPbssTybVBiMNazM = ucyOYcSqcqjGoFfsAzyZIyNgEj;
zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl = bxYoZcnQuNDxFdiwLtmkMR.IsWounded();
zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv = AwTAeBMWepLNXcoHFv;
zGtimTCZwTeZWPVBlfCjW.SEzGtVTwQnXQuIjeFMKLGEg = bxYoZcnQuNDxFdiwLtmkMR.userID;
zGtimTCZwTeZWPVBlfCjW.bxYoZcnQuNDxFdiwLtmkMR = bxYoZcnQuNDxFdiwLtmkMR;
zGtimTCZwTeZWPVBlfCjW.LvWrAscAHbEHzVCFiwOH = KyFwiLxHZACkCcNMMDjHZbDU(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID);
zGtimTCZwTeZWPVBlfCjW.WjHeyYyMjWxNnbFkqiX = (OGrRDtPrfHJdAU.Next((int)Math.Round(CsEpOEiiXZOfDmmVGUzo*1000f), (int)Math.Round(bCjfVjsxVU*1000f))/1000f);
zGtimTCZwTeZWPVBlfCjW.pPkndKdmLcxqOGpzO = zGtimTCZwTeZWPVBlfCjW.WjHeyYyMjWxNnbFkqiX + mxSuIPPsnMZma;
zGtimTCZwTeZWPVBlfCjW.rjRXEgwnOCoYSBSM = (OGrRDtPrfHJdAU.Next((int)Math.Round((1f-JgstOELKoXAvrXDnHxIxe)*1000f), (int)Math.Round((1f-fVuPXiKnoBsTxJPxDwhpPYBiJGSK)*1000f))/1000f);
zGtimTCZwTeZWPVBlfCjW.RNqzlriyIJfnrtYzqFJwOPnbR = zGtimTCZwTeZWPVBlfCjW.rjRXEgwnOCoYSBSM - TxstyHOpBCa;
YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID].Add(zGtimTCZwTeZWPVBlfCjW);
if (!FcdNjGetaY.ContainsKey(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) FcdNjGetaY.Add(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID, null);
if (FcdNjGetaY[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] == null) FcdNjGetaY[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] = timer.Once(0.1f, ()=> eKVVvtokqLwugBFDihdxHIKTBbtPy(ANjkhmglvjfUktZpJVaFsgmLPXcq));
}
private void eKVVvtokqLwugBFDihdxHIKTBbtPy(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq) {
if (ANjkhmglvjfUktZpJVaFsgmLPXcq == null) return;
FcdNjGetaY[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] = null;
if (FXQkzpxAbGxwagXDyRrEfXHILoey || !YGkVETxGqglqHoPn.ContainsKey(ANjkhmglvjfUktZpJVaFsgmLPXcq.userID)) return;
var JehSsibLzOYOwCuamqriCidd = YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID].ToList();
if (JehSsibLzOYOwCuamqriCidd.Count == 0) return;
ulong SEzGtVTwQnXQuIjeFMKLGEg = 0;
var UxaTYsKIyRYNRTmt = new List<kEwbIDIJsgSgnwKOIUXgLbcW>();
foreach(var zGtimTCZwTeZWPVBlfCjW in JehSsibLzOYOwCuamqriCidd.Where(x=> x.ggZIuTgSovSrpkdyfeiIMdmf == 0).OrderBy(x=> x.SEzGtVTwQnXQuIjeFMKLGEg)) {
if (SEzGtVTwQnXQuIjeFMKLGEg != zGtimTCZwTeZWPVBlfCjW.SEzGtVTwQnXQuIjeFMKLGEg) {
SEzGtVTwQnXQuIjeFMKLGEg = zGtimTCZwTeZWPVBlfCjW.SEzGtVTwQnXQuIjeFMKLGEg;
zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl = !zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl ? zGtimTCZwTeZWPVBlfCjW.bxYoZcnQuNDxFdiwLtmkMR?.IsWounded() == true : zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl;
zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv = !zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv ? zGtimTCZwTeZWPVBlfCjW.bxYoZcnQuNDxFdiwLtmkMR?.IsDead() == true : zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv;
UxaTYsKIyRYNRTmt.Add(zGtimTCZwTeZWPVBlfCjW);
}
else {
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].uEuAZsimMxlqwonGsJUkDIQDQ += zGtimTCZwTeZWPVBlfCjW.uEuAZsimMxlqwonGsJUkDIQDQ;
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].LhMtUuVAmozivZQacqbkMWwx = false;
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].jnKoqwkpEzGepPl = zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl ? zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl : UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].jnKoqwkpEzGepPl;
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].jnKoqwkpEzGepPl = !UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].jnKoqwkpEzGepPl ? UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].bxYoZcnQuNDxFdiwLtmkMR?.IsWounded() == true : UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].jnKoqwkpEzGepPl;
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].AwTAeBMWepLNXcoHFv = zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv ? zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv : UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].AwTAeBMWepLNXcoHFv;
UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].AwTAeBMWepLNXcoHFv = !UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].AwTAeBMWepLNXcoHFv ? UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].bxYoZcnQuNDxFdiwLtmkMR?.IsDead() == true : UxaTYsKIyRYNRTmt[UxaTYsKIyRYNRTmt.Count - 1].AwTAeBMWepLNXcoHFv;
}
}
UxaTYsKIyRYNRTmt.AddRange(JehSsibLzOYOwCuamqriCidd.Where(x=> x.ggZIuTgSovSrpkdyfeiIMdmf > 0));
foreach(var zGtimTCZwTeZWPVBlfCjW in UxaTYsKIyRYNRTmt) {
if (zGtimTCZwTeZWPVBlfCjW.ggZIuTgSovSrpkdyfeiIMdmf == 1) {
if (zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv || zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl) {
if (zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu < KqRadQfSsRBYpaxKJADK.cvlVWvwXOUeYyfCVOCOr) {
zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu += 1;
continue;
}
}
else {
if (zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu < KqRadQfSsRBYpaxKJADK.WsHjhhrVDEkZWJDgbEKDcxkPwwm) {
zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu += 1;
continue;
}
}
var hbLAHhCIFnikHYGNevzPJSGgSlwU = "1723";
CuiHelper.DestroyUi(ANjkhmglvjfUktZpJVaFsgmLPXcq, zGtimTCZwTeZWPVBlfCjW.LvWrAscAHbEHzVCFiwOH);
zGtimTCZwTeZWPVBlfCjW.ggZIuTgSovSrpkdyfeiIMdmf = 2;
}
else if (zGtimTCZwTeZWPVBlfCjW.ggZIuTgSovSrpkdyfeiIMdmf == 0) {
fWyoLcjQyGJLCW(ANjkhmglvjfUktZpJVaFsgmLPXcq, zGtimTCZwTeZWPVBlfCjW);
zGtimTCZwTeZWPVBlfCjW.HhUBjxgQqThGu += 1;
zGtimTCZwTeZWPVBlfCjW.ggZIuTgSovSrpkdyfeiIMdmf = 1;
}
}
UxaTYsKIyRYNRTmt.RemoveAll(x=> x.ggZIuTgSovSrpkdyfeiIMdmf == 2);
YGkVETxGqglqHoPn[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] = UxaTYsKIyRYNRTmt;
if (UxaTYsKIyRYNRTmt.Count == 0) return;
if (FcdNjGetaY[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] == null) FcdNjGetaY[ANjkhmglvjfUktZpJVaFsgmLPXcq.userID] = timer.Once(0.1f, ()=> eKVVvtokqLwugBFDihdxHIKTBbtPy(ANjkhmglvjfUktZpJVaFsgmLPXcq));
}
private void fWyoLcjQyGJLCW(BasePlayer ANjkhmglvjfUktZpJVaFsgmLPXcq, kEwbIDIJsgSgnwKOIUXgLbcW zGtimTCZwTeZWPVBlfCjW) {
if (ANjkhmglvjfUktZpJVaFsgmLPXcq == null) return;
var QabvTZDQalkEKLMvIU = "[{\"name\":\"{name}\",\"parent\":\"Hud\",\"fadeOut\":\"{fadeOut}\",\"components\":[{\"type\":\"UnityEngine.UI.Text\",\"text\":\"{text}\",\"font\":\"{font}\"},{\"type\":\"UnityEngine.UI.Outline\",\"color\":\"0 0 0 1\",\"distance\":\"0.3 -0.3\"},{\"type\":\"RectTransform\",\"anchormin\":\"{xmin} {ymin}\",\"anchormax\":\"{xmax} {ymax}\",\"offsetmin\":\"0 0\",\"offsetmax\":\"1 1\"}]}]";
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{name}", zGtimTCZwTeZWPVBlfCjW.LvWrAscAHbEHzVCFiwOH);
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{xmin}", $"{zGtimTCZwTeZWPVBlfCjW.WjHeyYyMjWxNnbFkqiX}");
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{xmax}", $"{zGtimTCZwTeZWPVBlfCjW.pPkndKdmLcxqOGpzO}");
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{ymin}", $"{zGtimTCZwTeZWPVBlfCjW.RNqzlriyIJfnrtYzqFJwOPnbR}");
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{ymax}", $"{zGtimTCZwTeZWPVBlfCjW.rjRXEgwnOCoYSBSM}");
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{font}", $"{KqRadQfSsRBYpaxKJADK.ioOQsKvJinSMapPYT}");
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{fadeOut}", $"{KqRadQfSsRBYpaxKJADK.jLsSmWFTRcJMfO}");
var yFAwXWfyyxEJalGeCBgJH = KqRadQfSsRBYpaxKJADK.VeCAzcnMBQSLHaXNhnDKS;
var dSvKoReFQXqxmshj = (KqRadQfSsRBYpaxKJADK.dDcbNjKgYHxPnhXItSFHWguJDC ? "-" : "") + HUbywDLYQxZpcfyIZtBGjNg.Replace("{AMOUNT}", zGtimTCZwTeZWPVBlfCjW.uEuAZsimMxlqwonGsJUkDIQDQ.ToString());
if (zGtimTCZwTeZWPVBlfCjW.pApKUPbssTybVBiMNazM) {
yFAwXWfyyxEJalGeCBgJH = KqRadQfSsRBYpaxKJADK.oscuUAeDyIcKJilBpccNXpzZIIBh;
if (zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv) dSvKoReFQXqxmshj = gcWPwWAbDvoj;
else if (zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl) dSvKoReFQXqxmshj = xVvoWCQbVHiJkArYT;
}
else if (zGtimTCZwTeZWPVBlfCjW.AwTAeBMWepLNXcoHFv) {
dSvKoReFQXqxmshj = gcWPwWAbDvoj;
yFAwXWfyyxEJalGeCBgJH = KqRadQfSsRBYpaxKJADK.bKtNRuPrjZDLGK;
}
else if (zGtimTCZwTeZWPVBlfCjW.jnKoqwkpEzGepPl) {
dSvKoReFQXqxmshj = xVvoWCQbVHiJkArYT;
yFAwXWfyyxEJalGeCBgJH = KqRadQfSsRBYpaxKJADK.jdaNdIbdKuYvCuviKghpUQvOcxw;
}
else if (zGtimTCZwTeZWPVBlfCjW.LhMtUuVAmozivZQacqbkMWwx) yFAwXWfyyxEJalGeCBgJH = KqRadQfSsRBYpaxKJADK.VBtgFvFNyDfQLqhtEpGhR;
QabvTZDQalkEKLMvIU = QabvTZDQalkEKLMvIU.Replace("{text}", $"<color={yFAwXWfyyxEJalGeCBgJH}>{dSvKoReFQXqxmshj}</color>");
CuiHelper.AddUi(ANjkhmglvjfUktZpJVaFsgmLPXcq, QabvTZDQalkEKLMvIU);
}
private void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
{
"CMD.HM.HELP", "ДОСТУПНЫЕ КОМАНДЫ:\n/hitmarker on - включить отображение урона по игрокам.\n/hitmarker off - выключить отображение урона по игрокам."
}
, {
"HM.ON", "Вы включили отображение урона по игрокам."
}
, {
"HM.OFF", "Вы выключили отображение урона по игрокам."
}
, {
"HM.ALREADY.ON", "У вас уже включено отображение урона по игрокам."
}
, {
"HM.ALREADY.OFF", "У вас уже выключено отображение урона по игрокам."
}
, {
"CMD.HM.UNKNOWN.ARG", "Неизвестный параметр \"{0}\".\nИспользуйте /hitmarker чтобы посмотреть список доступных команд."
}
, {
"HM.NO.PERM", "У вас нет прав на эту команду."
}
}
, this);
}
private string NjXYwhBoXJnIJIyBcyS(string HkdCXBqSwUaVRLinDxunv, string SQNAiEMsJyUnjLkqPd = null) => lang.GetMessage(HkdCXBqSwUaVRLinDxunv, this, SQNAiEMsJyUnjLkqPd);
private static xEryKxvyXPinTcPlwLucOzNprRo KqRadQfSsRBYpaxKJADK;
private class xEryKxvyXPinTcPlwLucOzNprRo {
[JsonProperty(PropertyName = "Разрешать видеть урон только тем, у кого есть привилегия")]
public bool XPXjPERWqFsnXIVDxdIsriFRdn;
[JsonProperty(PropertyName = "Отображать урон по учёным")]
public bool sLaArqRLFndkwbcKmerhszr;
[JsonProperty(PropertyName = "Использовать встроенные в игру кланы для подсветки их как друзей")]
public bool MNviJyUDUjbj;
[JsonProperty(PropertyName = "Отображать урон со знаком минус")]
public bool dDcbNjKgYHxPnhXItSFHWguJDC;
[JsonProperty(PropertyName = "Время отображения текста с величиной урона (в разах, где раз = 0.1 секунда)")]
public int WsHjhhrVDEkZWJDgbEKDcxkPwwm;
[JsonProperty(PropertyName = "Время отображения текста о убийстве или падении (в разах, где раз = 0.1 секунда)")]
public int cvlVWvwXOUeYyfCVOCOr;
[JsonProperty(PropertyName = "Размер текста")]
public int iwNKLuHFjfeIvGGcZVBLuRbgWe;
[JsonProperty(PropertyName = "Шрифт текста")]
public string ioOQsKvJinSMapPYT;
[JsonProperty(PropertyName = "Цвет текста при попадании в тело")]
public string VeCAzcnMBQSLHaXNhnDKS;
[JsonProperty(PropertyName = "Цвет текста при попадании в голову")]
public string VBtgFvFNyDfQLqhtEpGhR;
[JsonProperty(PropertyName = "Цвет текста при убийстве противника")]
public string jdaNdIbdKuYvCuviKghpUQvOcxw;
[JsonProperty(PropertyName = "Цвет текста при падении противника")]
public string bKtNRuPrjZDLGK;
[JsonProperty(PropertyName = "Цвет текста при попадании в друга")]
public string oscuUAeDyIcKJilBpccNXpzZIIBh;
[JsonProperty(PropertyName = "Плавное пропадание текста")]
public float? jLsSmWFTRcJMfO;
[JsonProperty(PropertyName = "Отображение урона включено по умолчанию")]
public bool? IsLtYqAGrSuGcZ;
}
private void gQjYpZeIwRXoXxB() => KqRadQfSsRBYpaxKJADK = Config.ReadObject<xEryKxvyXPinTcPlwLucOzNprRo>();
protected override void LoadDefaultConfig() {
KqRadQfSsRBYpaxKJADK = new xEryKxvyXPinTcPlwLucOzNprRo {
XPXjPERWqFsnXIVDxdIsriFRdn = false, sLaArqRLFndkwbcKmerhszr = true, WsHjhhrVDEkZWJDgbEKDcxkPwwm = 4, cvlVWvwXOUeYyfCVOCOr = 12, MNviJyUDUjbj = true, dDcbNjKgYHxPnhXItSFHWguJDC = false, iwNKLuHFjfeIvGGcZVBLuRbgWe = 14, ioOQsKvJinSMapPYT = "robotocondensed-bold.ttf", VeCAzcnMBQSLHaXNhnDKS = "white", VBtgFvFNyDfQLqhtEpGhR = "red", jdaNdIbdKuYvCuviKghpUQvOcxw = "red", bKtNRuPrjZDLGK = "white", oscuUAeDyIcKJilBpccNXpzZIIBh = "lime", IsLtYqAGrSuGcZ = true, jLsSmWFTRcJMfO = 0.1f
}
;
GGmOSrMUWVzsYdaef(KqRadQfSsRBYpaxKJADK);
timer.Once(0.1f, ()=> GGmOSrMUWVzsYdaef(KqRadQfSsRBYpaxKJADK));
}
private void GGmOSrMUWVzsYdaef(xEryKxvyXPinTcPlwLucOzNprRo VWOvPXXGmPK) => Config.WriteObject(VWOvPXXGmPK, true);
private void NLIwDoolziFSj() => ruWNKAcPrAOrSmQwcMZteU = Interface.GetMod().DataFileSystem.ReadObject<HashSet<ulong>>("HitMarkerData");
private static void zGogzytbIaCBaLphnXxAHLAOEk() => Interface.GetMod().DataFileSystem.WriteObject("HitMarkerData", ruWNKAcPrAOrSmQwcMZteU);
}
}