我正在制作一个按钮来增加“速度”的leaderstat值,然后将该leaderstat值应用到玩家人形机器人的WalkSpeed值上。 (使它们相同)
事情是这样的。我已经完成了那部分。问题是,当玩家死亡和重生时我需要它留下来,另外,我的代码似乎也无法加入游戏。
加入游戏的代码,在ServerScriptService中:
local plrs = game:GetService("Players")
plrs.PlayerAdded:Connect(function(plr)
task.wait(3)
local humanoid = if plr.Character then plr.Character:FindFirstChild("Humanoid") else nil
if humanoid then
print("Found Humanoid")
plr:FindFirstChild("Humanoid").WalkSpeed = plr.leaderstats.Speed.value
end
end)
错误如下:
ServerScriptService.Script:10: attempt to index nil with 'WalkSpeed'
我知道问题是它没有找到leaderstat值,但我不知道如何解决它。另外,我需要一种方法让它在死亡和重生后保留下来。这对我的游戏玩法至关重要。我认为最好的方法是找到玩家/角色何时重生,然后将 Leaderstat 值应用为玩家的 WalkSpeed 值。在加入游戏的第一部分之后,我只是不知道从哪里开始。
当您尝试获取 WalkSpeed 时,您没有正确引用 Humanoid。当您应该使用
plr:FindFirstChild("Humanoid")
或已有的 plr.Character:FindFirstChild("Humanoid")
变量时,您正在使用 humanoid
。目前,您尝试在 Player 中查找 Humanoid,但会导致 attempt to index nil with 'WalkSpeed'
,因为 Humanoid 不在 Player 中,而是在 Player.Character 中,因此无法找到 WalkSpeed 和 Humanoid。
下面我更正了脚本,以在尝试获取玩家的 WalkSpeed 时使用
humanoid
变量。
local plrs = game:GetService("Players")
plrs.PlayerAdded:Connect(function(plr)
task.wait(3)
local humanoid = if plr.Character then plr.Character:FindFirstChild("Humanoid") else nil
if humanoid then
print("Found Humanoid")
humanoid.WalkSpeed = plr.leaderstats.Speed.value
end
end)`