更改 leaderstats 的 IntValue 时尝试调用 nil 值

Attempt to call a nil value when changing an IntValue for leaderstats

我正在尝试制作一个管理面板,每次我想用用户名更改值 代码:

leaderstats 脚本;

--// Set up folder

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)

主模块:

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

return module

错误告诉您您试图调用一个不存在的函数。

查看 AdminModule.GivePoints 函数,它似乎需要一个 Player 对象作为 plr 参数,但您传入了一个字符串。字符串库没有 WaitForChild 函数,因此调用 plr:WaitForChild 会引发错误。

解决这个问题的方法是正确地传入一个 Player 对象:

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)