The Sparks of the Future station uses LCDs as large advertisement posters
The various LCD Panel blocks are a great way to add a human touch to a ship or base by displaying useful images or text. For LCD configuration and usage, see LCD Surface Options.
Use them to…
- display piloting info such as fuel levels or power
- label exits/sections/floors, passage ways, contents of cargo containers
- display warning and informational messages or symbols
- decorate rooms with posters and faction logos
And so on…
Note: Some functional blocks, such as Cockpits, Programmable Blocks, Custom Turret Controllers, and Button Panels, have customizable LCD surfaces built in that work the same way as LCD Panel blocks, which are also discussed in detail under LCD Surface Options.
Placement[]
LCD Panels need to be built on a powered grid to work. Without power, they display an ‘Offline’ text. While powered without having a text, image, or script set up, they display ‘Online’.
LCD Panel blocks come in a variety of sizes from tiny to huge (see list below) and are available for large and small grid sizes. Note that LCD Panel blocks all have connections on their backs, and very few also on a second side.
Usage[]
All LCD Panels and LCD surfaces work with the same principle: They are capable of displaying dynamic scripts, or few inbuilt static images accompanied by editable text. Access the ship’s Control Panel Screen to configure LCD Panels or LCD surfaces; or face the LCD Panel block and press ‘K’.
Then choose the type of content to display:
- No Content (Default)
- Text and Images (static/cycling)
- Scripts (dynamic)
See LCD Surface Options for more details on how to set these up!
Corner LCD with text and image
Types of LCD Panels[]
LCD Panel[]
LCD Panel
A square 1x1x1 Display Panel which fully covers one block from the side where it’s visible. On small grid, it take up 3x3x1 blocks.
Wide LCD Panel[]
Wide LCD Panel
On large grid, the rectangular wide panel has a 2x1x1 block size. On small grid, it takes up a 6x3x1 block size.
Text Panel[]
Text Panel
A Text Panel, despite its name, can also display images. On large grid, it is rectangular and does not fully cover the side of a 1x1x1 block. On small grid it is 1x1x1, the smallest possible LCD block in game.
On large grid, you choose the Text Panel when you need something that has rectangular dimensions that make it look like a wall-mounted TV or computer screen. If you want to display images, this one works best with the built-in posters whose names end in «H» or «V» (for horizontal or vertical rotation). On Small grid, you place these tiny display surfaces so you can see them well while seated in a cockpit or control seat, to create a custom display array of flight and status information around you.
Corner LCDs[]
Corner LCD
Corner LCDs are much smaller display panels that typically hold a few lines of text. They don’t cover the block you place them on and are best suited as signage for doors, passages, or containers. They are less suitable for displaying images, even though it’s possible. If you enable the «Keep aspect ratio» option, the image will take up less than a third of the available space.
The difference between these four LCD Panel variants are orientation and available connection surfaces. The four types of Corner LCDs are:
Name | angle | connections | orientation |
---|---|---|---|
Corner LCD Top | 45 degrees | 2 | top |
Corner LCD Bottom | 45 degrees | 2 | bottom |
Corner LCD Flat Top | 90 degrees | 1 | top |
Corner LCD Flat Bottom | 90 degrees | 1 | bottom |
Sci-Fi LCD Panel (DLC)[]
The Sparks of the Future station uses LCDs as large advertisement posters
These huge Sci-Fi LCD Panels come in sizes of 5×5, 5×3, and 3×3 blocks, and can be built on large grids only. These panels are only available to build if you purchase the «Sparks of the Future» pack DLC.
They work the same as all other LCD Panels, the only difference is that they are very large. In the scenario that comes with the free «Sparks of the Future» update, they are used prominently as advertisement boards on an asteroid station.
Transparent LCD Panel (DLC)[]
This LCD panel can be built on large and small grids. The transparent LCD is basically a 1x1x1 framed window that displays images and text. It is part of the paid «Decorative Blocks Pack #2» DLC.
What is special about them is that if you set the background color to black, this panel becomes a transparent window with a built-in display. In contrast to other LCD Panels it has no solid backside, which makes it ideal to construct transparent cockpit HUDs, or simply as cosmetic decoration.
Three transparent LCDs with scripts used as cockpit HUD (source: w4stedspace)
Tip[]
While configuring an LCD Panel, the GUI covers up the display in-world and you can’t see how the text or images comes out. In the UI Options, you can lower the UI Background opacity to be translucent, so you can watch what you are doing more easily.
Содержание
- Space engineers как настроить дисплей
- Подпишитесь, чтобы загрузить Automatic LCDs 2 Rus
- Space engineers как настроить дисплей
Скрипт на LCD отображение Щита, подробное описание на видео:
https://www.youtube.com/watch?v=wcae2yJKjBQ&featu..
Но опишу его же действия на нашем сервере на своем личном примере.
Строим: LCD, Шит, програмный блок , таймер и подписываемся на этот скрипт (http://steamcommunity.com/sharedfiles/filedetails/?id..)
Далее поэтапно:
1-Переименовываем любой щит след образом: Shield: (двоеточие в конце обязательно)
2-Переименовываем нужные нам LCD след образом: Shield LCD
3-В программный блок вставляем скрипт на который мы подписались выше и жмем выполнить.
По умолчанию скрипт выводит на LCD текстовую информацию. Если мы хотим красивые картинки то в строке 30-ой, где написано
Какая-то-фраза-на-ангельском = 2, заменяем цифру 2 на 3 или 4 или 5. Каждая цифра отвечает за разные рисунки размера щита.
Сохраняем, выходим и жмем выполнить!
4-В таймере, первым действием ставим програмный блок, там выбираем выполнить, появляется какая то пуская хрень, жмем выполнить. Вторым действием ставим этот же таймер и выбираем там действие старт или активацию. Таким образом мы зациклим таймер. Выходим и стартуем сам таймер.
По истечению времени он будет запускать в след порядке, сперва запуск скрипта на блоке и сразу рестартить самого себя же.
5-Настраиваем интервал обновления 5-10 секунд.
АДМИНИСТРАЦИЯ ЗАПРЕЩАЕТ УСТАНАВЛИВАТЬ ИНТЕРВАЛ ОБНОВЛЕНИЯ ТАЙМЕРА МЕНЬШЕ 5 СЕКУНД НА ЛЮБОЙ СКРИПТ.
Скрипт на LCD вывод данных карго/заряда джампа/руды и так далее.
Видео: https://www.youtube.com/watch?v=oopzyQ0t6Dk
Самый простой вариант:
1. Заходим по ссылке и качаем скрипт https://steamcommunity.com/sharedfiles/filedetails/?i..
2. На шип ставим экран, компутер, таймер
3. Экран переименовываем как угодно, главное чтоб в конце было [LCD]
4. В компутере загружаем скрипт
5. В таймере ставим на выполнение компутер + таймер
6. Настраиваем вывод, например нам надо чтоб показывалось кол-во руды в контах и заряд джампа, для этого в свойствах LCD в разделе Public Title пишем то, что должен вывести на экран скрипт (одной строкой):
inventory * +ore; Charge — это безобразие покажет сколько в инвентаре руды и какой заряд джампа, можете поставить между ними пробел, если место позволяет, для этого достаточно дописать между ними одно слово — echo; будет выглядеть так: inventory * +ore; echo; Charge
Также можно указать например кол-во водорода в танках — Tanks * Hydrogen. И многое другое.
Он равномерно распределяет уран/лед/руду между несколькими объектами одного типа, чтоб руками не сортировать. Например, у вас 4 реактора, используя скрипт, вы просто кидаете весь уран в контейнер, и он автоматом раскидает равными частями по реакторам, так же и с остальными ресурсами.
Источник
Подпишитесь, чтобы загрузить
Automatic LCDs 2 Rus
Всё, что вам когда-либо нужно будет знать о вашем корабле и станции, отображается в реальном времени на ЖК-панелях в любых ванильных играх, с модами и на серверах!
v: 2.0178 ( актуально для версии 1.199 ) — Внутриигровой сценарий от MMaster.
Программируемые блоки и внутриигровые сценарии находятся в «Экспериментальном режиме» в игре которые, необходимо включить в настройках игры и в дополнительных настройках мира.
— таймеры теперь не нужны !
— может использоваться на кораблях любого размера!
— никогда не выдаст «Сценарий слишком сложный» в исключении!
— автоматически обновляет максимально возможное количество ЖК-дисплеев!
* Обновлено оружие и боеприпасы в соответствии с текущей версией игры
* Добавлена опция SKIP_CONTENT_TYPE для отключения типа содержимого ЖК-дисплея
* Параметры SlowMode, SKIP_CONTENT_TYPE, SCROLL_LINES и ENABLE_BOOT теперь могут быть установлены в настраиваемых данных программируемого блока
* Добавлены варианты NB (без столбцов), NN (без чисел) и NNB (без столбцов или чисел) Inventory, InvList, Missing и все их варианты (см. Руководство)
* Исправлено падение скрипта при удалении блока с LCD (например, кабины)
* Скрипт теперь корректно использует свойство Text Padding на ЖК-дисплее
* SlowMode — Оптимизация для серверов.
Название говорит за себя, набираем нужную скорость и активируем скрип. Всё просто. Плюс скрипта в том, что он реально экономит топливо . имеется в виду, быстро сгорающий водород.
Полезный скрипт для станций и кораблей находящихся в не атмосферы, его функция так же проста, при выходе не выпускать весь кислород с помещений.
Это скрипт сортировщик, неплохой вариант навести порядок среди нажитого добра )))
И ещё один полезный скрип, его задача, постоянно мониторить солнце и автоматически выставлять ваши солнечные панели в нужном направлении.
Отображает дополнительные сведения о блоках которые, вы хотите построить или заменить,
выводит на экран вес, размер и.т.д имеет настройки.
Источник
Скрипт для посадки на планеты.
Аля «Остановить поршень когда посадочное шасси зацепится за астероид»
================================================================
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. в воркшоп выставлю позже, когда будет готов прототип и видеодемонстрация.
Автоматический шлюз.
Звуковая и световая сигнализация, вывод состояния на LCD панель, автоматическое переключение откачки/накачки воздуха, автоматическое открытие/закрытие/блокировка дверей.
http://steamcommunity.com/sharedfiles/filedetails/?id..
Для работы ЛЮБОГО количества шлюзов требуется ОДИН программируемый блок.
Отображение провреждённых/недостоенных блоков.
Само собой автоматическое 🙂
Закрытие дверей при падении давления (разгерметизации).
Возможна поблочная настройка, тогда двери где давление выровнялось откроются — закрытым останется только сектор с утечкой.
p.s.
Обращайте внимание — если включить в основную группу ВНЕШНИЕ двери то после стабилизации давления они откроются 😀 будьте внимательны.
Невероятно полезный скрипт, который позволяет с помощью одного нажатия кнопки выбрать положение ротора или поршня. За подробностями смотрите видео по ссылке.
Скрипт предназначен для ведения огня очередями, для этого он попеременно отключает заряженные орудия — здорово повышает огневую мощь и удобство стрельбы. Поддерживает автоматизацию огня. Автор не я.
Ставите необходимое количество оружия, прогблок, таймер и еще какой-нибудь блок, у которого есть опция включить-выключить (обычно это лампа).
Переименовываете все орудия одинаково, к примеру «Пушка», без номеров и всего остального.
Загружаете в прогблок скрипт, меняете значение GUN_NAME на «Пушка». Выставляете задержку стрельбы — значение TIME_STEP, чем больше, тем быстрее стреляет, для некоторых орудий максимальная указана в самом скрипте в комментариях, никогда не ставьте отрицательное значение и ноль. Поставите слишком большое значение TIME_STEP — скрипт будет работать быстрее, чем у орудий задержка между выстрелами, и они будут стрелять как попало. Компилируете и сохраняете.
Таймер переименовываете в «sequencerCycler», лампу переименовываете в «sequencerToggle». На таймере выставляете одно действие — запустить программируемый блок, задержку можно не трогать.
Запускаете прогблок. Включаете блок с именем «sequencerToggle».
Заряжаете орудия жмете на гашетку. Для автоматизации стрельбы просто соберите заскриптованные орудия в группу, и повесьте на горячую клавишу вкл/выкл стрельбы.
Если не все орудия заряжены полностью, то стрелять будет как попало.
При начале стрельбы бывает стреляет сразу из двух орудий.
Имена всех задействованных блоков можно менять в самом скрипте, таким образом можно сделать несколько групп орудий. Если «sequencerToggle» выключен, орудия будут стрелять как обычно — залпом.
Простой скрипт, который на левый дисплей выводит предупреждения о повреждениях, заканчивающемся боезапасе и малом количестве ресурсов. На правый дисплей выводится содержимое всех хранилищ корабля. Центральный дисплей отображает визуальное предупреждение (картинкой).
Имеет возможность небольшой настройки под себя в самом начале скрипта, где необходимо будет прописать свои ЖК панели для работы скрипта. По-умолчанию стоит: ЖК панель слева, ЖК панель справа, ЖК панель центр
Работает на версии 01_171_003 без модов на пиратке.
Побудило написать свой скрипт, так как большинство сложных скриптов у меня не работает. Да и скучно было.
В программируемом блоке появилась возможность сохранять переменные.
Если заметили, по-умолчанию кроме Main() в редакторе появились две функции public Program() и public void Save().
Конструктор Program() автоматически запускается при первом запуске компьютера. Туда можно запихнуть инициализацию всех переменных и первоначальную настройку оборудования, чтобы не тратить на это время при очередном запуске скрипта.
Функция Save() так же автоматически запускается и сохраняет предоставленное строковое значение. Сохранение происходит не каждый запуск скрипта. Заметил, что сохраняется, когда открываю редактор программируемого блока или сохраняю игру, других триггеров для срабатывания этой функции я не обнаружил.
Если снести программируемый блок, построить другой и вставить туда идентичный код, сохранения не восстанавливаются.
При желании можно воспользоваться строковым методом Split, чтобы запихнуть больше переменных в строку сохранения.
https://msdn.microsoft.com/ru-ru/library/b873y76a(v=vs.110).aspx — подробнее тут.
Переменная сохраняется после редактирования скрипта, отключения бортового питания и перезапуска игры (пока не нашел случая, в котором переменная бы не загрузилась).
Пример прикреплен ниже.
Описание: Скрипт подсчитывает содержимое инвентарей, перемещает позицию, которая не строится в конец очереди сборщика.
Умеет сортировать содержимое по контейнерам и дозаказывать компоненты в ассемблере на основании установленных лимитов.
Настройка:
в поле CustomData вносятся параметры для инициализации скрипта: (любая из строк может быть пустой и будет пропущена)
первая строка — название сборщика из которого берутся лимиты (останавливаем сборщик заказываем компоненты в том количестве,
в каком они всегда должны быть и прописываем название в эту строку)
вторая строка панель или панели, которые отображают содержимое инвентарей (полное название панели или маска поиска
например: ЖК* — найдет все панели которые начинаются на ЖК
!*широкая — все панели которые не оканчиваются на широкая)
все последующие строки устанавливают настройки контейнеров, в формате МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
что лежит можно указывать частично, типы указываются со * сначала,
например: *контейнер:Строительный — будет складывать Строительный компонент в контейнеры, заканчивающиеся на «контейнер»
*готовая продукция*:*компон,*боепри — все компоненты и боеприпасы будут перемещены в контейнеры в названии которых встречается «готовая продукция»
При первом запуске скрипта инициализация производится автоматически, далее по команде.
Команды: Скрипт поддерживает команды с параметрами. Команда и параметр разделяются «:»
Доступные команды и параметры:
init:panel,limit,storage,reload
производит переинициализацию скрипта из CustomData программного блока, параметрами можно ограничивать что инициализировать
panel — заново ищет текстовые панелей
limit — ищет сборщик из которого берутся лимиты
storage — перенастройка контейнеров
reload — поиск и запись доступных ассемблеров и блоков в которых будет в дальнейшем происходит поиск
? — Выводит информацию о текущих ассемблерах, лимитам и тестовым панелям, с любым параметром также выведет все обслуживаемые блоки с инвентарями
limit:название ассемблера — добавляет к существующим, лимиты из ассемблера. без параметров — очищает все установленные ранее лимиты
>:МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
устанавливает отбор для сортировки элементов в контейнере. Если перед первым параметром добавить +, будут добавлены доступные элементы иначе заменены
mask:маска поиска блоков
Устанавливает маску которая применяется при поиске обрабатываемых инвентарей, если маска пустая строка обрабатываются все доступные инвентари
reload:bloc,ass
Находит и запоминает все ассемблеры и блоки в которых будет в дальнейшем происходить поиск. Параметрами можно ограничивать что нужно искать. Без параметров ищет все.
Unload:маска
Производит единоразовое перемещение элементов из блоков подходящих под маску в установленные контейнеры. Полезно при разгрузке бурового корабля.
Скрипт находит все блоки ассемблеров и инвентаре, а затем обходит эти списки. Поэтому если необходимо заново найти инвентари или ассемблеры вызовите команду reload. Если необходимо переинициализировать текстовые панели воспользуйтесь командой init. Это поможет при разрушении готовых или достройке новых блоков.
Все настройки скрипт сохраняет и восстанавливает автоматически, при перезагрузке ничего перенастраивать не нужно
Источник
// Reg Cockpit (Miner)
@0 AutoLCD
Center <Ores Aboard>
echo
InvListXS {T:*} +ore
@1 AutoLCD
Center <Energy Status>
PowerStored {T:Battery}
PowerTime
echo
Tanks {T:*} Hydrogen
Amount {T:Reactor}
@2 AutoLCD
PosXYZ
echo
Center <Distances>
Distance {Cockpit} {GPS:Moon Base Alpha:19386.33:127396.5:—114785.48:#FF75C9F1:}
@3 AutoLCD
Center <Mass and Cargo>
ShipMassBase
ShipMass
echo
CargoAllP {T:*}
// Reg Cockpit (Tug)
[SIMPL — Text Surface Config]
Show on screen 0=false
Show on screen 1=false
Show on screen 2=false
Show on screen 3=true
Show on screen 4=false
Show on screen 5=false
[SIMPL — Display Config — Screen 3]
; Normal axis values: X, Y, or Z
Normal axis=X
Rotation (deg)=0
Autoscale layout=true
Manual layout scale=10
Legend Scale=1
Flip horizontally=true
——
@1 !ISR—main
showHeading=false
showWarnings=true
showConnectionStatus=false
showPowerTime=false
showEmergencyPower=false
showBatteryStats=true
showTankStats=true
showLightStats=true
scrollTextIfNeeded
@2 AutoLCD
ShipMass
echo
PosXYZ {Cockpit}
echo
Dampeners
Working {T:Merge}
echo
Amount {T:Reactor} reactor
@4 !ISR—main
showHeading=false
showWarnings=false
showConnectionStatus=true
showPowerTime=true
showEmergencyPower=true
showBatteryStats=false
showTankStats=false
showLightStats=false
@5 AutoLCD
DamageXNoC {T:*}
// Industrial Cockpit Lg (Tug) (No Reactors, + Hydrogen)
[Artificial Horizon — Text Surface Config]
Show on screen 0=false
Show on screen 1=false
Show on screen 2=true
Show on screen 3=false
Show on screen 4=false
Show on screen 5=false
——
@0 !ISR—main
showHeading=false
showWarnings=true
showConnectionStatus=true
showPowerTime=true
showEmergencyPower=true
showBatteryStats=false
showTankStats=true
showLightStats=true
@1 AutoLCD
Power {T:*}
@3 AutoLCD
Center <Hydrogen Engine Status>
Center Engine 1
DetailsNoN {T:Hydrogen Engine} {Filled}
PowerSummary {T:Hydrogen Engine}
// Industrial Cockpit (Tug)
@0 !ISR—main
showHeading=false
showWarnings=false
showConnectionStatus=false
showPowerTime=true
showEmergencyPower=false
showBatteryStats=true
showTankStats=false
showLightStats=false
@2 AutoLCD
Center <Reactor Status>
Center Reactor 1
PowerUsed {T:Reactor 1}
InvListS {T:Reactor 1} +ingot/uranium:10
Center Reactor 2
PowerUsed {T:Reactor 2}
InvListS {T:Reactor 2} +ingot/uranium:10
@1 !ISR—main
showHeading=false
showWarnings=true
showConnectionStatus=true
showPowerTime=false
showEmergencyPower=true
showBatteryStats=false
showTankStats=true
showLightStats=true
@3 AutoLCD
ShipMass
echo
// Industrial Cockpit (Gunship Gunner)
@0 AutoLCD
echo
PowerTime
echo
PowerStoredP {T:Battery}
InvlistS {T:Small Reactor} +ingot/uranium:3
InvlistS {T:Large Reactor} +ingot/uranium:4
echo
DamageXNoC {T:*}
@1 AutoLCD
echo
InvListX {T:*} +ammo +oxygen
echo
SpeedKmh
Altitude
GravityTotal
StopTime
@2 AutoLCD
echo
Distance {Cockpit Pilot [LCD]} {GPS:Weird Base:—52962.85:28042.48:—13377.26:#FFACF175:}
echo
AmountX * launcher,gatlingturret
@3 AutoLCD
echo
Pos
Distance {Cockpit Pilot [LCD]} {GPS:Weird Base:—52962.85:28042.48:—13377.26:#FFACF175:}
// Fighter Cockpit (Gunship Pilot)
@0 AutoLCD
@1 AutoLCD
InvListX {T:*} +ammo +oxygen
echo
SpeedKmh
Altitude
GravityTotal
StopTime
@2 AutoLCD
Distance {Cockpit Pilot [LCD]} {GPS:Weird Base:—52962.85:28042.48:—13377.26:#FFACF175:}
echo
PowerTime
echo
PowerStoredP {T:Battery}
InvlistS {T:Small Reactor} +ingot/uranium:3
InvlistS {T:Large Reactor} +ingot/uranium:4
@3 AutoLCD
DamageXNoC {T:*} 80
@4 AutoLCD
echo
AmountX * launcher,gatlingturret
// Base/Station 4-LCD status display
echo
DateC
TimeC
echo
Center <POWER>
echo
PowerP {T:*}
echo
Cargo {T:*}
echo
echo
Center <MISSING RESOURCES>
MissingListS {T:*} +ice:20000 +ingot/Magnesium:3000 +ammo/25x184mm:300,200mmmissile:15,50x450mm:75,5.56x45mm:100
echo
echo
Center <FOOD>
InvListS {T:*} +ingot/ArtificialFood:500,WaterFood:500
echo
echo
Center <OXY STATUS>
Tanks {T:*} Oxygen
EnabledCount {T:*} oxyfarm
echo
Center <HYDRO STATUS>
Tanks {T:*} Hydrogen
EnabledCount {T:*} hydrogenengine
echo
echo
Center <INGOTS>
InvListS {T:*} +ingot —ingot/Nutrients,SubFresh,CarrotSeeds,GreyWater,ArtificialFoodWaterFood
echo
echo
Center <DEFENSE>
echo
Center SHIELD STATUS
DetailsNoNX {T:Shield Generator} {Ship Shield}
echo
Center AMMO
InvListXS {T:*} +ammo/25x184mm:300,200mmmissile:15,50x450mm:75,5.56x45mm:100
InvListXS {T:*} +ammo —ammo/25x184mm,200mmmissile,50x450mm,5.56x45mm
echo
Center TURRETS
EnabledCount {T:*} gatlingturret
EnabledCount {T:*} missileturret
EnabledCount {T:*} interiorturret
Large Ship / Station
LCD Panel
ComponentsRequired
Dimensions (W,H,L)1,1,1
Mass222.2 kg
222,200 g
222,200,000 mg
0.222 t
Integrity611
Build time6 s
Max Required Input100 W
1.0e-4 MW
0.1 kW
Power Consumer GroupUtility
Is AirtightNo
PCU Cost50
BrowseLast edit: 2020-04-11
Small Ship
LCD Panel
ComponentsRequired
Dimensions (W,H,L)3,3,1
Mass89.8 kg
89,800 g
89,800,000 mg
0.0898 t
Integrity274
Build time4 s
Max Required Input100 W
1.0e-4 MW
0.1 kW
Power Consumer GroupUtility
Is AirtightNo
PCU Cost50
BrowseLast edit: 2020-04-11
Contents
- 1 Overview
- 2 Usage
- 2.1 Settings
- 2.2 Colour
- 2.3 Textures
- 3 Media
- 4 Tips
- 5 Known Issues
- 6 Related Items
- 7 Programming
- 8 References
- 9 Update History
Overview
The LCD Panel is a thin panel that takes an entire block face and can display a variety of messages and textures that can be displayed constantly or triggered by the Programmable Block, Sensor, Timer Block, or any other block capable of triggering.
Usage
To access the panel settings, hover over it and pressing the ‘K’ key.
Within the settings you can name the screen as with any other block type.
Using LCD to Display Text and Images
To set the screen to display text and/or images select the «No Content» dropdown and choose «Text and Images».
Choosing «Edit Text» allows inputting custom text such as the name of a room to use above doors. The text can then be scaled up to fit the screen dimensions or preferred size by using the «Font Size» slider.
The «Color» sliders allow setting the text colour using RGB slider and «Backgr.» allows setting background fill colours (default black). If using a transparent LCD then the text will be against transparency unless fill colour is added.
«Loaded Textures» has a list of the available default and modded (where applicable) images available for display on the screen. Select the desired image and select «Add to selection». The selected image will then show in the second «Selected textures» panel.
When multiple images are applied they can be set to cycle between with the duration between images being set by the «Image change interval» slider. To remove an image from display select it in the second panel and select «Remove selected».
The «Preserve aspect ratio» checkbox can be used to prevent the image being stretched if it does not fit the screen properly such as when using a wide LCD.
Using LCD to Display Scripts
To set the LCD to display a script, choose «Script» from the dropdown. Choosing Script allows the display of information such as weather, artificial horizon for vehicles, Energy and Hydrogen level etc.
The panel’s title and text can be made public, private, or a combination of both. Textures applied can be selected from a list or custom textures can be selected. Textures can be set to rotate on a timer, changing from one to the next. GPS coordinates shown in the GPS format in the text panel will appear in the GPS and can be activated (=shown on HUD).
Settings
- Public title — Title that will appear on top of the screen. Visible to everyone
- Public text — Text that appears under title. Visible to everyone
- Private title — Text title will appear on top of the screen. Isn’t shown publicly unless changed
- Private text — text that appears under title. Isn’t shown publicly unless changed
- Access type — Who has permission to read & write information on the screen
- Show text on screen — Adjust who can view which text on the screen
- Font size — Changes the size of all the text on the screen
Colour
- Font — Changes the colour of the text on the screen
- Background — Changes the colour behind the text on the screen
Textures
- Loaded textures — Available textures that can be used on the screen (and downloaded from the workshop) will appear here.
- Add to selection — Any textures selected from the above can be added using this button. They will then appear below in «Selected».
- Image change interval — Changes the speed (in seconds) how quickly the textures change.
- Selected textures — Any textures that were added, will be displayed here. The order in which they are placed effects which image is displayed first (top of the list is displayed first).
- Remove selected — any selected image in «Selected» can be removed by pressing this button.
Media
|
|
Tips
- The LCD needs to be powered in order to work, otherwise it’ll display as «Offline»
- If you’re using a programmable block with the LCD, be sure to check that both are under the same Ownership
Known Issues
- Text Panel
- Wide LCD Panel
Programming
The LCD Panel could be accessed with the programmable block as IMyTextPanel
. It could work in ´Texture Mode´ in which the selected textures are shown or the ´Text Mode´ in which the text is shown. The following methods are available:[1]
Method | Description |
---|---|
bool WritePublicText(String value, bool append = false)
|
Writes value to the public text field. If append is true then the value is appended to the end of the current text. |
String GetPublicText()
|
Returns the current content of the public text field. |
bool WritePublicTitle(String value, bool append = false)
|
Sets the public title to value. If append is true then the value is appended to the end of the current title. |
String GetPublicTitle()
|
Returns the current public title. |
void AddImageToSelection(String id)
|
Adds an image/texture to the end of the list of selected textures. If no image/texture with the name id exists the texture ´Offline´ is added instead. |
void AddImagesToSelection(List<String> ids)
|
Adds the images/textures to the end of the list of selected textures. If no image/texture with the name id exists the texture ´Offline´ is added instead. |
void ShowPublicTextOnScreen()
|
Enables the text to be shown. |
void ShowTextureOnScreen()
|
Enables the textures to be shown. |
References
- ↑ http://www.reddit.com/r/spaceengineers/comments/2y8for/call_a_lcd_screen_with_programmable_block/cp77do6
Update History
Содержание
- Space Engineers скрипт Automatic LCDs 2 Rus команда Inventory
- Space Engineers скрипт: команда Inventory
- Аргументы
- Auto LCD rus кокпиты
- Auto LCD rus как использовать с кабинами?
- Заголовок выглядит так:
- Space engineers экран вывести данные
- Space engineers экран вывести данные
Space Engineers скрипт Automatic LCDs 2 Rus команда Inventory
Space Engineers скрипт: команда Inventory
Space Engineers скрипт: команда Inventory отображает сводку инвентаря для определенных типов предметов. Он автоматически добавляет нулевое количество для ванильных игровых предметов. Скрипт автоматически отобразит даже модифицированные предметы, если они есть в инвентаре, но не сообщит об отсутствии модифицированных предметов.
Если вы не хотите отображать отсутствующие элементы (нулевые строки), используйте InventoryX вместо Inventory (хорошо для отображения содержимого контейнера). При этом также будут игнорироваться квоты по умолчанию, поэтому, если вы сами не установите квоту, она будет равна 0, и визуальная панель не будет отображаться.
Если вы не хотите отображать количество руды на дисплее слитков, используйте InventoryS или InventoryXS , если вы также хотите скрыть строки 0 элементов.
У этой команды есть определенные квоты по умолчанию для обычных предметов. Эта квота считается максимальной квотой, что означает, что это максимальное количество предметов. Таким образом, вы можете легко увидеть, просто посмотрев на индикатор выполнения, сколько элементов у вас есть.
Команда также сообщает о модифицированных предметах, найденных в инвентаре, но не показывает их, если у вас их нет.
Вы можете полностью отключить индикатор выполнения, установив квоту на 0.
Вы также можете использовать вариант InventoryNB , чтобы скрыть все прогресс бары.
InventoryNN скрывает все числа.
InventoryNNB (без чисел или полос) скрывает все числа и прогресс бары.
Это также работает с другими вариантами (например, InventoryXNNB ).
Продвинутый: если вы знаете что-то о том, как работают элементы во внутреннем устройстве Space Engineers, вы можете переводить или добавлять модифицированные элементы, чтобы сообщать о них, когда их количество в инвентаре равно нулю.
Аргументы
Без аргументов: отображает все элементы на текущем корабле / станции.
Первый аргумент: фильтрует блоки по имени — дополнительную информацию см. В разделе «Руководство по командам».
Следующие аргументы: указать включенные / исключенные типы элементов и могут переопределить квоты по умолчанию.
Тип товара и спецификация квоты:
Оператор + или — добавляет или удаляет элементы с дисплея.
+ all добавляет все типы элементов для отображения
-ore убирает руды с дисплея
Вам нужно что-то добавить, чтобы оператор работал!
Используйте в спецификации основные типы:
ore (все руды)
ingot (все слитки)
component (все компоненты)
ammo (все ящики с боеприпасами)
tool (все инструменты + ручные пистолеты)
oxygen (кислородные баллоны — в настоящее время только кислородные баллоны)
Или подтипы:
(как руда, так и слитоки)
iron, gold, nickel, platinum, cobalt, magnesium, silicon, silver, uranium
(слитки) scrap лом
(компоненты)
construction, metalgrid, interiorplate, steelplate, girder, smalltube, largetube, motor, display, bpglass, computer, reactor, thruster, gravgen, medical, radio, detector, explosives, solarcell, powercell, superconductor, canvas
(инструмент)
automaticrifleitem, preciseautomaticrifleitem, rapidfireautomaticrifleitem, ultimateautomaticrifleitem welderitem, welder2item, welder3item, welder4item
anglegrinderitem, anglegrinder2item, anglegrinder3item, anglegrinder4item
handdrillitem, handdrill2item, handdrill3item, handdrill4item
(боеприпасы) nato_5p56x45mm, nato_25x184mm, missile200mm
Вы можете использовать модифицированные имена элементов, которые обычно обнаруживаются путем удаления пробелов из того, что отображается на дисплее в сводке по всем элементам.
Так, например: Super_Mega Large Bullet будет super_megalargebullet
Или оба:
ingot/iron (только слитки железа), ingot/uranium (только обработанный уран)
Вы можете комбинировать элементы следующим образом:
+ingot/iron,gold (добавить железо и золотые слитки)
+ingot,component (добавить слитки и компоненты)
+steelplate,construction (стальные листы и элементы конструкции)
Чтобы переопределить квоты прогресс бара:
+ingot:10000
Добавляет все слитки, у всех которых максимальное значение индикатора выполнения равно 10000.
+component:1000 +steelplate:10000,construction:9000
Добавляет все компоненты с квотой 1000
Затем он отменяет стальные листы и компоненты конструкции с разными квотами.
Примеры
Inventory * +all -ore
Inventory Cargo +ingot -scrap
Inventory +ingot:300000
Inventory [STORAGE] +component
Inventory +all -tool -ammo
Inventory +ingot:1000 +component:50
Inventory +oxygen:100
Источник
Auto LCD rus кокпиты
Auto LCD rus как использовать с кабинами?
Auto LCD rus — вы можете использовать этот скрипт на экранах кабины, а также на экранах других блоков. Для этого вам нужно пометить кабину (или другой блок) с помощью LCD_TAG, как вы это делали с ЖК-дисплеями. Поэтому по умолчанию вы добавляете [LCD] к имени кабины, чтобы она была распознана скриптом.
Как только вы это сделаете, первый экран на кабине будет управляться Auto LCD rus и должен отобразить обычное сообщение о том, что вы должны прописать команды для пользовательских данных панели. Если вам нужен только этот экран, вы можете записывать команды в пользовательские данные кабины так же, как и с ЖК-дисплеями.
Чтобы использовать другие экраны, вы должны указать сценарию, на какой экран вы хотите выводить информацию. Вот пример того, как могут выглядеть пользовательские данные кабины:
@ 0 AutoLCD
Echo Это будет показано на первом экране
@ 1 AutoLCD
Echo Это будет отображаться на втором экране.
@ 2 AutoLCD
Echo Это будет показано на третьем экране.
Как видите, есть специальные заголовки, сообщающие сценарию, на какой экран вы хотите писать. Они должны быть на отдельной линии.
Заголовок выглядит так:
Где — это индекс экрана, на который вы хотите писать. 0 — это первый экран, 1 — второй экран и т. Д. Тег «AutoLCD» обязателен.
Легкий способ узнать индекс экрана — это посмотреть на панель управления кабины, найти список ЖК-панелей и выбрать одну из них. Например, экран «Клавиатура» занимает 4-е место в списке ЖК-панелей, что означает, что его индекс равен 3 (потому что первый — 0). Итак, если вы хотите писать только на экране клавиатуры, ваши пользовательские данные будут выглядеть следующим образом:
@ 3 AutoLCD
echo Этот текст будет на клавиатуре
Эхо другие экраны не будут изменены
Вы можете использовать это на любом блоке с экранами LCD. Скрипт Auto LCD rus не будет касаться экранов, которые вы не указали, поэтому вы можете использовать его и с другими скриптами. Прочтите «Совместимость с другими скриптами», если хотите узнать, как автоматические ЖК-дисплеи могут обмениваться пользовательскими данными с другими сценариями.
К сожалению, вы не можете использовать ручную прокрутку или связывание панелей на этих экранах.
Как установить LCD_TAG и показать все на экране программируемого блока?
Вам нужно отделить LCD_TAG в пользовательских данных от команд, используя 3 дефиса (—) в одной строке, например:
LCD_TAG = [Мой ЖК-дисплей]
—
@ 0 AutoLCD
echo-текст на экране PB
Источник
Space engineers экран вывести данные
Скрипт на LCD отображение Щита, подробное описание на видео:
https://www.youtube.com/watch?v=wcae2yJKjBQ&featu..
Но опишу его же действия на нашем сервере на своем личном примере.
Строим: LCD, Шит, програмный блок , таймер и подписываемся на этот скрипт (http://steamcommunity.com/sharedfiles/filedetails/?id..)
Далее поэтапно:
1-Переименовываем любой щит след образом: Shield: (двоеточие в конце обязательно)
2-Переименовываем нужные нам LCD след образом: Shield LCD
3-В программный блок вставляем скрипт на который мы подписались выше и жмем выполнить.
По умолчанию скрипт выводит на LCD текстовую информацию. Если мы хотим красивые картинки то в строке 30-ой, где написано
Какая-то-фраза-на-ангельском = 2, заменяем цифру 2 на 3 или 4 или 5. Каждая цифра отвечает за разные рисунки размера щита.
Сохраняем, выходим и жмем выполнить!
4-В таймере, первым действием ставим програмный блок, там выбираем выполнить, появляется какая то пуская хрень, жмем выполнить. Вторым действием ставим этот же таймер и выбираем там действие старт или активацию. Таким образом мы зациклим таймер. Выходим и стартуем сам таймер.
По истечению времени он будет запускать в след порядке, сперва запуск скрипта на блоке и сразу рестартить самого себя же.
5-Настраиваем интервал обновления 5-10 секунд.
АДМИНИСТРАЦИЯ ЗАПРЕЩАЕТ УСТАНАВЛИВАТЬ ИНТЕРВАЛ ОБНОВЛЕНИЯ ТАЙМЕРА МЕНЬШЕ 5 СЕКУНД НА ЛЮБОЙ СКРИПТ.
Скрипт на LCD вывод данных карго/заряда джампа/руды и так далее.
Видео: https://www.youtube.com/watch?v=oopzyQ0t6Dk
Самый простой вариант:
1. Заходим по ссылке и качаем скрипт https://steamcommunity.com/sharedfiles/filedetails/?i..
2. На шип ставим экран, компутер, таймер
3. Экран переименовываем как угодно, главное чтоб в конце было [LCD]
4. В компутере загружаем скрипт
5. В таймере ставим на выполнение компутер + таймер
6. Настраиваем вывод, например нам надо чтоб показывалось кол-во руды в контах и заряд джампа, для этого в свойствах LCD в разделе Public Title пишем то, что должен вывести на экран скрипт (одной строкой):
inventory * +ore; Charge — это безобразие покажет сколько в инвентаре руды и какой заряд джампа, можете поставить между ними пробел, если место позволяет, для этого достаточно дописать между ними одно слово — echo; будет выглядеть так: inventory * +ore; echo; Charge
Также можно указать например кол-во водорода в танках — Tanks * Hydrogen. И многое другое.
Он равномерно распределяет уран/лед/руду между несколькими объектами одного типа, чтоб руками не сортировать. Например, у вас 4 реактора, используя скрипт, вы просто кидаете весь уран в контейнер, и он автоматом раскидает равными частями по реакторам, так же и с остальными ресурсами.
Источник
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. в воркшоп выставлю позже, когда будет готов прототип и видеодемонстрация.
Автоматический шлюз.
Звуковая и световая сигнализация, вывод состояния на LCD панель, автоматическое переключение откачки/накачки воздуха, автоматическое открытие/закрытие/блокировка дверей.
http://steamcommunity.com/sharedfiles/filedetails/?id..
Для работы ЛЮБОГО количества шлюзов требуется ОДИН программируемый блок.
Отображение провреждённых/недостоенных блоков.
Само собой автоматическое 🙂
Закрытие дверей при падении давления (разгерметизации).
Возможна поблочная настройка, тогда двери где давление выровнялось откроются — закрытым останется только сектор с утечкой.
p.s.
Обращайте внимание — если включить в основную группу ВНЕШНИЕ двери то после стабилизации давления они откроются 😀 будьте внимательны.
Невероятно полезный скрипт, который позволяет с помощью одного нажатия кнопки выбрать положение ротора или поршня. За подробностями смотрите видео по ссылке.
Скрипт предназначен для ведения огня очередями, для этого он попеременно отключает заряженные орудия — здорово повышает огневую мощь и удобство стрельбы. Поддерживает автоматизацию огня. Автор не я.
Ставите необходимое количество оружия, прогблок, таймер и еще какой-нибудь блок, у которого есть опция включить-выключить (обычно это лампа).
Переименовываете все орудия одинаково, к примеру «Пушка», без номеров и всего остального.
Загружаете в прогблок скрипт, меняете значение GUN_NAME на «Пушка». Выставляете задержку стрельбы — значение TIME_STEP, чем больше, тем быстрее стреляет, для некоторых орудий максимальная указана в самом скрипте в комментариях, никогда не ставьте отрицательное значение и ноль. Поставите слишком большое значение TIME_STEP — скрипт будет работать быстрее, чем у орудий задержка между выстрелами, и они будут стрелять как попало. Компилируете и сохраняете.
Таймер переименовываете в «sequencerCycler», лампу переименовываете в «sequencerToggle». На таймере выставляете одно действие — запустить программируемый блок, задержку можно не трогать.
Запускаете прогблок. Включаете блок с именем «sequencerToggle».
Заряжаете орудия жмете на гашетку. Для автоматизации стрельбы просто соберите заскриптованные орудия в группу, и повесьте на горячую клавишу вкл/выкл стрельбы.
Если не все орудия заряжены полностью, то стрелять будет как попало.
При начале стрельбы бывает стреляет сразу из двух орудий.
Имена всех задействованных блоков можно менять в самом скрипте, таким образом можно сделать несколько групп орудий. Если «sequencerToggle» выключен, орудия будут стрелять как обычно — залпом.
Простой скрипт, который на левый дисплей выводит предупреждения о повреждениях, заканчивающемся боезапасе и малом количестве ресурсов. На правый дисплей выводится содержимое всех хранилищ корабля. Центральный дисплей отображает визуальное предупреждение (картинкой).
Имеет возможность небольшой настройки под себя в самом начале скрипта, где необходимо будет прописать свои ЖК панели для работы скрипта. По-умолчанию стоит: ЖК панель слева, ЖК панель справа, ЖК панель центр
Работает на версии 01_171_003 без модов на пиратке.
Побудило написать свой скрипт, так как большинство сложных скриптов у меня не работает. Да и скучно было.
В программируемом блоке появилась возможность сохранять переменные.
Если заметили, по-умолчанию кроме Main() в редакторе появились две функции public Program() и public void Save().
Конструктор Program() автоматически запускается при первом запуске компьютера. Туда можно запихнуть инициализацию всех переменных и первоначальную настройку оборудования, чтобы не тратить на это время при очередном запуске скрипта.
Функция Save() так же автоматически запускается и сохраняет предоставленное строковое значение. Сохранение происходит не каждый запуск скрипта. Заметил, что сохраняется, когда открываю редактор программируемого блока или сохраняю игру, других триггеров для срабатывания этой функции я не обнаружил.
Если снести программируемый блок, построить другой и вставить туда идентичный код, сохранения не восстанавливаются.
При желании можно воспользоваться строковым методом Split, чтобы запихнуть больше переменных в строку сохранения.
https://msdn.microsoft.com/ru-ru/library/b873y76a(v=vs.110).aspx — подробнее тут.
Переменная сохраняется после редактирования скрипта, отключения бортового питания и перезапуска игры (пока не нашел случая, в котором переменная бы не загрузилась).
Пример прикреплен ниже.
Описание: Скрипт подсчитывает содержимое инвентарей, перемещает позицию, которая не строится в конец очереди сборщика.
Умеет сортировать содержимое по контейнерам и дозаказывать компоненты в ассемблере на основании установленных лимитов.
Настройка:
в поле CustomData вносятся параметры для инициализации скрипта: (любая из строк может быть пустой и будет пропущена)
первая строка — название сборщика из которого берутся лимиты (останавливаем сборщик заказываем компоненты в том количестве,
в каком они всегда должны быть и прописываем название в эту строку)
вторая строка панель или панели, которые отображают содержимое инвентарей (полное название панели или маска поиска
например: ЖК* — найдет все панели которые начинаются на ЖК
!*широкая — все панели которые не оканчиваются на широкая)
все последующие строки устанавливают настройки контейнеров, в формате МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
что лежит можно указывать частично, типы указываются со * сначала,
например: *контейнер:Строительный — будет складывать Строительный компонент в контейнеры, заканчивающиеся на «контейнер»
*готовая продукция*:*компон,*боепри — все компоненты и боеприпасы будут перемещены в контейнеры в названии которых встречается «готовая продукция»
При первом запуске скрипта инициализация производится автоматически, далее по команде.
Команды: Скрипт поддерживает команды с параметрами. Команда и параметр разделяются «:»
Доступные команды и параметры:
init:panel,limit,storage,reload
производит переинициализацию скрипта из CustomData программного блока, параметрами можно ограничивать что инициализировать
panel — заново ищет текстовые панелей
limit — ищет сборщик из которого берутся лимиты
storage — перенастройка контейнеров
reload — поиск и запись доступных ассемблеров и блоков в которых будет в дальнейшем происходит поиск
? — Выводит информацию о текущих ассемблерах, лимитам и тестовым панелям, с любым параметром также выведет все обслуживаемые блоки с инвентарями
limit:название ассемблера — добавляет к существующим, лимиты из ассемблера. без параметров — очищает все установленные ранее лимиты
>:МаскаПоискаКонтейнера:ЧтоВНемЛежит,ЧтоВНемЛежит
устанавливает отбор для сортировки элементов в контейнере. Если перед первым параметром добавить +, будут добавлены доступные элементы иначе заменены
mask:маска поиска блоков
Устанавливает маску которая применяется при поиске обрабатываемых инвентарей, если маска пустая строка обрабатываются все доступные инвентари
reload:bloc,ass
Находит и запоминает все ассемблеры и блоки в которых будет в дальнейшем происходить поиск. Параметрами можно ограничивать что нужно искать. Без параметров ищет все.
Unload:маска
Производит единоразовое перемещение элементов из блоков подходящих под маску в установленные контейнеры. Полезно при разгрузке бурового корабля.
Скрипт находит все блоки ассемблеров и инвентаре, а затем обходит эти списки. Поэтому если необходимо заново найти инвентари или ассемблеры вызовите команду reload. Если необходимо переинициализировать текстовые панели воспользуйтесь командой init. Это поможет при разрушении готовых или достройке новых блоков.
Все настройки скрипт сохраняет и восстанавливает автоматически, при перезагрузке ничего перенастраивать не нужно
Источник