|
|
|
Канал X4: Foundations »
Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое» |
|
|
alexalsp 514 EGP
Рейтинг канала: 5(206) Репутация: 54 Сообщения: 4307
Зарегистрирован: 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 раз(а) |
|
|
Andy_MB 130 EGP
Рейтинг канала: 4(89) Репутация: 10 Сообщения: 572 Откуда: Край вселенной, Квазар-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 раз |
|
|
Shadowman 265 EGP
Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 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 раз |
|
|
alexalsp 514 EGP
Рейтинг канала: 5(206) Репутация: 54 Сообщения: 4307
Зарегистрирован: 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 |
|
|
eliseeff 268 EGP
Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 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>
|
Ошибка в синтаксисе (выделено красным). Получились две разных переменных, а должна быть одна.
|
|
|
alexalsp 514 EGP
Рейтинг канала: 5(206) Репутация: 54 Сообщения: 4307
Зарегистрирован: 12.08.2014 |
|
По разному пробовал, первая часть срабатывает, вторая не патчит..
_________________ CMDR: Fallout(EG)
ED - если застряли: https://discord.gg/w56kPWH |
|
|
Shadowman 265 EGP
Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003 |
|
Если не работает сложная конструкция, стараюсь по возможности упростить для отладки. Обычно в процессе уши и вылазят.
|
|
|
Andy_MB 130 EGP
Рейтинг канала: 4(89) Репутация: 10 Сообщения: 572 Откуда: Край вселенной, Квазар-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-ами кто знает в чем может быть прикол ткните меня носом плиз!
я уже и в кат/дат запаковывал - не помогает (ну разве, что из лога одно сообщение про игнор ноды дифф уходит)
|
|
|
alexalsp 514 EGP
Рейтинг канала: 5(206) Репутация: 54 Сообщения: 4307
Зарегистрирован: 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 раз |
|
|
Andy_MB 130 EGP
Рейтинг канала: 4(89) Репутация: 10 Сообщения: 572 Откуда: Край вселенной, Квазар-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 раз |
|
|
Shadowman 265 EGP
Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003 |
|
alexalsp
По поводу патчинга. А я не вижу проверок, подходит ли оборудование, которое навешивается, к кораблю, на который это вешается. Ну, так, без подробностей, ведь есть уймища оборудования, которое одним подходит, другим - нет.
И как игра отреагирует, если мостишь не то и(или) не туда?
Ну, если не ногами движок сделан, вылетать же не должно; скорей всего, просто игнорировать будет. Так ведь и происходит?
Или там только удаление, а патчинг - применение изменений?
|
|
|
anDron 545 EGP
Рейтинг канала: 4(84) Репутация: 54 Сообщения: 5581 Откуда: Новосибирск Зарегистрирован: 27.11.2013 |
|
Там маски на навесное оборудование по размеро-корпусам (размер, тип и т.п.). Ежели подходит, то все "оденется".
А вот ежели левака принудительно скриптом прописать, то наверное могут и разные прикольности/глюкости повозникать...
|
|
|
Shadowman 265 EGP
Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003 |
|
Так я же о чем. Может, где-то что-то не подходит (не снимается), например. И, как говорится, "коготок увяз - всей птичке пропасть".
Можно ли скриптом и проверки сделать, все ли "ровно", не знаю.
Поэтому и предлагаю сначала явно каждый элемент попробовать отдельно, а не оптом всем и всё. Тогда, скорей всего, косяки и отловятся.
А так-то - да, прикольно было бы скрипты автоапгрейда-даунгрейда иметь под руками. Чтобы не каждый раз всё "ручками" делать.
|
|
|
Shadowman 265 EGP
Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1392 Откуда: Альфа Центавра Зарегистрирован: 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|xen|gen)_\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_m\"\smacro=\"ship_par_m_corvette_\w+\"\s.[^\>]+\sowner=\"player\".*>
Бесхозные:
Код: |
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par|gen)_\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|xen)_l_destroyer_\w+\"\s.[^\>]+\sowner=\"player\".*> |
Авианосцы игрока:
Код: |
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(arg|tel|par|xen)_xl_carrier_\w+\"\s.[^\>]+\sowner=\"player\".*> |
...все авианосцы, кроме Колоссов
Код: |
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_(tel|par|xen)_xl_carrier_\w+\"\s.[^\>]+\s.*> |
...все застройщики расы аргон, не принадлежащие игроку
Код: |
<component\sclass=\"ship_\w{1,2}\"\smacro=\"ship_arg_xl_builder_\w+\"\s.[^\>]+\sowner=\"\w+[^player]\".*\> |
«Мусорные» мины
Код: |
<component\sclass=\"mine\"\smacro=\"weapon_gen_mine_01_macro\"\s.[^\>]+\sowner=\"ownerless\".*> |
Экипаж:
Код: |
<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\".*> |
|
Последний раз редактировалось: Shadowman (13:48 24-05-2019), всего редактировалось 1 раз |
|
|
w31 400 EGP
Рейтинг канала: 1(9) Репутация: 72 Сообщения: 598 Откуда: СПб Зарегистрирован: 04.10.2005 |
|
что-то мне не везёт с ковырянием xml файлов в игре, может кто-то подскажет где найти полный список чертежей станций и чертежей кораблей и где найти списки предметов инвентаря? есть такой список, но не уверен насчёт кораблей
и да. я очень медленно, но всё же работаю над редактором, уже есть некоторый прогресс, надеюсь к конце месяца выложить первую версию.
|
|
|
anDron 545 EGP
Рейтинг канала: 4(84) Репутация: 54 Сообщения: 5581 Откуда: Новосибирск Зарегистрирован: 27.11.2013 |
|
Это все несколько вольно переименованный список из \libraries\wares.xml
|
|
|
Andre_013 55 EGP
Репутация: 6 Сообщения: 48 Откуда: Украина, Харьков Зарегистрирован: 19.11.2009 |
|
2 alexalsp
subst_01 ложим в папку мода или в корень?
Иерархию файлов в Subst сохраняем? Т.е. каталоги?
Последний раз редактировалось: Andre_013 (12:42 19-05-2019), всего редактировалось 2 раз(а) |
|
|
alexalsp 514 EGP
Рейтинг канала: 5(206) Репутация: 54 Сообщения: 4307
Зарегистрирован: 12.08.2014 |
|
В папку мода, иерархия сохраняется.
Cкрытый текст (кликните здесь для просмотра)
|
Но этот файл только для замены оригинала игры если нельзя подменить обычным добавлением, заменой или удалением части кода через DIFF.
_________________ CMDR: Fallout(EG)
ED - если застряли: https://discord.gg/w56kPWH
Последний раз редактировалось: alexalsp (16:56 19-05-2019), всего редактировалось 1 раз |
|
|
Andre_013 55 EGP
Репутация: 6 Сообщения: 48 Откуда: Украина, Харьков Зарегистрирован: 19.11.2009 |
|
2 alexalsp
Спасибо. А насчет "diff" - я по старинке, ручками все под себя правлю. Тот же 0001-L007 - названия англ., описание оставляю на русском, строк много, проще в цельном файле менять.
|
|
|
eliseeff 268 EGP
Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 07.03.2015 |
|
Andre_013 : |
2 alexalsp
Спасибо. А насчет "diff" - я по старинке, ручками все под себя правлю. Тот же 0001-L007 - названия англ., описание оставляю на русском, строк много, проще в цельном файле менять.
|
Один раз-то вам это будет сделать, может, и удобнее, но впоследствии с каждым патчем вам придется каждый раз повторять эту процедурку, ибо тексты постоянно добавляются.
Вы б выложили свой такой подготовленный текстовичок. Я вам из него дифф сделаю примерно за 5 секунд луа-скриптом, который я уже написал для своих собственных целей.
Это избавит вас от кучи геморроя в будущем.
|
|
|
|
|
|
Канал X4: Foundations ->
Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое» |
|