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

FREE ADRArkan : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using Oxide.Core.Plugins;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Oxide.Plugins
{
    /*
     * This Version Changes:
     * - Initial
     */
    [Info("ADR Arkan", "Pho3niX90", "1.0.1")]
    [Description("Records a demo when players trigger arkan")]
    internal class ADRArkan : RustPlugin
    {
        [PluginReference] Plugin AutoDemoRecord;
        private ADRArkanConfig config;

        #region Oxide Hooks
        void Loaded() {
            LoadConfig();
        }
        #endregion

        #region Arkan Hooks
        private void API_ArkanOnNoRecoilViolation(BasePlayer player, int NRViolationsNum, string jString) {
            if (NRViolationsNum < config.monitorEvent_ArkanOnNoRecoilViolation_Count) return;
            Record(player, string.Format(GetMsg("No Recoil Violation"), NRViolationsNum), config.monitorEvent_ArkanOnNoRecoilViolation_RecordLength);
        }

        private void API_ArkanOnAimbotViolation(BasePlayer player, int AIMViolationsNum, string jString) {
            if (AIMViolationsNum < config.monitorEvent_ArkanOnAimbotViolation_Count) return;
            Record(player, string.Format(GetMsg("Aimbot Violation"), AIMViolationsNum), config.monitorEvent_ArkanOnAimbotViolation_RecordLength);
        }

        private void API_ArkanOnInRockViolation(BasePlayer player, int IRViolationsNum, string json) {
            if (IRViolationsNum < config.monitorEvent_ArkanOnInRockViolation_Count) return;
            Record(player, string.Format(GetMsg("In Rock Violation"), IRViolationsNum), config.monitorEvent_ArkanOnInRockViolation_RecordLength);
        }
        #endregion

        #region Helpers
        void Record(BasePlayer player, string msg, int length) {
            AutoDemoRecord?.Call("API_StartRecording", player, msg, length);
        }
        #endregion


        #region Configuration
        private class ADRArkanConfig
        {
            // Config default vars
            public bool monitorEvent_ArkanOnNoRecoilViolation = true;
            public bool monitorEvent_ArkanOnAimbotViolation = true;
            public bool monitorEvent_ArkanOnInRockViolation = true;
            public int monitorEvent_ArkanOnNoRecoilViolation_Count = 3;
            public int monitorEvent_ArkanOnAimbotViolation_Count = 0;
            public int monitorEvent_ArkanOnInRockViolation_Count = 0;
            public int monitorEvent_ArkanOnNoRecoilViolation_RecordLength = 10;
            public int monitorEvent_ArkanOnAimbotViolation_RecordLength = 10;
            public int monitorEvent_ArkanOnInRockViolation_RecordLength = 10;

            // Plugin reference
            private ADRArkan plugin;
            public ADRArkanConfig(ADRArkan plugin) {
                this.plugin = plugin;
                /**
                 * Load all saved config values
                 * */
                GetConfig(ref monitorEvent_ArkanOnNoRecoilViolation, "Arkan Events", "No Recoil Violation", "Enable");
                GetConfig(ref monitorEvent_ArkanOnNoRecoilViolation_Count, "Arkan Events", "No Recoil Violation", "Record when violations more than");
                GetConfig(ref monitorEvent_ArkanOnNoRecoilViolation_RecordLength, "Arkan Events", "No Recoil Violation", "Record for X minutes");

                GetConfig(ref monitorEvent_ArkanOnAimbotViolation, "Arkan Events", "Aimbot Violation", "Enable");
                GetConfig(ref monitorEvent_ArkanOnAimbotViolation_Count, "Arkan Events", "Aimbot Violation", "Record when violations more than");
                GetConfig(ref monitorEvent_ArkanOnAimbotViolation_RecordLength, "Arkan Events", "Aimbot Violation", "Record for X minutes");

                GetConfig(ref monitorEvent_ArkanOnInRockViolation, "Arkan Events", "In Rock Violation", "Enable");
                GetConfig(ref monitorEvent_ArkanOnInRockViolation_Count, "Arkan Events", "In Rock Violation", "Record when violations more than");
                GetConfig(ref monitorEvent_ArkanOnInRockViolation_RecordLength, "Arkan Events", "In Rock Violation", "Record for X minutes");

                plugin.SaveConfig();
            }

            private void GetConfig<T>(ref T variable, params string[] path) {
                if (path.Length == 0) return;
                if (plugin.Config.Get(path) == null) {
                    SetConfig(ref variable, path);
                    plugin.PrintWarning($"Added new field to config: {string.Join("/", path)}");
                }
                variable = (T)Convert.ChangeType(plugin.Config.Get(path), typeof(T));
            }

            private void SetConfig<T>(ref T variable, params string[] path) => plugin.Config.Set(path.Concat(new object[] { variable }).ToArray());

        }
        string GetMsg(string key) => lang.GetMessage(key, this);
        protected override void LoadConfig() {
            base.LoadConfig();
            config = new ADRArkanConfig(this);
        }
        protected override void LoadDefaultMessages() {
            lang.RegisterMessages(new Dictionary<string, string> {
                ["No Recoil Violation"] = "Received a No Recoil violation.NR {0}",
                ["Aimbot Violation"] = "Received an Aimbot violation.NR {0}",
                ["In Rock Violation"] = "Received an In Rock violation.NR {0}",
            }, this);
        }

        protected override void LoadDefaultConfig() => PrintWarning("Generating new configuration file.");
        #endregion

    }
}

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