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

FREE NotifyAnimalFeed : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using System;
using System.Linq;
using System.Reflection;
using System.Collections.Generic;
using UnityEngine;
using Oxide.Core.Plugins;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Rust;
using Rust.Ai.Gen2;
using Facepunch;

#region Changelogs and ToDo

/**********************************************************************
* 
*   1.0.0   -   Release
*   1.0.1   -   Added support for the new wolf AI (wolf2)
* 
**********************************************************************/

#endregion


namespace Oxide.Plugins
{
    [Info("NotifyAnimalFeed", "Krungh Crow", "1.0.1")]
    [Description("Simplified Animal killfeed for Notify")]

    class NotifyAnimalFeed : RustPlugin
    {
        [PluginReference]
        Plugin Notify, UINotify;

        #region Variables
        const string Use_Perm = "notifyanimalfeed.use";
        string _MSG;
        string prefix;

        #endregion

        #region Configuration
        void Init()
        {
            if (!LoadConfigVariables())
            {
                Puts("Config file issue detected. Please delete file, or check syntax and fix.");
                return;
            }
            permission.RegisterPermission(Use_Perm, this);
        }

        private ConfigData configData;

        class ConfigData
        {
            [JsonProperty(PropertyName = "Notify profile ID")]
            public int PiD = 0;
        }

        private bool LoadConfigVariables()
        {
            try
            {
                configData = Config.ReadObject<ConfigData>();
            }
            catch
            {
                return false;
            }
            SaveConf();
            return true;
        }

        protected override void LoadDefaultConfig()
        {
            Puts("Fresh install detected Creating a new config file.");
            configData = new ConfigData();
            SaveConf();
        }

        void SaveConf() => Config.WriteObject(configData, true);
        #endregion

        #region LanguageAPI
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["FeedAnimal"] = "<color=orange>{Killer}</color> killed a <color=yellow>{Victim}</color> with a <color=yellow>{Weapon}</color> from <color=yellow>{_Distance}</color>m",
                ["Bear"] = "Bear",
                ["PolarBear"] = "Polar Bear",
                ["Boar"] = "Boar",
                ["Chicken"] = "Chicken",
                ["Horse"] = "Wild Horse",
                ["Stag"] = "Stag",
                ["Wolf"] = "Wolf",
                ["SimpleShark"] = "Shark"
            }, this);
        }
        #endregion

        #region Hooks

        object OnEntityDeath(BaseAnimalNPC npc, HitInfo info)
        {
            if (npc == null || info.InitiatorPlayer == null) return true;

            if (info.InitiatorPlayer.userID.IsSteamId());
            {
                BasePlayer attacker = info.InitiatorPlayer;
                int _Distance = (int)Vector3.Distance(attacker.transform.position, npc.transform.position);
                var WeaponName = GetWeaponName(info);
                var Killer = attacker.displayName.ToString();
                var Victim = GetAnimalType(npc);
                Puts($"{Killer} killed A {Victim} with a {WeaponName}");
                string _MSG = msginfo("FeedAnimal").Replace("{Killer}", Killer).Replace("{Victim}", Victim).Replace("{Weapon}", WeaponName).Replace("{_Distance}", _Distance.ToString());

                if (Notify || UINotify) foreach (var player in BasePlayer.activePlayerList)
                {
                    if (permission.UserHasPermission(player?.UserIDString, Use_Perm))
                    {
                        if (Notify) Notify.Call("SendNotify", player, configData.PiD, _MSG);
                        if (UINotify) UINotify.Call("SendNotify", player, configData.PiD, _MSG);
                    }
                }
                return true;
            }
            return null;
        }

        object  OnEntityDeath(BaseNPC2 npc , HitInfo info)
        {
            if (npc == null || info.InitiatorPlayer == null) return true;

            if (info.InitiatorPlayer.userID.IsSteamId()) ;
            {
                BasePlayer attacker = info.InitiatorPlayer;
                int _Distance = (int)Vector3.Distance(attacker.transform.position , npc.transform.position);
                var WeaponName = GetWeaponName(info);
                var Killer = attacker.displayName.ToString();
                var Victim = GetAnimalType(npc);
                Puts($"{Killer} killed A {Victim} with a {WeaponName}");
                string _MSG = msginfo("FeedAnimal").Replace("{Killer}" , Killer).Replace("{Victim}" , Victim).Replace("{Weapon}" , WeaponName).Replace("{_Distance}" , _Distance.ToString());

                if (Notify || UINotify) foreach (var player in BasePlayer.activePlayerList)
                    {
                        if (permission.UserHasPermission(player?.UserIDString , Use_Perm))
                        {
                            if (Notify) Notify.Call("SendNotify" , player , configData.PiD , _MSG);
                            if (UINotify) UINotify.Call("SendNotify" , player , configData.PiD , _MSG);
                        }
                    }
                return true;
            }
            return null;
        }

        object OnEntityDeath(SimpleShark shark, HitInfo info)
        {
            if (shark == null || info.InitiatorPlayer == null) return true;

            if (info.InitiatorPlayer.userID.IsSteamId()) ;
            {
                BasePlayer attacker = info.InitiatorPlayer;
                int _Distance = (int)Vector3.Distance(attacker.transform.position, shark.transform.position);
                var WeaponName = GetWeaponName(info);
                var Killer = attacker.displayName.ToString();
                var Victim = GetAnimalType(shark);
                Puts($"{Killer} killed A {Victim} with a {WeaponName}");
                string _MSG = msginfo("FeedAnimal").Replace("{Killer}", Killer).Replace("{Victim}", Victim).Replace("{Weapon}", WeaponName).Replace("{_Distance}", _Distance.ToString());
                if (Notify || UINotify) foreach (var player in BasePlayer.activePlayerList)
                {
                    if (permission.UserHasPermission(player?.UserIDString, Use_Perm))
                    {
                            if (Notify) Notify.Call("SendNotify", player, configData.PiD, _MSG);
                            if (UINotify) UINotify.Call("SendNotify", player, configData.PiD, _MSG);
                    }
                }
                return true;
            }
            return null;
        }

        #endregion

        #region Helpers

        private string GetAnimalType(BaseEntity npc)
        {
            var Animal = npc.ShortPrefabName.ToString();
            if (Animal == "bear") Animal = msginfo("Bear");
            if (Animal == "polarbear") Animal = msginfo("PolarBear");
            if (Animal == "chicken") Animal = msginfo("Chicken");
            if (Animal == "boar") Animal = msginfo("Boar");
            if (Animal == "horse") Animal = msginfo("Horse");
            if (Animal == "stag") Animal = msginfo("Stag");
            if (Animal == "wolf") Animal = msginfo("Wolf");
            if (Animal == "wolf2") Animal = msginfo("Wolf");
            if (Animal == "simpleshark") Animal = msginfo("SimpleShark");
            return Animal;
        }

        private string GetWeaponName(HitInfo hitInfo)
        {
            var _WeaponName = "??Unknown??";
            if (hitInfo.Weapon == null)
            {
                if (hitInfo.WeaponPrefab.prefabID == 3898309212) _WeaponName = "C4";//3898309212
                if (hitInfo.WeaponPrefab.prefabID == 3046924118) _WeaponName = "Rocket";//3046924118
                if (hitInfo.WeaponPrefab.prefabID == 1217937936) _WeaponName = "HV Rocket";//1217937936
                if (hitInfo.WeaponPrefab.prefabID == 2742759844) _WeaponName = "Satchel";//1217937936
                if (hitInfo.WeaponPrefab.prefabID == 2144399804) _WeaponName = "Beancan";//2144399804
                if (hitInfo.WeaponPrefab.prefabID == 1859672190) _WeaponName = "Shell";//1217937936
                if (hitInfo.WeaponPrefab.prefabID == 1128089209) _WeaponName = "Grenade";//1128089209
                if (hitInfo.WeaponPrefab.prefabID == 3717106868) _WeaponName = "Flamethrower";//3717106868
                if (hitInfo.Initiator is GunTrap) _WeaponName = "GunTrap";
                if (hitInfo.Initiator is FlameTurret) _WeaponName = "FlameTurret";
                if (hitInfo.Initiator is AutoTurret) _WeaponName = "AutoTurret";
                else if (hitInfo.damageTypes.GetMajorityDamageType() == DamageType.Heat) _WeaponName = "Fire";
                else if (hitInfo.damageTypes.GetMajorityDamageType() == DamageType.Fun_Water) _WeaponName = "WaterGun";
                Puts(hitInfo.WeaponPrefab.prefabID.ToString());
                return _WeaponName;
            }

            if (hitInfo.Weapon != null)
            {
                //Puts(hitInfo.WeaponPrefab.prefabID.ToString());
                var _Weapon = hitInfo.Weapon;
                var item = _Weapon.GetItem();
                if (item != null)
                    _WeaponName = item.info.displayName.english;
                if (hitInfo.WeaponPrefab.prefabID == 1233562048) _WeaponName = "Grenade Launcher";
            }
            if (hitInfo.Initiator is GunTrap) _WeaponName = "GunTrap";
            if (hitInfo.Initiator is FlameTurret) _WeaponName = "FlameTurret";
            if (hitInfo.Initiator is AutoTurret) _WeaponName = "AutoTurret";
            if (hitInfo.Initiator is HotAirBalloon) _WeaponName = "Hot Air Balloon";
            return _WeaponName;
        }

        #endregion

        #region messages

        private string msginfo(string key, string id = null) => lang.GetMessage(key, this, id);

        #endregion
    }
}

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