Кто-нибудь может увидеть, что не так с этим сценарием Roblox? - PullRequest
0 голосов
/ 06 июня 2018

Кто-нибудь может увидеть, что не так с этим сценарием Roblox?

local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then do
     a2.Visible = false
elseif a2.Visible == true then do
     a1.Visible = false
end

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Прежде всего, вы пытаетесь сослаться на CoreGui, который предназначен исключительно для стандартных графических интерфейсов Roblox.Любые пользовательские графические интерфейсы будут в PlayerGui каждого игрока.На это ссылается, делая game.Players.LocalPlayer.PlayerGui.Стоит отметить, что для чего-либо на стороне клиента (например, GUI) вы должны проверить, существуют ли объекты, прежде чем пытаться их использовать.Это делается с помощью функции parent: FindFirstChild (name) или parent: WaitForChild (name).

Во-вторых, вы используете "do-end" -блок внутри вашего условного оператора.Блок "do-end" требует завершения.Вам также не нужен этот блок, поэтому я предлагаю удалить его.Если мы добавим конец к правильному расположению в вашем коде, мы получим это:

if CONDITION then 
  do
    -- stuff

  end -- you're missing this end
elseif CONDITION2 then
  do

  end -- you're also missing this end
end

Из-за пропущенных концов ваш код интерпретируется следующим образом:

if CONDITION then 
  do
  elseif CONDITION2 then
  do
end

Как вывидите, "elseif" появляется внутри блока do внутри первого if, а не как elseif для первого if.Вы не можете иметь выражение «elseif» без if, так что вот какие ошибки.

Ваш код в идеале должен выглядеть так:

local Gui = game.Players.LocalPlayer.PlayerGui:WaitForChild("DBXRGUI")
local a1 = Gui.Opener
local a2 = Gui.Menu
if a1 == true then
   a1.Visible = false
elseif a2.Visible == true then
   a2.Visible = false
end
0 голосов
/ 09 июня 2018

Во-первых, не ставьте «делать» после «потом» (это ваша проблема)

Во-вторых, просто используйте другое, а не elseif, потому что что-то может отличаться.

Это то, чтоэто должно выглядеть так:

local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then
     a2.Visible = false else
     a1.Visible = false
end

Я использую здравый смысл, чтобы сказать, что это, вероятно, то, что вы хотите:

local a1 = game.CoreGui.DBXBRGUI.Menu
local a2 = game.CoreGui.DBXBRGUI.Opener
if a1.Visible == true then
     a1.Visible = true
     a2.Visible = false else
     a1.Visible = false
     a2.Visible = true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...