ติดตั้ง Steam
เข้าสู่ระบบ
|
ภาษา
简体中文 (จีนตัวย่อ)
繁體中文 (จีนตัวเต็ม)
日本語 (ญี่ปุ่น)
한국어 (เกาหลี)
български (บัลแกเรีย)
Čeština (เช็ก)
Dansk (เดนมาร์ก)
Deutsch (เยอรมัน)
English (อังกฤษ)
Español - España (สเปน)
Español - Latinoamérica (สเปน - ลาตินอเมริกา)
Ελληνικά (กรีก)
Français (ฝรั่งเศส)
Italiano (อิตาลี)
Bahasa Indonesia (อินโดนีเซีย)
Magyar (ฮังการี)
Nederlands (ดัตช์)
Norsk (นอร์เวย์)
Polski (โปแลนด์)
Português (โปรตุเกส - โปรตุเกส)
Português - Brasil (โปรตุเกส - บราซิล)
Română (โรมาเนีย)
Русский (รัสเซีย)
Suomi (ฟินแลนด์)
Svenska (สวีเดน)
Türkçe (ตุรกี)
Tiếng Việt (เวียดนาม)
Українська (ยูเครน)
รายงานปัญหาเกี่ยวกับการแปลภาษา
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, которую мы получили с прибавлением единицы, чтобы была разница между нижним и верхним пределом
И на всякий случай "сожмём" поршень
и просто поверить сработал сенсор или нет на то что у него прописано в настройках