Space Engineers

Space Engineers

183 ratings
Space Engineers Скрипты и их создание
By Insane Engineer
Всем привет и это мой маленький гайд по созданию скриптов в SE. Думаю всем не секрет, что скрипты в этой игре - это её основа, так как Программируемые Блоки , есть почти везде и не требуют зачасту дополнительных модов, то есть ты можешь зайти на любой сервер и строить автоматическое производство , не используя моды! Это реально круто. Прежде чем начать гайд , тыкну вас в самоучитель по C# , чтобы по 30 раз не обьяснять азы. Ссылка : ( http://nullpro.info/2013/samouchitel-po-c-dlya-nachinayushhix-01-osnovy-yazyka-peremennye-logika-cikly/ ).
Итак, приступим!
-------------------------------------------------------
Шаг 1.
ПО.
Устанавливаем Visual Studio по гайду от Пенни ( https://www.youtube.com/watch?v=1MXJOYQ1xek ).
Или для начала SE Workbench , которая удобна будет для новичков, да бы нет сложной установки ( https://github.com/gilgame/SEWorkbench ).
--------------------------------------------------------
Шаг 2.
Инициализация блоков:
Нам нужно найти ЖК панель с именем LCD , как это сделать - легко!
Обьявляем переменную типа ( IMyTextPanel ) с именем скажем LCD , и присваиваем значение ( GridTerminalSystem.GetBlockWithName("LCD") as IMyTextPanel; )
Получим : IMyTextPanel LCD = GridTerminalSystem.GetBlockWithName("LCD") as IMyTextPanel;
"=" - знак присвоения, а "==" - знак равенства для условия, НЕ ПУТАТЬ! И да смотрите код внимательно , т.к. часто бывает путаница с GetGroupBlockWithName из-за невнимательности ;).
--------------------------------------------------------
Шаг 3.
Классы и их свойства , методы:
Всё это есть на русс. сайте spaceengineers.wiki , а подсказки по названиям классов даёт среда разработки (Студия или вёркбенч) ( http://spaceengineerswiki.com/IMyLargeTurretBase/ru ).
Метод в C# Выглядит так: обьект.метод(аргументы);
Свойство в C# - обьект.свойство; (Свойство можетк как устанавливатся (свойство = переменная) и братся (переменная = свойство)).
------------------------------------------------------
Шаг 4.
Собираем блоки по типу:
ШКОЛЯРСКИЙ МЕТОД с помощью цикла for :
1) Создаём Лист блоков:
List <Тип> имя = new List <Тип>();
Напримере ЖК панелек:
List <IMyTextPanel> LCDs = new List <IMyTextPanel>();
2) Теперь нужно собрать все блоки в лист:
GridTerminalSystem.GetBlocksOfType<Тип>(Имя листа);
Пример:
GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(LCDs);
3) И применяем свойства к каждому блоку:
for (int i = 0; i < LCDs.Count;i++)
{
LCDs - применяем свойства и методы , делаем всякие манипуляции с элементами и тд.
}
Разберём : for (int имя переменной ; переменная сравниваем с массив.Count(Кол-во элементов); выполняем инкремент или декремент )
{
Тело цикла (Работа с элементами массива (в данном случаем блоками))
}
--------------------------------------------------------------------
Шаг 5.
Креативность . Тобишь ваши идеи
---------------------------------------------------------------------
Шаг 6.
Ваши способности , пояснять не надо ,.....
--------------------------------------------------------------------
Шаг 7.
Математика.
Если вы хотите работать с движение , то добро пожаловать в матрицы , вектора , круги Эйлера и тд... Вообщем без знаний математики работать с движением просто не возможно =) (Да бы тут нужны расчёты).
-----------------------------------------------------------------
Шаг 8.
Если вы не ****** от предыдущего шага , и не хотите работать с движением , то описанное выше в таком кол-ве вам не понадобится. Тут только Шаг 1 - 6. вам в помощь.
------------------------------------------------------------------
Шаг 9.
Импровизация: Немножко моих идей для скриптов :
https://www.youtube.com/watch?v=tB7YAiMYndU&t=1s
https://www.youtube.com/watch?v=p-p8DfPHAdQ&t=259s
-----------------------------------------------------------------
Шаг 10. Почаще сидеть на стримах Пении (Resenco Rocketman)
Он часто говорит много умных вещей. ( https://www.youtube.com/channel/UCBC9faYOxS0yBBSS3uOx7LQ ).
----------------------------------------------------------------
Шаг 11. Если вам это помогло , ставьте лайк , будет приятно =).
Вот скрипты для импровизации , и небольшого разбора , да бы там код простой , но неоптимизированный , хотя это "оптимизация" ни на что не влияет:
http://sp.zhabite.com/sharedfiles/filedetails/?id=1190804320
http://sp.zhabite.com/sharedfiles/filedetails/?id=1143911783
--------------------------------------------------------------
Шаг 12.
Применить знания на практике =)
-------------------------------------------------------------
На этом мой весёленький гайд закончен.
   
Award
Favorite
Favorited
Unfavorite
Импровизация
21 Comments
Demiurge 18 Nov, 2023 @ 1:19am 
skyluka Ага, при помощи камеры. При её помощи выполняются все визуальные задачи.
skyluka 11 May, 2023 @ 6:59am 
Добрый день! Можно ли с помощью скрипта заставить реагировать блоки на включение и выключение лампы (или изменение цвета лампы)?
Maus 5 Jun, 2021 @ 2:58am 
Есть вопрос. Как правильно русские тексты выводить, у меня иероглифы выводит. Пилил мод на потребности от другого автора. Цель была сделать все по русски. Уведомления когда хочет есть или пить, стали приходить иероглифы.(
Hangout 6 May, 2021 @ 9:49pm 
Я, вот, не пойму никак, как мне опубликовать свой скрипт в Стиме из редактора игры?
Insane Engineer  [author] 23 Aug, 2020 @ 11:02am 
Observer-k - классика. Этим например сталкер страдает. Он просто вылетает, если переключится между окнами.
Observer-k 23 Aug, 2020 @ 1:47am 
Я вместо Visual Studio использую Monodevelop, так как у меня Ubuntu. И ещё: у кого тоже проблемы с переключением между игрой и редактором в Ubuntu (фокус постоянно переключается обратно в игру, и не возможно скопировать текст программы) можно запустить игру в оконном режиме, и тогда можно спокойно переключаться между окнами и копировать программу без выхода из игры.
Droid Commandos 26 Jul, 2020 @ 3:10am 
За ссылки - плюс
За руководство - минус. При чём жирный.
Если делаешь гайд, то будь добр заморочиться не только с поиском ссылок, но и с внятным объяснением. Инфы не так много, чтобы просто взять и кинуть ссылку, аля "сам разбирайся". А зачем тогда гайд? Все ссылки люди и так могут найти, кому нужно.
В общем, ни о чём твой гайд, но за мазохистскую методичку по сишарпу спасибо :)
mr.os1kar 28 Mar, 2020 @ 1:31pm 
спасибо доходчиво !
Хозяин 10 Jan, 2020 @ 10:49am 
привет, помоги пож, при компиляции ошибка возникает Severity Code Description Project File Line Suppression State
Error CS0012 The type 'Object' is defined in an assembly that is not referenced.You must add a reference to assembly
'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. немогу понять из за чего
А можно линки на ресурсы где можно получить больше инфы о работе с блоками?