Jump to content

KIS, KAS и EasyVesselSwitch по-русски


IgorZ

Recommended Posts

12 hours ago, BrashMack said:

Смотрел видео про KAS(версия игры была ≈ 1.3 или 1.4), там были показаны магниты и портативные распорки ("CS-R2 portable strut" назывались по-моему). Установил мод(вместе с KIS), деталей таких нет, обычные распорки установить так нельзя. Куда это всё делось в новых версиях мода, а главное зачем? Очень уж хотелось распорки эти опробовать.

Если коротко, то этих деталей больше нет, и многих из них уже никогда не будет. Причины и связанные с ними вопросы обсуждались как на форуме (англоязычном), так и на Pateron более года. Краткая версия произошедшего тут (по-английски). Если совсем кратко и по-русски, то CPort был совершенно невозможной деталью с точки зрения физики. Теоретически ее можно было бы повторить и в KAS 1.0 (гибкие возможности настройки деталей делают это теоретически возможным), но такая деталь точно никогда не будет частью мода.

P.S. К моему удивлению, форум не присылал уведомлений по этой ветке форума. Я думал она никому не интересна, а тут вон сколько сообщений (без ответа). Виноват. Кому еще актуальны ответы - повторите вопросы, пожалуйста.

Edited by IgorZ
Link to comment
Share on other sites

  • 3 weeks later...
On 6/29/2018 at 8:30 AM, IgorZ said:

ООО "Крепёж, Арматура и Стяжки" (КАС)

Я, конечно, чуть опоздал... ;)

но в пару лезет

ООО "Карманы, Инвентарь, Снаряжение" (КИС)

А вообще, после пары лет отсутствия этих модов увы не хватает на последней версии.

Надеюсь дождусь. Удачи!

 

Link to comment
Share on other sites

  • 2 months later...
On 2/13/2020 at 12:06 PM, IgorZ said:

К моему удивлению, форум не присылал уведомлений по этой ветке форума. Я думал она никому не интересна, а тут вон сколько сообщений (без ответа).

Скачал архив с GitHub, сравнил. Разница:

MiniAVC.dll <-> MiniAVC.dll.pruned

Также у меня такие файлы есть.

D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils.2.0.dll    135 168    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils.2.2.dll    135 168    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils.2.2.dll    135 168    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils_LICENSE.md    1 572    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils_README.md    2 427    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils_LICENSE.md    1 572    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils_README.md    2 427    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils_LICENSE.md    1 572    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils_README.md    2 427    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils.2.2.xml    493 256    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils.2.2.xml    493 256    09.05.20 11:50    -a--

 

Link to comment
Share on other sites

Just now, Sebra said:

Скачал архив с GitHub, сравнил. Разница:

MiniAVC.dll <-> MiniAVC.dll.pruned

Также у меня такие файлы есть.

D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils.2.0.dll    135 168    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils.2.2.dll    135 168    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils.2.2.dll    135 168    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils_LICENSE.md    1 572    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\EasyVesselSwitch\Plugins\KSPDev_Utils_README.md    2 427    07.04.20 20:53    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils_LICENSE.md    1 572    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils_README.md    2 427    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils_LICENSE.md    1 572    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils_README.md    2 427    09.05.20 11:50    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KAS\Plugins\KSPDev_Utils.2.2.xml    493 256    27.04.20 19:34    -a--
D:\Steam\steamapps\common\Kerbal Space Program\GameData\KIS\Plugins\KSPDev_Utils.2.2.xml    493 256    09.05.20 11:50    -a--

Я вижу версию 2.2. Как и должно быть. Что в логах? (лучше пошарить весь файл), вот как тут сказано. И тут важно скачать правильный архив. Например, вот это - правильный архив. А то некоторые сорсы качают и потом удивляются.

Link to comment
Share on other sites

Just now, Sebra said:

Сейчас вынужден уйти, потом посмотрю.

EasyVesselSwitch\Plugins\KSPDev_Utils.2.0.dll  

мешать не может?

Хотя там 2.1 писался

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

[ERR 02:19:58.222] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.0, Culture=neutral, PublicKeyToken=null
[ERR 02:19:58.228] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.2, Culture=neutral, PublicKeyToken=null

Но это ни на что не влияет.

Если мод не может найти свою версию утилит, то он просто не загрузится. Об этом будет весьма специфическая ошибка в самом начале загрузки. Вот поэтому и нужен весь логфайл.

Link to comment
Share on other sites

6 hours ago, IgorZ said:

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

Ну есть там в конце

[LOG 12:09:04.181] [BetterBurnTime] Vessel changed to Валентина Керман
[LOG 12:09:04.182] 2020-05-09 12:09:04.181 [ERROR]   KRnD: updating vessel 'Валентина Керман'
[LOG 12:09:04.259] 5/9/2020 12:09:04 PM,kOS-IRWrapper,Attempting to Grab IR Types...
[LOG 12:09:04.270] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Vessel Change from 'Безымянный аппарат' to 'Валентина Керман'
[LOG 12:09:04.274] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Active Vessel changed - resetting inqueue flag
[LOG 12:09:04.287] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Removing DrawGUI from PostRender Queue
[LOG 12:09:04.297] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Adding DrawGUI to PostRender Queue
[LOG 12:09:04.297] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Skipping version check
[ERR 12:09:20.894] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.1, Culture=neutral, PublicKeyToken=null

[ERR 12:09:20.895] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.1, Culture=neutral, PublicKeyToken=null

[EXC 12:09:20.898] FileNotFoundException: Could not load file or assembly 'KSPDev_Utils.2.1, Version=2.1.7279.39857, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
    KIS.KIS_Item.Use (KIS.KIS_Item+UseFrom useFrom) (at <260264fece7f4aefbe53a4372aaba441>:0)
    KIS.ModuleKISInventory.GuiContextMenu (System.Int32 windowID) (at <260264fece7f4aefbe53a4372aaba441>:0)
    UnityEngine.GUILayout+LayoutedWindow.DoWindow (System.Int32 windowID) (at <fa6f9762ac624af092525d37c9d516c4>:0)
    UnityEngine.GUI.CallWindowDelegate (UnityEngine.GUI+WindowFunction func, System.Int32 id, System.Int32 instanceID, UnityEngine.GUISkin _skin, System.Int32 forceRect, System.Single width, System.Single height, UnityEngine.GUIStyle style) (at <fa6f9762ac624af092525d37c9d516c4>:0)
    UnityEngine.DebugLogHandler:LogException(Exception, Object)
    ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
    UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)


Но какая тому причина я не пойму.

Link to comment
Share on other sites

7 hours ago, Sebra said:

Ну есть там в конце

[LOG 12:09:04.181] [BetterBurnTime] Vessel changed to Валентина Керман
[LOG 12:09:04.182] 2020-05-09 12:09:04.181 [ERROR]   KRnD: updating vessel 'Валентина Керман'
[LOG 12:09:04.259] 5/9/2020 12:09:04 PM,kOS-IRWrapper,Attempting to Grab IR Types...
[LOG 12:09:04.270] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Vessel Change from 'Безымянный аппарат' to 'Валентина Керман'
[LOG 12:09:04.274] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Active Vessel changed - resetting inqueue flag
[LOG 12:09:04.287] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Removing DrawGUI from PostRender Queue
[LOG 12:09:04.297] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Adding DrawGUI to PostRender Queue
[LOG 12:09:04.297] 5/9/2020 12:09:04 PM,KerbalAlarmClock,Skipping version check
[ERR 12:09:20.894] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.1, Culture=neutral, PublicKeyToken=null

[ERR 12:09:20.895] ADDON BINDER: Cannot resolve assembly: KSPDev_Utils.2.1, Culture=neutral, PublicKeyToken=null

[EXC 12:09:20.898] FileNotFoundException: Could not load file or assembly 'KSPDev_Utils.2.1, Version=2.1.7279.39857, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
    KIS.KIS_Item.Use (KIS.KIS_Item+UseFrom useFrom) (at <260264fece7f4aefbe53a4372aaba441>:0)
    KIS.ModuleKISInventory.GuiContextMenu (System.Int32 windowID) (at <260264fece7f4aefbe53a4372aaba441>:0)
    UnityEngine.GUILayout+LayoutedWindow.DoWindow (System.Int32 windowID) (at <fa6f9762ac624af092525d37c9d516c4>:0)
    UnityEngine.GUI.CallWindowDelegate (UnityEngine.GUI+WindowFunction func, System.Int32 id, System.Int32 instanceID, UnityEngine.GUISkin _skin, System.Int32 forceRect, System.Single width, System.Single height, UnityEngine.GUIStyle style) (at <fa6f9762ac624af092525d37c9d516c4>:0)
    UnityEngine.DebugLogHandler:LogException(Exception, Object)
    ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
    UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)


Но какая тому причина я не пойму.

Нашел причину. Проблема в моде EvaFuel (бага). Отвечу на основном форуме с инструкцией как временно пофиксить.

Link to comment
Share on other sites

  • 5 weeks later...

Подскажите, если я после принятия контракта на строительство новой орбитальной станции:

1.запущу только новый модуль ОКТО

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

Игра засчитает выполнение контракта?

Схватил второй контракт на мунную станцию. Хочется максимально сэкономить. Гугл сходу не ответил, в теме вопрос не поднимался.

Link to comment
Share on other sites

2 hours ago, Kerbauser said:

Подскажите, если я после принятия контракта на строительство новой орбитальной станции:

1.запущу только новый модуль ОКТО

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

Игра засчитает выполнение контракта?

Схватил второй контракт на мунную станцию. Хочется максимально сэкономить. Гугл сходу не ответил, в теме вопрос не поднимался.

Система контрактов работает по событиям. Типа: "запущен новый корабль" - в этом случае проверяется набор деталей на нем. Из чего следует, что присоединение нужных деталей к уже имеющемуся на орбите аппарату эффекта не даст.

Другой пример: доставка детали с орбиты на Кербин. Многим бы хотелось "загрузить" ее в KIS контейнер и таким образом выполнить миссию. Увы, так оно не сработает. Игра отслеживает жизненный цикл детали, и если деталь из мисиии не приземлилась "по-настоящему", то победа не засчитается. В случае с KIS фиаско настигнет даже раньше - миссия будет провалена при попытке положить деталь в контейнер. Ибо, с точки зрения игры, в этот момент деталь уничтожается. И это чистая правда - деталь действительно уничтожается, но в контейнере создается ее копия.

Link to comment
Share on other sites

  • 3 weeks later...
On 6/8/2020 at 10:30 AM, Marschig said:

Нет. Засчитают расширение старой станции.

On 6/8/2020 at 12:13 PM, IgorZ said:

"запущен новый корабль" - в этом случае проверяется набор деталей на нем

Спасибо за ответы! Фраза IgorZ показалась мне не совсем понятной и я решил поэкспериментировать. Все верно - старые детали использовать нельзя. Но любопытно, почему? Возможно, любопытно не только мне, поэтому поделюсь наблюдениями.

Итак, при запуске корабля каждой его детали присваивается параметр launchID, который содержит номер старта в игре. При принятии контракта в нем прописывается номер следующего запуска. И если корабль содержит деталь с launchID меньше заданной в контакте => контракт не засчитает новую станцию. И самое интересное, детали доставленные с помощью инвентаря содержат launchID=0. Например, мы запустили спутник и забыли поставить на него солнечную панель. Вроде не беда? Запускаем со следующей миссией инженера и даем ему в инвентарь шуруповёрт и солнечную панель, долго и нудно организуем встречу, выравниваем орбиты, достаем инженера с панелькой, весьма непросто (вися в невесомости без опоры) вешаем ее на спутник и ... Облом! у детали launchID=0 , а в контракте >=120, итог не засчитан. Выход есть, но еще более муторный. Недостающую деталь нужно ставить на новый корабль (следующий запуск будет иметь launchID=121, который пропишется на деталь), разместить оба корабля на расстоянии 3м (дальше ручек у инженера не хватает) и перевесить панель с одного корабля на другой, без инвентаря.

Было интересно, но я выбрал плохие корабли (станции по 40т) и детали (более 1т, инженер их ворочать даже в невесомости не мог) для экспериментов, поэтому убил кучу нервов, сил и времени. Эксперименты с подтягиванием тяжелых узлов с помощью лебедок закончились многочисленными и разнообразными катастрофами.

Итог: Для легких вещей (термометры, батарейки, прожектора и т.п.) - можно заморочится. Если нужно добавить бак 200х32 - я за такое больше не возьмусь. Хотя... болтается на Муне огромная станция с  атомным движком. Уже третий день хочу снять его и собрать маленький спутник со сканером, для переориентации с экваториальной на полярную орбиту.

 

Edited by Kerbauser
Link to comment
Share on other sites

On 6/23/2020 at 5:51 AM, Kerbauser said:

Итак, при запуске корабля каждой его детали присваивается параметр launchID, который содержит номер старта в игре.

Совершенно верно. Более того, есть еще и flightID - этот отвечает за контракты со спасением или доставкой деталей с орбиты на Кербин. Существующая система контрактов плохо приспособлена для того, что делает KIS. Во второй версии (если я ее наконец закончу, уж больно много времени уходит на неигровые дела), у меня была идея попытаться ограниченно решить проблему. Так что, будем посмотреть.

Link to comment
Share on other sites

On 6/23/2020 at 3:51 PM, Kerbauser said:

Итак, при запуске корабля каждой его детали присваивается параметр launchID, который содержит номер старта в игре. При принятии контракта в нем прописывается номер следующего запуска. И если корабль содержит деталь с launchID меньше заданной в контакте => контракт не засчитает новую станцию. И самое интересное, детали доставленные с помощью инвентаря содержат launchID=0.

Ну, наверное, при доставании детали из инвентаря можно инициализировать launchID launchIDом самого инвентаря.

Или при присоединении детали к коряблю ставить launchID присоединяемого как launchID того, к чему присоединяется.

Это если такие манипуляции вообще доступны...

Link to comment
Share on other sites

22 hours ago, Sebra said:

Ну, наверное, при доставании детали из инвентаря можно инициализировать launchID launchIDом самого инвентаря.

Или при присоединении детали к коряблю ставить launchID присоединяемого как launchID того, к чему присоединяется.

Это если такие манипуляции вообще доступны...

Такие манипуляции возможны, но это далеко не всегда дают нужный эффект. Конкретно launchID сегодня обычно сохраняется в инвентаре и потом восстанавливается, но там куча нюансов. Кому интересно, смотрите тут.

Вцелом, поддержка системы контрактов в игре - это целый отдельный раздел. В старом KIS это вообще никак не рассматривалось и не поддерживалось. В новом я постараюсь хотя бы частично решить проблему. Как минимум, надо иметь возможность определить, что деталь участвует в контракте и предупредить пользователя о последствиях до того как он положит деталь в инвентарь. Такое сделать вполне можно. Впочем, полная поддержка всех видов контрактов скорее всего реализована не будет.

Link to comment
Share on other sites

15 hours ago, IgorZ said:

Такие манипуляции возможны, но это далеко не всегда дают нужный эффект.

А какой результат хочется получить?

Я бы предпочёл возможность ставить любые детали без срыва контракта. Например при установке антенны на корпус ставим  антенне launchID  корпуса и контракт спокоен.

В стеке можно хранить новейший launchID. Или просто иметь разные стеки.

А если launchID==0 при вытаскивании из инвентаря (сейв/лоад не нужен) присваивать launchID самого инвентаря.

Link to comment
Share on other sites

On 6/29/2020 at 1:44 PM, Sebra said:

А какой результат хочется получить?

Не срывать контракт :)

On 6/29/2020 at 1:44 PM, Sebra said:

Например при установке антенны на корпус ставим  антенне launchID  корпуса и контракт спокоен.

Такое технически возможно, но я не дам никакой гарантии, что это предотвратит срыв контракта. Ибо каждый тип контракта обрабатывается по-своему. К примеру, контракты на выведение спутников в специфическое конфигурации реагируют на событие смены ситуации, и lauchID тут всего лишь один из многих параметров. Если присоединить недостающую антенну уже на орбите, к выполнению контракта это автоматически не приведет. Можно, конечно, покопаться в потрохах реализации и найти способ "пнуть" механизм обработки, но далеко не факт, что это не будет иметь побочных эффектов. И это то, о чем я сказал выше - все контакты вряд ли когда-то будут поддерживаться, ибо под каждый тип надо будет изобретать собственные костыли. А костыли дело такое - в одной версии работают, в другой все ломают. При прочих равных я стараюсь таким не увлекаться.

On 6/29/2020 at 1:44 PM, Sebra said:

В стеке можно хранить новейший launchID. Или просто иметь разные стеки.

С учетом системы сохранений в игре, а так же модов, которые активно на нее влияют, любые "стеки" - это верный путь к катастрофе. В игре нет какого-то "постоянного состояния". Даже в пределах одной карьеры и одного сохранения внутри игры создаются "версии состояний". В тривиальных случаях, типа состояния детали или корабля, это легко поддерживается, а вот параметры по вселенной в целом - это уже проблема.

Насчет идеи с launchID  в целом, не вижу причине не реализовать ее. Выглядит вполне логично. Однако, я практически уверен, что это не поможет в случаях с контрактами.

Link to comment
Share on other sites

22 hours ago, IgorZ said:

Такое технически возможно, но я не дам никакой гарантии, что это предотвратит срыв контракта. Ибо каждый тип контракта обрабатывается по-своему. К примеру, контракты на выведение спутников в специфическое конфигурации реагируют на событие смены ситуации, и lauchID тут всего лишь один из многих параметров. Если присоединить недостающую антенну уже на орбите, к выполнению контракта это автоматически не приведет. Можно, конечно, покопаться в потрохах реализации и найти способ "пнуть" механизм обработки, но далеко не факт, что это не будет иметь побочных эффектов. И это то, о чем я сказал выше - все контакты вряд ли когда-то будут поддерживаться, ибо под каждый тип надо будет изобретать собственные костыли. А костыли дело такое - в одной версии работают, в другой все ломают. При прочих равных я стараюсь таким не увлекаться.

В данном примере костыли - лишнее. Если уж прилепил что на орбите - сведи с неё и верни, чтобы триггер сработал. И т.д.

22 hours ago, IgorZ said:

Насчет идеи с launchID  в целом, не вижу причине не реализовать ее. Выглядит вполне логично. Однако, я практически уверен, что это не поможет в случаях с контрактами.

Основная цель же не выполнить контракт, а реализовать свои идеи по выполнению контракта. А там уже и контракты по дооснащению ... о желанию.

Удачи с новыми версиями!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...