Instale o Steam
iniciar sessão
|
idioma
简体中文 (Chinês simplificado)
繁體中文 (Chinês tradicional)
日本語 (Japonês)
한국어 (Coreano)
ไทย (Tailandês)
Български (Búlgaro)
Čeština (Tcheco)
Dansk (Dinamarquês)
Deutsch (Alemão)
English (Inglês)
Español-España (Espanhol — Espanha)
Español-Latinoamérica (Espanhol — América Latina)
Ελληνικά (Grego)
Français (Francês)
Italiano (Italiano)
Bahasa Indonesia (Indonésio)
Magyar (Húngaro)
Nederlands (Holandês)
Norsk (Norueguês)
Polski (Polonês)
Português (Portugal)
Română (Romeno)
Русский (Russo)
Suomi (Finlandês)
Svenska (Sueco)
Türkçe (Turco)
Tiếng Việt (Vietnamita)
Українська (Ucraniano)
Relatar um problema com a tradução
http://gtm.steamproxy.vip/sharedfiles/filedetails/?id=360966557&insideModal=1
к сожадению на англ и без примеров.
Суть: Подходишь к прожектору (в зону досягаемости сенсора) - он включается. Отходишь (в зону недосягаемости сенсора) - выключается.
Первое действие получилось - прожектор включается. А вот с выключением не выходит.
Для того чтобы прожектор погас, нужно выйти из зоны действия прожектора и зайти в нее обратно. Причем значение "true" для сенсора совсем не обязательно и сенсор вызывает действие скрипта на прог.блоке без него.
Вот часть кода:
Пробовал написать в таком виде:
Пробовал и в таком:
Т.е. значения true и false в нашем случае не работают? И почему? Или они вообще в игровом коде не задействуются?
Подумал о такой вещи как бездействие сенсора, т.е. код отсутствия действия, или состояние бездействия как еще одно действие. Например: Sensor.NotDetect
Но такого не нашел.
Т.к. я далек от знания языков программирования, дописать выключение прожектора не получается. Есть у кого какие мысли?
Получается при этом условии ты заходишь в поле сенсора, он проверят ты овнер или нет. если ты овнер - срабатывает первое условие, если не овнер - второе. а если ты овнер и не находишься в поле то ничего не срабатывает и он горит всегла, как-то так походу)
В данном примере есть создание новой переменной блока "Поршня"
, где
IMyPistonBase - тип переменной блока;
DoorPiston - имя переменной; (лучше его задавать одноимённым с названием блока в терминале, дабы избежать путаницы)
"DoorPiston" - то, что в скобках после GetBlockWithName(), есть название блока в терминале
as IMyPistonBase - данное выражение говорит о том, что всю строку после знака "=" надо считать как тип данных IMyPistonBase (важно, иначе присвоение значения переменной не произойдёт);
Вот теперь у нас есть переменная DoorPiston, готовая к применению и отвечающая исключительно за нужный блок. Так вот тут далее, когда остальным переменным присваиваются необходимые блоки идёт условие и действие, если данное условие верно
Внутри есть строка действия:
Данный код понимается так: блок DoorPiston, произведи поиск действия в своём списке действий по точному названию "Reverse" (GetActionWithName() - поиск и получения действия из списка действий, доступных блоку по точному названию) и примени его к блоку DoorPiston (Apply() - применить к блоку в скобках действие, которое мы получили).
Данная строка долгая для написания и занимает много символов (а запас символов в программном блоке ограничен), да и получается какая-то нелепость с ненужным поиском действия (ведь мы его знаем...зачем его искать в списке?) поэтому лучше использовать несколько другой способ, реализующий абсолютно точно такое же действие напрямую:
Читается так: блок DoorPiston, произведи действие Reverse.
Дело в том, что действие является некоторым методом для блока (Методы, процедуры и функции в конце имеют круглые скобки со значением или без, но они обязательны). Для любого блока будет верным писать действия в такой формулировке:
Примеры:
Как можно заметить - это проще, быстрее и понятнее.
Оператор else в коде работает и он записывается так:
В различных источниках можно найти все возможные действия и значения для каждого типа блока. Вот весь список типов переменных полей и действий для блока "Поршень"
Разберём поля и работу с ними.
Поля - это некоторая информация о текущем блоке. Например значение поля вы видите, когда настраиваете тот или иной блок (для поршня - это значение верхнего и нижнего пределов работы и скорость движения движущейся части )
Поле - это значение и оно доступно только для чтения, однако если у блока есть соответствующее свойство, то его можно изменить.
Вот пример получения значения поля в переменную
То же самое, только через свойство
И пример задания полю значения с помощью переменной A, которую мы получили с прибавлением единицы, чтобы была разница между нижним и верхним пределом
И на всякий случай "сожмём" поршень
и просто поверить сработал сенсор или нет на то что у него прописано в настройках