更改 leaderstats 中的 IntValue 时尝试调用空值

我正在尝试制作管理面板,每次想要通过用户名更改值时

代码:

leaderstats 脚本;

--// 设置文件夹

local AdminModule = require(game:GetService('ServerScriptService').leaderstats.MainModule)
game.Players.PlayerAdded:Connect(function(plr)
    local leaderstats = Instance.new('Folder', plr)
    leaderstats.Name = 'leaderstats'

    local Playtime = Instance.new('IntValue', leaderstats)

    Playtime.Name = 'Playtime'
end)

AdminModule.GivePoints('happy_speler', 500)

MainModule:

local module = {
    GivePoints = function(plr, amount)
        plr:WaitForChild('leaderstats'):WaitForChild('Playtime').Value = amount
    end,


}

return module

原文链接 https://stackoverflow.com/questions/71095242

点赞
stackoverflow用户2860267
stackoverflow用户2860267

错误提示您尝试调用一个不存在的函数。

查看 AdminModule.GivePoints 函数,它似乎需要一个 plr 参数的玩家对象,但您却传入了一个字符串。字符串库没有 WaitForChild 函数,因此调用 plr:WaitForChild 报错。

修复方法是正确地传递一个玩家对象:

local Players = game:GetService("Players")
local ServerScriptService = game:GetService("ServerScriptService")
local AdminModule = require(ServerScriptService.leaderstats.MainModule)

Players.PlayerAdded:Connect(function(plr)
    local leaderstats = Instance.new('Folder', plr)
    leaderstats.Name = 'leaderstats'

    local Playtime = Instance.new('IntValue', leaderstats)
    Playtime.Name = 'Playtime'

    if plr.Name == 'happy_speler' then
        AdminModule.GivePoints(plr, 500)
    end
end)
2022-02-13 04:58:46