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

FREE FrankiesPower : 1.0.0 1.0.0

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

#region Changelogs and ToDo
/**********************************************************************
* 
* 1.0.0 :       -   Initial release
*                              
**********************************************************************/
#endregion

namespace Oxide.Plugins
{
    [Info("FrankiesPower", "Krungh Crow", "1.0.0")]
    [Description("hp and dmg multipliers for Frankensteinpet")]

    class FrankiesPower : RustPlugin
    {
        #region Variables
        const string _HPBoost_Perm = "frankiespower.health";
        const string _AttBoost_Perm = "frankiespower.damage";
        const string Chat_Perm = "frankiespower.chat";

        ulong chaticon = 0;
        string prefix;
        bool Debug = false;

        float _MultiplierHP;
        float _MultiplierAtt;

        #endregion

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

            permission.RegisterPermission(Chat_Perm, this);
            permission.RegisterPermission(_HPBoost_Perm, this);
            permission.RegisterPermission(_AttBoost_Perm, this);

            Debug = configData.PlugCFG.Debug;
            prefix = configData.PlugCFG.Prefix;
            chaticon = configData.PlugCFG.Chaticon;
            if (Debug) Puts($"[Debug] trigger for Debug is true");

            _MultiplierHP = configData.FrankCFG.MultiplierHealth;
            _MultiplierAtt = configData.FrankCFG.MultiplierAttack;
        }

        private ConfigData configData;

        class ConfigData
        {
            [JsonProperty(PropertyName = "Main config")]
            public SettingsPlugin PlugCFG = new SettingsPlugin();
            [JsonProperty(PropertyName = "Frankie config")]
            public FrankieSetup FrankCFG = new FrankieSetup();
        }

        class SettingsPlugin
        {
            [JsonProperty(PropertyName = "Debug")]
            public bool Debug = false;
            [JsonProperty(PropertyName = "Chat Steam64ID")]
            public ulong Chaticon = 0;
            [JsonProperty(PropertyName = "Chat Prefix")]
            public string Prefix = "[<color=#4A95CC>Frankies</color><color=red>P</color>] ";
        }

        class FrankieSetup
        {
            [JsonProperty(PropertyName = "HP multiplier")]
            public float MultiplierHealth = 3.0f;
            [JsonProperty(PropertyName = "Attack multiplier")]
            public float MultiplierAttack = 1.1f;
        }

        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>
            {
                ["Info"] = "\n<color=green>Available Commands</color>\n<color=green>/frankiesp info</color> : Shows info on version/author and commands",
                ["InvalidInput"] = "Please enter a valid command!",
                ["Frankie_Spawned"] = "Frankie is boosted with {0}HP and {1} Strength",
                ["Version"] = "Version : V",
                ["NoPermission"] = "You do not have permission to use that command!",
            }, this);
        }

        #endregion

        #region Commands

        [ChatCommand("frankiesp")]
        private void FrankiesP(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, Chat_Perm))
            {
                Player.Message(player, prefix + string.Format(msg("NoPermission", player.UserIDString)), chaticon);
                if (Debug) Puts($"[Debug] {player} had no permission for using Commands");
                return;
            }

            if (args.Length == 0)
            {
                Player.Message(player, prefix + string.Format(msg("InvalidInput", player.UserIDString)), chaticon);
            }
            else
            {
                if (args[0].ToLower() == "info")
                {
                    Player.Message(player, prefix + string.Format(msg("Version", player.UserIDString)) + this.Version.ToString() + " By : " + this.Author.ToString()
                    + msg("Info")
                    , chaticon);
                    return;
                }
                else
                {
                    Player.Message(player, prefix + string.Format(msg("InvalidInput", player.UserIDString)), chaticon);
                }
            }
        }
        #endregion

        #region Hooks

        void OnEntitySpawned(FrankensteinPet frankie)
        {
            if (frankie == null) return;

            NextTick(() =>
            {
                var _ownerplayer = frankie.OwnerID;
                string _OwnerIdString = frankie.OwnerID.ToString();
                global::BasePlayer player = global::BasePlayer.FindByID(_ownerplayer);

                if (Debug) Puts($"[Debug] frankie start health : [{frankie.MaxHealth()}]");
                var _Health = frankie.MaxHealth();

                if (permission.UserHasPermission(_OwnerIdString, _HPBoost_Perm))
                {
                    frankie.InitializeHealth(_Health * _MultiplierHP, _Health * _MultiplierHP);
                    if (Debug) Puts($"[Debug] frankie Health multiplier: [x {_MultiplierHP}]");
                    if (Debug) Puts($"[Debug] frankie boosted health : [{frankie.MaxHealth()}]");
                }
                if (Debug) Puts($"[Debug] frankie base attack damage : [{frankie.BaseAttackDamge}]");

                if (permission.UserHasPermission(_OwnerIdString, _AttBoost_Perm))
                {
                    if (Debug) Puts($"[Debug] frankie attack multiplier: [x {_MultiplierAtt}]");
                    frankie.BaseAttackDamge = frankie.BaseAttackDamge * _MultiplierAtt;
                    if (Debug) Puts($"[Debug] frankie boosted attack damage : [{frankie.BaseAttackDamge}]");
                    if (Debug) Puts($"[Debug] frankie base attack rate : [{frankie.BaseAttackRate}]");
                }


                if(permission.UserHasPermission(_OwnerIdString, _HPBoost_Perm)|| permission.UserHasPermission(_OwnerIdString, _AttBoost_Perm))
                {
                    if (player != null && !player.IsSleeping())
                    {
                        var _MaxHealth = frankie.MaxHealth();
                        var _Attackdamage = frankie.BaseAttackDamge;
                        Player.Message(player, prefix + string.Format(msg($"Frankie_Spawned", _OwnerIdString),_MaxHealth, _Attackdamage), chaticon);
                    }
                    if (Debug) Puts($"[Debug] [{player}] has perms (HP and/or Att)");
                }
            });
        }

        #endregion

        #region Message helper

        private string msg(string key, string id = null) => lang.GetMessage(key, this, id);
        //Player.Message(player, prefix + string.Format(msg("InvalidInput", player.UserIDString)), chaticon);

        #endregion
    }
}

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