Иконка ресурса

FREE XDStatistics : 2.1.3 2.1.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Facepunch;
using Newtonsoft.Json.Linq;
using System.Text.RegularExpressions;
using System;
using Oxide.Plugins.XDStatisticsExtensionMethods;
using UnityEngine.UI;
using Oxide.Core.Plugins;
using System.Linq;
using UnityEngine.Networking;
using System.Collections.Generic;
using Newtonsoft.Json;
using Rust;
using System.Text;
using Oxide.Core.Libraries;
using UnityEngine;
using Oxide.Core;
using System.Collections;
using Oxide.Game.Rust.Cui;
namespace Oxide.Plugins {
    [Info("XDStatistics", "anfunny", "2.1.3")]
    class XDStatistics : RustPlugin {
        protected override void LoadDefaultConfig() {
            UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR = new Configuration();
        }
        public const string XPUQENMXXVHBDRSGGLPMFPZFIPLXQLTRZVZGDKWSGCBRN = "INTERFACE_STATS";
        private bool IsWeaponFree(BasePlayer player) {
            List<Item> items = Pool.Get<List<Item>>();
            try {
                player.inventory.GetAllItems(items);
                foreach (Item item in items) {
                    if (item.info.category == ItemCategory.Weapon && !UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settingsIgnore.itemsToIgnoreList.Any(itemToIgnore => string.Equals(itemToIgnore, item.info.shortname, StringComparison.OrdinalIgnoreCase))) {
                        return false;
                    }
                }
                return true;
            }
            finally {
                Pool.Free(ref items);
            }
        }
        private static class TimeHelper {
            public static string FormatTime(TimeSpan time, int OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS = 5, string GAGZSLAVHTWXDKVRLOGCDHMIZASIDXPCWPHXYFZMYERQCA = "ru") {
                return GAGZSLAVHTWXDKVRLOGCDHMIZASIDXPCWPHXYFZMYERQCA == "ru" ? FormatTimeRussian(time, OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) : FormatTimeDefault(time);
            }
            private static string FormatTimeRussian(TimeSpan time, int OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) {
                List<string> substrings = new List<string>();
                if (time.Days != 0 && substrings.Count < OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) {
                    substrings.Add(Format(time.Days, "д"));
                }
                if (time.Hours != 0 && substrings.Count < OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) {
                    substrings.Add(Format(time.Hours, "ч"));
                }
                if (time.Minutes != 0 && substrings.Count < OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) {
                    substrings.Add(Format(time.Minutes, "м"));
                }
                if (time.Days == 0 && time.Seconds != 0 && substrings.Count < OANJYTWQHEACGWHXWONNIUEPGNXFFSYYZYJYYVVEJLECS) {
                    substrings.Add(Format(time.Seconds, "с"));
                }
                if (substrings.Count == 0) {
                    substrings.Add("0с");
                }
                return string.Join(" ", substrings);
            }
            private static string FormatTimeDefault(TimeSpan time) {
                List<string> parts = new List<string>();
                if (time.Days > 0) {
                    parts.Add($"{time.Days} day{(time.Days == 1 ? string.Empty : "s")}");
                }
                if (time.Hours > 0) {
                    parts.Add($"{time.Hours} hour{(time.Hours == 1 ? string.Empty : "s")}");
                }
                if (time.Minutes > 0) {
                    parts.Add($"{time.Minutes} minute{(time.Minutes == 1 ? string.Empty : "s")}");
                }
                if (time.Seconds > 0) {
                    parts.Add($"{time.Seconds} second{(time.Seconds == 1 ? string.Empty : "s")}");
                }
                if (parts.Count == 0) {
                    parts.Add("0 seconds");
                }
                return string.Join(", ", parts);
            }
            private static string Format(int KISZQWQNYNYASTRRKDTBODXSFOTDYQWFYHHZLXZGFBIKAFH, string form) {
                return $"{KISZQWQNYNYASTRRKDTBODXSFOTDYQWFYHHZLXZGFBIKAFH}{form}";
            }
        }
        private void TVWVNOHLATFVPEOUUSRVNRJFVHQFAARQNJMUOXGUVHQIODB(BasePlayer player, ulong target = 0, int FPPFENCONQQUIMSVSNSUWFYRVGVRWLLYJTEUMEANLNNADFCZS = 0) {
            var WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX = new CuiElementContainer();
            PlayerInfo NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ = PlayerInfo.GetOrCreate(target == 0 ? player.userID : target);
            if (FPPFENCONQQUIMSVSNSUWFYRVGVRWLLYJTEUMEANLNNADFCZS == 0) {
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "CRATE_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 151.391", OffsetMax = "-13.974 197.429"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_CRATE_OPEN".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.MiscStats.OARKFNZFJXEXIHSTIHOSMAPDGKHVIYIZDZMHRDGKJTABVGS), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "CRATE_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Parent = "CRATE_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "CrateImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "BARREL_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 99.171", OffsetMax = "-13.974 145.209"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_BARREL_KILL".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.MiscStats.BarrelsDestroyed), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "BARREL_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Parent = "BARREL_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "BarrelImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "ANIMALKILL_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 46.951", OffsetMax = "-13.974 92.989"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_ANIMAL_KILL".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.PlayerPvpStats.KillsAnimal), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "ANIMALKILL_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Parent = "ANIMALKILL_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "AnimalImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
            }
            else {
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "Heli_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 151.391", OffsetMax = "-13.974 197.429"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_HELI_KILL".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.PlayerPvpStats.QQTZBLYEIKWCKECWFGGTPOAFHWVBXVLINBHBHDQXWDHB), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "Heli_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Parent = "Heli_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "HeliImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "BRADLEY_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 99.171", OffsetMax = "-13.974 145.209"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_BRADLEY_KILL".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.PlayerPvpStats.DVZVLEDBGVBQOREQWHNZOPJWAPBPIXLGZZDAVGLRHG), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "BRADLEY_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Parent = "BRADLEY_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "BradleyImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "NPCKILL_STAT", Parent = KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "btn_panel_width")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 46.951", OffsetMax = "-13.974 92.989"
                        }
                    }
                }
                );
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiLabel {
                    RectTransform = {
                        AnchorMin = "0 0.5", AnchorMax = "0 0.5", OffsetMin = "48.359 -7.014", OffsetMax = "176.509 8.414"
                    }
                    , Text = {
                        Text = "STAT_UI_NPC_KILL".GetAdaptedMessage(player.UserIDString, NQTPCNLUUHJBIKUJGLJZAUTCIYMIOXZLFUXGBMGTTMWOXPZNJ.PlayerPvpStats.XTVCVMJJMLNBOPVALBOEHVZDGVXLPTTKKASRURWXVJGQIDUK), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                    }
                }
                , "NPCKILL_STAT");
                WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                    Name = "NPC_IMG_USER", Parent = "NPCKILL_STAT", Components = {
                        new CuiRawImageComponent {
                            Color = "1 1 1 1", Png = (string) LoadingImages.Call("GetImage", "NpcImage")
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-88.5 -16.5", OffsetMax = "-55.5 16.5"
                        }
                    }
                }
                );
            }
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiButton {
                Button = {
                    Color = "1 1 1 0.1", Command = $"UI_HandlerStat ShowMoreStat {target} {FPPFENCONQQUIMSVSNSUWFYRVGVRWLLYJTEUMEANLNNADFCZS}"
                }
                , Text = {
                    Text = "STAT_UI_BTN_MORE".GetAdaptedMessage(player.UserIDString), Font = "robotocondensed-regular.ttf", FontSize = 10, Align = TextAnchor.MiddleCenter, Color = "0.8538514 0.8491456 0.8867924 1"
                }
                , RectTransform = {
                    AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-210.146 22.951", OffsetMax = "-13.974 39.989"
                }
            }
            , KGLAUXRDHYKTOOAOGWCZYPHFFFJUTWVNZJIIRNZPG, "SHOW_MORE_STAT");
            CuiHelper.DestroyUi(player, "SHOW_MORE_STAT");
            CuiHelper.DestroyUi(player, "CRATE_STAT");
            CuiHelper.DestroyUi(player, "BARREL_STAT");
            CuiHelper.DestroyUi(player, "NPCKILL_STAT");
            CuiHelper.DestroyUi(player, "Heli_STAT");
            CuiHelper.DestroyUi(player, "BRADLEY_STAT");
            CuiHelper.DestroyUi(player, "ANIMALKILL_STAT");
            CuiHelper.AddUi(player, WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX);
        }
        private void CJCIMIXXDRUIPHEWADFJCRITIKEACZCOWDLCZYPGRODRBVG() {
            if (UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GUVZZRQAIUVDDTZFIPOBAHSCKIYYHEAVASVQVUFNGW.Count == 0) {
                UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GUVZZRQAIUVDDTZFIPOBAHSCKIYYHEAVASVQVUFNGW = new Dictionary<string, float> {
                    ["wood"]
                    = 0.3f, ["stones"] = 0.6f, ["metal.ore"] = 1, ["sulfur.ore"] = 1.5f, ["hq.metal.ore"] = 2,
                }
                ;
            }
            if (UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.VKVCUSYYWTNEFOQONEBFZBLQTEEXXOBLTWQRHIEGE.Count == 0) {
                UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.VKVCUSYYWTNEFOQONEBFZBLQTEEXXOBLTWQRHIEGE = new Dictionary<string, float> {
                    ["explosive.timed"]
                    = 2, ["explosive.satchel"] = 0.7f, ["grenade.beancan"] = 0.3f, ["grenade.f1"] = 0.1f, ["ammo.rocket.basic"] = 1, ["ammo.rocket.hv"] = 0.5f, ["ammo.rocket.fire"] = 0.7f, ["ammo.rifle.explosive"] = 0.02f,
                }
                ;
            }
            if (UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.CFOJWHTLLAKBVULWTZUCBLMDQVDQTIFEPEKWIOVTK && UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.PrizeByCategory.Count > 0) {
                foreach (KeyValuePair<string, List<Configuration.SettingsPrize.Reward>> pbc in UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.PrizeByCategory) if (Enum.TryParse(pbc.Key, out CatType categoryType)) UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.rewardsCategoryList.Add(categoryType);
                else PrintError($"[Configuration Reward ERROR] Invalid category type: {pbc.Key}.Removing from list.\nAvailable types: {string.Join(", ", Enum.GetNames(typeof(CatType)))}");
            }
            ProcessCategories(UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.chatMessage.MZOXBIHIRPVCMYONVAZAJYHNCPTSERFHBYTSNWPEJUJXLK, UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.chatMessage.chatCategories, UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.chatMessage._chatCategories);
            ProcessCategories(UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.KDKUAIASBDZUVANNJSLEZBZAKWQDLLXWGIMSYLZVCCMHMF.AQSNWNHQMZBKFSPKQWBQYSTNYNTTRZZKBYBESZRIJUHHYXTSL, UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.KDKUAIASBDZUVANNJSLEZBZAKWQDLLXWGIMSYLZVCCMHMF.discordCategories, UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.KDKUAIASBDZUVANNJSLEZBZAKWQDLLXWGIMSYLZVCCMHMF._discordCategories);
            return;
            void ProcessCategories(bool condition, List<string> categories, ICollection<CatType> targetList) {
                if (!condition || categories.Count == 0) return;
                foreach (string category in categories) {
                    if (Enum.TryParse(category, out CatType categoryType)) {
                        targetList.Add(categoryType);
                    }
                    else {
                        PrintError($"[Configuration] Invalid category type: {category}.Removing from list.\nAvailable types: {string.Join(", ", Enum.GetNames(typeof(CatType)))}");
                    }
                }
            }
        }
        private bool IVLQJQKSPGQYSHQMVDUUMTWTAWKORFUWPKJBASWSFYHP(ulong userID) {
            object playerId = ObjectCache.Get(userID);
            BasePlayer player = (Duel is not null || Duelist is not null) ? BasePlayer.FindByID(userID) : null;
            return EventAtEvent(playerId) || IsPlayerOnBattle(playerId) || IsPlayerOnActiveDuel(player) || InEvent(player) || IsOnTournament(playerId);
            bool EventAtEvent(object id) => EventHelper?.Call("EMAtEvent", id) is true;
            bool IsPlayerOnBattle(object id) => Battles?.Call<bool>("IsPlayerOnBattle", id) == true;
            bool IsPlayerOnActiveDuel(BasePlayer pl) => Duel?.Call<bool>("IsPlayerOnActiveDuel", pl) == true;
            bool InEvent(BasePlayer pl) => Duelist?.Call<bool>("inEvent", pl) == true;
            bool IsOnTournament(object id) => ArenaTournament?.Call<bool>("IsOnTournament", id) == true;
        }
        private bool AddImage(string url, string shortname, ulong skin = 0) => (bool)ImageLibrary?.Call("AddImage", url, shortname, skin);
        private static readonly Regex CleanUpRegex = new Regex("<.*?>|{.*?}", RegexOptions.Compiled);
        private const string PermReset = "XDStatistics.reset";
        private static class ObjectCache {
            private static readonly object True = true;
            private static readonly object False = false;
            private static class StaticObjectCache<T> {
                private static readonly Dictionary<T, object> CacheByValue = new Dictionary<T, object>();
                public static object Get(T IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY) {
                    object cachedObject;
                    if (!CacheByValue.TryGetValue(IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY, out cachedObject)) {
                        cachedObject = IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY;
                        CacheByValue[IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY] = cachedObject;
                    }
                    return cachedObject;
                }
            }
            public static object Get<T>(T IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY) {
                return StaticObjectCache<T>.Get(IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY);
            }
            public static object Get(bool IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY) {
                return IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY ? True : False;
            }
        }
        private void ZBUZOLLKSBPJQMUOZHSEWAARRFOCJBJMJSFAADVRGLDP() {
            _prizePlayerData.Clear();
            Dictionary<CatType, Dictionary<ulong, CashedData>> TopPlayers = GetTopPlayersByAllCategories(UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.rewardsCategoryList);
            foreach (KeyValuePair<CatType, Dictionary<ulong, CashedData>> topPlayer in TopPlayers) {
                if (!UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.HVTABPNLBDXNWTAEUCRUJMXKFLXWDGOMALWRFCDTHSMZOXF.PrizeByCategory.TryGetValue(topPlayer.Key.ToString(), out List<Configuration.SettingsPrize.Reward> rewards) || !rewards.Any()) continue;
                foreach ((KeyValuePair<ulong, CashedData> player, int index) in topPlayer.Value.Select((IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY, index) => (IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY, index))) {
                    if (!_prizePlayerData.ContainsKey(player.Key)) {
                        _prizePlayerData[player.Key] = new List<PrizePlayer>();
                    }
                    _prizePlayerData[player.Key].Add(new PrizePlayer {
                        PEOYTINBABVUICSXIIDGOMWBVTGDKRCITCWRQPBTBFPKTCC = topPlayer.Key, IYODSVDCHNDZCKRIYMBGFBGTHKFIXMHSRCVLCZPYY = player.Value.FullValue(), top = index + 1
                    }
                    );
                    rewards.FirstOrDefault(x => x.top == index + 1)?.RewardPlayer(player.Key.ToString());
                    if (index + 1 >= rewards.Count) break;
                }
            }
            PFKNJZHYEEAAQOUOVUBRSZKTXMSVTTDQFMRSZWFRVSSAPH();
            if (UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settings.WPJULTCMTCTMHRWLZMJEVHQNAJYRXCKSBRXEMLFBKGZAQOWVG) ClearData();
        }
        private void Unload() {
            if (IsObjectNull(Instance)) return;
            SaveDataFiles();
            CGNOYQWQWUQJMMXUFTTECTNTFBZNLCYGUMWZRBMVUSD();
            PFKNJZHYEEAAQOUOVUBRSZKTXMSVTTDQFMRSZWFRVSSAPH();
            foreach (BasePlayer player in BasePlayer.activePlayerList) CuiHelper.DestroyUi(player, XPUQENMXXVHBDRSGGLPMFPZFIPLXQLTRZVZGDKWSGCBRN);
            PlayerInfo._players = new Dictionary<ulong, PlayerInfo>();
            Instance = null;
        }
        public const string FAOKPRBLRPZJVFBJNQMKYSESJRTSGZMEYLQHDFSJ = "TOP_TEN_USER";
        private void VXINRMSNWIFEYWGJGRWXKMTVYUOIZMUWVZWDHLCECSJJ(BasePlayer player, int FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC = 0) {
            string OCTLRRGICIQUZENVWBXXJFRDVKJOTFIXDWJQKGSZNKEQV = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 0 ? "1 1 1 1" : "1 1 1 0.2";
            string YHDLGDVMEJKQPGHROWZTRDUXLPJYKZABHLLCKHYECRR = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 0 ? "0.929 0.882 0.847 0.75" : "0.7 0.7 0.7 0.2";
            var WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX = new CuiElementContainer();
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiPanel {
                CursorEnabled = false, Image = {
                    Color = "1 1 1 0"
                }
                , RectTransform = {
                    AnchorMin = "0 1", AnchorMax = "1 1", OffsetMin = "0 -60", OffsetMax = "0 0"
                }
            }
            , XPUQENMXXVHBDRSGGLPMFPZFIPLXQLTRZVZGDKWSGCBRN, TYLWTFYOIHPOHPCOHLBPBIRLDVOWGDNISTVNLTSOSLMSQP);
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiPanel {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "5 5", OffsetMax = "-5 -5"
                }
                , Image = {
                    Color = "0 0 0 0"
                }
            }
            , TYLWTFYOIHPOHPCOHLBPBIRLDVOWGDNISTVNLTSOSLMSQP, "BUTTONS_MAIN");
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                Parent = "BUTTONS_MAIN", Name = "MY_STAT_BUTTON", Components = {
                    new CuiRawImageComponent {
                        Png = (string) LoadingImages.Call("GetImage", "btn_ctg"), Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 0 ? "1 1 1 1" : "1 1 1 0.2"
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "26 0", OffsetMax = "173 51"
                    }
                }
            }
            );
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1"
                }
                , Button = {
                    Command = $"UI_HandlerStat Page_swap 0", Color = "0 0 0 0"
                }
                , Text = {
                    Text = "STAT_UI_MY_STAT".GetAdaptedMessage(player.UserIDString), FontSize = 20, Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleCenter, Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 0 ? "0.929 0.882 0.847 0.75" : "0.7 0.7 0.7 0.2"
                }
            }
            , "MY_STAT_BUTTON");
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                Parent = "BUTTONS_MAIN", Name = "TOPTEN_BUTTON", Components = {
                    new CuiRawImageComponent {
                        Png = (string) LoadingImages.Call("GetImage", "btn_ctg"), Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 1 ? "1 1 1 1" : "1 1 1 0.2"
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = "181 0", OffsetMax = "327 51"
                    }
                }
            }
            );
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1"
                }
                , Button = {
                    Command = $"UI_HandlerStat Page_swap 1", Color = "0 0 0 0"
                }
                , Text = {
                    Text = "STAT_UI_TOP_TEN".GetAdaptedMessage(player.UserIDString), FontSize = 20, Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleCenter, Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 1 ? "0.929 0.882 0.847 0.75" : "0.7 0.7 0.7 0.2"
                }
            }
            , "TOPTEN_BUTTON");
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiElement {
                Parent = "BUTTONS_MAIN", Name = "SEARCH_BUTTON", Components = {
                    new CuiRawImageComponent {
                        Png = (string) LoadingImages.Call("GetImage", "btn_ctg"), Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 2 ? "1 1 1 1" : "1 1 1 0.2"
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = "0 0", AnchorMax = "0 0", OffsetMin = $"336 0", OffsetMax = $"481 51"
                    }
                }
            }
            );
            WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1"
                }
                , Button = {
                    Command = $"UI_HandlerStat Page_swap 2", Color = "0 0 0 0"
                }
                , Text = {
                    Text = "STAT_UI_SEARCH".GetAdaptedMessage(player.UserIDString), FontSize = 20, Font = "robotocondensed-bold.ttf", Align = TextAnchor.MiddleCenter, Color = FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 2 ? "0.929 0.882 0.847 0.75" : "0.7 0.7 0.7 0.2"
                }
            }
            , "SEARCH_BUTTON");
            CuiHelper.DestroyUi(player, TYLWTFYOIHPOHPCOHLBPBIRLDVOWGDNISTVNLTSOSLMSQP);
            CuiHelper.AddUi(player, WTXUOHVLKGQBZKHSLOQCAKZHRPYOMKCAJIRJONXUMYAYLXPVX);
            if (FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 0) NJYNZUVFFSEZVTKQOQZYXRSHGTTLRZWPPGVZAMDHYJM(player);
            else if (FXBZUGAWDXCSTIZGPKURICIOIEMSJKCJFAOCARTZLMLLCXFC == 1) KIXXAVTWPGZVWKWMQGYYYBLAIALNCODVTAHLJZKCG(player);
            else UPOTBTMJMAIDNPWYKNJOIJZACBUPSUSCKTDFZOXT(player);
        }
        private string CleanUpString(string input) {
            return CleanUpRegex.Replace(input, string.Empty);
        }
        private void CGNOYQWQWUQJMMXUFTTECTNTFBZNLCYGUMWZRBMVUSD() => Interface.Oxide.DataFileSystem.WriteObject("XDStatistics/IgnoredPlayers", ignoreReservedPlayer);
        private void OnPlayerDeath(BasePlayer player, HitInfo hitInfo) {
            if(player == null) return;
            if (player.IsPlayer()) {
                if(!UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settingsIgnore.countSleepingPlayerKills && !player.IsConnected) return;
                if(!UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settingsIgnore.countKillsWithoutWeapons && IsWeaponFree(player)) return;
                PlayerInfo XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU = PlayerInfo.GetOrCreate(player.userID);
                if (hitInfo?.InitiatorPlayer != null) {
                    BasePlayer attacker = hitInfo.InitiatorPlayer;
                    if (attacker.userID == player.userID || hitInfo.damageTypes.GetMajorityDamageType() is DamageType.Suicide or DamageType.Fall) {
                        XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithSuicides().WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GGXQVBQYLKTDTYUPBKFHJSXELMUACSTAWRKTXMVAHNPXVV, scoreAdd : false);
                        return;
                    }
                    if (attacker.IsPlayer()) {
                        PlayerInfo playerAttacker = PlayerInfo.GetOrCreate(attacker.userID);
                        if (JDALJCAAXZZZFKQKTDVGBFMHPGWUZCZUDAPZNHTPXLNP(attacker.userID, player.userID) || NDNYMZFJDKEQSVCFGAUZFWFURWMJFJPRXVCCJVMDULZP(attacker.UserIDString, player.UserIDString) || IVLQJQKSPGQYSHQMVDUUMTWTAWKORFUWPKJBASWSFYHP(attacker.userID)) return;
                        XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.KJYZHKSGOJSEJHPWTQSGBOBRPOFAWDAIQHKRESMQD, scoreAdd : false);
                        playerAttacker.AddOrUpdateWeapon(hitInfo, true);
                        playerAttacker.UpdatePvpStats(builder => builder.WithKills(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.YYAKRIICFOZEODVRNLCVITBGEYYYYZXFTYGNAMQAEFVPFW);
                    }
                    else {
                        XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.KJYZHKSGOJSEJHPWTQSGBOBRPOFAWDAIQHKRESMQD, scoreAdd : false);
                    }
                }
                else if(hitInfo?.Initiator != null) {
                    XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.KJYZHKSGOJSEJHPWTQSGBOBRPOFAWDAIQHKRESMQD, scoreAdd : false);
                }
                else {
                    if (playersWounded.Remove(player, out HitInfo info)) {
                        OnPlayerDeath(player, info);
                        return;
                    }
                    if (hitInfo != null) {
                        switch (hitInfo.damageTypes.GetMajorityDamageType()) {
                            case DamageType.Cold : case DamageType.Drowned : case DamageType.ElectricShock : case DamageType.Radiation : XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.KJYZHKSGOJSEJHPWTQSGBOBRPOFAWDAIQHKRESMQD, scoreAdd : false);
                            break;
                            case DamageType.Suicide : case DamageType.Fall : XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithSuicides().WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GGXQVBQYLKTDTYUPBKFHJSXELMUACSTAWRKTXMVAHNPXVV, scoreAdd : false);
                            break;
                        }
                        return;
                    }
                    XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithSuicides().WithDeaths(), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GGXQVBQYLKTDTYUPBKFHJSXELMUACSTAWRKTXMVAHNPXVV, scoreAdd : false);
                }
            }
            else {
                if (hitInfo != null && hitInfo.InitiatorPlayer != null) {
                    BasePlayer attacker = hitInfo.InitiatorPlayer;
                    if(!attacker.IsPlayer()) return;
                    PlayerInfo XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU = PlayerInfo.GetOrCreate(attacker.userID);
                    XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.UpdatePvpStats(builder => builder.WithKillsNpc().WithKills(UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settings.npsDeathUseKils ? 1 : 0), score : Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.HMUDIHRKULIQTFMFWCVFITMPPELAWIJMIADFBYDWGIVGW);
                    if (UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.settings.GZRIIQDGBPLAZEEPGJZIOQYCDMUJCLLIWCBVWZHFI) XAKOYTTMWLUFZOUSBTOWWCJHAJTTIZXYSDKUFGLROSLCU.AddOrUpdateWeapon(hitInfo, true);
                }
            }
        }
        public const string HPRUPPXOLGATXQBIFTGVOTPDNTNXPVZUNSGHOIXTV = "USER_STAT";
        private class PlayerInfo : SplitDatafile<PlayerInfo> {
            private const string BaseFolder = "XDStatistics" + "/" + "Players" + "/";
            public static PlayerInfo Save(ulong userId) => Save(BaseFolder, userId);
            public static void Delete (ulong userId) => Delete(BaseFolder, userId);
            public static PlayerInfo Get(ulong userId) => Get(BaseFolder, userId);
            public static PlayerInfo Load(ulong userId) => Load(BaseFolder, userId);
            public static PlayerInfo Clear(ulong userId) => ClearAndSave(BaseFolder, userId);
            public static PlayerInfo GetOrLoad(ulong userId) => GetOrLoad(BaseFolder, userId);
            public static PlayerInfo GetOrCreate(ulong userId) => GetOrCreate(BaseFolder, userId);
            public static string[] GetFiles() => GetFiles(BaseFolder);
            [JsonIgnore]
            public bool IsFake;
            [JsonIgnore]
            public bool IsIgnore;
            [JsonIgnore]
            public bool IsChanged = false;
            public string Name = string.Empty;
            public bool JDMCQQOGLGAWYHRVWIQVFVFKIAPFFZXDILRDHFTOTQAARVD;
            internal string GetPlayerName(ulong steamId) => string.IsNullOrWhiteSpace(Name) ? Instance.covalence.Players.FindPlayerById(steamId.ToString())?.Name ?? "UNKNOWN" : Name;
            public float Score;
            internal string ScoreFormatted() => Score.ToString("F2");
            private void AddScore(float score) => Score += score;
            private void RemoveScore(float score) => Score -= score;
            public Dictionary<string, int> CropGrowthStats {
                get;
            }
            = new();
            public int TotalCropsGrown {
                get;
                set;
            }
            public void AddOrUpdateCrop(string shortName, int FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW, float score = 0) {
                if (!CropGrowthStats.TryAdd(shortName, FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW)) {
                    CropGrowthStats[shortName] += FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW;
                }
                TotalCropsGrown += FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW;
                AddScore(score);
            }
            public Dictionary<string, int> ExplosiveUsageStats {
                get;
            }
            = new() {
                ["explosive.timed"]
                = 0, ["explosive.satchel"] = 0, ["grenade.beancan"] = 0, ["grenade.f1"] = 0, ["ammo.rocket.basic"] = 0, ["ammo.rocket.hv"] = 0, ["ammo.rocket.fire"] = 0, ["ammo.rifle.explosive"] = 0
            }
            ;
            public int TotalExplosivesUsed {
                get;
                set;
            }
            public void AddOrUpdateExplosive(BaseEntity entity, string shortname = "") {
                string weaponName = string.IsNullOrWhiteSpace(shortname) ? string.Empty : shortname;
                if (entity != null) {
                    if (!Instance._prefabID2Item.TryGetValue(entity.prefabID, out weaponName)) {
                        Instance._prefabNameItem.TryGetValue(entity.ShortPrefabName, out weaponName);
                    }
                }
                if (!string.IsNullOrEmpty(weaponName)) {
                    if (ExplosiveUsageStats.ContainsKey(weaponName) && !Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.VKFIMTRRVGDOCWHHKSESKLJJNBWYSBEBCQSRLGCLJEHT.Contains(weaponName)) {
                        ExplosiveUsageStats[weaponName]++;
                        TotalExplosivesUsed++;
                        if (Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.VKVCUSYYWTNEFOQONEBFZBLQTEEXXOBLTWQRHIEGE.TryGetValue(weaponName, out float scoreValue)) AddScore(scoreValue);
                    }
                }
            }
            private static readonly Dictionary<string, string> ResourceMappings = new() {
                {
                    "stones", "stones"
                }
                , {
                    "wood", "wood"
                }
                , {
                    "metal.ore", "metal.ore"
                }
                , {
                    "metal.fragments", "metal.ore"
                }
                , {
                    "sulfur.ore", "sulfur.ore"
                }
                , {
                    "sulfur", "sulfur.ore"
                }
                , {
                    "hq.metal.ore", "hq.metal.ore"
                }
                , {
                    "metal.refined", "hq.metal.ore"
                }
                , {
                    "scrap", "scrap"
                }
            }
            ;
            public Dictionary<string, int> ResourceGatheringStats {
                get;
            }
            = new() {
                ["wood"]
                = 0, ["stones"] = 0, ["metal.ore"] = 0, ["sulfur.ore"] = 0, ["hq.metal.ore"] = 0, ["scrap"] = 0,
            }
            ;
            public int TotalResourcesGathered {
                get;
                set;
            }
            public void AddOrUpdateResource(string shortName, int FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW, bool isGiveScore = false) {
                if (Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.VKFIMTRRVGDOCWHHKSESKLJJNBWYSBEBCQSRLGCLJEHT.Contains(shortName)) return;
                if (ResourceMappings.TryGetValue(shortName, out string mappedName)) {
                    ResourceGatheringStats.TryGetValue(mappedName, out int currentCount);
                    ResourceGatheringStats[mappedName] = currentCount + FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW;
                    TotalResourcesGathered += FQQOZNNSMXNZCINVGODCWOAMSDNWHCRQUMXTVVFMEFEW;
                    if (isGiveScore) if (mappedName == "scrap") AddScore(Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.HPPSWRCZORDGYCSORTRTDUZDLYJKOKBVDBLMUPCHFE);
                    else if (Instance.UJDPVBAZFIADRKJYCLQLJVMWBCVXNBHWUQWNFDFKFHSR.WCVDWNDXIAPMAAVPNOPILSFIGDMYCFJUDNDLKBQSEFESI.GUVZZRQAIUVDDTZFIPOBAHSCKIYYHEAVASVQVUFNGW.TryGetValue(mappedName, out float scoreValue)) AddScore(scoreValue);
                }
            }
            public Dictionary<string, WeaponInfo> IUXPJRTIYESNDSKLOFXYAPQJSIUAYQBFWDNYCWLUYVYLIAE {
                get;
            }
            = new();
            public class WeaponInfo {
                public int Kills {
                    get;
                    set;
                }
                public int DNLSMASSDNWBXTKIDMQAFLISUCZEREBSEIXKEITVLUVP {
                    get;
                    set;
                }
                public int KXFLPIVJEGRETYJAOBZMEXOVZDUTVPLQTSJFTSBWFJZCFGKKJ {
                    get;
                    set;
                }
            }
            public void AddOrUpdateWeapon(HitInfo hitinfo, bool kill = false) {
                if (hitinfo?.WeaponPrefab == null) return;
                string weaponName = null;
                if (hitinfo.Weapon != null && hitinfo.Weapon.GetCachedItem() != null && hitinfo.Weapon.GetCachedItem().info != null) {
                    weaponName = hitinfo.Weapon.GetCachedItem().info.shortname;
                }
                else {
                    if (!Instance._prefabID2Item.TryGetValue(hitinfo.WeaponPrefab.prefabID, out weaponName)) {
                        Instance._prefabNameItem.TryGetValue(hitinfo.WeaponPrefab.ShortPrefabName, out weaponName);
                    }
                }
                if (string.IsNullOrEmpty(weaponName)) return;
                weaponName = weaponName switch {
                    "rifle.ak.ice" or "rifle.ak.diver" => "rifle.ak", _ => weaponName
                }
                ;
                if (!IUXPJRTIYESNDSKLOFXYAPQJSIUAYQBFWDNYCWLUYVYLIAE.TryGetValue(weaponName, out WeaponInfo weaponInfo)) {
                    weaponInfo = new WeaponInfo();
                    IUXPJRTIYESNDSKLOFXYAPQJSIUAYQBFWDNYCWLUYVYLIAE[weaponName] = weaponInfo;
                }
                weaponInfo.KXFLPIVJEGRETYJAOBZMEXOVZDUTVPLQTSJFTSBWFJZCFGKKJ++;
                if (hitinfo.isHeadshot) weaponInfo.DNLSMASSDNWBXTKIDMQAFLISUCZEREBSEIXKEITVLUVP++;
                if (kill) weaponInfo.Kills++;
            }
            public PvpStats PlayerPvpStats {
                get;
                private set;
            }
            = new();
            internal class PvpStatsBuilder {
                private readonly PvpStats _stats;
                public PvpStatsBuilder(PvpStats stats) {
                    _stats = stats ?? new PvpStats();
                }
                public PvpStatsBuilder WithKills(int kill = 1) {
                    _stats.Kills += kill;
                    return this;
                }
                public PvpStatsBuilder WithKillsNpc() {
                    _stats.XTVCVMJJMLNBOPVALBOEHVZDGVXLPTTKKASRURWXVJGQIDUK++;
                    return this;
                }
                public PvpStatsBuilder WithKillsAnimal() {
                    _stats.KillsAnimal++;
                    return this;
                }
                public PvpStatsBuilder WithDeaths() {
                    _stats.FUJWENBUSVAPXUSSDROWDGUERIXOIUCAMEKYJNFMQW++;
                    return this;
                }
                public PvpStatsBuilder WithSuicides() {
                    _stats.VWHYPNXEMGNDZAFFVQNLXSACSJUIQLBGGDYHJKHA++;
                    return this;
                }
                public PvpStatsBuilder WithShots() {
                    _stats.KXFLPIVJEG
// ... [Code preview truncated due to length. Full source in attached file] ...

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху