Отображение дистанции на дисплеях с помощью скрипта | Гайды по игре Space Engineers

Поділитися
Вставка
  • Опубліковано 1 жов 2024
  • Короткий гайд о том, как выводить дистанцию до объектов на дисплеи с помощью скрипта.
    Текст скрипта в первом комментарии.
    #SpaceEngineers #КосмическиеИнженеры

КОМЕНТАРІ • 25

  • @BosDen
    @BosDen  3 роки тому +12

    //Текст скрипта. Просто скопируйте его 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());
    }
    //конец скрипта

    • @СергейБууу
      @СергейБууу 3 роки тому +1

      ооо...огромное ЧЕЛОВЕЧЕСКОЕ СПАСИБО! годнота! Надо попробовать...

    • @endemistremere7997
      @endemistremere7997 Рік тому +1

      Прекрасный скрипт, есть возможность добавить строчку не со скоростью, а с координатами объекта.
      info_strings.Append("Скорость: " + info.Velocity.ToString("0.000") + "
      ");
      Заменяем Velocity на Position

  • @Moonz142
    @Moonz142 3 роки тому +5

    Жалко что мало подписчиков, канал то не плох, и голос приятный и изложение хорошее

  • @myCorpsy
    @myCorpsy 3 роки тому +2

    Краткость - Мать лаконичности и Сестра таланта! только тихо ))

  • @raenkontrin6906
    @raenkontrin6906 3 роки тому +1

    Класный скриптик, ничего лишнего. Настройка простая, а то я так и не разобрался с Blarg's Fancy Ruler.

  • @ВаняЖиленков-ы9р
    @ВаняЖиленков-ы9р 3 роки тому +1

    Нужная вещь. Спасибо!!!

  • @АнсарГалин-ы5х
    @АнсарГалин-ы5х 3 роки тому +1

    мне всегда было интересно, какой самый тяжёлый предмет, руда или материал в игре?

    • @BosDen
      @BosDen  3 роки тому +2

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

  • @antoniogansales
    @antoniogansales 2 роки тому

    А что делать если у меня нет кнопки chek code? У меня только кнопка OK

  • @alexkrat5562
    @alexkrat5562 3 роки тому +1

    Спасибо за скрипт. Удачи в развитии

  • @dmitriipolosminnikov4113
    @dmitriipolosminnikov4113 3 роки тому

    Крутой скрипт с точки зрения использования.

  • @cast_iron_paper
    @cast_iron_paper 6 місяців тому

    Спасибо , я именно его и искал

  • @LanGeDoks
    @LanGeDoks 2 роки тому

    UpdateFrequency.Update1 - это количество тиков программы между обновлениями.
    К слову программа (то бишь космические инженеры) выполняется 60 раз в секунду. Соответственно Update1 будет означать выполнение скрипта 60 раз в секунду.
    А, допустим, Update100 будет означать выполнение примерно раз в полторы секунды.

    • @BosDen
      @BosDen  2 роки тому

      Спасибо!

  • @elst28
    @elst28 3 роки тому

    Здравствуйте товарищ , можно вопрос ? Как вы увеличили макс скорость до 500м.с , сколько играл всегда было токо 100м.с заранее спасибо

    • @BosDen
      @BosDen  3 роки тому

      Это мод, так и называется: Speedmod over 500

  • @ДенисГеннадьевич-к3е

    огонь, блавгодарю

  • @АлександрПанов-м3ч

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

    • @BosDen
      @BosDen  3 роки тому

      А что не работает?

  • @shinobukoiomi2545
    @shinobukoiomi2545 2 роки тому

    а почему ты его просто сразу в воркшоп не вкинешь ?

    • @BosDen
      @BosDen  2 роки тому

      смысл? вся суть в коде, который в закрепленном комментарии))

  • @AlexGorlitsa
    @AlexGorlitsa 3 роки тому

    А вместо камеры возможно применить турель?

    • @BosDen
      @BosDen  3 роки тому

      Не знаю. Надо будет поэкспериментировать, вдруг что выйдет.

    • @AlexGorlitsa
      @AlexGorlitsa 3 роки тому

      Спасибо