GrabDuck

Гайд: Выводим инвентарь контейнера на LCD панель | Space Engineers Space Engineers ...

:

Во-первых, вам понадобится сам контейнер и LCD панель. 
Затем, вам нужен один программный блок. 
Теперь просто скопируйте нижеописанный код, заменив в первых 2х строках имена на имена своего контейнера и панели. Вставьте полученный код в программный блок и запустите. LCD панель должна будет отобразить список вещей, находящихся в контейнере. 

Лучше всего использовать еще и таймер блок вместе с программным блоком, потому что LCD панель отображает список вещей, которые были в контейнере в момент выполнения кода. Если зациклить выполнение кода каждые 5 секунд, то LCD панель каждые 5 секунд будет проверять что есть в контейнере и соответственно обновлять список.

const string PANEL_NAME = "LCD Panel"; 
const string CONTAINER_NAME = "Большой контейнер 3"; 
const int PANEL_LINES = 22; 
int lineOffset = 0; 
void Main() 

List<IMyTerminalBlock> work = new List<IMyTerminalBlock>(); 
GridTerminalSystem.SearchBlocksOfName(PANEL_NAME, work); 
IMyTextPanel panel = (IMyTextPanel)work[0]; 
GridTerminalSystem.SearchBlocksOfName(CONTAINER_NAME, work); 
IMyCargoContainer container = (IMyCargoContainer)work[0]; 

var containerItems = ((IMyInventoryOwner)container).GetInventory(0).GetItems(); 

List<String> list = new List<String>(); 
for(int j = containerItems.Count - 1; j >= 0; j--) 

String txt = decodeItemName(containerItems[j].Content.SubtypeName, containerItems[j].Content.TypeId.ToString()) + " - "; 
String amt = amountFormatter((float)containerItems[j].Amount,containerItems[j].Content.TypeId.ToString());
txt += amt; 
list.Add(txt); 

list.Sort(); 
list.Insert(0,"------------------------------------------------------"); 
list.Insert(0,container.CustomName + "Инвентарь"); 
for (int o=0; o < lineOffset; o++) { 
String shiftedItem = list[0]; 
list.RemoveAt(0); 
list.Add(shiftedItem); 

panel.WritePublicText(String.Join("\n",list.ToArray()), false); 

panel.ShowTextureOnScreen(); 
panel.ShowPublicTextOnScreen(); 
if (list.Count > PANEL_LINES) { 
lineOffset++; 
if (list.Count - lineOffset < PANEL_LINES) { 
lineOffset = 0; 


String amountFormatter(float amt, String typeId) { 
if (typeId.EndsWith("_Ore") || typeId.EndsWith("_Ingot")) { 
if (amt > 1000.0f) { 
return "" + Math.Round((float)amt/1000,2).ToString("###,###,##0.00") + "K"; 
} else { 
return "" + Math.Round((float)amt,2).ToString("###,###,##0.00"); 


return "" + Math.Round((float)amt,0).ToString("###,###,##0"); 

String decodeItemName(String name, String typeId) 

if (name.Equals("Construction")) { return "Строительный Компонент"; } 
if (name.Equals("MetalGrid")) { return "Металлическая решетка"; } 
if (name.Equals("InteriorPlate")) { return "Интерьерная панель"; } 
if (name.Equals("SteelPlate")) { return "Стальная пластина"; } 
if (name.Equals("SmallTube")) { return "Маленькая стальная трубка"; } 
if (name.Equals("LargeTube")) { return "Большая стальная труба"; } 
if (name.Equals("BulletproofGlass")) { return "Бронированное стекло"; } 
if (name.Equals("Reactor")) { return "Компоненты реактора"; } 
if (name.Equals("Thrust")) { return "Компоненты ускорителя"; } 
if (name.Equals("GravityGenerator")) { return "Компонент гравитационного генератора"; } 
if (name.Equals("Medical")) { return "Медицинские компонентв"; } 
if (name.Equals("RadioCommunication")) { return "Комплектующие радио-связи"; } 
if (name.Equals("Detector")) { return "Компоненты детектора"; } 
if (name.Equals("SolarCell")) { return "Солнечная панель"; } 
if (name.Equals("PowerCell")) { return "Аккумулятор"; } 
if (name.Equals("AutomaticRifleItem")) { return "Автоматическая винтовка"; } 
if (name.Equals("AutomaticRocketLauncher")) { return "Ракетница"; } 
if (name.Equals("WelderItem")) { return "Горелка"; } 
if (name.Equals("AngleGrinderItem")) { return "Шлифовальщик"; } 
if (name.Equals("HandDrillItem")) { return "Ручная дрель"; } 
if (typeId.EndsWith("_Ore")) { 
if (name.Equals("Stone")) { 
return name; 

return name + " Ore"; 

if (typeId.EndsWith("_Ingot")) { 
if (name.Equals("Stone")) { 
return "Gravel"; 

if (name.Equals("Magnesium")) { 
return name + " Powder"; 

if (name.Equals("Silicon")) { 
return name + " Wafer"; 

return name + " Ingot"; 

return name; 
}