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

FREE Trapper : 1.0.13 1.0.13

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

namespace Oxide.Plugins
{
    [Info("Trapper", "redBDGR", "1.0.13")]
    [Description("Adds a few new features to traps")]
    class Trapper : RustPlugin
    {
        private const string permissionNameADMIN = "trapper.admin";
        private const string permissionName = "trapper.auto";
        private const string permissionNameOWNER = "trapper.owner";
        private const string permissionNameFRIENDS = "trapper.friends";
        private const string permissionNameCLAN = "trapper.clan";

        private bool Changed;
        [PluginReference] private Plugin Friends; private bool friendsEnabled;
        [PluginReference] private Plugin RustIO; private bool rustIOEnabled;
        [PluginReference] private Plugin ClansReborn; private bool clansRebornEnabled;
        [PluginReference] private Plugin Clans; private bool clansEnabled;

        private bool hurtFriends;
        private bool hurtClanMates;
        private bool hurtOwner;
        private bool ignoreProjectiles;
        private float resetTime = 5f;

        private void Init()
        {
            LoadVariables();
            permission.RegisterPermission(permissionName, this);
            permission.RegisterPermission(permissionNameOWNER, this);
            permission.RegisterPermission(permissionNameFRIENDS, this);
            permission.RegisterPermission(permissionNameADMIN, this);
            permission.RegisterPermission(permissionNameCLAN, this);
        }

        protected override void LoadDefaultConfig()
        {
            Config.Clear();
            LoadVariables();
        }

        private void LoadVariables()
        {
            resetTime = Convert.ToSingle(GetConfig("Settings", "Reset Time", 5f));
            hurtOwner = Convert.ToBoolean(GetConfig("Settings", "Trigger for Owner", true));
            hurtFriends = Convert.ToBoolean(GetConfig("Settings", "Trigger for Friends", true));
            hurtClanMates = Convert.ToBoolean(GetConfig("Settings", "Trigger for clan mates", true));
            ignoreProjectiles = Convert.ToBoolean(GetConfig("Settings", "Ignore Projectiles", false));

            if (!Changed) return;
            SaveConfig();
            Changed = false;
        }

        private void Loaded()
        {
            rustIOEnabled = RustIO != null && RustIO.Call<bool>("IsInstalled");
            friendsEnabled = Friends != null;
            clansRebornEnabled = ClansReborn != null;
            clansEnabled = Clans != null;
        }

        private object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
        {
            if (!ignoreProjectiles) return null;
            BaseTrap trap = entity.GetComponent<BaseTrap>();
            if (!trap) return null;
            if (!info.IsProjectile()) return null;
            BearTrap bearTrap = entity.GetComponent<BearTrap>();
            if (bearTrap)
                bearTrap.Arm();
            return true;
        }

        private object OnTrapTrigger(BaseTrap trap, GameObject obj)
        {
            if (!(trap is BearTrap) && !(trap is Landmine)) return null;
            BasePlayer target = obj.GetComponent<BasePlayer>();
            if (target != null)
            {
                if (permission.UserHasPermission(target.UserIDString, permissionNameADMIN))
                    return false;
            }
            var player = FindPlayer(trap.OwnerID.ToString());
            if (target != null && player != null)
            {
                // Owner protection
                if (!hurtOwner)
                    if (target == player)
                        if (permission.UserHasPermission(target.UserIDString, permissionNameOWNER))
                            return false;

                // Friends protection
                if (!hurtFriends)
                {
                    if (friendsEnabled)
                        if (Friends)
                            if (Friends.Call<bool>("AreFriends", target.userID, player.userID))
                                if (permission.UserHasPermission(player.UserIDString, permissionNameFRIENDS))
                                    return false;
                    if (rustIOEnabled)
                        if (RustIO)
                            if (RustIO.Call<bool>("HasFriend", target.UserIDString, player.UserIDString))
                                if (permission.UserHasPermission(player.UserIDString, permissionNameFRIENDS))
                                    return false;
                }

                // Clanmates protection
                if (!hurtClanMates)
                {
                    if (clansEnabled)
                    {
                        if (Clans.Call<string>("GetClanTag", target.UserIDString) == Clans.Call<string>("GetClanTag", player.UserIDString))
                        {
                            if (permission.UserHasPermission(player.UserIDString, permissionNameCLAN))
                                return false;
                        }
                        else if (Clans.Call<string>("GetClanOf", target.UserIDString) == Clans.Call<string>("GetClanOf", player.UserIDString))
                            if (permission.UserHasPermission(player.UserIDString, permissionNameCLAN))
                                return false;
                    }
                }
            }

            if (!(trap is BearTrap)) return null;
            if (player == null) return null;
            if (permission.UserHasPermission(player.UserIDString, permissionName))
                timer.Once(resetTime, () =>
                {
                    if (trap != null)
                        ((BearTrap)trap).Arm();
                });
            return null;
        }

        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;
        }

        private static BasePlayer FindPlayer(string nameOrId)
        {
            foreach (var activePlayer in BasePlayer.activePlayerList)
            {
                if (activePlayer.UserIDString == nameOrId)
                    return activePlayer;
                if (activePlayer.displayName.Contains(nameOrId, CompareOptions.OrdinalIgnoreCase))
                    return activePlayer;
            }
            foreach (var sleepingPlayer in BasePlayer.sleepingPlayerList)
            {
                if (sleepingPlayer.UserIDString == nameOrId)
                    return sleepingPlayer;
                if (sleepingPlayer.displayName.Contains(nameOrId, CompareOptions.OrdinalIgnoreCase))
                    return sleepingPlayer;
            }
            return null;
        }
    }
}

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