You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Roblox免费模型封禁脚本,实现按玩家ID封禁?

修复Roblox按玩家ID封禁的脚本问题

原脚本失效的核心原因:

  • 封禁列表混合了字符串格式的用户名与数字格式的用户ID,但代码仅尝试将玩家对象转为字符串(即用户名)去匹配列表,导致数字ID无法被识别。
  • 代码使用大量晦涩的语法糖堆叠逻辑,结构混乱,难以定位问题。

以下是重构后的清晰版本,同时支持用户名和用户ID封禁:

-- 清晰版封禁脚本
local Players = game:GetService("Players")

-- 封禁列表:支持用户名(字符串)和用户ID(数字)
local banlist = {
    "Roblox",
    "Builderman",
    4697369149  -- 现在可正常生效
}

local function isBanned(player)
    -- 检查用户名是否在封禁列表
    if table.find(banlist, player.Name) then
        return true
    end
    -- 检查用户ID是否在封禁列表
    if table.find(banlist, player.UserId) then
        return true
    end
    return false
end

local function handlePlayerAdded(player)
    if isBanned(player) then
        player:Kick("你已被封禁!")
        print(string.format("已封禁玩家:%s(ID:%d)", player.Name, player.UserId))
    end
end

-- 监听新玩家加入
Players.PlayerAdded:Connect(handlePlayerAdded)

-- 处理已在服务器中的玩家
for _, player in ipairs(Players:GetPlayers()) do
    handlePlayerAdded(player)
end

关键改进说明:

  • 用规范的game:GetService("Players")替代原脚本的game:FindService"Players",避免语法歧义。
  • 拆分逻辑为isBanned函数,分别检查玩家的Name(用户名)和UserId(用户ID)是否在封禁列表中,覆盖两种封禁场景。
  • 替换原脚本晦涩的语法堆叠,改用直白的函数调用与循环,便于后续维护和问题排查。
  • 同时处理新加入的玩家和已在服务器中的玩家,避免遗漏封禁对象。

原脚本失效细节:

原脚本中table.find(banlist,tostring(({...})[#{...}]))这一行,是将玩家对象直接转为字符串(结果为玩家用户名),再去匹配封禁列表。但你添加的4697369149是数字类型的用户ID,与用户名字符串无法匹配,因此脚本无法触发封禁逻辑。

内容的提问来源于stack exchange,提问作者user15611379

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:15:02