脚本中的值未更新,尽管它在脚本之外进行更新

问题描述 投票:0回答:1

所以我试图在凌晨 1 点制作一个 Roblox 游戏,因为谁不这样做,我遇到了一个小问题:我有一个变量不会在我的服务器脚本中更新,即使我可以看到它在资源管理器中更新并且领导者统计数据。

我的栽培切换脚本(文本按钮下的本地脚本):

local button = script.Parent
local cultivating = game.Players.LocalPlayer.leaderstats.Cultivating

button.MouseButton1Click:Connect(function()
    if cultivating.Value == false then
        cultivating.Value = true
        button.Text = "Stop Cultivating"
    else
        cultivating.Value = false
        button.Text = "Start Cultivating"
    end
end)

我的leaderstats脚本(serverscriptservice下的服务器脚本):

game.Players.PlayerAdded:Connect(function(player)

    local leaderstats = Instance.new("Folder") 
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local qi = Instance.new("IntValue")
    qi.Name = "Qi"
    qi.Value = 0
    qi.Parent = leaderstats
    
    local cultivating = Instance.new("BoolValue")
    cultivating.Name = "Cultivating"
    cultivating.Value = true
    cultivating.Parent = leaderstats
end)

我的栽培脚本(serverscriptservice下的服务器脚本):

game.Players.PlayerAdded:Connect(function(player)
    local leaderstats = player:WaitForChild("leaderstats")
    local qi = leaderstats:WaitForChild("Qi")
    local cultivating = leaderstats:WaitForChild("Cultivating")

    while true do
        if cultivating.Value == true then
            qi.Value += 1
        end
        wait(0.5)
    end
end)

我知道这可能是一个愚蠢的问题,在你运行“否决”按钮之前,请记住现在是凌晨 2:03,我已经要求 chatgpt 和 claude ai 来帮助我,但他们都失败了。基本上,变量“栽培”是由本地脚本更新的,该脚本可以工作,但不会在栽培脚本内更新。

如果我在修炼的话,我预计它会每0.5秒给我1气。

我尝试使用人工智能来帮助我(浪费时间),尝试使用一堆打印语句进行调试,并得出结论,这确实是脚本内的变量没有更新。我什至尝试在循环内声明变量但没有成功。

lua roblox
1个回答
0
投票

在您的栽培切换脚本中,您是否更改了客户端而不是服务器上的

cultivating
值。这就是为什么您的服务器端栽培脚本不会更新,因为
cultivating
永远不会在服务器上更新,而是在客户端上更新,因此服务器端脚本无法检测到它。

Roblox 使用 客户端-服务器模型,因此要在服务器上进行通信,需要使用

RemoteEvent
告诉服务器用户正在培养,然后使用该信息添加
qi

RemoteEvent 对象促进跨客户端-服务器边界的异步、单向通信,而无需产生响应。这种通信可以从一个客户端定向到服务器,从服务器定向到特定客户端,或从服务器定向到所有客户端。

https://create.roblox.com/docs/reference/engine/classes/RemoteEvent

这种情况下,你可以通过Client→Server远程事件来告诉服务器有用户正在修炼。

您应该在脚本中进行的更改包括:

  • 修改耕种切换脚本,以在玩家开始或停止耕种时向服务器触发远程事件
  • 完全重新制作修炼脚本来处理修炼事件,然后据此计算气
© www.soinside.com 2019 - 2024. All rights reserved.