- 用户友好界面:直观的GUI,便于导航和互动。
- 经济整合:支持各种经济插件,实现无缝的财务管理。
- 动态菜单类别:将功能组织成可定制的类别,以提供更好的用户体验。
- 广泛的配置选项:插件的几乎所有方面都可以自定义,包括消息、颜色、大小、字体、 tion。
- 自动打开菜单:在玩家连接时自动显示菜单,每个服务器设置可配置。
- 阻止设置:在建造、突袭或战斗情况下控制菜单的访问,以增强游戏平衡。
- 多个经济头部字段:显示各种经济指标,如余额、服务器奖励和银行信息。
- 权限管理:为不同的用户角色微调权限,以控制对功能的访问。
- 本地化支持:轻松翻译和自定义所有消息以适应不同的语言。
- 性能优化:设计旨在尽量减少服务器延迟,同时提供丰富的功能。
- 可定制的钩子:通过可定制的钩子与现有的经济系统集成,用于添加、删除和显示余额。
- 编辑器位置更改:管理员现在可以只需点击一下即可更改编辑器位置,可选择左对齐、居中对齐或右对齐。
- 命令增强: 现在命令以"|"分隔多个参数进行处理,支持批量命令处理。
- /info – 打开菜单
- /sp.install (或)/welcome.install – 打开安装程序菜单
- sp.migrations– 升级到新版本时更新插件数据结构的控制台命令。自动在进行更改之前创建备份。
- sp.migrations 列表 – 显示可用的迁移以及是否需要运行
- sp.migrations run <version> – 运行特定的迁移(例如,“1.3.0”)
- sp.migrations run <version> force – 即使未检测到需要,也强制进行迁移
- serverpanel.edit – 允许玩家编辑插件设置并打开编辑菜单
- serverpanelinstaller.admin - 用于访问插件安装功能
展示
模板
- 模板 V1

- 模板 V2

- 模板 V3

- 模板 V5

编辑器

安装程序

加入我们的测试服务器,亲自体验我们所有的独特功能!
复制下面的IP地址开始游戏!
连接 194.147.90.239:28015
ServerPanel 支持动态更新字段,这些字段可以用于您的模板中以显示实时信息。这些字段会自动更新,并且可以用于文本组件、标题和其他界面元素中。
玩家信息
- {在线玩家} – 当前在线玩家数量
- 《睡觉的玩家》 – 睡觉的玩家数量
- {所有玩家} – 总玩家数(在线 + 睡觉)
- {最大玩家数} – 最大服务器容量
- {玩家击杀数} – 玩家的击杀数(需要KillRecords、Statistics或UltimateLeaderboard)
- {玩家死亡次数} – 玩家死亡次数(需要KillRecords、Statistics或UltimateLeaderboard)
- {玩家用户名} – 玩家的显示名称
- {玩家头像} – 玩家的 Steam ID 用于头像显示
- {economy_economics} – 经济插件余额
- {economy_server_rewards} – 服务器奖励积分
- 经济银行系统 – 银行系统余额
服务器信息
- {服务器名称} – 服务器主机名
- {服务器描述} – 服务器描述
- {server_url} – 服务器网站网址
- {服务器标题图片} – 服务器标题图片的URL
- {server_fps} – 当前服务器FPS
- {服务器实体} – 服务器上的实体数量
- {种子} – 世界种子
- {世界大小} – 世界大小
- {ip} – 服务器IP地址
- {port} – 服务器端口
- {服务器时间} – 当前服务器时间 (YYYY-MM-DD HH:MM:SS)
- {tod_time} – 一天中的时间(24小时格式)
- {realtime} – 服务器运行时间(秒)
- {地图尺寸} – 地图尺寸以米为单位
- {地图链接} – 自定义地图链接
- {save_interval} – 自动保存间隔
- {pve} – PvE 模式状态 (真/假)
- {玩家生命值} – 当前生命值
- {玩家最大生命值} – 最大生命值
- {player_calories} – 卡路里水平
- {球员水分补充} – 水分补充水平
- {玩家辐射值} – 辐射中毒等级
- {玩家舒适度} – 舒适度
- {玩家流血} – 流血量
- {player_temperature} – 体温
- {玩家湿润度} – 湿润等级
- {玩家氧气量} – 氧气水平
- {玩家毒药} – 毒药等级
- {玩家心率} – 心率
- {玩家位置X} – X坐标
- {玩家位置Y} – Y坐标(高度)
- {玩家位置Z轴} – Z坐标
- {玩家旋转} – 玩家旋转(度)
- {玩家延迟} – 连接时间(秒)
- {player_ip} – 玩家的IP地址
- {玩家授权等级} – 授权等级 (0=玩家, 1=版主, 2=管理员)
- {玩家SteamID} – Steam ID
- {玩家连接时间} – 连接开始时间
- {玩家空闲时间} – 空闲时间 (HH:MM:SS)
- {玩家正在睡觉} – 正在睡觉(真/假)
- {玩家受伤} – 玩家受伤(真/假)
- {玩家死亡} – 已死亡(是/否)
- {玩家建筑被阻挡} – 建筑是否被阻挡(真/假)
- {玩家安全区域} – 在安全区域(真/假)
- 玩家游泳 – 正在游泳(真/假)
- {玩家在地面上} – 在地面上 (真/假)
- {玩家正在飞行} – 正在飞行(真/假)
- {玩家管理员} – 是管理员(真/假)
- {玩家开发者} – 是开发者(真/假)
- {网络输入} – 网络输入(目前显示 0)
- {network_out} – 网络输出(目前显示 0)
- {fps} – 服务器 FPS
- {内存} – 内存分配
- {垃圾回收次数} – 垃圾回收次数
您可以在任何文本组件中使用这些字段,例如:“欢迎 {player_username}!服务器有 {online_players}/{max_players} 名玩家在线。”
ServerPanel 为插件开发者提供了 API,以便将他们的插件集成到菜单系统中。
所需方法
- API_OpenPlugin(BasePlayer player) - 主要集成方法,返回CuiElementContainer
- OnServerPanelClosed(BasePlayer player) - 在面板关闭时调用(清理)
- OnServerPanelCategoryPage(BasePlayer player, int category, int page) - 在类别更改时调用(清理)
- OnReceiveCategoryInfo(int categoryID) - 接收你的类别ID
[PluginReference]私有插件服务器面板;私有整数 _服务器面板类别ID =-1;
私有空OnServerInitialized(){服务器面板?.调用("API_OnServerPanelProcessCategory",名称);}
私有空OnReceiveCategoryInfo(整数 categoryID){
_serverPanelCategoryID = categoryID;}
私有空OnServerPanelCategoryPage(基础玩家 玩家,整数 类别,整数 页){// 玩家切换类别时清理}
私有CuiElementContainer API_OpenPlugin(BasePlayer player){
var container =新的CuiElementContainer;
// 创建基础面板(所需结构)
container.Add(newCuiPanel(){RectTransform={AnchorMin="0 0",AnchorMax="1 1"},Image={Color="0 0 0 0"}},"UI.Server.Panel.Content","UI.Server.Panel.Content.Plugin","UI.Server.Panel.Content.Plugin");
container.添加(新的CuiPanel(){RectTransform={AnchorMin="0 0",AnchorMax="1 1"},Image={Color="0 0 0 0"}},"UI.Server.Panel.Content.Plugin","YourPlugin.Background","YourPlugin.Background");
// 在这里添加你的插件的用户界面元素
container.添加(新的CuiLabel{RectTransform={AnchorMin="0.1 0.8",AnchorMax="0.9 0.9"},文本={文本="你的插件界面",字体大小=16,对齐方式=TextAnchor.中间居中,颜色="1 1 1 1"}},"你的插件.背景","你的插件.标题");
// 使用 "YourPlugin.Background" 作为父级添加按钮、面板等
返回 容器;}
私有空OnServerPanelClosed(基础玩家 玩家){// 当面板关闭时清理}
标题更新字段
- API_OnServerPanelAddHeaderUpdateField(Plugin plugin, string updateKey, Func<BasePlayer, string> updateFunction) - 为头部占位符注册一个 per-player 字符串提供者。成功返回 true。
- API_OnServerPanelRemoveHeaderUpdateField(Plugin plugin, string updateKey = null) - 取消注册特定的 updateKey 为您的插件,或当 updateKey 为 null 时,取消注册您的插件的所有键。成功时返回 true。
[插件参考]私有插件服务器面板;
私有空OnServerInitialized(){// 为每个玩家注册一个动态头字段ServerPanel?.调用("API_OnServerPanelAddHeaderUpdateField", this,"{player_kdr}",(Func<BasePlayer, string>)(玩家 =>获取Kdr(玩家)));}
私有 字符串 GetKdr(基础玩家 玩家){// 计算并返回此玩家在标题中显示的值返回"1.23";}
在用户界面中使用:将您的密钥(例如,{player_kdr})直接放置在标头字段文本中。该值将根据使用您函数的玩家进行更新。
问:为什么我不能打开菜单?
答:确保插件已安装并激活在您的服务器上。如果问题仍然存在,请联系服务器管理员。
问:如何启用专家模式?(禁用自动模板更新)
答:在数据文件“Template.json”中,打开“使用专家模式?”选项:
“使用专家模组?”:是的,
P.S. “Template.json” 位于 "oxide/data/ServerPanel" 目录 (如果你使用 Oxide) 或者在 "carbon/data/ServerPanel" 目录 (如果你使用 Carbon)
问:我看到带有Rust标志的黑色图像,或者在加载图像时出现错误429。我该怎么办?
答:这些问题是由于从互联网下载图像时出现问题而引起的。要解决此问题,请启用离线图像模式,该模式将使用本地图像代替:
- 在配置中启用该模式:
- 打开 "oxide/config/ServerPanel.json"(或 Carbon 的 "carbon/config/ServerPanel.json")
- 设置"Enable Offline Image Mode": true
- 设置图像:
- 在"oxide/data"中创建文件夹"TheMevent"(或在Carbon中创建在"carbon/data")
- 下载 PluginsStorage (点击“CODE” → “下载 ZIP”)
- 解压ZIP文件并将所有内容复制到"TheMevent"文件夹
- 重新加载插件:
- 类型 o.reload ServerPanel (氧化物) 或 c.reload ServerPanel (碳)
问:ServerPanel是否只能与Mevent的插件一起使用?
答:目前,ServerPanel与Mevent的插件(商店、套装、每日奖励等)无缝集成。然而,其他开发者可以使用提供的API将他们的插件集成到菜单系统中。插件系统设计为可扩展以支持第三方集成。
问:为什么集成插件(商店,套装)的窗口大小不同?
答:不同的插件可能使用不同的集成模板。请确保所有集成插件使用与您的ServerPanel模板匹配的相同模板版本(V1,V2等)。更新每个插件中的模板以确保尺寸一致。
问:不同玩家的面板显示不同。如何能让它在所有人的屏幕上显示一致?
答:这个问题发生在玩家的UI缩放设置不同的情况下。要解决这个问题并确保所有玩家的一致显示:
- 打开位于 "oxide/data/ServerPanel"(或 Carbon 的 "carbon/data/ServerPanel")的 "Template.json" 文件
- 在“背景”部分找到“父级(覆盖/界面)”设置
- 将值从 "Overlay" 改为 "OverlayNonScaled"
- 保存文件并重启服务器或重新加载插件
答:是的,你可以用你自己的视频替换默认视频!你需要找到并修改命令:
服务器面板_广播视频 [你的视频链接]
替换 [your_video_url] 为您的视频的直接链接。为了最佳兼容性,我们建议将您的视频托管在 imgur.com。
问:我的自定义图片无法加载或显示为空白/问号。我应该使用什么图片托管服务?
答:对于自定义图片,我们建议使用imgbb.com作为图片托管服务。避免使用Imgur和没有直接访问图片的服务。为了获得最可靠的体验,请使用离线图片模式和本地图片代替。
问:如何让插件界面在ServerPanel菜单外打开,而不是在类别内?
答:你可以配置按钮以执行打开插件界面的聊天命令。这样可以:
- 在你的按钮配置中,设置"Chat Button": true
- 将 "Commands" 字段设置为 "chat.say /command" (将 "command" 替换为实际的插件命令)
"聊天按钮": true
"命令": "chat.say /cases"
这将执行命令,就像玩家在聊天中输入一样,独立打开插件界面,而不是在ServerPanel菜单中。
问:V4模板中的文本在移动或滑出位置。我该如何解决这个问题?
答:这个问题发生在文本宽度没有正确配置的时候。ServerPanel 提供了“标题本地化”设置来控制类别和页面的文本宽度:
- 打开ServerPanel编辑器(点击“管理员模式”按钮以打开编辑菜单)
- 选择您要编辑的类别或页面(点击“编辑类别”或“编辑页面”按钮)
- 在编辑器中,找到“标题本地化”部分
- 对于每种语言(en,ru等),您将看到三列:
- 语言 - 语言代码
- 文本 - 本地化的文本内容
- 宽度 (px) - 像素设置的宽度
- 调整"宽度 (px)"的值以匹配您的文本长度。较长的文本需要更大的宽度值。
- 保存更改并在游戏中测试