2016-11-29 106 views
-1

大家好我很奇怪,为什么这个代码给我一个错误

它应该采取的所有球员一些现金,然后加1为int值(阶段)更新其费用和改变速度值(SpawnDelay),所以当他点击它再次就知道他是在什么阶段,但出于某种原因,这并不为工作,如果声明显示为不正确,请帮助:如果声明中RobloxLua不工作

local stage = script.Parent.stage.Value 
local text = script.Parent.Text 
script.Parent.MouseButton1Click:connect(function() 
    if stage == 0 then 
    for i, v in pairs(game.Players:GetPlayers()) do 
v.leaderstats.Cash.Value = v.leaderstats.Cash.Value - 100 

workspace.RedTycoon.Factory.SpawnDelay.Value = 15 
text = "Upgrade Speed   (Cost = 200)" 
stage = stage + 1 

    elseif stage == 1 then 

    for i, v in pairs(game.Players:GetPlayers()) do 
v.leaderstats.Cash.Value = v.leaderstats.Cash.Value - 200 

workspace.RedTycoon.Factory.SpawnDelay.Value = 10 
text = "Upgrade Speed   (Cost = 500)" 
stage = stage + 1 
end 
     elseif stage == 2 then 

    for i, v in pairs(game.Players:GetPlayers()) do 
v.leaderstats.Cash.Value = v.leaderstats.Cash.Value - 500 

workspace.RedTycoon.Factory.SpawnDelay.Value = 8 

text = "Upgrade Speed   (Cost = 1000)" 


stage = stage + 1 

end) 

我只是试过这个

local stage = script.Parent.stage.Value 
local text = script.Parent.Text 
local delaytime = workspace.RedTycoon.Factory.SpawnDelay.Value 
text = "Upgrade Speed   (Cost = 100)" 
script.Parent.MouseButton1Click:connect(function() 
if stage == 0 then 

delaytime = 15 
text = "Upgrade Speed   (Cost = 500)" 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 100 
    end 
end 



elseif stage == 1 then 
    delaytime = 10 
text = "Upgrade Speed   (Cost = 1000)" 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 500 
    end 
end 


elseif stage == 2 then 
    delaytime = 10 
    text = "Upgrade Speed   (Cost = 1500)" 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 1000 
    end 
end 


elseif stage == 3 then 
    text = "Upgrade Speed   (Cost = 2000)" 
    delaytime = 8 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 1500 
    end 
end 


elseif stage == 4 then 
    delaytime = 4 
    text = "Upgrade Speed   (Cost = 20000)" 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 2000 
    end 

end 

elseif stage == 5 then 
    delaytime = 2 
    text = "No More Upgrades Avalible" 
stage = stage + 1 
for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
     player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 20000 
    end 

end 

else 
    text = "Just for being annoying here you have 1 less cash:" 

for _, player in ipairs(game.Players:GetPlayers()) do 
    if player:FindFirstChild("leaderstats") then 
      player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 1 
     end 

end 
     wait(4) 
     text = "No More Upgrades Avalible" 


     end 

end) 

没有工作

回答

1

删除所有多余的代码语句后,我们可以看到,代码结构,至少是,失踪的三名end关键字。

script.Parent.MouseButton1Click:connect(function() 
    if stage == 0 then 
     for i, v in pairs(game.Players:GetPlayers()) do 
     -- missing end 
    elseif stage == 1 then 
     for i, v in pairs(game.Players:GetPlayers()) do 

     end 
    elseif stage == 2 then 
     for i, v in pairs(game.Players:GetPlayers()) do 
     -- missing end 
    -- missing 
end)