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

FREE HotKeys : 0.0.31 0.0.31

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

namespace Oxide.Plugins
{
    [Info("HotKeys", "Calytic", "0.0.31", ResourceId = 2135)]
    class HotKeys : RustPlugin
    {
        private Dictionary<string, object> keys;
        private bool ResetDefaultKeysOnJoin;

        Dictionary<string, string> defaultRustBinds = new Dictionary<string, string>()
        {
            {"f1", "consoletoggle"},
            {"backquote", "consoletoggle"},
            {"f7", "bugreporter"},
            {"w", "+forward"},
            {"s", "+backward"},
            {"a", "+left"},
            {"d", "+right"},
            {"mouse0", "+attack"},
            {"mouse1", "+attack2"},
            {"mouse2", "+attack3"},
            {"1", "+slot1"},
            {"2", "+slot2"},
            {"3", "+slot3"},
            {"4", "+slot4"},
            {"5", "+slot5"},
            {"6", "+slot6"},
            {"7", "+slot7"},
            {"8", "+slot8"},
            {"leftshift", "+sprint"},
            {"rightshift", "+sprint"},
            {"leftalt", "+altlook"},
            {"r", "+reload"},
            {"space", "+jump"},
            {"leftcontrol", "+duck"},
            {"e", "+use"},
            {"v", "+voice"},
            {"t", "chat.open"},
            {"return", "chat.open"},
            {"mousewheelup", "+invnext"},
            {"mousewheeldown", "+invprev"},
            {"tab", "inventory.toggle "},
        };

        void Loaded()
        {
            CheckConfig();
            keys = GetConfig("Settings", "Keys", GetDefaultKeys());
            ResetDefaultKeysOnJoin = GetConfig("Settings", "ResetDefaultKeysOnJoin", true);

            BindAll();
        }

        void OnPlayerInit(BasePlayer player)
        {
            if (ResetDefaultKeysOnJoin)
            {
                BindDefaultKeys(player);
            }
            BindKeys(player);
        }

        [ConsoleCommand("hotkey.bind")]
        private void ccHotKeyBind(ConsoleSystem.Arg arg)
        {
            if (arg.connection != null && arg.connection.authLevel < 1)
            {
                return;
            }

            if (arg.Args.Length == 1)
            {
                string keyCombo = arg.Args[0].Trim();
                if(keys.ContainsKey(keyCombo)) {
                    SendReply(arg, keyCombo + ": " + keys[keyCombo].ToString());
                    SaveBinds();
                    BindAll();
                } else {
                    SendReply(arg, "[HotKeys] No such binding");
                }
            } else if(arg.Args.Length == 2) {
                string keyCombo = arg.Args[0].Trim();
                string bind = arg.Args[1].Trim();

                if (keys.ContainsKey(keyCombo))
                {
                    SendReply(arg, "[HotKeys] Replaced " + keyCombo + ": " + bind);
                    keys[keyCombo] = bind;
                }
                else
                {
                    SendReply(arg, "[HotKeys] Bound " + keyCombo + ": " + bind);
                    keys.Add(keyCombo, bind);
                }

                SaveBinds();
                BindAll();
            }
            else
            {
                SendReply(arg, "[HotKeys] Invalid Syntax.hotkey.bind \"keyCombo\" [bind]");
            }
        }

        [ConsoleCommand("hotkey.unbind")]
        private void ccHotKeyUnbind(ConsoleSystem.Arg arg)
        {
            if (arg.connection != null && arg.connection.authLevel < 1)
            {
                return;
            }

            if (arg.Args.Length == 1)
            {
                string keyCombo = arg.Args[0].Trim();

                if (keys.ContainsKey(keyCombo))
                {
                    string bind = keys[keyCombo].ToString();
                    keys.Remove(keyCombo);
                    if (defaultRustBinds.ContainsKey(keyCombo))
                    {
                        SendReply(arg, "[HotKeys] Reverted " + keyCombo + ": " + defaultRustBinds[keyCombo]);
                    }
                    else
                    {
                        SendReply(arg, "[HotKeys] Unbound " + keyCombo + ": " + bind);
                    }
                    
                    SaveBinds();
                    UnbindAll(keyCombo);
                }
            }
            else
            {
                SendReply(arg, "[HotKeys] Invalid Syntax.hotkey.unbind \"keyCombo\"");
            }
        }

        void BindAll()
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (ResetDefaultKeysOnJoin)
                {
                    BindDefaultKeys(player);
                }
                BindKeys(player);
            }
        }

        void UnbindAll(string keyCombo)
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                UnbindKey(player, keyCombo);
            }
        }

        void BindDefaultKeys(BasePlayer player)
        {
            foreach (KeyValuePair<string, string> kvp in defaultRustBinds)
            {
                player.SendConsoleCommand("bind " + kvp.Key + " " + kvp.Value.ToString());
            }
        }

        void BindKeys(BasePlayer player)
        {
            foreach (KeyValuePair<string, object> kvp in keys)
            {
                player.SendConsoleCommand("bind " + kvp.Key + " " + kvp.Value.ToString());
            }
        }

        void UnbindKey(BasePlayer player, string keyCombo)
        {
            string defaultRustBind = "";
            if (defaultRustBinds.ContainsKey(keyCombo))
            {
                defaultRustBind = defaultRustBinds[keyCombo];
            }
            player.SendConsoleCommand("bind " + keyCombo + " \"" + defaultRustBind + "\"");
        }

        void SaveBinds()
        {
            Config["Settings", "Keys"] = keys;
            Config.Save();
        }

        void LoadDefaultConfig()
        {
            Config["Settings", "Keys"] = GetDefaultKeys();
            Config["Settings", "ResetDefaultKeysOnJoin"] = GetConfig("Settings","ResetDefaultKeysOnJoin", true);

            Config["VERSION"] = Version.ToString();
        }

        void CheckConfig()
        {
            if (Config["VERSION"] == null)
            {
                // FOR COMPATIBILITY WITH INITIAL VERSIONS WITHOUT VERSIONED CONFIG
                ReloadConfig();
            }
            else if (GetConfig<string>("VERSION", "") != Version.ToString())
            {
                // ADDS NEW, IF ANY, CONFIGURATION OPTIONS
                ReloadConfig();
            }
        }

        protected void ReloadConfig()
        {
            Config["VERSION"] = Version.ToString();

            // NEW CONFIGURATION OPTIONS HERE
            Config["Settings", "ResetDefaultKeysOnJoin"] = GetConfig("Settings", "ResetDefaultKeysOnJoin", true);
            // END NEW CONFIGURATION OPTIONS

            PrintToConsole("Upgrading configuration file");
            SaveConfig();
        }

        Dictionary<string, object> GetDefaultKeys()
        {
            return new Dictionary<string, object>()
            {
                {"i", "inventory.toggle"},
                {"c", "duck"},
                {"z", "+attack;+duck"},
                {"f", "forward;sprint"},
            };
        }

        private T GetConfig<T>(string name, T defaultValue)
        {
            if (Config[name] == null)
            {
                return defaultValue;
            }

            return (T)Convert.ChangeType(Config[name], typeof(T));
        }

        private T GetConfig<T>(string name, string name2, T defaultValue)
        {
            if (Config[name, name2] == null)
            {
                return defaultValue;
            }

            return (T)Convert.ChangeType(Config[name, name2], typeof(T));
        }
    }
}

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