Roblox Lua:在玩家的领导者统计文件夹中定义值时出现问题(无错误消息)



我的游戏中有一个系统,当玩家踩到检查点时,排行榜上的Stage值将上升,然后该值将被保存到该玩家的userId中。

我希望有一个button将该值重置回0,这是我为它尝试的代码。

local textButton = script.Parent
local Players = game:GetService("Players")
textButton.MouseButton1Up:Connect(function()
local player = game.Players.LocalPlayer
local stage = Players:WaitForChild(player):WaitForChild("leaderstats").Stage
if stage.Value > 1 then
stage.Value = 1
end
end)

我试着调试它将打印命令在不同的地方看到的代码,当我尝试运行打印(stage)它不显示任何东西。

LocalScripts无法在服务器上更改该值。要在单击按钮后更改值,应使用RemoteEvents。这里有一个关于它们的页面:https://create.roblox.com/docs/scripting/networking/remote-events-and-functions要使用RemoteEvent,首先需要将其放在跨服务器和客户机复制的位置。这方面的一个很好的例子是把它放在ReplicatedStorage。之后,您需要设置一个脚本来侦听RemoteEvent.OnServerEvent事件。为此,您需要连接一个函数。正如在脚本中看到的,您已经知道如何做到这一点。我就开门见山了。在服务器上,设置一个监听.OnServerEvent的脚本。接下来,在客户端上编辑脚本以触发客户端,而不是尝试设置该值。回到服务器脚本,并在那里设置该值。该事件还传递Player对象,因此您可以利用它来实际重置该值。LocalScriptinside yourTextButton:

local textButton = script.Parent
local Players = game:GetService("Players")
local RemoteEvent = 'RemoteEvent location'
textButton.MouseButton1Up:Connect(function()
RemoteEvent:FireServer()
end)

服务器Script在任何地方,最好是ServerScriptService:

RemoteEvent.OnServerEvent:Connect(function(player)
local Players = game:GetService("Players")
local stage = Players:WaitForChild(player):WaitForChild("leaderstats").Stage
if stage.Value > 1 then
stage.Value = 1
end
end)

祝你好运!

相关内容

  • 没有找到相关文章

最新更新