Elite Games - Свобода среди звезд!
.
  » Ковыряем движок и всё такое | страница 11
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Снег | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 11 из 11
На страницу: Пред.  1, 2, 3 ... 9, 10, 11    Перейти:   Все страницы
Поиск в этой теме:
Канал X4: Foundations » Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое»
alexalsp
 300 EGP


Рейтинг канала: 3(47)
Репутация: 26
Сообщения: 2060

Зарегистрирован: 12.08.2014
Еще есть один вариант замены всего документа без diff

весь файл упаковывается в cat / dat файл под именем

subst_01

в таком виде файл замещает оригинал без всяких diff, replace и прочего ...

Но опять же, если это того требуют изменения.

Лучше такого избегать так как моды других модеров вносящих изменения в этот же файл не затрагивая ваши изменения , будет вызывать конфликт на ровном месте .
_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH

Последний раз редактировалось: alexalsp (04:46 10-01-2019), всего редактировалось 2 раз(а)
    Добавлено: 04:42 10-01-2019   
Andy_MB
 116 EGP


Рейтинг канала: 4(57)
Репутация: 10
Сообщения: 471
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
Немного про исправление сэйва для запуска венчур после того как поиграли с модами и захотелось, не теряя накопленное/ разведанное, побаловаться венчурами.
Спасибо HikeR за проделанную работу и ключ для подписи сэйвов.

Нужно понимать, что для запуска венчуры нужно отключить все моды и исправить сэйв и переподписать его.
Для этого в сэйве нужно найти и исправить одну циферку на нолик.
Код:
<modified modified="1"/>

Код:
<modified modified="0"/>

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

еще немного поясню 2-й пункт, так как я сразу не понял что именно и от куда вырезать.
Цитата:
...сами теги и содержимое удаляем, сохраняем файл

Это нужно чтобы проверить правильно-ли кодер сработал и все-ли мы правильно сделали до этого. Тут речь идет о нашем сэйв файле save_001.xml
В данный момент из него мы вырезаем это:
 Cкрытый текст   (кликните здесь для просмотра)
</ui>
<signature>IoxOnf... здесь сам ключ ...nj1fIzMshuUIQGQ==</signature></savegame>

... если вы все сделали правильно, а verify не проходит, то, возможно, ваш текстовый редактор вставляет лишний перевод коретки в сэйв файл (0D 0A)
Я лично не заморачивался, просто перед запуском 3-го батника поменял в своем сэйве еденичку на нолик, запустил 3-й батник и вставил в сэйв обратно тэги и в них сам новый ключ.
Все! Венчуры теперь разрешает запускать.
    Добавлено: 12:22 12-01-2019   
Shadowman
 201 EGP


Рейтинг канала: 2(12)
Репутация: 44
Сообщения: 912
Откуда: Альфа Центавра
Зарегистрирован: 03.12.2003
Dobriy_On :
И? Хде "патч"? Ну или инструкция Улыбка

"патч" - это к Эгософту.
А инструкцию - это можно.

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

Допустим, нужно сектор Мемориал Антигоны привести к нормальному размеру
и удалить все "разведанные" участки в объеме.
1. Распаковываем сейв.
2. Открываем редактором текста (я использую AkelPad).
3. Ищем подстроку вида:
<component class="sector" macro="cluster_28_sector001_macro"
(жирным - название сектора). Чтобы состыковать название сектора с игровым текстом, пользуюсь табличкой:
 табличка   (кликните здесь для просмотра)

Код:
cluster_31_sector001_macro   Heretic's End      Край еретиков
cluster_46_sector001_macro   Morning Star IV      Утренняя звезда
cluster_30_sector001_macro   Morning Star III
cluster_07_sector001_macro   The Reach      Предел влияния
cluster_14_sector001_macro   Argon Prime
cluster_29_sector001_macro   Hatikvah's Choice I   Выбор Хатиква
cluster_29_sector002_macro   Hatikvah's Choice III   
cluster_28_sector001_macro   Antigone Memorial   Мемориал Антигоны
cluster_27_sector001_macro   The Void      Бездна
cluster_41_sector001_macro   Second Contact XI   Второй контакт
cluster_40_sector001_macro   Second Contact VII
cluster_13_sector001_macro   Second Contact II Flashpoint   
cluster_45_sector001_macro   Silent Witness XII   Безмолвный свидетель
cluster_44_sector001_macro   Silent Witness XI   
cluster_08_sector001_macro   Silent Witness I
cluster_02_sector001_macro   Eighteen Billion   18 миллиардов
cluster_01_sector001_macro   Grand Exchange I   Большая биржа
cluster_01_sector002_macro   Grand Exchange III
cluster_01_sector003_macro   Grand Exchange IV
cluster_34_sector001_macro   Profit Center Alpha   Центр прибыли Альфа
cluster_09_sector001_macro   Bright Promise      Радужная перспектива
cluster_03_sector001_macro   Memory of Profit IX   Память о прибыли
cluster_39_sector001_macro   Memory of Profit X
cluster_15_sector001_macro   Ianamus Zura IV      Ианумус Зура
cluster_15_sector002_macro   Ianamus Zura VII
cluster_47_sector001_macro   Trinity Sanctum VII   Святилище Троицы
cluster_18_sector001_macro   Trinity Sanctum III
cluster_43_sector001_macro   Hewa's Twin V      Близнец Хевы
cluster_42_sector001_macro   Hewa's Twin III
cluster_42_sector002_macro   Hewa's Twin IV The Cove
cluster_19_sector001_macro   Hewa's Twin I
cluster_19_sector002_macro   Hewa's Twin II
cluster_06_sector001_macro   Black Hole Sun IV   Черное солнце
cluster_06_sector002_macro   Black Hole Sun V
cluster_05_sector001_macro   Path to Profit      Дорога к прибыли
cluster_04_sector001_macro   Nopileos' Fortune II   Фортуна Нопилео
cluster_04_sector002_macro   Nopileos' Fortune VI   
cluster_10_sector001_macro   Unholy Retribution
cluster_20_sector001_macro   Company Regard      Забота компании
cluster_22_sector001_macro   Pious Mists II      Благочестивые грезы
cluster_37_sector001_macro   Pious Mists IV
cluster_38_sector001_macro   Pious Mists XI
cluster_23_sector001_macro   Sacred Relic      Священная реликвия
cluster_12_sector001_macro   True Sight      Снизарение
cluster_24_sector001_macro   Holy Vision      Святое видение
cluster_11_sector001_macro   Pontifex's Claim   Притязание Понтифика
cluster_35_sector001_macro   Lasting Vengeance   Затянувшаяся месть
cluster_36_sector001_macro   Cardinal's Redress   Помилование кардинала
cluster_16_sector001_macro   Matrix #451            
cluster_17_sector001_macro   Matrix #9      Матрица #9   
cluster_21_sector002_macro   Scale Plate Green VII   Зеленая чешуйка   
cluster_21_sector001_macro   Scale Plate Green I         
cluster_25_sector001_macro   Faulty Logic I      Порочная логика   
cluster_25_sector002_macro   Faulty Logic VII         
cluster_26_sector001_macro   Atiya's Misfortune I   Злоключение Атии
cluster_26_sector002_macro   Atiya's Misfortune III         
cluster_32_sector001_macro   Tharka's Cascade XV   Череда Тарка   
cluster_32_sector002_macro   Tharka's Cascade XVII         
cluster_33_sector001_macro   Matrix #79B      Матрица #79

Находим строку, выглядит она примерно так:
<component class="sector" macro="cluster_28_sector001_macro" connection="cluster" code="MCW-793" owner="antigone" knownto="player" known="1" read="0" id="[0x8d5424]">
Нас интересует окончание в этом тэге id="[0x8d5424]"
4. Далее, ищем по сейву (с начала текста):
<sector id="[0x8d5424]">
запоминаем номер строки или ставим закладку (AkelPad умеет делать закладки и перескакивать между ними)
и далее, ищем закрытие тэга вниз по тексту </sector>
вот всё, что между строками
<sector id="[0x8d5424]">
.....
</sector>
нужно удалить (включительно). Это и будет вся информация о пропаханной кораблями игрока площади в данном секторе.
Я себе на всякий случай (мало ли что) вырезанное отдельно в файлик текстовый скидываю и называю, например, cluster_28_sector001_macro.txt.
5. Сохраняем, переподписываем. По переподписыванию все есть здесь.
6. Пакуем отредактированный xml назад в gz (если используется сжатие сохранений), кладем в папку сохранений и грузим в игре.

Для наглядности, парочка скринов "до" и "после":

    Добавлено: 12:10 15-01-2019   
alexalsp
 300 EGP


Рейтинг канала: 3(47)
Репутация: 26
Сообщения: 2060

Зарегистрирован: 12.08.2014
Кто подскажет, код работает на половину. Как сейчас происходит обновление компонентов , пересмотрел все что мог ни чего не нашел.

Первая часть отрабатывает вроде удаляет навесы но не обновляет . У кого какие идеи.

Код:

    <cue name="patch_shipmod_v_1_000">
      <conditions>
       <event_game_loaded/>
      </conditions>
          <delay exact="10s"/>
      <actions>
        <set_value name="$ship_macros" exact="[
          macro.units_size_xl_capital_destroyer_1_macro,
          macro.units_size_xl_capital_destroyer_2_macro,
          macro.units_size_xl_red_destroyer_macro,
          macro.units_sco_xl_capital_destroyer_1_macro,
          macro.units_sco_xl_capital_destroyer_2_macro,
        macro.units_sco_xl_red_destroyer_macro
        ]"/>
          <set_value name="$ship_count" exact="0"/>
        <set_value name="$patch_count" exact="0"/>
        <set_value name="$patching_ships" exact="[]"/>

        <do_all exact="$ship_macros.count" counter="$sm">
          <find_ship name="$ships" macro="$ship_macros.{$sm}" multiple="true" space="player.galaxy"/>
          <set_value name="$ship_count" exact="$ships.count" operation="add"/>
          <do_all exact="$ships.count" counter="$s">
            <append_to_list name="$patching_ships" exact="$ships.{$s}"/>
              <find_object_component name="$components" class="[class.engine, class.weapon, class.turret, class.shieldgenerator]" object="$ships.{$s}" multiple="true"/>
              <set_value name="$patch_count" exact="$components.count" operation="add"/>
              <do_all exact="$components.count" counter="$c">
                <destroy_object object="$components.{$c}" explosion="false" />
                <debug_text filter="general" text="'Уничтожен модуль %1 на корабле %2 в зоне %3'.[$components.{$c}.knownname, $ships.{$s}.knownname, $ships.{$s}.zone.knownname]"  />
              </do_all>
            </do_all> 
        </do_all>
        <debug_text filter="general" text="'Уничтожено объектов : %1 \nПропатчено кораблей %2.'.[$patch_count, $ship_count]"  />
      </actions>
     <cues>
        <cue name="Patch_ship_Macro_v_1_000">
          <delay exact="15s"/>
          <actions>
            <do_all exact="$patching_ships.count" counter="$s">
              <set_value name="$ship" exact="$patching_ships.{$s}"/>
              <debug_text text="'Пропатченные корабли - %1 ...'.[$ship.knownname]"  />
              <patch_macro object="$ships"/>
            </do_all>
          </actions>
        </cue>
      </cues>
    </cue>

_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH
    Добавлено: 01:13 17-01-2019   
eliseeff
 168 EGP


Рейтинг канала: 1(6)
Репутация: -2
Сообщения: 558

Зарегистрирован: 07.03.2015
alexalsp :
Кто подскажет, код работает на половину. Как сейчас происходит обновление компонентов , пересмотрел все что мог ни чего не нашел.

Первая часть отрабатывает вроде удаляет навесы но не обновляет . У кого какие идеи.

 Cкрытый текст   (кликните здесь для просмотра)
Код:

    <cue name="patch_shipmod_v_1_000">
      <conditions>
       <event_game_loaded/>
      </conditions>
          <delay exact="10s"/>
      <actions>
        <set_value name="$ship_macros" exact="[
          macro.units_size_xl_capital_destroyer_1_macro,
          macro.units_size_xl_capital_destroyer_2_macro,
          macro.units_size_xl_red_destroyer_macro,
          macro.units_sco_xl_capital_destroyer_1_macro,
          macro.units_sco_xl_capital_destroyer_2_macro,
        macro.units_sco_xl_red_destroyer_macro
        ]"/>
          <set_value name="$ship_count" exact="0"/>
        <set_value name="$patch_count" exact="0"/>
        <set_value name="$patching_ships" exact="[]"/>

        <do_all exact="$ship_macros.count" counter="$sm">
          <find_ship name="$ships" macro="$ship_macros.{$sm}" multiple="true" space="player.galaxy"/>
          <set_value name="$ship_count" exact="$ships.count" operation="add"/>
          <do_all exact="$ships.count" counter="$s">
            <append_to_list name="$patching_ships" exact="$ships.{$s}"/>
              <find_object_component name="$components" class="[class.engine, class.weapon, class.turret, class.shieldgenerator]" object="$ships.{$s}" multiple="true"/>
              <set_value name="$patch_count" exact="$components.count" operation="add"/>
              <do_all exact="$components.count" counter="$c">
                <destroy_object object="$components.{$c}" explosion="false" />
                <debug_text filter="general" text="'Уничтожен модуль %1 на корабле %2 в зоне %3'.[$components.{$c}.knownname, $ships.{$s}.knownname, $ships.{$s}.zone.knownname]"  />
              </do_all>
            </do_all> 
        </do_all>
        <debug_text filter="general" text="'Уничтожено объектов : %1 \nПропатчено кораблей %2.'.[$patch_count, $ship_count]"  />
      </actions>
     <cues>
        <cue name="Patch_ship_Macro_v_1_000">
          <delay exact="15s"/>
          <actions>
            <do_all exact="$patching_ships.count" counter="$s">
              <set_value name="$ship" exact="$patching_ships.{$s}"/>
              <debug_text text="'Пропатченные корабли - %1 ...'.[$ship.knownname]"  />
              <patch_macro object="$ships"/>
            </do_all>
          </actions>
        </cue>
      </cues>
    </cue>


Цитата:
<set_value name="$ship_count" exact="$ships.count" operation="add"/>
<set_value name="$patch_count" exact="$components.count" operation="add"/>

Больше так не делай. Если тебе надо значение на единицу увеличить - делай одно из двух:

<set_value name="$value" operation="add"/>
<set_value name="$value" exact="$value + 1"/>

Цитата:
<do_all exact="$patching_ships.count" counter="$s">
<set_value name="$ship" exact="$patching_ships.{$s}"/>
<debug_text text="'Пропатченные корабли - %1 ...'.[$ship.knownname]" />
<patch_macro object="$ships"/>
</do_all>

Ошибка в синтаксисе (выделено красным). Получились две разных переменных, а должна быть одна.
    Добавлено: 03:41 17-01-2019   
alexalsp
 300 EGP


Рейтинг канала: 3(47)
Репутация: 26
Сообщения: 2060

Зарегистрирован: 12.08.2014
По разному пробовал, первая часть срабатывает, вторая не патчит.. Рыдания.
_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH
    Добавлено: 14:06 17-01-2019   
Shadowman
 201 EGP


Рейтинг канала: 2(12)
Репутация: 44
Сообщения: 912
Откуда: Альфа Центавра
Зарегистрирован: 03.12.2003
Если не работает сложная конструкция, стараюсь по возможности упростить для отладки. Обычно в процессе уши и вылазят.
    Добавлено: 14:52 17-01-2019   
Andy_MB
 116 EGP


Рейтинг канала: 4(57)
Репутация: 10
Сообщения: 471
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
Написал фикс для абордажников, у которых есть прокачанные десантники, который исправляет баг ванильного скрипта.
Не пойму что тут не работает.
При загрузке игры виснет на последнем проценте.
причем как-то странно!
Если прописываю так (ошибочный расчет как в оригинале) то не виснет:
Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <replace sel="//cue[@name='Infiltration_Ticker']/actions/do_all/do_if[@value='not this.$killed?']/set_value[@name='this.$Progress']">
    <set_value name="this.$Progress" exact="this.$BaseProgress * (100.0f / [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)"/>
  </replace>
</diff>


а если так - то виснет
Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <replace sel="//cue[@name='Infiltration_Ticker']/actions/do_all/do_if[@value='not this.$killed?']/set_value[@name='this.$Progress']">
    <set_value name="this.$Progress" exact="this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)"/>
  </replace>
</diff>


причем если сделать так, то работает и не виснет при загрузке:
Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <replace sel="//cue[@name='Infiltration_Ticker']/actions/do_all/do_if[@value='not this.$killed?']/set_value[@name='this.$Progress']">
    <set_value name="this.$Progress" exact="this.$BaseProgress * (100.0f / [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)"/>
    <set_value name="this.$Progress" exact="this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)"/>
  </replace>
</diff>


Не дружу я этими diff-ами Расстроен кто знает в чем может быть прикол ткните меня носом плиз!

я уже и в кат/дат запаковывал - не помогает (ну разве, что из лога одно сообщение про игнор ноды дифф уходит)
    Добавлено: 22:12 22-01-2019   
alexalsp
 300 EGP


Рейтинг канала: 3(47)
Репутация: 26
Сообщения: 2060

Зарегистрирован: 12.08.2014
Можно так попробовать, так как name="this.$Progress" встречается в документе всего раз

Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff">
  <replace sel="//set_value[@name='this.$Progress']">
    <set_value name="this.$Progress" exact="this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)"/>
  </replace>
</diff>


либо

Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff">
  <replace sel="//cue[@name='Infiltration_Ticker']/actions/do_all/do_if[@value='not this.$killed?']/set_value[@name='this.$Progress']/@exact">this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)</replace>
</diff>


ну еще вариант протестить можно

Код:
<?xml version="1.0" encoding="utf-8" ?>
<diff">
  <replace sel="//set_value[@name='this.$Progress']/@exact">this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)</replace>
</diff>

_________________
CMDR: Fallout(EG)

ED - если застряли: https://discord.gg/w56kPWH

Последний раз редактировалось: alexalsp (13:09 25-01-2019), всего редактировалось 1 раз
    Добавлено: 13:08 25-01-2019   
Andy_MB
 116 EGP


Рейтинг канала: 4(57)
Репутация: 10
Сообщения: 471
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
2-вариант сработал.
Код:

<?xml version="1.0" encoding="utf-8" ?>
<diff>
  <replace sel="//cue[@name='Infiltration_Ticker']/actions/do_all/do_if[@value='not this.$killed?']/set_value[@name='this.$Progress']/@exact">this.$BaseProgress * (20.0f * [$Operation.marines.infiltrating.{this.$marine}.combinedskill, 1.0f].max)</replace>
</diff>


Последний раз редактировалось: Andy_MB (22:22 25-01-2019), всего редактировалось 1 раз
    Добавлено: 19:22 25-01-2019   
Shadowman
 201 EGP


Рейтинг канала: 2(12)
Репутация: 44
Сообщения: 912
Откуда: Альфа Центавра
Зарегистрирован: 03.12.2003
alexalsp
По поводу патчинга. А я не вижу проверок, подходит ли оборудование, которое навешивается, к кораблю, на который это вешается. Ну, так, без подробностей, ведь есть уймища оборудования, которое одним подходит, другим - нет.
И как игра отреагирует, если мостишь не то и(или) не туда?
Ну, если не ногами движок сделан, вылетать же не должно; скорей всего, просто игнорировать будет. Так ведь и происходит?
Или там только удаление, а патчинг - применение изменений?
    Добавлено: 20:24 25-01-2019   
anDron
 344 EGP


Модератор
Репутация: 36
Сообщения: 2387
Откуда: Новосибирск
Зарегистрирован: 27.11.2013
Там маски на навесное оборудование по размеро-корпусам (размер, тип и т.п.). Ежели подходит, то все "оденется".
А вот ежели левака принудительно скриптом прописать, то наверное могут и разные прикольности/глюкости повозникать...
    Добавлено: 02:18 26-01-2019   
Shadowman
 201 EGP


Рейтинг канала: 2(12)
Репутация: 44
Сообщения: 912
Откуда: Альфа Центавра
Зарегистрирован: 03.12.2003
Так я же о чем. Может, где-то что-то не подходит (не снимается), например. И, как говорится, "коготок увяз - всей птичке пропасть".

Можно ли скриптом и проверки сделать, все ли "ровно", не знаю.

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

А так-то - да, прикольно было бы скрипты автоапгрейда-даунгрейда иметь под руками. Чтобы не каждый раз всё "ручками" делать.
    Добавлено: 14:30 27-01-2019   
Andy_MB
 116 EGP


Рейтинг канала: 4(57)
Репутация: 10
Сообщения: 471
Откуда: Край вселенной, Квазар-1
Зарегистрирован: 13.07.2015
1. Кто раскопал как управлять счетом билдсторэджа станции?
только через скрипты, а не через ЛУА!
2. Есть ли у этого хранилища свой аккаунт или он по-умолчанию совпадает с аккаунтом владельца станции?

(как перевести на счет станции я нашел. Правда еще не пробовал удалять аккаунт станции. Не знаю он удаляется как у пилотов или нет.)
    Добавлено: Вчера в 18:26   
Канал X4: Foundations -> Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое»
На страницу: Пред.  1, 2, 3 ... 9, 10, 11    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Давеча эффект присутствия испытал - впаялся в гейт и одновременно получил по голове от жены подушкой. Осчущения - абалдеть. (Scanka)

  » Ковыряем движок и всё такое | страница 11
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18