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

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

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


Рейтинг канала: 4(56)
Репутация: 28
Сообщения: 2086

Зарегистрирован: 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
 127 EGP


Рейтинг канала: 4(76)
Репутация: 10
Сообщения: 523
Откуда: Край вселенной, Квазар-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-й батник и вставил в сэйв обратно тэги и в них сам новый ключ.
Все! Венчуры теперь разрешает запускать.
 подробный алгоритм (по просьбам трудящихся)   (кликните здесь для просмотра)
подробный алгоритм:
1. распаковываем архив в корень диска C:\
Почему? - потомучто в батниках прописан этот путь!
2. находим свой сэйв (для стим версии это: c:\Users\..имя..\Documents\Egosoft\X4\..циферки..\save\) и копируем его в папку c:\tmp\
2.1. если он отличается от save_001.xml то приводим его к этому виду (распаковываем/переименовываем)
3.запускем файл 1.bat (получаем открытый ключ из закрытого для проверки)
4.открываем сейв (AkelPad или другим текст редактором, который ничего не вписывает в редактируемый тектстовик)
5. вырезаем с самого конца содержимое тегов <signature>...</signature> (это и есть подпись, сохраняем её в signature.b64 - сами теги не вставляем!!!), сами теги и содержимое удаляем, сохраняем файл.
/в итоге получаем наш сэйв без подписи а подпись без тегов сохранена в signature.b64/
6.запускем файл 2.bat (он раскодирует и проверяет сохранение и подпись)
/может ругнуться, что не нашел библиотеку и сверка не прошла. Ничего страшного, если уверены, что вырезали и вставили все правильно то идем дальше.
7.редактируем, сохраняем сейв (находим <modified modified="1"/> и меняем на <modified modified="0"/>)
8.запускаем 3.bat (подписываем его и конвертируем в base64 полученную подпись)
9.открываем наш сэйв снова, переходим в самый конец файла и между тегами </ui></savegame> вставляем сначала тег <signature></signature>
а потм внутрь тега сигнатуры вставляем содержимое из полученного файла new_save.b64

в конце нашего сэйва должно получиться такое:
Код:

</data>
</addons>
</ui><signature>fAZtBXm8NgBioAMwE/5ZTHN83vShhWDyo0e6HcFdl1F/IYFi0sJXnG5OyViWxRVgbNDuKkRpStk3BVi/k80fxcl2e/TJCGslGjvEWuH/yvkwTVWKLNMptyKs2/kvY1bsIFVI+Lst2cJLDXbP/HUx5Hl+meC9nPFsM+lXXptQC3XvWhxuOcd+JapRNZcQ6NOZnl+G1KW3LVocIrT7o/DElEVvbcGmMhTtZTMgvEQHsMDF9WFjJUtUH2D1FpS68Kcy500yQDQqK3Fqgvsn7SFg5g5eZ/1PFww9du7bTHmMQp41NmCzbIwBwFPL+69mWiD/xF6yZ8aZJjM8jV+vORjSUqoKVVJ6xqGfU4PaT8TF3FW1vuJWYerGq0lrwC3AYafJz/tBK6EVAde3leZ+4U3FTJqGeXU4aKnMd4mgrI/tNBiDAXeM6XjdHS2Ai48WE3yfLOiWfml7QIQvSfI7yh3wwuzw5ZS2mwqqWRg1UFVOZb4NdCr6fVF8X55t2af87CBGKrN8qLzpFjHJ6NsocL9gwFl4G+CbgrrC8swIvWllyIaGkG6HuN7mthFApBfddAARlniG2hR6icL7W7zyir5XKSf0U0K9n4Be3f+qkiWZSRECM5++u5uTGRluQb0NARFD3OaKmEKW0W+VI5x/8ncf2njg7KqqGFIUTnDdHW88/S6b63b9sv7I98bN57mUK5AiSbXonQUlTX7ehrJ88oip9xSJDTi1aexNPWG33NbqnumOg3XK3dqzISUygDsZTl3E1dODiRmWgN/MIvadWiojLNgiag7iB3QZx2AH8vIZqNmevHIT92/HXbFfdF1A9lsBowVDR3ji3si037Y2ZQWJqEzSF0eTUfzUnqpFRvs4SMVMruSSFo7mTXj0bOtX4a2FdZEcmfXosY+4qA6fTPkDQaPABJpqgo6AE7GMxYzj6GTYpx/9ClfL7m5NomkNRV6H7muHj9gxqEzXhDeDihEy4nn6xx1U9eCUa49FWBKmoXwTtS7N7L1leBgODCdywS8rg8Mr5YBupNo1Y+gcyYI0xqZuNCOI/t31yMvQXNBatwuBIYR9TBiyHxDGb50zozokgfTSFziOTGBbBG3wM6vpo06Cu68q25ESSKFIvA13bJs2pGb0PMAmHIVntR75CP40RPrWsHZz4WMgGN9cEqW21yfrXa2vXdADRe+RX0gftXrc/Mj4triZmKgyXMj96ch0mxgBLQQgQxd480FGun1o4/P1SprZ6456/TsfpGzCGn36gaE1UJqDjfYrQr+Q4NOKqIqwyw0482Libn5Xv5s/Eca36xjoR7zIakzxRcwaZhRDuvVvl7c8Ocm6z6mFuUPvtP+6d2FRtkEPepCwsKiBxg==</signature>
</savegame>

10. сохраняем сэйв и копируем его обратно в папку с сэйвами (при загрузке игры надпись модифайд должна исчезнуть и на венчурной консоли появится список венчур)


Последний раз редактировалось: Andy_MB (18:18 21-03-2019), всего редактировалось 1 раз
    Добавлено: 12:22 12-01-2019   
Shadowman
 216 EGP


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

Находим строку, выглядит она примерно так:
<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 (если используется сжатие сохранений), кладем в папку сохранений и грузим в игре.

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



Последний раз редактировалось: Shadowman (18:26 12-03-2019), всего редактировалось 1 раз
    Добавлено: 12:10 15-01-2019   
alexalsp
 301 EGP


Рейтинг канала: 4(56)
Репутация: 28
Сообщения: 2086

Зарегистрирован: 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
Сообщения: 765

Зарегистрирован: 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
 301 EGP


Рейтинг канала: 4(56)
Репутация: 28
Сообщения: 2086

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

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


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


Рейтинг канала: 4(76)
Репутация: 10
Сообщения: 523
Откуда: Край вселенной, Квазар-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
 301 EGP


Рейтинг канала: 4(56)
Репутация: 28
Сообщения: 2086

Зарегистрирован: 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
 127 EGP


Рейтинг канала: 4(76)
Репутация: 10
Сообщения: 523
Откуда: Край вселенной, Квазар-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
 216 EGP


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


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


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

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

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

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


Рейтинг канала: 2(15)
Репутация: 44
Сообщения: 1120
Откуда: Альфа Центавра
Зарегистрирован: 03.12.2003
Пользуюсь для работы с сейвами набором регулярных выражений и редактором UltraEdit (он платный, да, но умеет многое такое, что не наблюдал у остальных).

 Regular expressions:   (кликните здесь для просмотра)

Любые корабли классов s,l,xl
Код:
<component\sclass=\"ship_(s|l|xl)\"\smacro=\"ship_(arg|tel|par)_(s|l|xl)_\w+\"


Корабли любых классов, принадлежащие игроку:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par)_\w{1,2}_\w+\"\s.[^\>]+\sowner=\"player\".*>


...пристыкованные:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par)_\w{1,2}_\w+\"\sconnection=\"dock\"\s.[^\>]+\sowner=\"player\".*>


...бесхозные:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par)_\w{1,2}_\w+\"\s.[^\>]+\sowner=\"ownerless\".*>


...любых других рас (кроме КСЕ, ХАА)
Код:
<component\sclass=\"ship_[\w{1,2}]\"\smacro=\"ship_(arg|tel|par)_[\w{1,2}]_\w+\"\s.[^\>]+\sowner=\"\w+[^player][^ownerless]\".*\>


...любой корабль, кроме игрока или бесхозного
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_\w{3}_\w{1,2}_\w+\"\s.[^\>]+\sowner=\"\w+[^player][^ownerless]\".*\>


Погибшие корабли:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_\w{3}_\w{1,2}_\w+\"\s.[^\>]+\sstate=\"Wreck\".*\>


Эсминцы игрока:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par)_l_destroyer_\w+\"\s.[^\>]+\sowner=\"player\".*>


Авианосцы игрока:
Код:
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par)_xl_carrier_\w+\"\s.[^\>]+\sowner=\"player\".*>


Экипаж:
Код:
<person\smacro=\"character_\w+\"\srole=\"(marine|service)\">


...менеджер со скиллом не менее 12:
Код:
<skill\stype=\"management\"\svalue=\"(12|13|14|15)\"\/>


Сектор
Код:
<component\sclass=\"sector\"\smacro=\"cluster_\d{2}_sector\d{3}_macro\"


Станции игрока:
Код:
<component\sclass=\"station\"\smacro=\"station_\w+_\d{2}_macro\"\s.[^\>]+\sowner=\"player\".*>
    Добавлено: 12:58 04-04-2019   
w31
 330 EGP


Рейтинг канала: 1(9)
Репутация: 72
Сообщения: 598
Откуда: СПб
Зарегистрирован: 04.10.2005
что-то мне не везёт с ковырянием xml файлов в игре, может кто-то подскажет где найти полный список чертежей станций и чертежей кораблей и где найти списки предметов инвентаря? есть такой список, но не уверен насчёт кораблей

и да. я очень медленно, но всё же работаю над редактором, уже есть некоторый прогресс, надеюсь к конце месяца выложить первую версию.
    Добавлено: Вчера в 10:16   
anDron
 360 EGP


Модератор
Репутация: 36
Сообщения: 2531
Откуда: Новосибирск
Зарегистрирован: 27.11.2013
Это все несколько вольно переименованный список из \libraries\wares.xml
    Добавлено: Вчера в 11:51   
Канал X4: Foundations -> Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое»
На страницу: Пред.  1, 2, 3 ... 9, 10, 11    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: А вы подумайте о том, что все "документы" - не более чем "Журналы" двухтысячелетней (и более) давности... Как вам сразу "похорошеет"! (Leshik)

  » Ковыряем движок и всё такое | страница 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