2016-07-29 2 views
1

Привет Я пользователь Roblox, и я пытаюсь сценарий переключателя света, который выключает 4 огня, и у меня есть ошибка (находится в названии)Roblox Error: Expected ')' to close '(' в столбце 3), got '='

Используется 2 блока, переключатель Off4 и On4.

Мой код

function OnClicked() 
if (workspace.LivingRoomLight.SpotLight.Enabled == true) and (workspace.LivingRoomLight2.SpotLight.Enabled == true) and (workspace.LivingRoomLight3.SpotLight.Enabled == true) and (workspace.LivingRoomLight4.SpotLight.Enabled == true) then 
    (workspace.LivingRoomLight.SpotLight.Enabled = false) and (workspace.LivingRoomLight2.SpotLight.Enabled == false) and (workspace.LivingRoomLight3.SpotLight.Enabled == false) and (workspace.LivingRoomLight3.SpotLight.Enabled == false) 
    script.Parent.Transparency = 1 
    workspace.Off4.Transparency = 0 
end 
end 
script.Parent.ClickDetector.MouseClick:connect(OnClicked) 

от других сценариев (которые работают) я использую в тех, которые используют только один источник света является

function OnClicked() 
if (workspace.Hallwaylight.SpotLight.Enabled == true) then 
    workspace.Hallwaylight.SpotLight.Enabled = false 
    script.Parent.Transparency = 1 
    workspace.Off.Transparency = 0 
end 
end 
script.Parent.ClickDetector.MouseClick:connect(OnClicked) 

Примечание: Я только с использованием на скриптах, потому что это единственный, который я редактировал для той, у кого ошибка. Ошибка в сценарии на это первый = столбец 3 и, когда я использую «==» вместо «=», то вся строка становится ошибка

+0

Просто поставьте условия в скобках (if()), а не операции. –

ответ

1

Попробуйте это:

if (workspace.LivingRoomLight.SpotLight.Enabled == true) and (workspace.LivingRoomLight2.SpotLight.Enabled == true) and (workspace.LivingRoomLight3.SpotLight.Enabled == true) and (workspace.LivingRoomLight4.SpotLight.Enabled == true) then 
    workspace.LivingRoomLight.SpotLight.Enabled = false 
    workspace.LivingRoomLight2.SpotLight.Enabled = false 
    workspace.LivingRoomLight3.SpotLight.Enabled = false 
    workspace.LivingRoomLight4.SpotLight.Enabled = false 
    ... 

Некоторые указатели:

  • x == y означает «делает x равным y?». Это состояние (истинное или ложное).
  • x = y означает "комплект x до y". Это заявление (команда вашей программы для изменения значения x).
  • and является оператором, который ожидает условий слева и справа.

Ваша программа имеет вид

if (these four values are true) then 
    set each of them to false 
end 

так что вам нужно and и == на первой линии, но они не имеют смысла внутри if - нужно четыре простых операторов с помощью =, там ,


Вы действительно не нужно== хотя. Сравнение булевых значений (например, workspace.LivingRoomLight.SpotLight.Enabled, которые уже true или false) до true немного глупо: вместо if x == true then ... end лучше всего написать if x then ... end.

+0

Работал отлично! Спасибо! – Austinsoevil81

+0

Я рад :) Не могли бы вы согласиться с моим ответом (щелкните по ✓), чтобы ваш вопрос обнаруживался как разрешенный? – Lynn

+0

Если они не понимают 'if', это не моя работа, чтобы учить их о' for'. Было больно писать этот фрагмент кода, но новички тоже заслуживают сосредоточенного опыта Q & A, и вопрос OP был не о 'for'. – Lynn

Смежные вопросы