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

FREE Murderers : 1.0.2 1.0.2

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Text.RegularExpressions;
using Oxide.Core.Libraries.Covalence;
using System.Collections.Generic;
using System.Linq;
using Oxide.Core;
using System;
using System.Text;
using Oxide;
using Oxide.Game;
using UnityEngine;
using Oxide.Core.Configuration;
using Oxide.Core.Plugins;

namespace Oxide.Plugins
{
    [Info("Murderers", "Shadow", "1.0.2")]
    [Description("Murderers")]
    class Murderers : RustPlugin
    {

        [PluginReference]
        Plugin Kits;

        #region Variable

        public static List<BasePlayer> fakePlayers = new List<BasePlayer>();    
        public static List<BaseNetworkable> fakeEntities = new List<BaseNetworkable>();
        public string Kit;
        private bool changed;
        public bool Turret_Safe;
        public bool Animal_Safe;
        public bool bradley_Safe;
        private const string permissionNameKILL = "murderers.kill";
        private const string permissionNamePOINT = "murderers.point";
        private const string permissionNameSPAWN = "murderers.spawn";
        private const string permissionNameREMOVE = "murderers.remove";
        private Dictionary<string, int> murdersPoint = new Dictionary<string, int>();
        private Dictionary<uint, string> npcCreated = new Dictionary<uint, string>();
        private string npcPrefab = "assets/prefabs/npc/murderer/murderer.prefab";        
        int npcCoolDown;
        private bool initialized;

        #endregion

        #region Initialize
        protected override void LoadDefaultConfig()
        {
            //
            npcCoolDown = Convert.ToInt32(GetVariable("NPC", "Time to respawn after death", "80"));
            Kit = Convert.ToString(GetConfig("Kit", "Kits what bots use", "default"));
            Turret_Safe = true;
            Animal_Safe = true;
           
            if (!changed) return;
            SaveConfig();
            changed = true;
        }

        private object GetConfig(string menu, string datavalue, object defaultValue)
        {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[menu] = data;
                changed = true;
            }
            object value;
            if (data.TryGetValue(datavalue, out value)) return value;
            value = defaultValue;
            data[datavalue] = value;
            changed = true;
            return value;
        }

        void Init()
        {
            LoadDefaultConfig();
            permission.RegisterPermission(permissionNameKILL, this);
            permission.RegisterPermission(permissionNamePOINT, this);
            permission.RegisterPermission(permissionNameSPAWN, this);
            permission.RegisterPermission(permissionNameREMOVE, this);
            lang.RegisterMessages(new Dictionary<string, string>

            {
                ["Remove"] = "Removing all Murderers",   
                ["Delete"] = "Removing all Murderers Points",
                ["StartSpawn"] = "Start spawning all Murderers on their points",
                ["EndSpawn"] = "All Murderers spawned on their points",
                ["Added"] = "Added Murderers point to Data-file!",
                ["AddPoint"] = "No Murderers points found! Add new!"
            }, this);
            if (!Interface.Oxide.DataFileSystem.ExistsDatafile("murdersPoint"))
            {
                Puts(msg("AddPoint"));
                return;
            }
            murdersPoint = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<string, int>>("murdersPoint");



        }


        void Kill()
        {

            foreach (var check in npcCreated)
            BaseNetworkable.serverEntities.Find(check.Key).Kill();
            Interface.Oxide.ReloadPlugin("Murderers");           
        }

        void Delete()
        {
            foreach (var check in npcCreated)
            BaseNetworkable.serverEntities.Find(check.Key).Kill();
            Interface.Oxide.DataFileSystem.WriteObject("murdersPoint", npcCreated);
            Puts(msg("Delete"));
            Interface.Oxide.ReloadPlugin("Murderers");

        }

        #endregion


        #region Function

        void startSpawn(string position = null)
        {
            BaseEntity entity = null;
            if (position != null)
            {
                timer.Once(npcCoolDown, () =>
                {
                    entity = GameManager.server.CreateEntity(npcPrefab, position.ToVector3()) as NPCPlayer;
                    entity.Spawn();
                    npcCreated.Add(entity.net.ID, position);
 
                   Kits?.Call($"GiveKit", entity, Kit);
             entity.SendNetworkUpdate();
                });
                return;
            }
            foreach (var check in murdersPoint)
            {
                    entity = GameManager.server.CreateEntity(npcPrefab, check.Key.ToVector3()) as NPCPlayer;
                    if (entity != null)
                    entity.Spawn();
 
                   Kits?.Call($"GiveKit", entity, Kit);
                    npcCreated.Add(entity.net.ID, check.Key);
             entity.SendNetworkUpdate();
            }
            Puts(msg("EndSpawn"));
        }

     object CanBeTargeted(BaseCombatEntity player, MonoBehaviour turret)//stops autoturrets targetting bots

        {

            player = player as NPCPlayer;
            if (player is NPCPlayer && Turret_Safe)

            return false;

            return null;

        }




        object CanNpcAttack(BaseNpc npc, BaseEntity target) //nulls animal damage to bots

        {

            if (target is NPCPlayer && Animal_Safe)

            return true;

            return null;

        }


        #endregion

        #region Hook
        void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
        {
            if (npcCreated.ContainsKey(entity.net.ID))

            {
                startSpawn(npcCreated[entity.net.ID]);
                npcCreated.Remove(entity.net.ID);

            }
        }

        
        public object CheckKit(string name) //credit K1lly0u

        {

            object success = Kits?.Call("isKit", name);
            if ((success is bool))

                if (!(bool)success)

                {

                    PrintWarning("NpcPoint : The Specified Kit Does Not Exist.Please update your config and reload.");

                    return null;

                }

            return true;

        }



        #endregion 



        [ConsoleCommand("murders.spawn")]
        void CmdSpawn(ConsoleSystem.Arg arg)
        {
            startSpawn();

        }

        [ConsoleCommand("murders.kill")]
        void CmdBotKill(ConsoleSystem.Arg arg)
        {

            Kill();

        }

        [ConsoleCommand("murders.wipepoint")]
        void CmdBotWipe(ConsoleSystem.Arg arg)
        {
            Delete();
        }

        [ChatCommand("murders.spawn")]
        void npcSpawn(BasePlayer player)
        {
           if (!permission.UserHasPermission(player.UserIDString, permissionNameSPAWN))
               return;
           {          
          
            startSpawn();
              {
               player.ChatMessage(msg("Murderers ReSpawning", player.UserIDString));
              }
           }
        }
        [ChatCommand("murders.point")]
        void npcMain(BasePlayer player, string command, string[] args)
        {
           if (!permission.UserHasPermission(player.UserIDString, permissionNamePOINT))
               return;
           {
            int amount = 1;
            if (args.Length == 1 && Int32.Parse(args[0]) > 0)
                amount = Int32.Parse(args[0]);
            murdersPoint.Add(player.transform.position.ToString(), amount);
            Puts(msg("Added"));
              {
               Interface.Oxide.DataFileSystem.WriteObject("murdersPoint", murdersPoint);
               player.ChatMessage(msg("Saving SpawnPoints", player.UserIDString));

              }
           }
        }

        [ChatCommand("murders.wipepoint")]
        void npcWipe(BasePlayer player)
        {
           if (!permission.UserHasPermission(player.UserIDString, permissionNameREMOVE))
               return;
           {
            Delete();
              {
               player.ChatMessage(msg("Delete", player.UserIDString));
              }
           }
        }

        [ChatCommand("murders.kill")]
        void npcKill(BasePlayer player, string command, string[] args)
        {
           if (!permission.UserHasPermission(player.UserIDString, permissionNameKILL))
               return;
           {

                npcCreated.Remove(player.net.ID);
           Kill();
              {
            player.ChatMessage(msg("Remove", player.UserIDString));
              }
           }
        }


        #region Helper

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

        object GetVariable(string menu, string datavalue, object defaultValue)
        {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[menu] = data;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value))
            {
                value = defaultValue;
                data[datavalue] = value;
            }
            return value;
        }
        #endregion
    }
}

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