Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Ковыряем новый движок (моддинг) | страница 16
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

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

   Страница 16 из 31
На страницу: Пред.  1, 2, 3 ... 15, 16, 17 ... 29, 30, 31  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X Rebirth » Модовый и скриптовый отсек X Rebirth: «Ковыряем новый движок (моддинг)»
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
Ну с таким подходом оно, конечно, будет как сыр. Подмигиваю
    Добавлено: 23:04 14-05-2014   
Giimer
 80 EGP


Рейтинг канала: 2(11)
Репутация: 12
Сообщения: 822

Зарегистрирован: 05.11.2008
Vadim :
Закинул в extensions, загрузил save. Все нормально, батареи перестали исчезать, корабли как торговали, так торгуют.

А можно попросить выложить в виде мода?

---
переформулировал

Последний раз редактировалось: Giimer (10:33 16-05-2014), всего редактировалось 1 раз
    Добавлено: 01:18 16-05-2014   
anDron
 571 EGP


Модератор
Рейтинг канала: 4(50)
Репутация: 54
Сообщения: 5943
Откуда: Новосибирск
Зарегистрирован: 27.11.2013
Giimer :
А можно выложить?

А может попросим boojum выложить в виде мода? Подмигиваю
    Добавлено: 05:02 16-05-2014   
Vadim
 88 EGP


Рейтинг канала: 1(3)
Репутация: 9
Сообщения: 74
Откуда: Набережные Челны
Зарегистрирован: 04.12.2013
Хорошо, выложу вечером после работы в виде мода, если boojum не выложит раньше
    Добавлено: 05:43 16-05-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
Vadim, допишите тогда к описанию, что в качестве особого бонуса "мод" не запустит работу торговых станций, если начать с ним игру. Подмигиваю

Ну нельзя так скрипты вырезать. Валидацию пустой <aiscript/> проходит и в этом случае ничего не передается и ничего не возвращается при его выходе, поэтому даже прокатит в случае с обычными станциями. Но подход в корне неверный. Мне по барабану, кто это выложит, я бы даже не стал, так как считаю, что подобные изменения надо в комплексе с прочим публиковать. Но раз выложили, то оформите хотя бы по-человечески, чтобы без последствий. А не швейцарский сыр.
    Добавлено: 18:53 16-05-2014   
HikeR
 145 EGP


Рейтинг канала: 4(57)
Репутация: 30
Сообщения: 886
Откуда: Великий Новгород
Зарегистрирован: 20.09.2005
есть ли готовые тулзы для создания xml-diff в формате понятном игре (XPath)?

сходу нашел только древнюю микрософтовскую утилитку xmldiffpatch на .Net, вывод которой переформатировать сложнее, чем самому что-то написать.
еще встретилась diffxml на Java (которая не делает патчи, а удаляет/добавляет значения, т.е. "патч" равен двойному размеру оригинала) и библиотека libxmlpatch (*никсов под рукой нет чтобы ее собрать).
    Добавлено: 21:45 26-05-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
HikeR :
есть ли готовые тулзы для создания xml-diff в формате понятном игре (XPath)?

Вы имеете в виду rfc5261? На гитхабе рыскал на эту тему, правда задача обратная была - просто накладывать, чтобы читать удобнее было, но тоже ничего толкового не нашел. Проще самому накатать, наверное, на любом любимом. Сам патч наложить фигня, конечно, рфц простенький. А вот дифф состряпать немного сложнее.

Последний раз редактировалось: boojum (23:01 26-05-2014), всего редактировалось 2 раз(а)
    Добавлено: 22:34 26-05-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
Надеюсь, камрад Night Nord не запропал навсегда. Улыбка Пара файликов давно не разбираются: menu_trader_upgrades.xpl и gameoptions.xpl. Ошибка вроде бы аналогичная.

ljd тянулась с гитхаба, крайний коммит 2b0cddc6a.

Ресурсы из XR v2.10 RC4.

 Cкрытый текст   (кликните здесь для просмотра)
Код:
$ python3 --version
Python 3.2.3

Код:

Decompiling ./../01/ui/addons/detailmonitor/menu_trader_upgrades.xpl...
Traceback (most recent call last):
  File "./main.py", line 123, in <module>
    retval = main()
  File "./main.py", line 104, in main
    ljd.ast.unwarper.unwarp(ast)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 36, in unwarp
    _run_step(_unwarp_ifs, node)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 43, in _run_step
    statements.contents = step(statements.contents, **kargs)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 982, in _unwarp_if_statement
    then_blocks = _unwarp_ifs(body, body[-1], topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 968, in _unwarp_if_statement
    then_blocks = _unwarp_ifs(then_body, then_body[-1], topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 982, in _unwarp_if_statement
    then_blocks = _unwarp_ifs(body, body[-1], topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 937, in _unwarp_if_statement
    topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 1017, in _extract_if_expression
    false, end_i = _search_expression_end(expression, falses)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 1049, in _search_expression_end
    assert false is not None
AssertionError

Decompiling ./../01/ui/addons/gameoptions/gameoptions.xpl...
Traceback (most recent call last):
  File "./main.py", line 123, in <module>
    retval = main()
  File "./main.py", line 104, in main
    ljd.ast.unwarper.unwarp(ast)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 36, in unwarp
    _run_step(_unwarp_ifs, node)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 43, in _run_step
    statements.contents = step(statements.contents, **kargs)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 968, in _unwarp_if_statement
    then_blocks = _unwarp_ifs(then_body, then_body[-1], topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 161, in _unwarp_ifs
    _unwarp_if_statement(start, body, end, end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 937, in _unwarp_if_statement
    topmost_end)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 1017, in _extract_if_expression
    false, end_i = _search_expression_end(expression, falses)
  File "/home/locky/works/xr-unpack/output/ljd/ljd/ast/unwarper.py", line 1049, in _search_expression_end
    assert false is not None
AssertionError


Последний раз редактировалось: boojum (23:08 06-06-2014), всего редактировалось 2 раз(а)
    Добавлено: 22:45 06-06-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Напишу тут. Замучался с новыми переменными и константами в этом новом МД движке. И в командах. Знает кто, в чем разница между cue_is_complete и event_cue_completed, секция кондишн. Как проверить событие срабатывания эпизода (вложенного) в другом скрипте?
_________________
Совершенству нет предела...
    Добавлено: 20:53 11-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
by.@ztek :
в чем разница между cue_is_complete и event_cue_completed, секция кондишн.

Разница как минимум в типах cue, в которых можно использовать - событийные или не-событийные. Первые только по какому-то из доступных событий срабатывают, а во вторых проверка условий по интервалу времени. Если использовать не там где нужно, интерпретатор (или как его правильно назвать) вывалит в лог ошибку.

by.@ztek :
Как проверить событие срабатывания эпизода (вложенного) в другом скрипте?

Должно работать что-то типа
Код:
<conditions>
  <event_cue_signalled cue="md.MDScriptName.CueName"/>
</conditions>

Но опять же, по идее, эпизод должен быть событийным.
    Добавлено: 21:24 11-07-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
boojum :
Но опять же, по идее, эпизод должен быть событийным.

Что такое "событийный эпизод"? "reward" не событие? "add_cargo" не событие? "объект_уничтожен" событие?

добавлено спустя 3 минуты:
Как проверить, что эпизод в стороннем мд выполнен?

добавлено спустя 8 минут:
Не понял. Есть event_cue_cancelled и cue_is_cancelled. Событие эпизода "сброшено" и Эпизод "сброшен". В чем тут разница?

добавлено спустя 4 минуты:
Рассмотрим случай: есть скрипт А_111, в котором через 1 час назначаются переменные. Создаем скрипт В_222, в котором надо проверить, сработал ли скрипт А_111. Как сделать? Что в кондишн будет?
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (21:53 11-07-2014), всего редактировалось 3 раз(а)
    Добавлено: 21:53 11-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
by.@ztek :
Что такое "событийный эпизод"? "reward" не событие? "add_cargo" не событие? "объект_уничтожен" событие?

reward_player, add_cargo - это инструкции действия. event_object_destroyed - инструкция события. Если первые могут быть в <actions>, то событийные могут быть только в ноде conditions событийного cue. Посмотрите инструкции, начинающиеся на "event_" в libraries/common.xml.

Я так понял под "вложенным в скрипте эпизодом" подразумевался cue в другом файле md? Если нет, то разверните предыдущий вопрос, пожалуйста.

by.@ztek :
Не понял. Есть event_cue_cancelled и cue_is_cancelled. Событие эпизода "сброшено" и Эпизод "сброшен". В чем тут разница?

Разница та же. Если event_* может использоваться только в условиях событийного cue, то cue_is_cancelled может юзаться и там и сям.

Официальный мануал смотрели? Там довольно прозрачно эти фичи описаны, в том числе разницы event и non-event cues:
 Cкрытый текст   (кликните здесь для просмотра)
Non-event conditions
are checked in regular intervals. They may be based on simple values or
ranges, such as a particular in-game time having been reached or the player having a certain
amount of money. They may also be based on more complex player information, such as what
ships they own, whether the player is in a particular area or near a particular object.

Event conditions
are triggered when the corresponding event happens, such as the event that a
particular object has been targeted, attacked or destroyed. All event nodes have the prex “event_”
so you can easily determine a condition type. Non-event conditions can be used in combination
with an event, so they will be checked whenever the event happens. If a condition uses an event, it must be in the rst sub-node of the <conditions> node. It is even possible to dene multiple
alternative events that should activate the cue. The rst sub-node should be <check_any> in this
case, so only one of its sub-conditions has to be met.


by.@ztek :
Рассмотрим случай: есть скрипт А_111, в котором через 1 час назначаются переменные. Создаем скрипт В_222, в котором надо проверить, сработал ли скрипт А_111. Как сделать? Что в кондишн будет?

А что значит "сработал скрипт"? Если речь про cue, который завершил работу, то можно ловить его статус. Хоть ивентом, хоть еще как.

Вот по Вашему ТЗ иллюстрация. Второй ловит событие корректного завершения работы первого. В разных файлах и скриптах и неймспейсах, соответственно.
Код:
<mdscript name="Script_111">
  <cues>
    <cue name="A_111">
      <delay="1h"/>
      <actions>
        <set_value name="$peremennya" exact="['very', 'important', 'data']"/>
      </action>
    </cue>
  </cues>
</mdscript>
...
<mdscript name="Script_222">
  <cues>
    <cue name="A_222">
      <conditions>
        <event_cue_completed cue="md.Script_111.A_111"/>
      </conditions>
      <actions>
        <debug_text text="'Script_111.A_111 is now completed!'" filter="error"/>
      </actions>
    </cue>
  </cues>
</mdscript>


Последний раз редактировалось: boojum (23:01 11-07-2014), всего редактировалось 2 раз(а)
    Добавлено: 22:33 11-07-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
boojum :
Посмотрите инструкции, начинающиеся на "event_" в libraries/common.xml.

Да смотрел.
boojum :
Я так понял под "вложенным в скрипте эпизодом" подразумевался cue в другом файле md?

Да. И вложенный, и еще раз вложенный. Надо указывать полный путь до того эпизода? Имена эпизодов не уникальны?
boojum :
А что значит "сработал скрипт"? Если речь про cue, который завершил работу, то можно ловить его статус. Хоть ивентом, хоть еще как.

Отработал. Условия того эпизода выполнены, секция action сработала. Не могу словить я тот эпизод... Улыбка По скрипту его - потом срабатывает cancelled, мой скрипт позже ловит его -мож поэтому?

добавлено спустя 9 минут:
Уточню. Эпизод отработал давно. Событий нет.
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (23:15 11-07-2014), всего редактировалось 1 раз
    Добавлено: 23:15 11-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
by.@ztek :
Да. И вложенный, и еще раз вложенный. Надо указывать полный путь до того эпизода? Имена эпизодов не уникальны?

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

by.@ztek :
Отработал. Условия того эпизода выполнены, секция action сработала. Не могу словить я тот эпизод... Улыбка По скрипту его - потом срабатывает cancelled, мой скрипт позже ловит его -мож поэтому?

Если нужный cue свалился в complete или cancelled перед тем как активировался ловящий cue, то событие не поймается, по идее.

Хинт: Можно по сейву проверить его статус после отработки. Может, покажете код обоих эпизодов? Хотя бы фрагментарно.
    Добавлено: 23:17 11-07-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Да пожалуйста Улыбка
Ловлю вот этого
 Cкрытый текст   (кликните здесь для просмотра)
<cue name="RewardLicence">
<conditions>
<event_cue_signalled/>
</conditions>
<actions>
<!--TODO: Reward licence-->
<substitute_text text="$LogText" source="{30303,10}">
<replace string="'$ACTORNAME$'" with="$ArgonContact.knownname"/>
</substitute_text>
<write_to_logbook text="$LogText" category="missions"/>

<unlock_achievement name="PLOT_4_1" />
<do_if value="player.difficulty" min="level.hard">
<unlock_achievement name="PLOT_4_1_HARD" />
</do_if>

<add_licence faction="faction.player" licencefaction="faction.argongovernment" type="intelligence"/>
<remove_mission cue="Start"/>
</actions>
<cues>
<cue name="Cleanup">
<conditions>
<event_object_changed_zone object="player.primaryship"/>
<check_value value="player.zone != $ArgonContact.zone"/>
</conditions>
<actions>
<destroy_object object="$ArgonContact"/>
<cancel_cue cue="Start"/>
</actions>
</cue>
</cues>
</cue>

Этим
 Cкрытый текст   (кликните здесь для просмотра)
<conditions>
<check_any>
<cue_is_cancelled cue="md.Plot_Argon_Licence.Start"/>
</check_any>
</conditions>

Это уже сто первый вариант просто Улыбка прочие условия не сработали, удалил.
_________________
Совершенству нет предела...
    Добавлено: 23:29 11-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
Можно еще сразу при инициализации своего скрипта проверить:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
<do_if value="md.Plot_Argon_Licence.Start.state == cuestate.cancelled">
  <!-- делаем свое грязное дело -->
  <signal_cue cue="After_Reward"/>
</do_if>
<do_else>
  <signal_cue cue="Wait"/>
</do_else>

И если не cancelled, то ловим событие event_cue_cancelled, а потом уже делаем свое грязное дело:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
<cue name="Wait">
  <conditions>
    <event_cue_signalled/>
  </conditions>
  <cues>
    <cue name="Check">
      <conditions>
        <event_cue_cancelled cue="md.Plot_Argon_Licence.Start"/>
      </conditions>
      <actions>
        <signal_cue cue="After_Reward"/>
      </actions>
    </cue>
  </cues>
</cue>


Еще вариант: периодически чекать в несобытийном cue:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
<cue name="Wait">
  <conditions>
    <event_cue_signalled/>
  </conditions>
  <cues>
    <cue name="Check" checkinterval="5m">
      <conditions>
        <cue_is_cancelled cue="md.Plot_Argon_Licence.Start"/>
      </conditions>
      <actions>
        <signal_cue cue="After_Reward"/>
      </actions>
    </cue>
  </cues>
</cue>


PS: А с переменными в чем засада? Я тоже огреб с ними проблем.

Последний раз редактировалось: boojum (00:18 12-07-2014), всего редактировалось 1 раз
    Добавлено: 00:08 12-07-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
boojum :
А с переменными в чем засада? Я тоже огреб с ними проблем.

Мне бы их идентификаторы. Всех. Нет нормального сборника переменных. Вылавливаю из скриптов... Улыбка
п.с. скрипт-то допилю, возможно через чек_валю (check_value)...ну там немного по другому. вот мне и нужны переменные/константы.

добавлено спустя 3 минуты:
Зарезервированные переменные Улыбка
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (00:36 12-07-2014), всего редактировалось 1 раз
    Добавлено: 00:36 12-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
Насколько я успел узнать, паблик вары можно черпать только либо из глобала, либо из blackboard персонажей. А к варам cues снаружи доступа нет.
А в чем цель? Может, проще Plot_Argon_Licence пропатчить, чем щупать ее ломом снаружи?

добавлено спустя 2 минуты:
by.@ztek :
Зарезервированные переменные
Например?

Последний раз редактировалось: boojum (07:40 12-07-2014), всего редактировалось 2 раз(а)
    Добавлено: 00:45 12-07-2014   
by.@ztek
 316 EGP


Рейтинг канала: 1(9)
Репутация: 52
Сообщения: 799
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
boojum :
Например?

да тот же "player.copilot", и "unitcategory.transport" и прочее и прочее Улыбка И синтаксис их применения...в х3 было {player.cargo...} например.
_________________
Совершенству нет предела...
    Добавлено: 00:52 12-07-2014   
boojum
 374 EGP


Рейтинг канала: 4(60)
Репутация: 25
Сообщения: 905

Зарегистрирован: 28.10.2013
А, я просто Вас не так понял. Улыбка

Большую часть нужного из констант можно найти в:
* libraries/scriptproperties.xml - практически внятный справочник. Имеет таблицу стилей и открывается в браузере.
* в xsd-шках: libraries/common.xsd, общем для обоих диалектов и отдельных: md.xsd и aiscript.xsd там же. Остальные xsd в libraries тоже могут быть полезны хоть и не всегда они полны тем, что хавает ссылающийся на них конфиг.

В scriptproperties я находил большинство ответов на подобные возникающие вопросы. xsd тоже выручают, хотя бы комментариями.

Последний раз редактировалось: boojum (01:09 12-07-2014), всего редактировалось 1 раз
    Добавлено: 01:08 12-07-2014   
Канал X Rebirth -> Модовый и скриптовый отсек X Rebirth: «Ковыряем новый движок (моддинг)»
На страницу: Пред.  1, 2, 3 ... 15, 16, 17 ... 29, 30, 31  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Девушка намного проще совмещается с компом, чем мужик со швейной машинкой. (точно подметила Nadin)

  » Ковыряем новый движок (моддинг) | страница 16
Каналы: Новости | 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