关于这个脚本的组件,它们单独运行得很好,但拼起来就不起作用,可能存在整体上的问题

这个脚本来自 Roblox Studio,使用的是 Lua 语言。我试过使用单独的脚本,但是它们不起作用,因为 bool 值无法更新。脚本似乎对其没有反应,或者更新不正确。[我附上了 ROBLOX Studio 的层次结构图片] (https://i.stack.imgur.com/LHzSA.jpg)。我对 Lua 还不是很熟悉,但我熟悉基本概念。我也非常了解 Roblox Studio 界面。如果有人能帮忙,那就太感谢了。提前致谢。

local lockvalue = script.Parent.Lockdown.Value
lockvalue = false
local RobBank = script.Parent["Rob Bank"]
local ClickDetector = RobBank:WaitForChild("ClickDetector")
local BillboardCXZ = RobBank:WaitForChild("BillboardGui")
local Billboard = BillboardCXZ:WaitForChild("TextLabel")
local emergencylight1 = script.Parent.Parent.EmergencyLight.Toggle.Value
local emergencylight2 = script.Parent.Parent.EmergencyLight2.Toggle.Value
local emergencylight3 = script.Parent.Parent.EmergencyLight3.Toggle.Value
local alarm1 = script.Parent.Parent.Alarm1.AlarmSound
local alarm2 = script.Parent.ParentAlarm2.AlarmSound
local Notif1 = script.Parent.NotifcationScreen.SurfaceGui.Frame.Visible
local Notif2 = script.Parent.NotifcationScreen.SurfaceGui.Frame.TextButton.MouseButton1Click
print ("已加载值。")

local function lock()
    print ("锁定功能已激活")
    emergencylight1 = true
    emergencylight2 = true
    emergencylight3 = true
    alarm1:play()
    alarm2:play()
    lockvalue = true
    Notif1 = true
end

local function unlock()
    print ("解锁功能已激活")
    emergencylight1 = false
    emergencylight2 = false
    emergencylight3 = false
    alarm1.stop()
    alarm2:stop()
    lockvalue = false
    Notif1 = false
end

Notif2:Connect(function()

unlock()
print ("通过覆盖解锁")

end)

RobBank.ClickDetector.MouseClick:Connect(function(Player)
print ("功能运行中")
if Player and Player.Character then
print ("里程碑2")
        if lockvalue == false then
    print ("锁定值后")
          if Player.Team == game.Teams.Criminal then
            print ("团队检查")
            local clicks = Player:FindFirstChild("leaderstats")["Bounty"]
            clicks.Value = clicks.Value + 500
            local clicks2 = Player:FindFirstChild("leaderstats")["Cash"]
            clicks2.Value = clicks2.Value + 2500
            Billboard.TextColor3 = Color3.new(1,0,0)
            lock()
            wait(60)
            unlock()
            Billboard.TextColor3 = Color3.new(0,1,0)
          else
                print("玩家不在罪犯队伍中")
                Billboard.Text = ("你在错误的队伍!")
                wait(3)
                Billboard.Text = ("偷现金")
          end

        else
            Billboard.Text = ("已经被抢劫过!")
            wait(3)
            Billboard.Text = ("偷现金")
        end
    end
end)
点赞
用户4889587
用户4889587

在 Lua 中,一个变量可以是一个引用了子元素的表:

local myTable = { }
myTable.myKey = true

然而,如果你只是引用了表中的单个子元素(通过它的键),那么它将仅评估并传递结果值到变量中(_而不是键的引用本身_)。

local newVar = myTable.myKey
print(newVar)         -- true
newVar = false
print(newVar)         -- false
print(myTable.myKey)  -- true,因为我们没有改变 myKey

因此,在以下语句中,emergencylight1 可能是值 'true' 或 'false',而不是对属性本身的引用。

local emergencylight1 = script.Parent.Parent.EmergencyLight.Toggle.Value

建议

确保你的变量是一个实际的表引用,然后在赋新值时引用表的子元素(通过它的键)。

local emergencylighttoggle1 = script.Parent.Parent.EmergencyLight.Toggle
local emergencylighttoggle2 = script.Parent.Parent.EmergencyLight2.Toggle
local emergencylighttoggle3 = script.Parent.Parent.EmergencyLight3.Toggle

local function lock()
    emergencylighttoggle1.Value = true
    emergencylighttoggle2.Value = true
    emergencylighttoggle3.Value = true
end

local function unlock()
    emergencylighttoggle1.Value = false
    emergencylighttoggle2.Value = false
    emergencylighttoggle3.Value = false
end
2020-05-29 04:05:20