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

Roblox脚本故障:排行榜与关卡数不显示,报错求修复

修复后的Roblox关卡Checkpoint脚本

错误原因分析

  • 排行榜不显示:leaderstats文件夹名称不符合Roblox要求,必须是全小写的"leaderstats",你脚本中写的是"leaderStats"(大写S),导致客户端无法识别为排行榜容器。
  • 报错attempt to index nil with 'leaderstats':Touched事件触发时,part.Parent可能不是玩家角色(比如场景中其他部件碰撞),此时Players:GetPlayerFromCharacter(part.Parent)返回nil,直接访问player.leaderstats就会触发空值索引错误。
  • 重生位置随机:脚本未添加玩家重生点更新逻辑,所以重生时默认使用地图初始出生点。

修复后的完整脚本

local Players = game:GetService("Players")
local CheckpointsFolder = game.Workspace.CheckPoints

-- 玩家加入时创建正确的排行榜与关卡数据
Players.PlayerAdded:Connect(function(player)
    -- 注意:leaderstats必须全小写,否则客户端不显示排行榜
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local Stage = Instance.new("IntValue")
    Stage.Name = "Stage"
    Stage.Value = 0 -- 初始化关卡为0,确保第一个Checkpoint能触发更新
    Stage.Parent = leaderstats

    -- 监听玩家重生,自动传送至对应关卡的Checkpoint
    player.CharacterAdded:Connect(function(character)
        local stageValue = player.leaderstats.Stage
        local targetCheckpoint = CheckpointsFolder:FindFirstChild(tostring(stageValue.Value))
        if targetCheckpoint and targetCheckpoint:IsA("BasePart") then
            -- 重生位置设为Checkpoint上方3单位,避免模型卡入地面
            character:WaitForChild("HumanoidRootPart").CFrame = targetCheckpoint.CFrame + Vector3.new(0, 3, 0)
        end
    end)
end)

-- 绑定所有Checkpoint的触摸事件
for _, v in pairs(CheckpointsFolder:GetChildren()) do
    if v:IsA("BasePart") then
        local checkpointStage = tonumber(v.Name)
        -- 验证Checkpoint名称为有效数字,过滤无效关卡
        if checkpointStage then
            v.Touched:Connect(function(part)
                local player = Players:GetPlayerFromCharacter(part.Parent)
                -- 先判断玩家存在,再执行后续逻辑
                if not player then return end
                
                local stageValue = player.leaderstats:FindFirstChild("Stage")
                -- 确保关卡值存在,且当前关卡低于Checkpoint对应关卡
                if stageValue and stageValue.Value < checkpointStage then
                    stageValue.Value = checkpointStage
                end
            end)
        end
    end
end

关键修复点说明

  • 修正排行榜命名:将leaderStats改为全小写的leaderstats,满足Roblox显示排行榜的硬性规则。
  • 空值安全防护:在Touched事件中先判断玩家对象是否存在,再访问leaderstats;同时用FindFirstChild获取关卡值,避免直接索引空对象。
  • 重生逻辑补充:添加CharacterAdded监听,玩家重生时自动将角色传送到当前关卡对应的Checkpoint位置,解决重生随机的问题。
  • 关卡有效性校验:提前验证Checkpoint的名称为有效数字,避免处理名称非法的无效Checkpoint。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:15