无法在Lua中访问玩家内部的值

我尝试过的代码

game.Workspace.burgerclick.OnServerEvent:Connect(function()
    local playername = game.Workspace.ClickPlayer.Value
    local player = game.Players:FindFirstChild(playername)
    local playaname = player.Name
    local fpval = game.Players[playaname].FP.Value
    fpval = fpval + 1
end)

我正在制作一款游戏,我想要一个按钮来更新名为FP的东西的值,在工作区中我有一个字符串值叫做ClickPlayer,它会更新为点击按钮的玩家。这个已经可以运作了。我创建了一个变量,这个变量是字符串值的值,但是当我把变量放在更新FP值的那一行时,它会说这个变量不是players的有效成员。我不知道该怎么办。

点赞
用户2725326
用户2725326

我认为正确的代码应该像这样:

game.Players[playaname].FP.Value = game.Players[playaname].FP.Value + 1

因为,当你执行:

local fpval = game.Players[playaname].FP.Value
fpval = fpval + 1

你是将 game.Players[playaname].FP.Value 的值复制到 fpval,并增加复制的值(fpval = fpval + 1),而不是 game.Players[playaname].FP 所持有的值。

2020-04-15 08:02:07
用户13072308
用户13072308

最正确和有效的代码应该是

local Players = game:GetService("Players")
local fpval
local plr
workspace.burgerclick.Activated:Connect(function()
    plr = workspace.ClickPlayer.Value
    fpval = Players[plr].FP
    fpval.Value = fpval.Value + 1
end)

TextButtonImageButton的文档中,有一个Activated事件可以用于此,而不是从LocalScript触发服务器,这是您的脚本现在的目的。 然而,如果按钮在PlayerGui中并且您有一个激活LocalScript,则可能想要改用以下代码:

local fpval
workspace.burgerclick.OnServerEvent:Connect(function(plr)
    fpval = plr.FP
    fpval.Value = fpval.Value + 1
end)
2020-05-04 20:07:27