免费插件

Magic Variables

神奇变量

为插件开发人员提供的简单静态变量 API

importedAPIvariables

原作者: · 查看 uMod 官方页面 ↗

插件介绍

为插件开发人员提供的简单静态变量 API

This is a simple static (non-file saving) variable system for developers. Useful for plugins intended without file usage.

More to come, cross plugin temporary variable communication etc etc. This is the bones for something special I hope.

主要用途

主要用于imported、API、variables等服务端功能。 本插件由 发布,当前目录记录版本为 v0.1,uMod 累计下载 9,639 次。

适用场景

  • 希望扩展原版服务器功能的服主

功能分类

importedAPIvariables
查看 uMod 官方英文简介

Simple static variable API for plugin developers

官方配置示例

// Main Hooks
InitPlugin(Plugin plugin, bool debug = false)
PluginExists(Plugin plugin)
DestroyPlugin(Plugin plugin, bool debug = false)

// General Variable Hooks
SetStaticVariable(Plugin plugin, string variable, string value, bool debug = false)
GetStaticVariable(Plugin plugin, string variable, bool debug = false)
RemoveStaticVariable(Plugin plugin, string variable, bool debug = false)

// Player Variable Hooks
InitPlayer(Plugin plugin, BasePlayer player, bool debug = false)
RemovePlayer(Plugin plugin, BasePlayer player, bool debug = false)
PlayerExists(Plugin plugin, BasePlayer player)

SetStaticPlayerVariable(Plugin plugin, BasePlayer player, string variable, string value, bool debug = false)
GetStaticPlayerVariable(Plugin plugin, BasePlayer player, string variable, bool debug = false)
RemoveStaticPlayerVariable(Plugin plugin, BasePlayer player, string variable, bool debug = false)
PlayerHasVariables(Plugin plugin, BasePlayer player)
using System;
using Oxide.Core.Plugins;
namespace Oxide.Plugins
{
    [Info("TestPlugin", "Norn", 0.1)]
    [Description("Demonstration of MagicVariables.")]
    public class TestPlugin : RustPlugin
    {
        [PluginReference]
        Plugin MagicVariables;
        Timer uptime_timer;
        void OnServerInitialized()
        {
            if (MagicVariables)
            {
                if (!Convert.ToBoolean(MagicVariables.Call("PluginExists", this)))
                {
                    MagicVariables.Call("InitPlugin", this, true);
                }
                uptime_timer = timer.Repeat(1, 0, () => UptimeTimer());
            }
        }
        void OnPlayerInit(BasePlayer player)
        {
            if (!Convert.ToBoolean(MagicVariables.Call("PlayerExists", this, player)))
            {
                MagicVariables.Call("InitPlayer", this, player, true);
                MagicVariables.Call("SetStaticPlayerVariable", this, player, "connectionTime", "0");
            }
        }
        void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            if (Convert.ToBoolean(MagicVariables.Call("PlayerExists", this, player)))
            {
                MagicVariables.Call("RemovePlayer", this, player, true);
            }
        }
        private void Unload()
        {
            if (uptime_timer != null)
            {
                uptime_timer.Destroy();
            }
            MagicVariables.Call("DestroyPlugin", this, true);
        }
        [ChatCommand("uptime")]
        void cmdUptime(BasePlayer player, string cmd, string[] args)
        {
            if (!Convert.ToBoolean(MagicVariables.Call("PlayerExists", this, player)))
            {
                MagicVariables.Call("InitPlayer", this, player, true);
                MagicVariables.Call("SetStaticPlayerVariable", this, player, "connectionTime", "1");
            }
            int uptime = Convert.ToInt32(MagicVariables.Call("GetStaticVariable", this, "upTime"));
            TimeSpan t = TimeSpan.FromSeconds(uptime);
            string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", t.Hours, t.Minutes, t.Seconds, t.Milliseconds);
            PrintToChat(player, "<color=yellow>"   this.Title   "</color>: "   answer   " <color=green>plugin uptime</color>.");
            int player_uptime = Convert.ToInt32(MagicVariables.Call("GetStaticPlayerVariable", this, player, "connectionTime"));
            t = TimeSpan.FromSeconds(player_uptime);
            answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", t.Hours, t.Minutes, t.Seconds, t.Milliseconds);
            PrintToChat(player, "<color=yellow>"   this.Title   "</color>: "   answer   " <color=green>player uptime</color>.");
        }
        private void UptimeTimer()
        {
            int uptime = Convert.ToInt32(MagicVariables.Call("GetStaticVariable", this, "upTime"));
            int new_uptime = uptime   1;
            MagicVariables.Call("SetStaticVariable", this, "upTime", new_uptime.ToString());
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (player != null)
                {
                    int player_uptime = Convert.ToInt32(MagicVariables.Call("GetStaticPlayerVariable", this, player, "connectionTime"));
                    player_uptime = player_uptime   1;
                    MagicVariables.Call("SetStaticPlayerVariable", this, player, "connectionTime", player_uptime.ToString());
                }
            }
        }
    }
}

更新日志

最新版本: v0.1
最后版本发布: 暂无记录
最后更新(条目): 2026-08-27

本站记录 uMod 官方插件信息。完整的历史更新日志请参阅 uMod 官方页面

安装方法

  1. 确认服务器已安装 Oxide / uMod 或兼容的 Carbon 框架。
  2. 登录本站后点击"下载",由本站已校验的本地缓存提供作者发布的文件。
  3. 将 .cs 文件放入服务器的 oxide/plugins 目录。
  4. 观察服务端控制台,确认插件编译并成功加载。
  5. 具体配置、权限、指令和依赖请查看原作者的 uMod 页面。

使用前注意

  • Rust 更新后,请先确认插件是否仍兼容当前服务端版本。
  • 修改配置前建议备份原配置文件,并在测试服验证后再部署到正式服。
  • 若插件依赖其他扩展或库,以 uMod 原作者页面的最新说明为准。
  • 本站中文内容用于辅助理解,遇到版本差异时以官方英文文档和源码为准。
来源说明

中文介绍由 uMod 官方简介翻译整理。插件著作权、许可证、完整文档和最新发布状态均以原作者及 uMod 官方页面为准。