Короткий гайд о том, как выводить дистанцию до объектов на дисплеи с помощью скрипта. Текст скрипта в первом комментарии. #SpaceEngineers #КосмическиеИнженеры
Пікірлер: 25
@BosDen3 жыл бұрын
//Текст скрипта. Просто скопируйте его ctrl-c, ctrl-v прямо в программный блок. //КОНФИГУРАЦИЯ double SCAN_DISTANCE = 1000; //Дальность сканирования камеры-дальномера string Camera_name = "Camera"; //Название камеры-дальномера string Panel_name = "Cockpit [LCD]"; //Название блока (панели или кокпита), куда выводятся данные int display_no = 0; //число от 0 до 5 - номер дисплея, на который будет выводится информация. Для LCD панелей - 0 //---------------------- float PITCH = 0; float YAW = 0; private IMyCameraBlock camera; private MyDetectedEntityInfo info; private StringBuilder info_strings = new StringBuilder(); private IMyTextSurface textSurface; public Program(){ // частота обновления информации: Update1 - раз в секунду, Update10 - раз в 10 сек и т.п. Runtime.UpdateFrequency = UpdateFrequency.Update1; List blocks = new List(); GridTerminalSystem.GetBlocks(blocks); camera = GridTerminalSystem.GetBlockWithName(Camera_name) as IMyCameraBlock; camera.EnableRaycast = true; //если используется панель, а не кокпит, закомментарить 2 строки ниже и раскомментарить 2 строки еще ниже IMyTerminalBlock cockpit = GridTerminalSystem.GetBlockWithName(Panel_name); textSurface = ((IMyTextSurfaceProvider)cockpit).GetSurface(display_no); //IMyTextPanel lcd = GridTerminalSystem.GetBlockWithName(Panel_name) as IMyTextPanel; //textSurface = ((IMyTextSurfaceProvider)lcd).GetSurface(display_no); textSurface.ContentType = VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE; } public void Main(string args){ if (camera.CanScan(SCAN_DISTANCE)) info = camera.Raycast(SCAN_DISTANCE, PITCH, YAW); info_strings.Clear(); if (info.HitPosition.HasValue) { double dist = Vector3D.Distance(camera.GetPosition(), info.HitPosition.Value); info_strings.Append("Дист: " + dist.ToString("0.00")+" "); info_strings.Append("Имя: " + info.Name + " "); info_strings.Append("Тип: " + info.Type + " "); // info_strings.Append("Скорость: " + info.Velocity.ToString("0.000") + " "); info_strings.Append("Принадлежность: " + info.Relationship + " "); info_strings.Append("Диапазон: " + camera.AvailableScanRange.ToString()); } textSurface.WriteText(info_strings.ToString()); } //конец скрипта
@user-nb1kp8qv3k3 жыл бұрын
ооо...огромное ЧЕЛОВЕЧЕСКОЕ СПАСИБО! годнота! Надо попробовать...
@endemistremere7997 Жыл бұрын
Прекрасный скрипт, есть возможность добавить строчку не со скоростью, а с координатами объекта. info_strings.Append("Скорость: " + info.Velocity.ToString("0.000") + " "); Заменяем Velocity на Position
@Moonz1423 жыл бұрын
Жалко что мало подписчиков, канал то не плох, и голос приятный и изложение хорошее
@cast_iron_paper3 ай бұрын
Спасибо , я именно его и искал
@myCorpsy3 жыл бұрын
Краткость - Мать лаконичности и Сестра таланта! только тихо ))
@raenkontrin69063 жыл бұрын
Класный скриптик, ничего лишнего. Настройка простая, а то я так и не разобрался с Blarg's Fancy Ruler.
@user-hp1cx9je8v3 жыл бұрын
Нужная вещь. Спасибо!!!
@alexkrat55623 жыл бұрын
Спасибо за скрипт. Удачи в развитии
@user-xl6zn9od9x Жыл бұрын
огонь, блавгодарю
@dmitriipolosminnikov41133 жыл бұрын
Крутой скрипт с точки зрения использования.
@LanGeDoks2 жыл бұрын
UpdateFrequency.Update1 - это количество тиков программы между обновлениями. К слову программа (то бишь космические инженеры) выполняется 60 раз в секунду. Соответственно Update1 будет означать выполнение скрипта 60 раз в секунду. А, допустим, Update100 будет означать выполнение примерно раз в полторы секунды.
@BosDen2 жыл бұрын
Спасибо!
@user-wt2gm3vg3u3 жыл бұрын
мне всегда было интересно, какой самый тяжёлый предмет, руда или материал в игре?