【问题标题】:IntValue always is equal to 0 even though it isn'tIntValue 始终等于 0,即使它不是
【发布时间】:2021-04-29 19:29:28
【问题描述】:

所以我遇到了一个问题,我试图获取 IntValue 的值,但它总是给我 0,即使值不是 0。没有出现错误,它在服务器脚本中.我不知道是什么问题:

local leaderstats = Instance.new("Folder", plr)
leaderstats.Name = "leaderstats"

local Clicks = Instance.new("IntValue", leaderstats)
Clicks.Name = "Clicks"

local Multiplier = Instance.new("IntValue", leaderstats)
Multiplier.Name = "Multiplier"

-- a bunch of datastore stuff


game.Players.PlayerRemoving:Connect(function(plr)
print("removing")
local approved, errortext = pcall(function()
    print(plr.leaderstats.Clicks.Value, plr.leaderstats.Multiplier.Value)
    datastore:SetAsync(plr.UserId.."-save", {plr.leaderstats.Clicks.Value, plr.leaderstats.Multiplier.Value})
    
end)

if approved then
    
    print("data saved")
    print( plr.leaderstats.Multiplier.Value, plr.leaderstats.Clicks.Value)
else
    
    print("idiot data wont save")
    
end

end)

它每次只打印 0 作为乘数值。

这是改变乘数值的代码:

local leaderstats = game.Players.LocalPlayer:WaitForChild("leaderstats")
local clicks = leaderstats.Clicks
local folder = script.Parent.multipliers
local multiplier = leaderstats.Multiplier

for i,v in pairs(folder:GetChildren()) do

local cost = v.Cost

v.MouseButton1Click:Connect(function()
    
    print(v)
    
    if multiplier.Value > tonumber(v.Name) then
        
        print("already bbogt")
        
    end
    
    if multiplier.Value + 1 == tonumber(v.Name) then
        
        if cost.Value > clicks.Value then
            
            print("not enough moneys smh my head")
            
        elseif cost.Value <= clicks.Value then
            
            print("rich smh mynhead")
            
            clicks.Value -= cost.Value
            
            multiplier.Value = multiplier.Value + 1
        end
        
        
    elseif multiplier.Value == 0 and v.Name == "2" then
        if 5 > clicks.Value then

            print("not enough moneys smh my head")

        elseif 5 <= clicks.Value then

            print("rich smh mynhead")

            clicks.Value -= 5

            multiplier.Value = 2
            print(clicks.Value)
        end
        
    end
    
end)

end

【问题讨论】:

  • 你在哪里给那个打印 0 的值赋值?我只看到你连接了一些事件处理程序。
  • 抱歉,我会添加该脚本

标签: lua roblox


【解决方案1】:

您如何更改乘数的值?当您从脚本更改乘数的值时,请从资源管理器中手动检查该值是否不为 0。例如,在此代码中,它确实更改了变量的值,但不会更改实际的 Intvalue 的值。

local Player = game.Players.LocalPlayer
local Intvalue = Player.leaderstats.IntValue.value

IntValue = IntValue + 10

基本上这里发生的是游戏获取 IntValue 的值并将其作为变量返回。那么当你改变变量的值时,它确实增加了变量的值,但它并没有改变资源管理器中intvalue的实际值。所以最好这样做:

local Player = game.Players.LocalPlayer
local IntValue = Players.leaderstats.IntValue

IntValue.value = IntValue.value + 10

基本上,这会更改资源管理器中实际 Intvalue 的值,而不是仅更改变量的其他示例。因此,如果您在第一个示例中打印变量“IntValue”,它仍会像第二个示例一样打印 10,但这会打印变量的值而不是实际值。

我的想法是您可能以错误的方式更改它的值,因此它实际上并没有改变它,因此它在输出中显示“0”。但如果在资源管理器中该值实际上不是 0,那么我真的不知道我是否能提供多大帮助。

我也不是很好的解释者,所以如果我没有很好地解释我的观点,那么基本上只需在资源管理器中手动检查乘数的值。并确保您更改的是 Multiplier 的实际值,而不仅仅是脚本中某处的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 2021-07-21
    • 2017-01-18
    • 2012-09-02
    • 2023-01-05
    • 2020-11-25
    相关资源
    最近更新 更多