- 需要插件(必装)
-
原创 - RustSB Extensions - RustSB扩展
RustSB Extensions是RustSB.COM提供的Oxide扩展DLL,提供本站插件所需的大量扩展。 部分插件必须按照本扩展才能够正常运行。 功能 UI构建扩展方法。 成长型武器判断方法。 内置物品中文名API。 内置RustSBAuth,不再需要安装RustSBAuth插件。 内置图像管理系统,不再需要安装ImageLibrary插件。 玩家库存扩展方法。 玩家权限扩展方法。 其他扩展方法。 使用本扩展构建的插件将节省插件代码的复杂性,方便开发者快速扩展和维护。...
rustsb.com
插件概述
允许玩家通过一个钟表 UI 自由调整个人可见的游戏时间,不影响服务器全局时间和其他玩家。同时作为 API 插件,供其他需要判断玩家当前时间的插件调用。
- 所需权限:
xmtimeadjuster.use - 打开指令:
/shijian
UI 操作说明
打开后显示一个钟表面板,包含以下区域:时钟表盘
| 区域 | 内容 | 操作 |
|---|---|---|
| 外圈(蓝色高亮) | 24个小时按钮,0–23 | 点击选择小时 |
| 内圈(绿色高亮) | 12个分钟按钮,00/05/10…55 | 点击选择分钟(5分间隔) |
| 黄色指针 | 时针 | 随选择自动旋转 |
| 绿色指针 | 分针 | 随选择自动旋转 |
精细分钟调整
表盘下方的 ◄ -1分 / +1分 ► 按钮可以逐分微调,超过 59 分自动进/退小时。底部操作按钮
| 按钮 | 效果 |
|---|---|
| ✓ 确认应用 | 将当前选择的时间应用到玩家,立即生效 |
| ↺ 重置 | 清除自定义时间,恢复为服务器当前时间 |
| ✕ 关闭 | 关闭面板,不保存当前选择 |
时间生效机制
- 确认后修改为玩家设置时间,但时间依然会流逝,不会固定
- 仅修改该玩家客户端显示的时间(environment.dateTime),服务器全局时间不受影响
- 玩家下线后自动清除设置,不持久化
与其他插件的优先级
XMTimeAdjuster 设置的时间优先级高于 VipLogo·服务器等级、XMNewbieGuide·萌新管家 等自动时间插件。重置后(↺ 重置)API_HasCustomTime 返回 false,VipLogo 等插件恢复接管。

API
C#:
// 获取玩家当前游戏小时(有自定义时间则返回自定义,否则返回服务器时间)
float hour = (float)(XMTimeAdjuster?.Call("API_GetPlayerHour", player)
?? TOD_Sky.Instance.Cycle.Hour);
// 获取玩家所处时段:深夜(0–6) / 上午(6–12) / 下午(12–18) / 夜晚(18–24)
string period = (string)(XMTimeAdjuster?.Call("API_GetPlayerTimePeriod", player)
?? GetFallbackPeriod()); // GetFallbackPeriod 由调用方自行实现
// 判断玩家是否设置了自定义时间(未设置或已重置返回 false)
bool hasCustom = (bool)(XMTimeAdjuster?.Call("API_HasCustomTime", player)
?? false);
Hook
其他插件只需在自身代码中声明同名方法即可接收通知,无需引用或 PluginReference。OnXMTimeSet(BasePlayer player, float hour)
玩家点击「✓ 确认应用」后触发,hour 为 0–24 的浮点数(例如 13.5 = 13:30)。
C#:
void OnXMTimeSet(BasePlayer player, float hour)
{
Puts($"{player.displayName} 将游戏时间设为 {hour:F1}h");
}
OnXMTimeReset(BasePlayer player)
玩家点击「↺ 重置」后触发,此时该玩家已无自定义时间(API_HasCustomTime 返回 false)。
C#:
void OnXMTimeReset(BasePlayer player)
{
Puts($"{player.displayName} 重置了个人游戏时间");
}