kOS - програмируемый автопилот

  1. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    Lynx,
    А где про это написано?
    Вот командой ?Part:MODULES Я получаю список с именами всех модулей.
    В списке есть 2 модуля с одинаковыми именами.
    Но обратится к модулю я могу только по его имени P:GETMODULE.
    Как обратится к модулю например по номеру из списка?
    16 ноября 2016 - 09:44 / #481
  2. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    16 ноября 2016 - 19:34 / #482
  3. Оффлайн

    Jenyaza01

    Хорошие люди

    Сообщений: 363

    Если Part:MODULES возвращает список, то
    Part:MODULES[0] - первый элемент
    Part:MODULES[1] - второй  элемент, и т.д.

    Наверно. работает с любым списком.

    [ SmallTweaks ] [ WaterTanks ] [ 3D Primitives ] [ Kerbin 2.5x (тесты) ] [ KSP Rebalance (в разработке) ]

    16 ноября 2016 - 19:53 / #483
  4. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    [/url][url=/user/Jenyaza01/]Jenyaza01,
    Он возвращает название модуля в виде String (Текста).
    А что бы обратится к модулю нужно что бы возвращал PartModule (модуль).
    Название модулей я и так уже знаю.
    Но Part:GETMODULE(name)[0] - выдаёт ошибку. Ибо там нет списка.
    Lynx,
    Это для обращения к детали Part. К ней я без проблем обращаюсь, а уже в одной Part есть несколько модулей. И к двум модулям с одинаковым именем не могу обратится :(
    17 ноября 2016 - 06:05 / #484
  5. Оффлайн

    Rsa

    Посетители

    Сообщений: 649

    TomAnderson,
    В исходниках есть ещё функция PART:GETMODULEBYINDEX(int). В документации не описана, но упоминается в чейнджлоге v0.15.6, как раз в связи с несколькими одинаковыми модулями в одной детали.
    17 ноября 2016 - 09:19 / #485
  6. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    Rsa,
    О спасибо.
    А int - это что за индекс? И как его получать?
    17 ноября 2016 - 11:52 / #486
  7. Оффлайн

    Rsa

    Посетители

    Сообщений: 649

    TomAnderson,
    int - целое число, индекс модуля в детали.
    Можно попробовать получить список названий модулей через MODULES/ALLMODULES, перебрать его и определить индексы нужных модулей.
    17 ноября 2016 - 14:47 / #487
  8. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    Rsa,
    Какая команда возвращает индекс модуля?
    https://ksp-kos.github.io/KOS/structures/vessels/part.html
    Part:MODULES
    Вот эта команда возвращает имена модулей, но не индексы.
    Сообщение отредактировал TomAnderson 17 ноября 2016 - 15:20
    17 ноября 2016 - 15:20 / #488
  9. Оффлайн

    Rsa

    Посетители

    Сообщений: 649

    TomAnderson,
    Она возвращает список названий. Предполагаю, что позиция в списке и есть индекс модуля (начиная с 0).
    Примерно так:
    SET sciMods TO list().
    SET i TO 0.
    FOR name IN Part:ALLMODULES() {
      IF name = "ModuleScienceExperiment" {
        sciMods:ADD(i).
      }.
      SET i = i 1.
    }
    За точность не ручаюсь пример чисто по доке написан, без проверки.
    Сообщение отредактировал Rsa 17 ноября 2016 - 15:56
    17 ноября 2016 - 15:54 / #489
  10. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    Rsa,
    Работает. int - это номер в списке. :)
    Сообщение отредактировал TomAnderson 18 ноября 2016 - 21:19
    17 ноября 2016 - 17:00 / #490
  11. Оффлайн

    Zaoza

    Посетители

    Сообщений: 1

    у кого нибудь есть примеры скрипта для мода infernal robotics?
    как вообще заставить двигаться детали от мода?
    https://ksp-kos.github.io/KOS/addons/IR.html
    Сообщение отредактировал Zaoza 10 декабря 2016 - 22:46
    10 декабря 2016 - 22:32 / #491
  12. Оффлайн

    denusroots

    Посетители

    Сообщений: 2

    только начал осваивать кос. по карьере надо спутник к дюне отправить, вот тут и пригодился КОС.
    Для начала решил потренироваться на Минимусе.
    От скрипта требуется: дождаться нужной высоты, разворот в ретроград и прожиг до орбиты.
    где затаились ошибки?
    Вариант 1

    Вориант 2

    п.с. Наверно вообще всё не правильно, но сапогами не кидайтесь.)
    Сообщение отредактировал denusroots 22 января 2017 - 16:41
    22 января 2017 - 16:32 / #492
  13. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    denusroots,
    а почему прожиг в ретроград? Может в проград?
    22 января 2017 - 20:18 / #493
  14. Оффлайн

    denusroots

    Посетители

    Сообщений: 2

    Lynx,
    в точку! я уже понял ошибку. До выхода на орбиту я ведь нахожусь в сфере влияния Кербина, следственно и прожиг надо делать в другом направлении.
    22 января 2017 - 20:27 / #494
  15. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    Чтож, подниму старую тему. 
    Сейчас активно разбираюсь в нем и у меня проблема.

    Проблема заключается в том, что ship:sensors:acc != ship:sensors:grav во время свободного падения на высоте 70 км - 100 км возле Кербина.
    На высоте более 100км они равны друг-другу, но при переходе резко появляется разница примерно в 0,6 м/с^2. Величина не постоянна, при понижении высоты слабо увеличивается.

    Кракен?

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 00:01 / #495
  16. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Вроде бы, фича игры. Тупой вопрос: а зачем оно вообще нужно?
    Ускорение свободного падения просто body:mu / body:position:sqrmagnitude.

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 00:06 / #496
  17. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Фича в том, что акселерометр показывает не то же самое, что гравитометр. Но если там пороговое что-то, то я не знаю даже...
    Я путём обратного интегрирования по времени восстанавливал силу сопротивления, чтобы работало на любом корабле.
    Что-то в стиле:

    local t_old to time:seconds.
    local v_old to velocity:orbit.
    wait 0.

    until false {
      set dt to time:seconds - t_old.
      set t_old to time:seconds.

      set dv to velocity:orbit - v_old.
      set v_old to velocity:orbit.

      set gvec to -up:vector*body:mu/body:position:sqrmagnitude.

      set dragvec to mass * (dv/dt - gvec).
      wait 0.
    }

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 00:38 / #497
  18. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    в смысле не то же самое показывает?

    VesselSensors:ACC
    Access:Get only
    Type:Vector
    Accelleration the vessel is undergoing. A combination of both the gravitational pull and the engine thrust.

    Двигателей у меня нет от слова совсем, тогда что еще кроме как гравитации оно должно показывать? Почему же на высоте 110км оно показывает только гравитацию?

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 00:59 / #498
  19. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Забагованный этот акселерометр по самое не балуйся.

    С 2015 года висят незакрытыми:
    https://github.com/KSP-KOS/KOS/issues/1215
    https://github.com/KSP-KOS/KOS/issues/1827

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 01:10 / #499
  20. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    18 июня 2017 - 01:15 / #500

Статистика форума, пользователей онлайн: 0 (за последние 10 минут)

---

Администраторы | Модераторы | Хорошие люди | Посетители | Новичок

Создано тем1919 Всего сообщений158029 Пользователей19239 Новый участникPower88
Последние сообщения с форума
  • Автор
    Тема в разделе: Новости
    Просмотров: 75632
    Ответов: 0
  • Автор
    Тема в разделе: Вопросы по игре
    Просмотров: 1573190
    Ответов: 12701
  • Автор
    Тема в разделе: В ангаре у Боба
    Просмотров: 9604
    Ответов: 55
  • Автор
    Тема в разделе: Технические вопросы
    Просмотров: 25951
    Ответов: 68
  • Автор
    Тема в разделе: Моды
    Просмотров: 2105
    Ответов: 2
    Все сообщения..
    Полный список последних сообщений
    Loading...

    Нашли ошибку?
    Вы можете сообщить об этом администрации.
    Выделив текст нажмите Ctrl+Alt