Роблокс луа. Пробелы в названии области

#lua #roblox

Вопрос:

Нужно выяснить, разблокировал ли игрок эту область или нет. Все отлично работает с областями, в названии которых нет пробелов, и скрипт отказывается работать с пробелами. Кому не сложно, пожалуйста, помогите. Он должен работать с «Нейтральной зоной» и «Областью будущего».

 local player = game.Players.LocalPlayer
local msg = Instance.new("Message", player.PlayerGui)

if (game.Players.LocalPlayer.AREAS.Neutral Area.Value == true) then
msg.Text = "true"
else
msg.Text = "false"
end
wait (2)
msg:Destroy()
 

Ответ №1:

В именах Lua не может быть пробелов. Таким образом, эта операция индексирования недопустима!

 game.Players.LocalPlayer.AREAS.Neutral Area
 

Обычно вы использовали бы такое имя, как NeutralArea или Neutral_Area .

Правильный способ индексирования поля Neutral Area с именем

 game.Players.LocalPlayer.AREAS["Neutral Area"]
 

t.name является синтаксическим сахаром, для t["name"] которого работает только в том случае, если ключ на самом деле является допустимым именем/идентификатором Lua. Допустимые имена Lua состоят из подчеркивания и буквенно-цифровых символов. Но они могут не начинаться с числа…

Пожалуйста, прочтите руководство Lua. Это очень базовые знания.

Комментарии:

1. И как это объяснить? Ссылка

2. @Всеволод Я не вижу ничего такого, что бы меняло контекст вашего вопроса.

3. Я не говорю, что вы не можете использовать такие названия, как «Нейтральная зона». но если вы это сделаете, вы должны проиндексировать его, используя ["Neutral Area"] , что вы не можете использовать .Neutral Area