Почему, когда компоненты этого скрипта работают нормально, но не работают, когда они собраны вместе? Может просто проблема со всем вместе - PullRequest
0 голосов
/ 28 мая 2020

Этот сценарий взят из Roblox Studio и находится в Lua. Я пробовал использовать отдельные скрипты, но когда я это делаю, они не работают из-за значения bool. Кажется, что скрипты либо не реагируют на это, либо просто не обновляются правильно. Я прикрепил изображение иерархии из ROBLOX Studio . Я достаточно новичок в Lua, но я знаком с основными концепциями c. Я также хорошо знаю интерфейс 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 ("Values Loaded.")



local function lock()
    print ("LOCK FUNCTION ACTIVATED")
    emergencylight1 = true
    emergencylight2 = true
    emergencylight3 = true
    alarm1:play()
    alarm2:play()
    lockvalue = true
    Notif1 = true
end

local function unlock()
    print ("UNLOCK FUNCTION ACTIVATED")
    emergencylight1 = false
    emergencylight2 = false
    emergencylight3 = false
    alarm1.stop()
    alarm2:stop()
    lockvalue = false
    Notif1 = false
end


Notif2:Connect(function()

unlock()
print ("Unlocked Via Override")

end)




RobBank.ClickDetector.MouseClick:Connect(function(Player)
print ("Functioning")
if Player and Player.Character then
print ("Milestone 2")
        if lockvalue == false then
    print ("After Lock Value")
          if Player.Team == game.Teams.Criminal then
            print ("Team Check")        
            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("Player Is not On Crim team.")
                Billboard.Text = ("You are on the Wrong Team!")
                wait(3)
                Billboard.Text = ("Steal Cash")
          end

        else
            Billboard.Text = ("Already been recently robbed!")
            wait(3)
            Billboard.Text = ("Steal Cash")
        end
    end
end)

1 Ответ

0 голосов
/ 29 мая 2020

В Lua переменная может быть ссылкой на таблицу, которая имеет дочерние элементы (пары ключ / значение):

local myTable = { }
myTable.myKey = true

Однако, если вы ссылаетесь на одного дочернего элемента (по его ключу) затем он оценит и передаст в переменную только результирующее значение ( не ссылка на сам ключ ).

local newVar = myTable.myKey
print(newVar)         -- true
newVar = false
print(newVar)         -- false
print(myTable.myKey)  -- true, because we never changed 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
...