Space engineers как установить скрипты на пиратке

Обновлено: 06.07.2024

Эта публикация удалена, так как она нарушает рекомендации по поведению и контенту в Steam. Её можете видеть только вы. Если вы уверены, что публикацию удалили по ошибке, свяжитесь со службой поддержки Steam.

Этот предмет несовместим с Space Engineers. Пожалуйста, прочитайте справочную статью, почему этот предмет может не работать в Space Engineers.

Этот предмет виден только вам, администраторам и тем, кто будет отмечен как создатель.

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

Владислав Олійник

Скрипт для посадки на планеты.
Аля "Остановить поршень когда посадочное шасси зацепится за астероид"
================================================================
void Main(string argument)
IMyPistonBase LandingPiston = GridTerminalSystem.GetBlockWithName("LandingPistonName") as IMyPistonBase;
IMyLandingGear LandingGear = GridTerminalSystem.GetBlockWithName("LandingGearName") as IMyLandingGear;

if(LandingGear.IsLocked)
LandingPiston.GetActionWithName("ResetVelocity").Apply(LandingPiston);
LandingPiston.GetActionWithName("IncreaseVelocity").Apply(LandingPiston);;
>

КАК заставить это работать:

LandingPistonName и LandingGearName это названия в панели управления (в терминале) поршня и шасси соответственно. Желательно использовать англ.язык и названия без пробелов. К примеру: LandPiston_1; Gear2 и т.п. Я не ручаюсь за работу с кирилицей)
Это все, что вам нужно заменить в скрипте.

Далее таймер: выставляем задержку таймера в 1 секунду (на минимум), ставим в Setup Action запуск отчета таймера и Run программируемого блока.

ОЧЕНЬ ВАЖНО: главное правильно поставить соответствия между программируемым блоком, поршнем и шасси. Ибо может выйти так: "когда шасси1 закреплено остановить поршень2" - сами понимаете такой вариант не катит никаким образом))

p.s. в воркшоп выставлю позже, когда будет готов прототип и видеодемонстрация.

Для работы ЛЮБОГО количества шлюзов требуется ОДИН программируемый блок.

Отображение провреждённых/недостоенных блоков.
Само собой автоматическое :)

Закрытие дверей при падении давления (разгерметизации).
Возможна поблочная настройка, тогда двери где давление выровнялось откроются - закрытым останется только сектор с утечкой.

p.s.
Обращайте внимание - если включить в основную группу ВНЕШНИЕ двери то после стабилизации давления они откроются :D будьте внимательны.

Михаил Сметанкин

Невероятно полезный скрипт, который позволяет с помощью одного нажатия кнопки выбрать положение ротора или поршня. За подробностями смотрите видео по ссылке.

Павел Гусаров

Скрипт предназначен для ведения огня очередями, для этого он попеременно отключает заряженные орудия - здорово повышает огневую мощь и удобство стрельбы. Поддерживает автоматизацию огня. Автор не я.

Ставите необходимое количество оружия, прогблок, таймер и еще какой-нибудь блок, у которого есть опция включить-выключить (обычно это лампа).

Переименовываете все орудия одинаково, к примеру "Пушка", без номеров и всего остального.

Загружаете в прогблок скрипт, меняете значение GUN_NAME на "Пушка". Выставляете задержку стрельбы - значение TIME_STEP, чем больше, тем быстрее стреляет, для некоторых орудий максимальная указана в самом скрипте в комментариях, никогда не ставьте отрицательное значение и ноль. Поставите слишком большое значение TIME_STEP - скрипт будет работать быстрее, чем у орудий задержка между выстрелами, и они будут стрелять как попало. Компилируете и сохраняете.

Таймер переименовываете в "sequencerCycler", лампу переименовываете в "sequencerToggle". На таймере выставляете одно действие - запустить программируемый блок, задержку можно не трогать.

Запускаете прогблок. Включаете блок с именем "sequencerToggle".

Заряжаете орудия жмете на гашетку. Для автоматизации стрельбы просто соберите заскриптованные орудия в группу, и повесьте на горячую клавишу вкл/выкл стрельбы.

Если не все орудия заряжены полностью, то стрелять будет как попало.

При начале стрельбы бывает стреляет сразу из двух орудий.

Имена всех задействованных блоков можно менять в самом скрипте, таким образом можно сделать несколько групп орудий. Если "sequencerToggle" выключен, орудия будут стрелять как обычно - залпом.

Александр Михайлов

Михаил Сметанкин

Михаил Сметанкин

Jin Roh

Никита Селиванов

Адам, не совсем мод - плагин, выводит изображения с камер и турелей на любые LCD

Олег Резанков

Простой скрипт, который на левый дисплей выводит предупреждения о повреждениях, заканчивающемся боезапасе и малом количестве ресурсов. На правый дисплей выводится содержимое всех хранилищ корабля. Центральный дисплей отображает визуальное предупреждение (картинкой).
Имеет возможность небольшой настройки под себя в самом начале скрипта, где необходимо будет прописать свои ЖК панели для работы скрипта. По-умолчанию стоит: ЖК панель слева, ЖК панель справа, ЖК панель центр

Работает на версии 01_171_003 без модов на пиратке.

Побудило написать свой скрипт, так как большинство сложных скриптов у меня не работает. Да и скучно было.

Олег Резанков

Иван,
public void Main(string argument)
<
IMyOxygenTank hTank = GridTerminalSystem.GetBlockWithName("Hydrogen Tank") as IMyOxygenTank;
IMyTextPanel disp = GridTerminalSystem.GetBlockWithName("LCD 1") as IMyTextPanel;
disp.WritePublicText(hTank.GetOxygenLevel().ToString(), false); //заполненность бака
>
выдает значение float от 0 до 1, где 1 - полный бак

Олег Резанков

В программируемом блоке появилась возможность сохранять переменные.
Если заметили, по-умолчанию кроме Main() в редакторе появились две функции public Program() и public void Save().

Конструктор Program() автоматически запускается при первом запуске компьютера. Туда можно запихнуть инициализацию всех переменных и первоначальную настройку оборудования, чтобы не тратить на это время при очередном запуске скрипта.

Функция Save() так же автоматически запускается и сохраняет предоставленное строковое значение. Сохранение происходит не каждый запуск скрипта. Заметил, что сохраняется, когда открываю редактор программируемого блока или сохраняю игру, других триггеров для срабатывания этой функции я не обнаружил.

Если снести программируемый блок, построить другой и вставить туда идентичный код, сохранения не восстанавливаются.

Переменная сохраняется после редактирования скрипта, отключения бортового питания и перезапуска игры (пока не нашел случая, в котором переменная бы не загрузилась).

Пример прикреплен ниже.

Insane Engineer

Может быть и не самый полезный , но прикольный =) Это музыкальный плеер. Проект старый, но оригинальный. Думаю Доп. информации не надо . Ссылка:

Андрей Луцюк

Описание: Скрипт подсчитывает содержимое инвентарей, перемещает позицию, которая не строится в конец очереди сборщика.
Умеет сортировать содержимое по контейнерам и дозаказывать компоненты в ассемблере на основании установленных лимитов.

Настройка:
в поле CustomData вносятся параметры для инициализации скрипта: (любая из строк может быть пустой и будет пропущена)

первая строка - название сборщика из которого берутся лимиты (останавливаем сборщик заказываем компоненты в том количестве,
в каком они всегда должны быть и прописываем название в эту строку)

все последующие строки устанавливают настройки контейнеров, в формате МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
что лежит можно указывать частично, типы указываются со * сначала,
например: *контейнер:Строительный - будет складывать Строительный компонент в контейнеры, заканчивающиеся на «контейнер»
*готовая продукция*:*компон,*боепри - все компоненты и боеприпасы будут перемещены в контейнеры в названии которых встречается «готовая продукция»

При первом запуске скрипта инициализация производится автоматически, далее по команде.

Команды: Скрипт поддерживает команды с параметрами. Команда и параметр разделяются «:»

Доступные команды и параметры:
init:panel,limit,storage,reload
производит переинициализацию скрипта из CustomData программного блока, параметрами можно ограничивать что инициализировать
panel - заново ищет текстовые панелей
limit - ищет сборщик из которого берутся лимиты
storage - перенастройка контейнеров
reload - поиск и запись доступных ассемблеров и блоков в которых будет в дальнейшем происходит поиск

? - Выводит информацию о текущих ассемблерах, лимитам и тестовым панелям, с любым параметром также выведет все обслуживаемые блоки с инвентарями

limit:название ассемблера - добавляет к существующим, лимиты из ассемблера. без параметров - очищает все установленные ранее лимиты

>:МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
устанавливает отбор для сортировки элементов в контейнере. Если перед первым параметром добавить +, будут добавлены доступные элементы иначе заменены

mask:маска поиска блоков
Устанавливает маску которая применяется при поиске обрабатываемых инвентарей, если маска пустая строка обрабатываются все доступные инвентари

reload:bloc,ass
Находит и запоминает все ассемблеры и блоки в которых будет в дальнейшем происходить поиск. Параметрами можно ограничивать что нужно искать. Без параметров ищет все.
Unload:маска
Производит единоразовое перемещение элементов из блоков подходящих под маску в установленные контейнеры. Полезно при разгрузке бурового корабля.

Скрипт находит все блоки ассемблеров и инвентаре, а затем обходит эти списки. Поэтому если необходимо заново найти инвентари или ассемблеры вызовите команду reload. Если необходимо переинициализировать текстовые панели воспользуйтесь командой init. Это поможет при разрушении готовых или достройке новых блоков.

Все настройки скрипт сохраняет и восстанавливает автоматически, при перезагрузке ничего перенастраивать не нужно


Инструкция:
1) Разархивировать куда угодно
2) Запустить программу
3) Если потребуется указать исполняемый файл игры (. \SpaceEngineers\Bin64\SpaceEngineers.exe (Обычно путь к игре находит сама)
4) Поставить галочку Unlock DLC's
5) Нажать Apply and launch или Apply only
6) Готово!
если вы нажали Apply and launch игра запустится автоматически


Space Engineers "Графический мод"

Space Engineers "Пустынный поезд"

Space Engineers "Текстуры с низким разрешением"


Когда будет обновление до фростбайта?



3) Скачиваете cream_api с уже добавленными длс на момент скачивания


4) Копируете скачанный cream_api в Bin64 по пути ". \steamapps\common\SpaceEngineers\Bin64" Готово, наслаждайтесь всеми длс бесплатно


Volchok325 Кнопки нету


Thespace34 Оказывается у меня для хрома стоит расширение, сори, значит вам вручную нужно добавить строки с новыми длс в cream_api просто в самом низу добавляете строки но шаблону Engineers - Название длс. Например Было


 Ведущее сообщество космических песочниц Space Engineers и RIFT - игр о проектировании, строительстве и обслуживании космических структур. Играйте, делитесь творчеством, общайтесь и получайте удовольствие вместе с нами! Сервер: выключен
Публичный сервер: выключен


| Игровые Скрипты

Аватар пользователя Sergant1000


На данный момент мы имеем скрипты: "Авионика". /workshop/3972
Color PFontColor = new Color( 0, 150, 150 );
Color PColor = new Color( 0, 0, 0 );

panel.SetValue("FontColor",PFontColor); - изменяет цвет текста
panel.SetValue("BackgroundColor",PColor); - изменяет цвет фона
panel.SetValue("FontSize",(Single)2); - изменяет размер текста


Анимация: /workshop/3734

// =================================================================================== //
// ================================================================================== //
// ====== Random Gravity Generator Enable
// == This script randomly changes gravity generators on and off.
// == Max one gravity generator is turned on per turn and all others are turned off.
// == There are two optional features:
// == -> Enforce a change or allow it.
// == --- You can either enforce that the gravity generator that
// == --- has been turned on before has to be turned off or you
// == --- dont care and it can be randomly get selected again.
// == -> Automatically loop if the defined timer is present
// == --- If the timer whichs name is defined in "timerName" has been found
// == --- the programm with automatically call it with a random delay.
// == --- The minimum and maximum of that delay can be defined in:
// == ---- delayMin: The minimum ticks until it shall be run again.
// == ---- delayMax: The maximum ticks until it shall be run again.
// == ---- NOTE: One second is roughly 60 ticks,
// == ---- unless the game slows down (simspeed <1.0)
// ================================================================== //
// ================================================================= //

// This is the name of our gravity generators.
// All gravity generators you want to adress need to contain this text.
private static string gravityGeneratorNames = "Gravity Generator";

// Change this if you want to always change the currently active GG. Thus to ensure that the GG changes.
// 0 = dont enforce
// 1 = enforce
private static int forceChange = 1;

// Define the name for your timer block here.
private static string timerName = "Timer - Random Gravity";

// This is the minimum delay in ticks until we see the next change. That only applies if the above timer could be found.
private static int delayMin = 7;
// This is the maximum delay in ticks until we see the next change. That only applies if the above timer could be found.
private static int delayMax = 87;


// This is the timer block we store in case we found one.
private static IMyTerminalBlock timer;

// This value stores the current "step" we are in until we trigger again. This only gets used when we got a present timer block.
private static int delayCurrent = 0;

// Our random number generator that will roll the dice.
private static Random random;

void Main() // Fetch the initial requirements and terminate if it failed.
if (random == null)
random = new Random();
if(random == null)
return;

if (timer == null)
timer = GridTerminalSystem.GetBlockWithName(timerName);
// Run the loop-timer if there is one.
if (timer != null) <
timer.GetActionWithName("TriggerNow").Apply(timer);
delayCurrent--;
if (delayCurrent > 0)
return;
else <
// Ensure that the min delay is equal or smaller than the max delay.
if(delayMin > delayMax) <
int tmp = delayMax;
delayMax = delayMin;
delayMin = delayMax;
>
// Set the next delay time in ticks.
delayCurrent = random.Next(delayMin,delayMax+1);
>
>

// Make a list for all GGs and fill it.
List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
GridTerminalSystem.SearchBlocksOfName(gravityGeneratorNames, blocks, filterGGs);

// Check if we got enough blocks to go through
if(blocks.Count <= 0)
return;

// Roll the dice :D
int roll = random.Next(0,blocks.Count - (forceChange == 0?0:1));

// Go through all GGs and deactivate all but the one that shall be active now.
for(int i = 0; i < blocks.Count; i++) <
IMyFunctionalBlock func = blocks[i] as IMyFunctionalBlock;
// Check if we want to enforce a change and if the current block is enabled.
if(forceChange != 0 && func.Enabled)
++roll;
// Change the current blocks enabled status (Toggle On or Off)
func.RequestEnable((!func.Enabled || forceChange == 0 )&& i == roll);
>
>


// This method filters only the normal gravity generators and spherical gravity generators out.
private static bool filterGGs(IMyTerminalBlock block) <
return (block as IMyGravityGenerator != null) || (block as IMyGravityGeneratorSphere != null);
>

// ================================================================== //
// =====>>>>> Automatic rotor attach script
// This script is intended to restore the good old way of connecting
// rotors by simply moving base and head together, like in the good old days.
// Use this script with two self-trigger-now-repeating timers for best results.
// ============================================================= //

// temporary storage list of all blocks
List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();

Вы здесь

Читайте также: