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

FREE KillFeed : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
 // Reference: Oxide.Core.RustyCore
using Oxide.Core;
using RustyCore.Utils;
using RustyCore;
using System.Collections.Generic;
using System.Linq;
using System;
using System.Reflection;
using System.Text;
using Oxide.Game.Rust.Cui;
using Rust;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("KillFeed", "bazuka5801", "1.0.0")]
    class KillFeed : RustPlugin {
#region CONFIGURATION
        private string colorKiller;
        private string colorVictim;
        private string colorText;
        private string colorBone;
        private string colorWeapon;
        private string colorDistance;
        protected override void LoadDefaultConfig() {
            Config.GetVariable("Цвет ника убийцы", out colorKiller, "#ff5400");
            Config.GetVariable("Цвет ника жертвы", out colorVictim, "#ff5400");
            Config.GetVariable("Цвет кости", out colorBone, "#ff5400");
            Config.GetVariable("Цвет дистанции", out colorDistance, "#ff5400");
            Config.GetVariable("Цвет оружия", out colorWeapon, "#ff5400");
            Config.GetVariable("Цвет текста", out colorText, "#ff5400");
            Puts(colorVictim);
            SaveConfig();
        }
#endregion
#region FIELDS
        RCore core = Interface.Oxide.GetLibrary<RCore>();
        List<StringBuilder> rows = new List<StringBuilder>();
        HashSet<ulong> cache = new HashSet<ulong>();
#endregion
#region OXIDE HOOKS
        void OnServerInitialized() {
            LoadDefaultConfig();
            lang.RegisterMessages(Messages, this, "en");
            Messages = lang.GetMessages("en", this);
            SendKillFeed();
            foreach (var VARIABLE in (Dictionary<uint, string>)typeof(StringPool).GetField("toString", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)) {
            }
        }
        void Unload() {
            foreach (var player in BasePlayer.activePlayerList) {
                if (cache.Contains(player.userID)) {
                    CuiHelper.DestroyUi(player, "killfeedtext" );
                }
            }
        }
        void OnEntityDeath(BaseCombatEntity ent, HitInfo info) {
            if (info == null) return;
            var victim = ent as BasePlayer;
            var killer = info.InitiatorPlayer;
            if (victim == killer) return;
            if (!victim || !killer) return;
            AddKill(killer, victim, info);
        }
#endregion
#region CORE
        void AddKill(BasePlayer killer, BasePlayer victim, HitInfo info) {
            //if (killer == victim) return;
            rows.Add(new StringBuilder($"<color={colorText}><color={colorKiller}>{killer.displayName.ToLower().RemoveBadSymbols()}</color> убил в <color={colorBone}>{GetHitBone(info)}</color> <color={colorWeapon}>({GetWeapon(info)})</color> <color={colorDistance}>{GetDistance(victim, info)}</color><color={colorVictim}> ☠ {victim.displayName.ToLower().RemoveBadSymbols()}</color></color>{Environment.NewLine}"));
            if (rows.Count > 5) {
                rows.RemoveAt(0);
            }
            SendKillFeed();
        }
        void SendKillFeed() {
            var tb = new StringBuilder();
            foreach (var row in rows) {
                tb.Append(row);
            }
            string text = tb.ToString();
            foreach (var player in BasePlayer.activePlayerList) {
                core.DrawUI(player, "KillFeed", "menu", text );
            }
        }
        string GetHitBone(HitInfo info) {
            string hitBone = "";
            BaseCombatEntity hitEntity = info?.HitEntity as BaseCombatEntity;
            if (hitEntity != null) {
                SkeletonProperties.BoneProperty boneProperty = hitEntity.skeletonProperties?.FindBone(info.HitBone);
                string bone = boneProperty?.name?.english ?? "";
                if (!boneNames.TryGetValue(bone, out hitBone)) {
                    hitBone = bone;
                }
            }
            return hitBone;
        }
        string GetDistance(BaseCombatEntity entity, HitInfo info) {
            float distance = 0.0f;
            if (entity != null && info.Initiator != null) {
                distance = Vector3.Distance(info.Initiator.transform.position, entity.transform.position);
            }
            return distance.ToString("0.0").Equals("0.0") ? "" : distance.ToString("0.0") + "m";
        }
        string GetWeapon(HitInfo info) {
            var selfInflicted = false;
            string weaponID;
            string weapon = info.Weapon?.GetItem()?.info?.shortname ?? "";
            // special case handling if the traditional way of getting a weapons shortname doesn't return results.if (string.IsNullOrEmpty( weapon ))
            {
                if (info.WeaponPrefab != null) {
                    if (info.WeaponPrefab.ShortPrefabName.Equals("axe_salvaged.entity" )) weapon = "axe.salvaged";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("bone_club.entity" )) weapon = "bone.club";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("explosive.satchel.deployed" )) weapon = "explosive.satchel";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("explosive.timed.deployed" )) weapon = "explosive.timed";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("flamethrower.entity" )) weapon = "flamethrower";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("flameturret.deployed" )) {
                        weapon = "flameturret";
                        selfInflicted = true;
                    }
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("grenade.beancan.deployed" )) weapon = "grenade.beancan";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("grenade.f1.deployed" )) weapon = "grenade.f1";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("hammer_salvaged.entity" )) weapon = "hammer.salvaged";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("hatchet.entity" )) weapon = "hatchet";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("hatchet_pickaxe.entity" )) weapon = "stone.pickaxe";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("icepick_salvaged.entity" )) weapon = "icepick.salvaged";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("knife_bone.entity" )) weapon = "knife.bone";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("landmine" )) {
                        weapon = "landmine";
                        selfInflicted = true;
                    }
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("longsword.entity" )) weapon = "longsword";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("mace.entity" )) weapon = "mace";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("machete.weapon" )) weapon = "machete";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("pickaxe.entity" )) weapon = "pickaxe";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("rock.entity" )) weapon = "rock";
                    else if (info.WeaponPrefab.ShortPrefabName.Contains("rocket" )) weapon = "rocket.launcher";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("salvaged_cleaver.entity" )) weapon = "salvaged.cleaver";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("salvaged_sword.entity" )) weapon = "salvaged.sword";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("spear_stone.entity" )) weapon = "spear.stone";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("spear_wooden.entity" )) weapon = "spear.wooden";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("stonehatchet.entity" )) weapon = "stonehatchet";
                    else if (info.WeaponPrefab.ShortPrefabName.Equals("survey_charge.deployed" )) weapon = "surveycharge";
                }
                else if (info.Initiator != null) {
                    if (info.Initiator.ShortPrefabName.Equals("autoturret_deployed" )) {
                        weapon = "autoturret";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("beartrap" )) {
                        weapon = "trap.bear";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("barricade.metal" )) {
                        weapon = "barricade.metal";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("barricade.wood" )) {
                        weapon = "barricade.wood";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("barricade.woodwire" )) {
                        weapon = "barricade.woodwire";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("gates.external.high.stone" )) {
                        weapon = "gates.external.high.stone";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("gates.external.high.wood" )) {
                        weapon = "gates.external.high.wood";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("guntrap.deployed" )) {
                        weapon = "guntrap";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("lock.code" )) weapon = "lock.code";
                    else if (info.Initiator.ShortPrefabName.Equals("spikes.floor" )) {
                        weapon = "spikes.floor";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("wall.external.high.stone" )) {
                        weapon = "wall.external.high.stone";
                        selfInflicted = true;
                    }
                    else if (info.Initiator.ShortPrefabName.Equals("wall.external.high.wood" )) {
                        weapon = "wall.external.high";
                        selfInflicted = true;
                    }
                }
            }
            // mainly used for determining whether the killing or wounding hit was self inflicted or not.if (!selfInflicted && ( string.IsNullOrEmpty( weapon ) || !weapon.Equals( "flamethrower" ) ))
            {
                switch (info.damageTypes.GetMajorityDamageType()) {
                    case DamageType.Bite : if (string.IsNullOrEmpty(weapon )) weapon = "bite";
                    break;
                    case DamageType.Bleeding : if (string.IsNullOrEmpty(weapon )) weapon = "bleeding";
                    selfInflicted = true;
                    break;
                    case DamageType.Blunt : if (string.IsNullOrEmpty(weapon )) weapon = "blunt";
                    break;
                    case DamageType.Bullet : if (string.IsNullOrEmpty(weapon )) weapon = "bullet";
                    break;
                    case DamageType.Cold : case DamageType.ColdExposure : if (string.IsNullOrEmpty(weapon )) weapon = "cold";
                    selfInflicted = true;
                    break;
                    case DamageType.Drowned : if (string.IsNullOrEmpty(weapon )) weapon = "drowned";
                    selfInflicted = true;
                    break;
                    case DamageType.ElectricShock : if (string.IsNullOrEmpty(weapon )) weapon = "electricShock";
                    selfInflicted = true;
                    break;
                    case DamageType.Explosion : if (string.IsNullOrEmpty(weapon )) weapon = "explosion";
                    break;
                    case DamageType.Fall : if (string.IsNullOrEmpty(weapon )) weapon = "fall";
                    selfInflicted = true;
                    break;
                    case DamageType.Generic : if (string.IsNullOrEmpty(weapon )) weapon = "generic";
                    break;
                    case DamageType.Heat : if (string.IsNullOrEmpty(weapon )) weapon = "heat";
                    selfInflicted = true;
                    break;
                    case DamageType.Hunger : if (string.IsNullOrEmpty(weapon )) weapon = "hunger";
                    selfInflicted = true;
                    break;
                    case DamageType.Poison : if (string.IsNullOrEmpty(weapon )) weapon = "poison";
                    selfInflicted = true;
                    break;
                    case DamageType.Radiation : case DamageType.RadiationExposure : if (string.IsNullOrEmpty(weapon )) weapon = "radiation";
                    selfInflicted = true;
                    break;
                    case DamageType.Slash : if (string.IsNullOrEmpty(weapon )) weapon = "slash";
                    break;
                    case DamageType.Stab : if (string.IsNullOrEmpty(weapon )) weapon = "stab";
                    break;
                    case DamageType.Suicide : if (string.IsNullOrEmpty(weapon )) weapon = "suicide";
                    selfInflicted = true;
                    break;
                    case DamageType.Thirst : if (string.IsNullOrEmpty(weapon )) weapon = "thirst";
                    selfInflicted = true;
                    break;
                }
            }
            string weaponloc;
            return localization.TryGetValue(weapon, out weaponloc) ? weaponloc : "Неизв.оружие";
        }
#endregion
#region DATA
#endregion
#region LOCALIZATION
        Dictionary<string, string> Messages = new Dictionary<string, string>() {
        }
        ;
        private Dictionary<string, string> localization = new Dictionary<string, string>() {
            {
                "autoturret", "Туррель"
            }
            , {
                "axe.salvaged", "Самодельный топор"
            }
            , {
                "barricade.metal", "Металлическая баррикада"
            }
            , {
                "barricade.wood", "Деревянная барикада"
            }
            , {
                "barricade.woodwire", "Каменная барикада"
            }
            , {
                "bone.club", "Костяная дубина"
            }
            , {
                "bow.hunting", "Охотничий лук"
            }
            , {
                "crossbow", "Арбалет"
            }
            , {
                "explosive.satchel", "도시락"
            }
            , {
                "explosive.timed", "С4"
            }
            , {
                "flamethrower", "Огнемет"
            }
            , {
                "gates.external.high.stone", "Каменные ворота"
            }
            , {
                "gates.external.high.wood", "Деревянные ворота"
            }
            , {
                "grenade.beancan", "Бобовая граната"
            }
            , {
                "grenade.f1", "Граната F1"
            }
            , {
                "hammer.salvaged", "Самодельный молот"
            }
            , {
                "hatchet", "Топор"
            }
            , {
                "icepick.salvaged", "Ледоруб"
            }
            , {
                "knife.bone", "Костяной нож"
            }
            , {
                "landmine", "Мина"
            }
            , {
                "lmg.m249", "Пулемет М249"
            }
            , {
                "lock.code", "Кодовый замок"
            }
            , {
                "longsword", "Меч"
            }
            , {
                "mace", "Палица"
            }
            , {
                "machete", "Мачете"
            }
            , {
                "pickaxe", "Кирка"
            }
            , {
                "pistol.eoka", "Самодельный пистолет"
            }
            , {
                "pistol.m92", "М92"
            }
            , {
                "pistol.revolver", "Револьвер"
            }
            , {
                "pistol.semiauto", "Пистолет"
            }
            , {
                "rifle.ak", "АК - 47"
            }
            , {
                "rifle.bolt", "Винтовка"
            }
            , {
                "rifle.lr300", "LR - 300"
            }
            , {
                "rifle.semiauto", "Берданка"
            }
            , {
                "rock", "Камень"
            }
            , {
                "rocket.launcher", "Ракетница"
            }
            , {
                "salvaged.cleaver", "Тесак"
            }
            , {
                "salvaged.sword", "Меч"
            }
            , {
                "shotgun.pump", "Помповый дробовик"
            }
            , {
                "shotgun.waterpipe", "Самодельный дробовик"
            }
            , {
                "shotgun.double", "Двустволка"
            }
            , {
                "smg.2", "СМГ"
            }
            , {
                "smg.mp5", "MP5"
            }
            , {
                "smg.thompson", "Томпсон"
            }
            , {
                "spear.stone", "Копьё"
            }
            , {
                "spear.wooden", "Копьё"
            }
            , {
                "spikes.floor", "Шипы"
            }
            , {
                "stone.pickaxe", "Каменная кирка"
            }
            , {
                "stonehatchet", "Каменный топор"
            }
            , {
                "surveycharge", "Геозаряд"
            }
            , {
                "torch", "Факел"
            }
            , {
                "trap.bear", "Ловушка"
            }
            , {
                "wall.external.high", "Стена"
            }
            , {
                "wall.external.high.stone", "Стена"
            }
            , {
                "bite", "Укус животного"
            }
            , {
                "bleeding", "Кровотечение"
            }
            , {
                "blunt", "Оглушение"
            }
            , {
                "bullet", "Пуля - Дура"
            }
            , {
                "cold", "Холод"
            }
            , {
                "drowned", "Утонул"
            }
            , {
                "electricShock", "Замок"
            }
            , {
                "explosion", "Взрывчатка"
            }
            , {
                "fall", "Воткнулся головой в землю"
            }
            , {
                "generic", "Смерть забрала с собой"
            }
            , {
                "heat", "Сгорел"
            }
            , {
                "hunger", "Голод"
            }
            , {
                "poison", "Яд"
            }
            , {
                "radiation", "Радиация"
            }
            , {
                "slash", ""
            }
            , {
                "stab", ""
            }
            , {
                "suicide", "Суицид"
            }
            , {
                "thirst", "Жажда"
            }
        }
        ;
        private Dictionary<string, string> boneNames = new Dictionary<string, string>() {
            {
                "body", "тело"
            }
            , {
                "chest", "грудь"
            }
            , {
                "groin", "пах"
            }
            , {
                "head", "голову"
            }
            , {
                "hip", "таз"
            }
            , {
                "jaw", "челюсть"
            }
            , {
                "left arm", "в руку"
            }
            , {
                "left eye", "в глаз"
            }
            , {
                "left foot", "в ногу"
            }
            , {
                "left forearm", "в предплечье"
            }
            , {
                "left hand", "в руку"
            }
            , {
                "left knee", "в колено"
            }
            , {
                "left ring finge", "в палец"
            }
            , {
                "left shoulder", "в плечо"
            }
            , {
                "left thumb", "в палец"
            }
            , {
                "left toe", "в палец"
            }
            , {
                "left wrist", "в запястье"
            }
            , {
                "lower spine", "в хребет"
            }
            , {
                "neck", "шею"
            }
            , {
                "pelvis", "таз"
            }
            , {
                "right arm", "в руку"
            }
            , {
                "right eye", "в глаз"
            }
            , {
                "right foot", "в ступню"
            }
            , {
                "right forearm", "в предплечье"
            }
            , {
                "right hand", "в руку"
            }
            , {
                "right knee", "в колено"
            }
            , {
                "right ring finge", "в палец"
            }
            , {
                "right shoulder", "в плечо"
            }
            , {
                "right thumb", "в палец"
            }
            , {
                "right toe", "в палец"
            }
            , {
                "right wrist", "в запястье"
            }
            , {
                "stomach", "живот"
            }
        }
        ;
#endregion
    }
}

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