• 注册后才能下载/购买插件!快来注册吧,注册即可免费下载 精翻插件 !【点我注册
  • RustSB.COM向广大野生Rust插件作者发出入驻邀请!详情请见[原创作者条约]
【XMBanSystem·封禁系统】

新品 【XMBanSystem·封禁系统】 1.0.0

Hook(事件钩子)​

其他插件可以监听以下钩子,在封禁/解封时触发自定义逻辑。

OnXMBanApplied​

当玩家被施加封禁时触发。
C#:
void OnXMBanApplied(ulong playerId, string banType, int minutes, string reason)
参数
  • playerId (ulong) - 目标玩家的 SteamID
  • banType (string) - 封禁类型
  • minutes (int) - 封禁时长(分钟)
  • reason (string) - 封禁原因,可能为空字符串
封禁类型值

说明
freeze冻结
mute禁言
damage伤害限制
command指令限制
item物品限制
permission权限限制
loot搜刮限制
deploy部署限制
gather采集限制
craft制作限制
mount驾驶限制
wear穿戴限制
team队伍限制
plant种植限制

示例
C#:
void OnXMBanApplied(ulong playerId, string banType, int minutes, string reason)
{
    Puts($"玩家 {playerId} 被施加了 {banType} 封禁,时长 {minutes} 分钟,原因: {reason}");
}



OnXMBanExpired​

当玩家的封禁到期或被手动解除时触发。
C#:
void OnXMBanExpired(ulong playerId, string banType)
参数
  • playerId (ulong) - 目标玩家的 SteamID
  • banType (string) - 被解除的封禁类型(值同上表)
示例
C#:
void OnXMBanExpired(ulong playerId, string banType)
{
    Puts($"玩家 {playerId} 的 {banType} 封禁已解除");
}


API 方法​

API_IsBanned​

查询玩家是否存在指定类型的封禁。
C#:
bool API_IsBanned(ulong playerId, string banType)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • banType (string) - 封禁类型(freeze/mute/damage/command/item/permission/loot/deploy/gather/craft/mount/wear/team/plant)
返回:true 表示存在该类型的有效封禁,false 反之。
示例
C#:
bool isMuted = (bool)XMBanSystem?.Call("API_IsBanned", player.userID, "mute");
if (isMuted)
{
    Puts("该玩家当前被禁言");
}



API_GetBanInfo​

获取玩家所有生效中的封禁详细信息。
C#:
Dictionary<string, object> API_GetBanInfo(ulong playerId)
参数
  • playerId (ulong) - 目标玩家 SteamID
返回:字典,key 为封禁标识,value 为封禁详情字典。
返回结构
Key 格式详情字段
freezeremaining(秒), reason
muteremaining(秒), reason
lootremaining(秒), reason
deployremaining(秒), reason
gatherremaining(秒), reason
craftremaining(秒), reason
mountremaining(秒), reason
wearremaining(秒), reason
teamremaining(秒), reason
plantremaining(秒), reason
damage_{类型}remaining(秒), reason, type
command_{指令}remaining(秒), reason, cmd
item_{简称}_{皮肤ID}remaining(秒), reason, shortname, skin
permission_{权限名}remaining(秒), reason, perm, display
示例
C#:
var info = XMBanSystem?.Call("API_GetBanInfo", player.userID) as Dictionary<string, object>;
if (info != null && info.Count > 0)
{
    foreach (var kvp in info)
    {
        var detail = kvp.Value as Dictionary<string, object>;
        Puts($"封禁: {kvp.Key}, 剩余: {detail["remaining"]}秒, 原因: {detail["reason"]}");
    }
}


API_BanPlayer​

对玩家施加基础封禁(冻结/禁言/搜刮/部署/采集/制作/驾驶/穿戴/队伍/种植)
C#:
bool API_BanPlayer(ulong playerId, string banType, int minutes, string reason)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • banType (string) - 封禁类型,支持:freeze/mute/loot/deploy/gather/craft/mount/wear/team/plant
  • minutes (int) - 封禁时长(分钟),必须大于 0
  • reason (string) - 封禁原因,可传空字符串
返回:true 成功,false 参数无效或类型不支持。
示例
C#:
XMBanSystem?.Call("API_BanPlayer", targetId, "mute", 60, "刷屏");


API_BanPlayerDamage​

对玩家施加伤害限制封禁。
C#:
bool API_BanPlayerDamage(ulong playerId, int minutes, string dmgType, string reason)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • minutes (int) - 封禁时长(分钟)
  • dmgType (string) - 伤害类型:全部/玩家/NPC/动物/建筑/资源
  • reason (string) - 封禁原因
示例
C#:
XMBanSystem?.Call("API_BanPlayerDamage", targetId, 120, "玩家", "恶意击杀");


API_BanPlayerCommand​

对玩家施加指令限制封禁。
C#:
bool API_BanPlayerCommand(ulong playerId, int minutes, string cmd, string reason)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • minutes (int) - 封禁时长(分钟)
  • cmd (string) - 要禁用的指令名(不含 /)
  • reason (string) - 封禁原因
示例
C#:
XMBanSystem?.Call("API_BanPlayerCommand", targetId, 60, "trade", "滥用交易");


API_BanPlayerItem​

对玩家施加物品限制封禁。
C#:
bool API_BanPlayerItem(ulong playerId, int minutes, string shortName, ulong skinId, string reason)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • minutes (int) - 封禁时长(分钟)
  • shortName (string) - 物品短名称
  • skinId (ulong) - 皮肤 ID,无皮肤传 0
  • reason (string) - 封禁原因
示例
C#:
XMBanSystem?.Call("API_BanPlayerItem", targetId, 1440, "explosive.timed", (ulong)0, "恶意炸家");


API_BanPlayerPermission​

对玩家施加权限限制封禁(到期自动恢复权限)。
C#:
bool API_BanPlayerPermission(ulong playerId, int minutes, string perm, string display, string reason)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • minutes (int) - 封禁时长(分钟)
  • perm (string) - 权限名称
  • display (string) - 显示名称,传空则使用权限名
  • reason (string) - 封禁原因
示例
C#:
XMBanSystem?.Call("API_BanPlayerPermission", targetId, 60, "plugin.vip", "VIP权限", "违规使用");


API_UnbanPlayer​

手动解除玩家指定类型的封禁。
C#:
bool API_UnbanPlayer(ulong playerId, string banType)
参数
  • playerId (ulong) - 目标玩家 SteamID
  • banType (string) - 要解除的封禁类型(freeze/mute/damage/command/item/permission/loot/deploy/gather/craft/mount/wear/team/plant)
返回:true 成功解除,false 不存在该类型封禁。
说明
  • 解除 permission 类型时,会自动恢复所有被收回的权限
  • 解除 mute 类型时,会自动执行 unmute 命令
  • 解除后会触发 OnXMBanExpired 钩子
  • 如果解除后玩家无任何封禁,自动清除数据和UI
示例
C#:
bool success = (bool)XMBanSystem?.Call("API_UnbanPlayer", targetId, "freeze");
if (success) Puts("已解除冻结");