kOS. Полное руководство на русском языке.

Kerbal Space Program » Гайды

Всем доброго времени суток.


Данный гайд - практически полностью переведенная официальная английская инструкция по kOS. Теперь вы можете ознакомится с ней в полном русском варианте с моими комментариями для самых маленьких.

Руководство полностью переведено, разъяснено и дополнено мною (Finn163), и по сути является дословным переводом английского руководства с некоторыми комментариями. Надеюсь всем вам оно окажется полезным.

Всем приятного изучения замечательного языка kOS.
 
Правка от 20.06.14
 
За последний год язык неплохо оброс, в ближайшее время адаптирую инструкцию к новой версии

Русскоязычная инструкция по моду kOS.


Описание мода kOS

kOS - мод на скриптовый автопилот для Kerbal Space Program. Он позволит вам писать небольшие программы для автоматизации некоторых задач.

Установка.

Как и останльные моды, распаковать zip архив в папку с игрой.


Как использовать?

Добавьте модуль kOS в ангаре на свой корабль, он находится во вкладке "Контроль". После перехода на стартовый стол\взлетную полосу,
кликаем на модуль правой кнопкой мыши и выбираем функцию "Open Terminal". Это предоставит нам доступ к интерфейсу мода kOS, в нем вы как в командной строке, можете начать с ним работу.

Кербоскрипт.

Кербоскрипт - это язык програмирования планеты кербин, звучащий как Английский. Синтаксис языка "показательный"(имеется ввиду, что всё названо своими именами).
Язык достаточно прост, даже для начинающих програмистов, поэтому язык НЕ зависит от регистра и автоматически коректирует некоторые команды.

Типичные команды Кербоскрипта выглядят примерно так:

PRINT "Hello World”. \\ Напечатай "Привет мир"

Выражения.

Кербоскрипт использует систему оценки выражений, которая позволяет выполнять математические операции над переменными.
Некоторые переменные определены Вами. Другие определяется системой.

Базовых типов всего три:

1.Числа.

Вы можете использовать математические операции с числами, например вот так:

SET X TO 4 + 2.5. // сделай Х равным 4+2,5; Заметьте Несмотря на то, что все команды кончаются точками, нецелые числа так же используют точку как разделитель.
PRINT X. // Напечатай Х. Напечатается "6.5"

Система соответствует порядку операций, но в настоящее время реализация несовершенна. Например, умножение всегда будет выполняться до разделения, независимо от "физического" положения операторов. Это будет исправлено в будущих версиях.

2.Строчные данные (Strings). // по сути слова

Строчные данные - это текст, который к примеру надо написать на мониторе. Например:

PRINT "Hello World!”. // Напиши "Привет мир!".
Для объединения строк, вы можете использовать оператор "+". Это так же работает со смесями чисел и строк.

3.Directions(Направления)

Направление(Direction) существуют прежде всего для включения автоматического рулевого управления. Вы можете инициализировать направление с помощью вектора или вращения.

SET Direction TO V(0,1,0). // Установить направление - вектор
SET Direction TO R(0,90,0). // Установить направление поворотом в градусах

Также, вы можете использовать математические операции направлений. Следующий пример использует вращение "UP" (системная переменная, описывающая вектор непосредственно от небесного тела во влиянии которого вы находитесь).

SET Direction TO UP + R(0,-45,0). // Установить направление на 45 градусов западней от "UP" (верха).

Справочник по командам

- Математические функции.


- Полет.


- Файлы ввода/вывода (имеется ввиду работа с файлами в которых вы пишите программу из самой игры)



- Управление потоком (имеется ввиду поток информации поступающей в консоль от программы во время её работы)


- Команды вывода и т.п.


Справочник по структурам.

Структуры это элементы, которые могут содержать больше одной единицы информации. Структуры можно использовать с командой SET.. TO как и с обычными переменными. К их под элементам можно получить доступ через имя вложенного элемента.

- Atmosphere // атмосфера


- Body // Тело


- Direction // Направление


- Engine //Двигатель


- GeoCordinates // Геокоординаты


- List // Список


- Node // Узел


- Orbit // Орбита


- Time // Время


- Vector // Вектор


- Vessel // Корабль



Летная статистика.

Вы можете получить полезную статистику во время полета вашего корабля.

ALTITUDE // Абсолютная высота (над грунтом)
ALT:RADAR // Радарная высота (Та же что на счетчике сверху)
BODY // Текущее тело у которого ты под влиянием.
MISSIONTIME // Текущее время миссии.
VELOCITY // Текущая ОРБИТАЛЬНАЯ скорость
VERTICALSPEED // Вертикальная скорость
SURFACESPEED // Горизонтальная скорость
STATUS // Статус (посажен, разбился, летишь на орбите и т.п.): LANDED, SPLASHED, PRELAUNCH, FLYING, SUB_ORBITAL, ORBITING, ESCAPING, or DOCKED
INLIGHT // Возвращает единицу если никакие небесные тела не блокирует свет Кербола.(выдает 1 если ты не в тени).
INCOMMRANGE // Не понял точно, но скорее всего возвращает расстояние необходимое для вхождения в зону влияния
COMMRANGE // Непонятно
MASS // Масса
MAXTHRUST // Максимальная тяга всех активных двигателей
VESSELNAME // Название аппарата


Вектора

Это возвращает векторные значения. Может быть использовано с командой LOCK для осуществления управления аппаратом.

PROGRADE
RETROGRADE
UP // Направление от текущего небесного тела (как я понимаю есть и Down и Forward и т.д.)


Геометрические значения орбиты.

Возвращает необходимые значения

APOAPSIS // Высота апогея
ALT:APOAPSIS // Так же высота апогея
PERIAPSIS // Высота перегея
ALT:PERIAPSIS // Так же высота перегея
ETA:APOAPSIS // Время до апогея
ETA:PERIAPSIS // Время до перегея.


Маневровые узлы

NODE // Направление следующего маневрового узла(нода), может быть использовано для команды LOCK STEERING (Закрепление ориентации)
ETA:NODE // Время до следующего нода.
ENCOUNTER // Возвращает небесное тело которое встретишь.
NEXTNODE // Следующий нод.


Ресурсы

Типы ресурсов

LIQUIDFUEL
OXIDIZER
ELECTRICCHARGE
MONOPROPELLANT
INTAKEAIR
SOLIDFUEL //В принципе можно задать цикл, который пишет в консоль каждую секунду и указать например любой из этих ресурсов.


Конкретные значения ступеней

STAGE:LIQUIDFUEL // Жидкое топливо в данной ступени.
STAGE:OXIDIZER

Глобальные значения

PRINT . // Пишет всё жидкое топливо во всех баках. УСТАРЕЛО
PRINT SHIP:LIQUIDFUEL. // Пишет всё жидкое топливо во всех баках..
PRINT VESSEL("kerbRoller2"):LIQUIDFUEL. // Пишет всё жидкое топливо во всех баках аппарата с именем "kerbroller2".
PRINT TARGET:LIQUIDFUEL. // Пишет всё жидкое топливо во всех баках цели.


Контроль полёта

Эти значения могут быть использованы с командами SET, TOGGLED, или LOCKED. Некоторые значения, такие как THROTTLE(Дроссель) и STEERING(Управление ориентацией), явно требуют использования команды LOCK(закрепить).

Контроль с использованием команд ON и OFF


SAS // Для этих пяти, используй ON и OFF, например: SAS ON. RCS OFF.
GEAR
RCS
LIGHTS
BRAKES
LEGS
CHUTES // Не могут быть не развернуты(?)
PANELS


Элементы управления использующие команду TOGGLE

ABORT
AGX // Х - номер Экшен группы(может быть от 1 до 10). Используй toggle, например: TOGGLE AG1.(Переключить Экшн группу №1)


Контроль который должен использвать команду LOCK

THROTTLE // Закрепляй(LOCK) значение от 0 до 1(если надо половину то пиши так(LOCK THROTTLE TO 0.5.)).
STEERING // Закрепление направление.
WHEELTHROTTLE // Отдельные дроссельные заслонки для колес
WHEELSTEERING // Отдельная управляющая система для колёс


Система кОС

Возвращает значения версий
Изучаем kOS - Условия Мат.Логика и AG [Гайд по kOS часть 3]
Изучаем kOS - Условия Мат.Логика и AG [Гайд по kOS часть 3]
20 дек 2015 в 15:03, Гайды
Введения в kOS [Гайд по kOS часть 1]
Введения в kOS [Гайд по kOS часть 1]
15 дек 2015 в 16:58, Гайды
  1. Royalflesh

    Royalflesh @Василий 13 июня 2014 13:38

    Вообще ничего не понял.

  2. supertunec

    supertunec 17 июня 2014 18:27

    Цитата: Apps401
    А куда кидать файлы с программами?


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

    [WIN] Не понял как запускать, ибо набор сырцов не очень располагает без компилятора-то! :(
    SATURN IDE

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

    Исходники 0.12.2 говорят:
    private string _archiveFolder = GameDatabase.Instance.PluginDataFolder + "/Plugins/PluginData/Archive/";

    т.е. папка архива находится тут:
    <Папка с игрой>\Plugins\PluginData\Archive\

  3. The_Lord_Weider

    The_Lord_Weider Гость 24 июня 2014 14:53

    Доброго времени суток. Обращаюсь к вам с проблемой, а именно запуском консоли. После нажатия кнопки вызова консоли вылетает такая ошибка:
    В каталоге gfx 4 png файла.

    Цитата: The_Lord_Weider

    Заработало. Проблема была вызвана кирилицей в пути к игре.

  4. KTatsu

    KTatsu @Геннадий 26 июня 2014 04:16

    ALTITUDE // Абсолютная высота (над грунтом)
    ALT:RADAR // Радарная высота (Та же что на счетчике сверху)

    Наоборот, altitude та, что на высотомере сверху, т.е. над уровнем моря. А alt:radar - расстояние от КА до поверхности.

    Ресурсы

    Типы ресурсов

    LIQUIDFUEL
    OXIDIZER
    ...

    По отдельности не работают, работают в связке: ship:liquidfuel. для получения топлива своего корабля.

    lock direction не работает, наверно чисто информативная штука.
    lock steering работает через задницу: если указать r(0,0,180), повернется не точно в небо, а с каким-то смещением...
    Пришлось писать так: lock steering to up+r(0,0,180). чтобы заблочить на запуске и lock steering to up+r(0,-90,180). чтобы повернуться на восток.

    Что касается потоков, можно сделать исполняемый файл и второстепенные. В исполняемом задать переменную, и осуществить цикл, пока переменная не изменится:


    Да, кстати, переменные объявляются в общей памяти и могут быть использованы как главной, так и второстепенными программами, вне зависимости от того, в какой была объявлена переменная.

  5. supertunec

    supertunec 27 июня 2014 17:12

    Ресурсы
    ...
    По отдельности не работают, работают в связке: ship:liquidfuel. для получения топлива своего корабля.

    Я несколько не понял зачем тебе ресурсы всего корабля, не лучше найти ресурсы ступени? stage:liquidfuel и т.п.

    lock direction не работает, наверно чисто информативная штука.

    ты его не устанавливать должен, а считывать, для установки есть lock steering. Не уверен, что разработчик именно этого и хотел, однако факт.

    lock steering работает через задницу: если указать r(0,0,180), повернется не точно в небо, а с каким-то смещением...
    Пришлось писать так: lock steering to up+r(0,0,180). чтобы заблочить на запуске

    есть такая беда, суть проблемы тоже пытаюсь понять. Кстати, +r(0,0,180) актуально, если ты кокпит/беспилотник не проворачиваешь при постройке, если проворачиваешь, то могут быть сюрпризы.


    Да, кстати, переменные объявляются в общей памяти и могут быть использованы как главной, так и второстепенными программами, вне зависимости от того, в какой была объявлена переменная.

    А вот это прямой путь к процедурам и функциям. Будем ставить опыты.

  6. KTatsu

    KTatsu @Геннадий 29 июня 2014 05:41

    Цитата: supertunec

    lock direction не работает, наверно чисто информативная штука.

    ты его не устанавливать должен, а считывать, для установки есть lock steering. Не уверен, что разработчик именно этого и хотел, однако факт.
    Просто в самом начале гайда такой текст:
    3.Directions(Направления)

    Направление(Direction) существуют прежде всего для включения автоматического рулевого управления. Вы можете инициализировать направление с помощью вектора или вращения.

    SET Direction TO V(0,1,0). // Установить направление - вектор
    SET Direction TO R(0,90,0). // Установить направление поворотом в градусах
    И т.к. set не работает, пытался с lock, что так же не дало видимых результатов :)

    Цитата: supertunec
    Я несколько не понял зачем тебе ресурсы всего корабля

    Использую в крафтах систему перекачки топлива: когда на старте работают 4 двигателя, три из которых отбрасываются с первой ступенью, а четвертый остается с полными баками, т.к. изначально питается от первой ступени.


    Цитата: supertunec
    есть такая беда, суть проблемы тоже пытаюсь понять.

    Вероятно баг. Если прописывать print up. видно, что показатели верха периодически изменяются и не соответствуют ожидаемым.

    Еще непонятки с direction.
    print direction. выдает ошибку, а print ship:direction. всегда выдает R(0,0,0)

    Важно отметить, что body работает со скобками, а вместо atmosphere нужно писать atm:
    print body("duna"):atm:height.

    - List // Список
    Единственная тема где многое не понял и многое перевести не смог, слишком много всего непонятного и я сомневаюсь что нужного.

    List - строковая переменная, типа TStringList.

  7. mark_86

    mark_86 27 декабря 2014 20:46

    (можно запрограммировать формулу Циалковского и считать дельту)

    ЦиОлковского, блджад, ЦиОлковского! Позор вам, огурцы

  8. the_39387337

    the_39387337 22 февраля 2015 00:37

    Направление корабля, вроде, можно так узнать:
    print ship:facing:pitch + " " + ship:facing:yaw + " " + ship:facing:roll.


    Кто-нибудь может подсказать, как повернуть корабль вокруг своей оси? Пробую так, но никакого результата нет.
    lock steering to up + r(0,0,0)
    lock steering to up + r(0,0,10)
    lock steering to up + r(0,0,20)
    lock steering to up + r(0,0,30)
    lock steering to up + r(0,0,40)
    lock steering to up + r(0,0,50)


    И еще есть проблема. После установки в космосе
    lock steering to up + r(0,0,0)

    корабль начинает трясти, причем амплитуда все время увеличивается. Качается больше по Roll.

    Кажется, понял почему тряска. Нужно было начинать не с r(0,0,0), а с r(ship:facing:pitch,ship:facing:yaw,ship:facing:roll). Потом уже, плавно изменяя pitch, yaw и roll, поворачивать.

  9. optimus777

    optimus777 @Альберт 22 февраля 2015 21:00

    Не подскажете, управлять кербами ведь можно? Хочу сделать толпу мечущихся в разные стороны кербов xd

  10. the_39387337

    the_39387337 23 февраля 2015 21:08

    Цитата: optimus777
    Не подскажете, управлять кербами ведь можно? Хочу сделать толпу мечущихся в разные стороны кербов xd

    На них нельзя прицепить модуль.

    Кто-нибудь знает, как узнать высоту поверхности планеты в определенной точке? А то перемещаюсь вслепую и натыкаюсь на горы :(

    Все, разобрался.
    PRINT X:DISTANCE. // Напишет дистанцию от текущего аппарата до Х (На той же высоте что и предпологается)

    Выводит не на той же высоте, а по гипотенузе треугольника. Высоту можно вычислить по теореме Пифагора.

  11. anklav24

    anklav24 @Anklav24 19 августа 2015 19:42

    Может кто нибудь дать пример как назначить на клавишу какой либо механизм. Как не пробую ничего не получается с AG.

  12. Finn

    Finn @Николай 11 декабря 2015 21:46 Автор

    По всем вопросам, пишите лучше в тему на форуме
    http://spacedock.ru/forum/mody/topic-630-page-7.html#post160481

  13. Гость сергей

    Гость сергей Гость 31 октября 2020 09:13

    нету такого пути: Kerbal Space Program\Plugins\PluginData\Archive.

    1. Гость Boris

      Гость Boris Гость 10 января 2021 19:24

      Теперь такой есть путь \Kerbal Space Program\Ships\Script

{login}
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Последние сообщения с форума
  • Автор
    Тема в разделе: В ангаре у Боба
    Просмотров: 7716
    Ответов: 55
  • Автор
    Тема в разделе: Технические вопросы
    Просмотров: 24801
    Ответов: 68
  • Автор
    Тема в разделе: Моды
    Просмотров: 1594
    Ответов: 2
  • Автор
    Тема в разделе: В ангаре у Боба
    Просмотров: 207897
    Ответов: 1484
  • Автор
    Тема в разделе: Игровой процесс
    Просмотров: 1890
    Ответов: 1
    Все сообщения..
    Полный список последних сообщений
    Loading...

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