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

FREE AnimalRock : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Facepunch;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.SceneManagement;
using Oxide.Core;
using Oxide.Core.Configuration;

namespace Oxide.Plugins
{
    [Info("AnimalRock", "jerkypaisen", "1.0.0")]
    [Description("You can catch animals by attacking them with a Rock.However, it is not possible to catch a horse.")]
    class AnimalRock : RustPlugin
    {
        #region [Fields]
        private const string permUse = "animalRock.use";
        #endregion

        #region [Oxide Hooks]
        private void Init()
        {
            permission.RegisterPermission(permUse, this);
        }

        void OnPlayerAttack(BasePlayer attacker, HitInfo info)
        {
            if (info == null) return;
            if (!permission.UserHasPermission(attacker.UserIDString, permUse)) return;
            var sumonRock = Animals.FirstOrDefault(x => x.sumonRockSkinId == info.Weapon.skinID);
            if (sumonRock == null)
            {
                if (info.HitEntity == null) return;
                CatchAnimal(attacker, info);
            }
            else{
                SpawnAnimal(attacker, info, sumonRock);
            }
        }

        void OnMeleeThrown(BasePlayer player, Item item)
        {
            if (!permission.UserHasPermission(player.UserIDString, permUse)) return;
            var animalRock = Animals.FirstOrDefault(x => x.sumonRockSkinId == item.skin);
            if (animalRock != null)
            {
                item.Remove(2f);
            }
        }
        #endregion

        #region [Hooks]
        private void CatchAnimal(BasePlayer player, HitInfo info)
        {
            var heldItem = player?.GetActiveItem() ?? null;
            var hitAnimal = Animals.FirstOrDefault(x => x.displayName == info.HitEntity.ShortPrefabName);
            if (hitAnimal != null)
            {
                string sumonRockPrefabName = info.WeaponPrefab.ShortPrefabName;
                if (sumonRockPrefabName != "rock.entity") return;
                info.HitEntity.Kill();
                Item item = ItemManager.CreateByName("rock", 1, hitAnimal.sumonRockSkinId);
                if (item != null)
                {
                    item.name = hitAnimal.itemName;
                    player.GiveItem(item);
                }
                if (heldItem != null) heldItem.RemoveFromContainer();
            }
        }

        private void SpawnAnimal(BasePlayer player, HitInfo info, AnimalEntry ae)
        {
            var heldItem = player?.GetActiveItem() ?? null;
            if (heldItem != null)
            {
                heldItem.RemoveFromContainer();
            }
            Vector3 pos = info.HitPositionWorld;
            GameObject gameObject = Instantiate.GameObject(GameManager.server.FindPrefab(ae.prefab), pos, new Quaternion());
            gameObject.name = ae.prefab;
            SceneManager.MoveGameObjectToScene(gameObject, Rust.Server.EntityScene);
            UnityEngine.Object.Destroy(gameObject.GetComponent<Spawnable>());
            if (!gameObject.activeSelf) gameObject.SetActive(true);
            BaseEntity entity = gameObject.GetComponent<BaseEntity>();
            entity.enableSaving = false;
            entity.Spawn();
        }
		#endregion

        #region [Classes]
        private class AnimalEntry
        {
            public ulong sumonRockSkinId;
            public string displayName;
            public string prefab;
            public string itemName;
        }
		#endregion

		#region [Data]
        private AnimalEntry[] Animals = new[]
        {
            new AnimalEntry
            {
                sumonRockSkinId = 2972231829,
                displayName = "chicken",
                prefab = "assets/rust.ai/agents/chicken/chicken.prefab",
                itemName = "Summon Chiken",
            },
            new AnimalEntry
            {
                sumonRockSkinId = 2972218156,
                displayName = "boar",
                prefab = "assets/rust.ai/agents/boar/boar.prefab",
                itemName = "Summon Boar",
            },
            new AnimalEntry
            {
                sumonRockSkinId = 2972230714,
                displayName = "stag",
                prefab = "assets/rust.ai/agents/stag/stag.prefab",
                itemName = "Summon Stag",
            },
            new AnimalEntry
            {
                sumonRockSkinId = 2972235993,
                displayName = "wolf",
                prefab = "assets/rust.ai/agents/wolf/wolf.prefab",
                itemName = "Summon Wolf",
            },
            new AnimalEntry
            {
                sumonRockSkinId = 2972228775,
                displayName = "bear",
                prefab = "assets/rust.ai/agents/bear/bear.prefab",
                itemName = "Summon Bear",
            },
            new AnimalEntry
            {
                sumonRockSkinId = 2972698694,
                displayName = "polarbear",
                prefab = "assets/rust.ai/agents/bear/polarbear.prefab",
                itemName = "Summon polarbear",
            }
        };
        #endregion
    }
}

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