|
|
|
Канал X3: Terran Conflict »
Модовый и скриптовый отсек X3: Terran Conflict: «Mission Director aka MD (Новый квестовый движок от Эгософта)» |
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Гм. И всё равно не понятно.
Давай лучше по схеме.
Запуск скрипта->объявление эпизода(и там-же 20 минут задержки)->продолжение эпизода через 20 минут->10 минутный тайминг->выполнение остальной части эпизода.
_________________ Дружбомагия пролюблена... |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
Dark_XSM : |
Гм. И всё равно не понятно.
|
Попробую объяснить по-другому. Параметр instantiate="static" указывает движку, что во время игры надо создавать новые экземпляры данного эпизода. Параметр delay="20m" указывает, что эти самые экземпляры надо создавать с интервалом 20 минут. После того как экземпляр эпизода создан, он начинает исполняться вне зависимости от других экземпляров того же эпизода. В частности, этот самый экземпляр эпизода ждёт указанное в секции <timing> время.
Dark_XSM : |
Давай лучше по схеме.
Запуск скрипта->объявление эпизода(и там-же 20 минут задержки)->продолжение эпизода через 20 минут->10 минутный тайминг->выполнение остальной части эпизода.
|
Э-э... не понял смысла данного текста.
|
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Криптон : |
Dark_XSM : |
Гм. И всё равно не понятно.
|
Попробую объяснить по-другому. Параметр instantiate="static" указывает движку, что во время игры надо создавать новые экземпляры данного эпизода. Параметр delay="20m" указывает, что эти самые экземпляры надо создавать с интервалом 20 минут. После того как экземпляр эпизода создан, он начинает исполняться вне зависимости от других экземпляров того же эпизода. В частности, этот самый экземпляр эпизода ждёт указанное в секции <timing> время.
|
Э... т.е при запуске игры через создаётся первая копия, через 10 минут запускается первая копия, ещё через 10 минут создаётся вторая копия, через 10 минут запускается вторая, ещё через 10 создаётся третяя и т.д?
В таком случае получается что рейтинги первый раз установятся через 10 минут после начала игры, и через каждые 20 минут будут ставиться снова.
Всё правильно?
Криптон : |
Э-э... не понял смысла данного текста.
|
Проехали.
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (11:32 13-04-2009), всего редактировалось 2 раз(а) |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
Dark_XSM : |
В таком случае получается что рейтинги первый раз установятся через 10 минут после начала игры, и через каждые 20 минут будут ставиться снова.
Всё правильно?
|
Да, только рейтинги у меня ещё и при начале игры "устанавливаются" (в другом эпизоде).
|
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Новый вопрос: как сделать что бы MD работал только если игрок выбрал определённый старт? Мне к примеру надо что бы Хаакские миссии работали только в нём, а вот как это делается я не понял.
Ещё не понял как запустить скрипт и впихнуть нужные параметры.
У меня есть скрипт Khaak.M1, у него параметры "CreateSector" тип "значение" и "Owner" тип "значение"
В MD такого нету. Там есть "корабль", "станция" и т.д.
Параметры типа "string" и "integer" тоже не прошли.
И последнее: если я правильно понял, то после запуска MD эпизоды идуд последовательно, однако при загрузке игры, MD перезагружаются. Получается что мои миссии после каждой загрузки будут сбрасываться в начало?
P.S Вчера 6 часов убил что бы создать тестовую миссию в которой надо было всего-то уничтожить корабль висящий в космосе, и сесть на станцию.
Задание фигня, а сколько радости было когда всё получилось
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (10:00 15-04-2009), всего редактировалось 1 раз |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
Dark_XSM : |
Новый вопрос: как сделать что бы MD работал только если игрок выбрал определённый старт? Мне к примеру надо что бы Хаакские миссии работали только в нём, а вот как это делается я не понял.
|
В первом эпизоде в секции условий нужно добавить нечто такое:
Код: |
<check_value value="{player.gamestart}" exact="номер_определённого_старта"/>
|
Dark_XSM : |
Ещё не понял как запустить скрипт и впихнуть нужные параметры.
У меня есть скрипт Khaak.M1, у него параметры "CreateSector" тип "значение" и "Owner" тип "значение"
В MD такого нету. Там есть "корабль", "станция" и т.д.
Параметры типа "string" и "integer" тоже не прошли.
|
Сектор можно передавать при помощи двух чисел (координаты сектора), правда скрипт придётся подредактировать. А "Owner" - это что?
Dark_XSM : |
И последнее: если я правильно понял, то после запуска MD эпизоды идуд последовательно, однако при загрузке игры, MD перезагружаются. Получается что мои миссии после каждой загрузки будут сбрасываться в начало?
|
Тут я точно не знаю, но у меня создалось впечатление, что уже стартовавшие эпизоды кэшируются, а при сохранении записываются в файле сохранения. Сюжетные-то миссии ведь написаны на MD и после загрузки сохранёнки вовсе не сбрасываются. "Перезагрузка" MD, по моим впечатлением, заключается в том, что при загрузке игры производится чтение MD-скрипта из файла; эпизоды, судя по всему, идентефицируются только по заголовку (возможно, ещё и по номеру версии); если эпизод с данным заголовком исполнялся при сохранении игры, то он загружается из сохранёнки; если обнаружен новый эпизод, то он запускается на исполнение.
добавлено спустя 6 минут:
Кстати, "последовательность" выполнения эпизодов вовсе не обязательна, это зависит от того, что записано в секции условий (condition). Если эпизод вложен в другой, родительский эпизод, это означает лишь то, что дочерний эпизод не запуститься, пока не будут выполнены условия родительского. Как только условия родительского выполнены, дочерний тут же стартует и начинает проверять свои условия; если у него нет собственных условий или они уже выполнены, то дочерний эпизод не станет ожидать, пока родительский полностью выполнит все действия, прописанные в его секции <action>.
Последний раз редактировалось: Криптон (10:25 15-04-2009), всего редактировалось 2 раз(а) |
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Криптон : |
В первом эпизоде в секции условий нужно добавить нечто такое:
Код:
<check_value value="{player.gamestart}" exact="номер_определённого_старта"/>
|
Блин. Это же так очевидно было Расстроен
Криптон : |
Сектор можно передавать при помощи двух чисел (координаты сектора)
|
Ну не-ет, так не интересно. Это мне придётся половину скриптов мода редактировать.
Криптон : |
А "Owner" - это что?
|
"Владелец". Раса-владелец.
Криптон : |
Тут я точно не знаю...
|
На основе твоих предположений у меня появилось своё: MD перезагружается если нет запущенных копий. Т.е если MD во время игры не дошёл до тэга </director>, он не будет перезапущен.
Проблема типа "Как вообще запустить повторный запуск" осталась.
Я думаю, как вариант, можно создать глобальную переменную, и в конце всех заданий поставить равной 1.
Криптон : |
Кстати, "последовательность" выполнения эпизодов вовсе не обязательна...
|
А другой эпизод с условиями разве не будет проверять их? Плохо...
добавлено спустя 9 минут:
Не-е, по моему ты не прав. Конструкция моего MD сейчас такая:
Код: |
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="director.xls" type="text/xls" ?>
<director name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
<cues>
<cue name="DX_set_base_par" game="all"...</cue>
<cue name="DX_MISSION_0">...</cue>
<cue name="DX_MISSION_COMPLETE">...</cue>
<cue name="DX_MISSION_ABORT">...</cue>
<cue name="DX_MISSION_FAIL">...</cue>
<cue name="DX_MISSION_RESET">...</cue>
</cues>
</director> |
Всё работает при выполнении неких условий. По моему эпизод "DX_MISSION_1" можно будет сделать зависимым от выполнения эпизода "DX_MISSION_COMPLETE"
Независимо запускаются разные Массивы эпизодов, заключённые в тэги <cues></cues>
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (10:40 15-04-2009), всего редактировалось 4 раз(а) |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
Dark_XSM : |
Ну не-ет, так не интересно. Это мне придётся половину скриптов мода редактировать.
|
К сожалению, в MD есть очень много таких "не интересных мест". Вот, к примеру, отсутствие нормальных циклов... фигня с диалогами, собранными в один файл... невозможность получить результат из обычного скрипта...
Dark_XSM : |
"Владелец". Раса-владелец.
|
Я так понимаю, их может быть всего две - хааки и игрок? Можно передавать как число.
Dark_XSM : |
На основе твоих предположений у меня появилось своё: MD перезагружается если нет запущенных копий. Т.е если MD во время игры не дошёл до тэга </director>, он не будет перезапущен.
|
Ну не знаю, если добавить эпизод с новым названием, то при загрузке игры он начинает выполняться. Если я что-то меняю в одном из старых эпизодов, я его просто переименовываю.
Dark_XSM : |
Проблема типа "Как вообще запустить повторный запуск" осталась.
Я думаю, как вариант, можно создать глобальную переменную, и в конце всех заданий поставить равной 1.
|
Этого места не понял. Что значит "запустить повторный запуск"?
Dark_XSM : |
А другой эпизод с условиями разве не будет проверять их? Плохо...
|
Опять-таки не очень понятен смысл. Каждый эпизод проверяет свои условия. Проверка условий дочерних эпизодов не начинается, пока не выполнятся условия родительского эпизода.
добавлено спустя 4 минуты:
Dark_XSM : |
Всё работает при выполнении неких условий. По моему эпизод "DX_MISSION_1" можно будет сделать зависимым от выполнения эпизода "DX_MISSION_COMPLETE"
|
Любой эпизод можно сделать зависимым от выполнения другого эпизода. Достаточно в секцию условий добавить строку <cue_completed cue="имя_эпизода"/>
Dark_XSM : |
Независимо запускаются разные Массивы эпизодов, заключённые в тэги <cues></cues>
|
Может быть, я точно не знаю.
Последний раз редактировалось: Криптон (10:52 15-04-2009), всего редактировалось 2 раз(а) |
|
|
vudu 155 EGP
Рейтинг канала: 6(340) Репутация: 28 Сообщения: 253
Зарегистрирован: 19.02.2009 |
|
Криптон : |
Вот, к примеру, отсутствие нормальных циклов...
|
Код: |
<do_all exact="3" counter="Count">
<show_help text="Obmanivat' ne horosho {counter@Count}" duration="9999"/>
</do_all> |
Код: |
<find_gate group="gates" multiple="1"/>
<do_all exact="{group.object.count@gates}" counter="Count">
<show_help text="{group.object.{counter@Count}.name@gates}" duration="9999"/>
</do_all>
|
|
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Криптон : |
Этого места не понял. Что значит "запустить повторный запуск"?
|
Да я чёт тож не понял. Отвлекли...
"Запретить повторный запуск" имелось в виду.
Криптон : |
Опять-таки не очень понятен смысл.
|
Проехали. Работает как мне надо и ладно.
Криптон : |
Любой эпизод можно сделать зависимым от выполнения другого эпизода. Достаточно в секцию условий добавить строку <cue_completed cue="имя_эпизода"/>
|
и
Криптон : |
Может быть, я точно не знаю.
|
С эпизодами которые я продемонстрировал так сделать нельзя. Будет... не знаю чё будет, я такую глупость не делал.
Сделаю первую миссию, выложу файл, глянешь что именно я имел в виду.
Вот чё-то я поста который перед моим не понял...
Ещё один вопрос, забыл задать: как прибавить к очкам рейтинга новые очки рейтинга? К примеру есть 500, а я хочу что бы стало 700. Как это сделать?
Да, и как название сектора вытащить?
{sector.name@DX_Sector} показывает "Sector 15-18", как собсно и любая другая комбинация.
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (16:21 15-04-2009), всего редактировалось 1 раз |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
vudu : |
"Obmanivat' ne horosho {counter@Count}"
|
Извиняюсь. И вообще, я не обманывал, а искренне заблуждался. Спасибо за разъяснения.
Уважаемый vudu, а не разъясните ли вы вопрос с порядком выполнения эпизодов? Мне было бы интересно.
Dark_XSM : |
Да, и как название сектора вытащить?
{sector.name@DX_Sector} показывает "Sector 15-18", как собсно и любая другая комбинация.
|
Видимо, дело в том, что сектора с координатами x=15 и y=18 не существует.
Dark_XSM : |
Ещё один вопрос, забыл задать: как прибавить к очкам рейтинга новые очки рейтинга? К примеру есть 500, а я хочу что бы стало 700. Как это сделать?
|
Как-нибудь так:
Код: |
<reward_player>
<notoriety>
<relation race="argon" operation="add" exact="200"/>
</notoriety>
</reward_player> |
Или речь шла о торговом или боевом рейтинге?
Тогда так:
Код: |
<reward_player>
<traderank exact="200"/> <!-- Если я ничего не путаю, то эта команда именно прибавляет указанное значение к текущему рангу -->
</reward_player> |
Последний раз редактировалось: Криптон (17:56 15-04-2009), всего редактировалось 1 раз |
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Криптон : |
Видимо, дело в том, что сектора с координатами x=15 и y=18 не существует.
|
Существует-существует. Он на все сектора так реагирует.
Название выводимое в сообщение я вытащить смог, а вот целью миссии сектор сдлеать не могу.
<Добавлено: и правда я тупой. Я забыл что новые сообщения в журнал добавляются сверху, а не снизу. Сектор-то на самом деле 18-15 >
Криптон : |
Как-нибудь так:
Код: |
<reward_player>
<notoriety>
<relation race="argon" operation="add" exact="200"/>
</notoriety>
</reward_player> |
|
Пытался так. Результата 0
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (18:06 15-04-2009), всего редактировалось 3 раз(а) |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
По поводу сектора.
Такая конструкция
Код: |
<find_sector x="15" y="5" name="this.s1"/>
<incoming_message text="{sector.name@this.s1}"/> |
работает, только что проверил.
Dark_XSM : |
Пытался так. Результата 0
|
А так:
Код: |
<reward_player>
<notoriety>
<relation race="argon" operation="set" exact="700"/>
</notoriety>
</reward_player> |
Последний раз редактировалось: Криптон (18:17 15-04-2009), всего редактировалось 1 раз |
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Криптон : |
Dark_XSM : |
Пытался так. Результата 0
|
А так:
Код: |
<reward_player>
<notoriety>
<relation race="argon" operation="set" exact="700"/>
</notoriety>
</reward_player> |
|
Да не принимает он цифровые значения. Там строковые переменные стоят, только их он и понимает. У меня ни одна операция ни с одним числом не сработала.
Да и вообще, перебор в MD с переменными вышел.
Зачем-то 6 разных переменных, в сущности делающих одно и то-же, но работающих при разных условиях. Бред.
Кстати, Криптон, вместо создания копий и запуска их через задержку, можно просто эпизод перезапускать командой <reset_cue cue="CueName"/>
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (19:29 15-04-2009), всего редактировалось 1 раз |
|
|
vudu 155 EGP
Рейтинг канала: 6(340) Репутация: 28 Сообщения: 253
Зарегистрирован: 19.02.2009 |
|
Криптон : |
а не разъясните ли вы вопрос с порядком выполнения эпизодов
|
я не очень сам вопрос понял..
а вообще приблизно так: загрузили cue, проверили condition, выполнили action, пометили как completed и больше его никто не трогает
если же instantiate="static" то так: загрузили cue, проверили condition, если выполнилось - создаем instance (копию этого cue со всем что в него вложено), выполнили action этого инстанса, пометили его же как completed и больше его никто не трогает, при этом основной cue остается активным и сидит проверяет себе условия дальше и плодит инстансы
Цитата: |
Параметр delay="20m" указывает, что эти самые экземпляры надо создавать с интервалом 20 минут.
|
если уточнить формулировку: delay просто задает задержку при проверке <condition>, а задержка перед созданием инстанса это уже побочный эффект
Цитата: |
вместо создания копий и запуска их через задержку, можно просто эпизод перезапускать командой <reset_cue cue="CueName"/>
|
вместо создания копий и запуска их через задержку, можно нужно просто эпизод перезапускать командой
Последний раз редактировалось: vudu (02:51 16-04-2009), всего редактировалось 1 раз |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
vudu : |
я не очень сам вопрос понял...
|
К примеру, есть вот такая структура эпизодов:
Код: |
<cue name="cue1">
<cues>
<cue name="cue1_1"/>
<cue name="cue1_2">
<cues>
<cue name="cue1_2_1"/>
<cue name="cue1_2_2"/>
</cues>
</cue>
<cue name="cue1_3"/>
</cues>
</cue>
<cue name="cue2"/>
|
У каждого из эпизодов есть своя секции <condition> и <action>.
Так вот, вопрос: в каком порядке будут запускаться эти эпизоды? Особенно интресно, будут ли какие-либо эпизоды ожидать выполнения секции <action> каких-либо других эпизодов, если такое ожидание НЕ задано в секции условий?
добавлено спустя 1 минуту:
vudu : |
вместо создания копий и запуска их через задержку, можно нужно просто эпизод перезапускать командой
|
А почему? К тому же, бывают случаи, когда необходимо параллельное выполнение нескольких копий одного эпизода.
Последний раз редактировалось: Криптон (20:55 15-04-2009), всего редактировалось 1 раз |
|
|
vudu 155 EGP
Рейтинг канала: 6(340) Репутация: 28 Сообщения: 253
Зарегистрирован: 19.02.2009 |
|
как только выполнится condition родительского cue, тут же параллельно запускаются на выполнение дочерние cue, соответственно если ожидания нет - то все cue фактически запустятся одновременно, отсюда кстати растут ноги жесткого лага секунд через 5 после влета в сектор - это одновременно генерится несколько миссий
потому, что завершенный инстанс никуда не денется из памяти, сэйвов и т.п. если его специально не кэнсельнуть
Цитата: |
К тому же, бывают случаи, когда необходимо
|
когда необходимо - ключевая фраза
Последний раз редактировалось: vudu (21:25 15-04-2009), всего редактировалось 1 раз |
|
|
Криптон 995 EGP
Рейтинг канала: 9(1038) Репутация: 164 Сообщения: 2665 Откуда: Москва Зарегистрирован: 05.04.2008 |
|
vudu : |
если его специально не кэнсельнуть
|
Ага. Списибо. А существуют какие-нибудь особенности употребления этого самого <cancel_cue>? И чем оно отличается от <destroy_cue>?
|
|
|
Dark_XSM 170 EGP
Рейтинг канала: 6(336) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009 |
|
Ладно люди, написали много, а мне реально помогли только один раз фразой "такого сектора нет".
Написал я две Хаакскии миссии, и что-то расхотелось продолжать
Задаю последний вопрос, если не получу ответа, буду сам разбираться.
К примеру я делаю такую штуку
Код: |
<set_objective cue="DX_MISSION_0" title="{123350,10}" chapter="123350,0" noabort="1">
<briefing cue="DX_MISSION_0" step="2"/>
<mission level="trivial" discipline="XXXXP"/>
<reward other="{1903,2014}"/>
<flyto object="DX_Sector2">
<sector sector="DX_Sector2" x="18" y="14"/>
</flyto>
</set_objective> |
Она заменит собой первую, или добавится в список заданий?
"Первая", это та у которой параметр "step" равно 1.
_________________ Дружбомагия пролюблена... |
|
|
vudu 155 EGP
Рейтинг канала: 6(340) Репутация: 28 Сообщения: 253
Зарегистрирован: 19.02.2009 |
|
Цитата: |
А существуют какие-нибудь особенности употребления этого самого <cancel_cue>
|
не замечал вроде ничего особенного
Цитата: |
И чем оно отличается от <destroy_cue>
|
а это самому интересно
Последний раз редактировалось: vudu (12:30 16-04-2009), всего редактировалось 4 раз(а) |
|
|
|
|
|
Канал X3: Terran Conflict ->
Модовый и скриптовый отсек X3: Terran Conflict: «Mission Director aka MD (Новый квестовый движок от Эгософта)» |
|