函数出现问题,其中“结束”部分不起作用

时间:2020-06-09 12:18:39

标签: lua roblox

由于某种原因,我认为错误消息告诉我要么拿走一个括号要么加一个括号,我感到非常困惑。总是告诉我应该有某种东西而不是方括号,或者根据我的更改方式需要一个方括号。 这是代码:

local Ammo = MaxAmmo
local Reloading = false

script.Parent.Equipped:Connect(function(Mouse)
    Mouse.Icon = "rbxassetid://1008161057"
    local function Reload()
        Reloading = true
        Mouse.Icon = "rbxassetid://1008161057"
        wait(2)
        Ammo = MaxAmmo
        Reloading = false
        Mouse.Icon = "rbxassetid://1008161057"
    end
    script.Parent.Activated:Connect(function()
        if Ammo>0 and not Reloading then
            Ammo=Ammo-1
            if Mouse.Target.Parent:FindFirstChild("Humanoid") then
                if Mouse.Target == ("Head") then
                    print('head')
                    Mouse.Target.Parent.Humanoid:TakeDamage(40)
                else do
                    Mouse.Target.Parent.Humanoid:TakeDamage(20)
                    print('body')   
                end
            end
        elseif Reloading == false then
            Reload()
        end
        print(Ammo)
    end)
    --local Input = game:GetService("UserInputService")
    --Input.InputBegan:Connect(function(Key)
        --if Key.Keycode == Enum.KeyCode.r and Reloading == false and Ammo~=MaxAmmo then
            --Reload()
        --end 
    --end)
end)```

2 个答案:

答案 0 :(得分:0)

if Mouse.Target == ("Head") then
  print('head')
  Mouse.Target.Parent.Humanoid:TakeDamage(40)
else do
  Mouse.Target.Parent.Humanoid:TakeDamage(20)
  print('body')   
end

end添加到该do或将其删除。

要解决此类错误,请计算需要结尾和结尾的所有关键字,并查看您是否获得相同的编号。有文本编辑器可以帮助您解决这个问题

答案 1 :(得分:0)

您应该使用IDE,例如ZeroBraneStudio或IntelliJ社区(与EmmyLua一起使用)

第一期:

if Mouse.Target.Parent:FindFirstChild("Humanoid") then
                if Mouse.Target == ("Head") then
                    print('head')
                    Mouse.Target.Parent.Humanoid:TakeDamage(40)
                else do
                    Mouse.Target.Parent.Humanoid:TakeDamage(20)
                    print('body')   
                end
            end

您应该从do中删除else do

第二个问题:

从这里您将获得“意外的”):

            print(Ammo)
        end)

这是因为您缺少if Ammo > 0 and not Reloading then的结尾

生成的代码应如下所示:

local Ammo = MaxAmmo
local Reloading = false

script.Parent.Equipped:Connect(function(Mouse)
    Mouse.Icon = "rbxassetid://1008161057"
    local function Reload()
        Reloading = true
        Mouse.Icon = "rbxassetid://1008161057"
        wait(2)
        Ammo = MaxAmmo
        Reloading = false
        Mouse.Icon = "rbxassetid://1008161057"
    end
    script.Parent.Activated:Connect(function()
        if Ammo > 0 and not Reloading then
            Ammo = Ammo - 1
            if Mouse.Target.Parent:FindFirstChild("Humanoid") then
                if Mouse.Target == ("Head") then
                    print('head')
                    Mouse.Target.Parent.Humanoid:TakeDamage(40)
                else
                    Mouse.Target.Parent.Humanoid:TakeDamage(20)
                    print('body')
                end
            elseif Reloading == false then
                Reload()
            end
            print(Ammo)
        end
    end)
    --local Input = game:GetService("UserInputService")
    --Input.InputBegan:Connect(function(Key)
    --if Key.Keycode == Enum.KeyCode.r and Reloading == false and Ammo~=MaxAmmo then
    --Reload()
    --end
    --end)
end)