Перейти к контенту

Создание квеста


Рекомендуемые сообщения

 

 

Знать-бы кто такой этот потап

Вот если бы изучил историю АМК мода, то такого вопроса не задавал.

  • Нравится 1
  • Согласен 1

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

Ссылка на комментарий

Что-то торможу... Снимите меня с ручника, кто-нибудь, плиз !

Имеется диалог:

 

 

<dialog id="escape_shustryi_story2">
<phrase_list>

<phrase id="0">
<text>escape_shustryi_story2_0</text>
<has_info>info_artmod_cristall_flower_mincer</has_info>
<dont_has_info>shustriy_outfit_start</dont_has_info>
<next>1</next>
</phrase>

<phrase id="1">
<text>escape_shustryi_story2_1</text>
<next>2</next>
</phrase>

<phrase id="2">
<text>escape_shustryi_story2_2</text>
<next>3</next>
</phrase>

<phrase id="3">
<text>escape_shustryi_story2_3</text>
<next>4</next>
</phrase>

<phrase id="4">
<text>escape_shustryi_story2_4</text>
<next>5</next>
</phrase>

<phrase id="5">
<text>escape_shustryi_story2_5</text>
<next>6</next>
</phrase>

<phrase id="6">
<text>escape_shustryi_story2_6</text>
<next>7</next>
</phrase>

<phrase id="7">
<text>shustriy_find_item_text</text>
<next>8</next>
<next>9</next>
</phrase>

<phrase id="8">
<text>escape_shustryi_story2_8</text>
<action>escape_dialog.shustriy_outfit_start</action>
</phrase>

<phrase id="9">
<text>escape_shustryi_story2_9</text>
</phrase>

</phrase_list>
</dialog>

Первоначально там был только текст с последней фразой phrase id="6". Работало. Добавил проверки <has_info>info_artmod_cristall_flower_mincer</has_info> и <dont_has_info>shustriy_outfit_start</dont_has_info>, а также строки начиная с <phrase id="7">.

Появились добавленные строки. Но, при этом, оно работает при ОТСУТСТВИИ info_artmod_cristall_flower_mincer и не вызывается escape_dialog.shustriy_outfit_start(). То есть, текст есть, а action в этой фразе не выполняется.

Что ему надо, чтобы оно начало проверять наличие/отсутствие info и вызывать функцию ?

 

upd: вопрос про функцию снимается, точнее изменяется на "почему оно НЕ ВЫЛЕТАЕТ при опечатке в имени функции ?"

По проверке условий я так и не понял, чем ему не нравятся условия в первой фразе, а не перед первой фразой ?

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

 

 

почему оно НЕ ВЫЛЕТАЕТ при опечатке в имени функции ?

Вылетать будет, если допустить опечатку в имени функции под тегом precondition. Причем вылетит без лога в виде "FATAL ERROR"

А в экшенах, то бишь action, если там опечатка и такого скрипта/такой функции нет, то тупо ничего не произойдет, вообще.

В каком-то справочнике вылетов я про это уже писал давно. В вылетах без лога, кажется.

 

 

 

По проверке условий я так и не понял, чем ему не нравятся условия в первой фразе, а не перед первой фразой ?

проверка доступности фразы (пусть даже первой), и проверка доступности диалога - не одно и то же. Если сам диалог доступен то в нем не должно возникать ситуаций, когда никакие дальнейшие фразы не доступны, иначе опять вылет.

 

зы. Вообще эта маразматическая система диалогов у меня следующая в очереди на переделку, после ПДА :)

  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Если переделывать, так это надо сразу и конвертер во что-то более вменяемое, чем кучи xml со странным.

 

Кстати, когда займешься - свистни - дам менеджер диалогов слегка почищенный от извращений. Все легче будет.

Увы, дальше легкой чистки, так, чтобы не трогалась структура xml, не пошел. Испугался. 8(

Ссылка на комментарий

Ну вообще то у меня диалоги УЖЕ пишутся не в xml. Хотя этого мало, надо еще многое сделать.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Ну где их еще написать то можно, не в скрипте же - квестописатели взвоют :)

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Удаляю сюжет для своей модификации значит, а тут такой вылет

 

Expression : no_assert

Function : CXML_IdToIndex::GetById
File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h
Line : 112
Description : item not found, id
Arguments : storyline_gunslinger

 

помогите пожалуйста 
Ссылка на комментарий

@Zander_driver,

по скрипту:

function barik4_5_news()
news_manager.send_tip(db.actor, "%c[255,255,128,128]".."".."\\n".."%c[default]Вперёд парни! Пора кровушку проливать!".."".."\n", nil, nil, 10000)
end

можно переместить буковки в тестовый док. Что это даст? Мы добавим в фпс? Сможем упростить дело переводчикам на другой язык?..

Всяко дело хорошо, когда от него есть калым. Каков твой калым? Я не понял, честно в чём суть. Хочу понять.

Ссылка на комментарий

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

Вспомните как выглядит диалог в xml. удобно его писать там? Удобно вникать, где что?
А если предположим, когда-то ранее созданный диалог, да еще с довольно сложной структурой, изменить-доработать захотелось, удобно ли это будет делать?
Может быть у кого то другое мнение, незнаю. Лично для меня на все эти вопросы ответом оказалось "Нет". сама форма представления диалогов в xml - громоздкая и неудобная на мой взгляд. В ltx-конфигах все получается компактнее, нагляднее и удобнее. И существенно проще для последующего редактирования, если понадобится.
Кроме того, несколькими постами выше уже описывалась ситуация, как себя ведет в xml составленный диалог, в случае банальных опечаток. либо тихо-мирно игнорирует ошибку, не делая ничего, там где вообще-то надо что-то делать (action), и не давая модмейкеру ни намека, почему же у него что-то не работает, либо так же тихо-мирно валится на рабочий стол, опять же не давая ни намека почему конкретно, т.к. лог-файл пуст. Искать ошибку телепатически, это же безумно удобно, да? а я почему то решил что нет...
Если слегка призадуматься, несложно понять, что при формировании диалога скриптом, оба случая несложно отловить еще на этапе формирования диалога, проверив существуют ли заявленные функции, и - внимание! - выгрузить игру на рабочий стол с предельно ясной и подробной информацией в логе, что, где, почему. Там же можно отловить и ошибки криво составленного диалога, которые насколько я помню, присутствовали даже в O.G.S.E. И ведь такую малость надо сделать чтоб искоренить саму возможность таких ошибок, но - "никому не надо"...

И к слову о переводчиках на другой язык, сами тексты - из xml-файлов переносить вовсе не требуется.

Изменено пользователем Zander_driver
  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вспомните как выглядит диалог в xml. удобно его писать там? Удобно вникать, где что?

Ну вроде уже давно есть вот это:

 

 

и все люди, которые пишут сюжеты советуют ей пользоваться. Так же еще Malandrinus что-то делал в этом направлении.

 

Вообще эта маразматическая система диалогов у меня следующая в очереди на переделку, после ПДА

Я так понимаю, вместо того, чтобы в пару мест вставить вылеты, и перенести хранение диалогов в другое место (чтобы ин-гейм перезагружать их), ты решил вообще все с нуля сделать?

 

Если и делать какой-то интерфейс для диалогов, то это например редактор ин-гейм разве что, но только после того, как сделать вот то, о чем я выше сказал.

Изменено пользователем Kirgudu
Добавлено Kirgudu,

Карлан, ну как же так, а видео под спойлер спрятать?

Исправил.

  • Согласен 1
Ссылка на комментарий

@Карлан, Впервые есть признаки того, что где-то я с тобой соглашусь.

 

 

Я так понимаю, вместо того, чтобы в пару мест вставить вылеты
Вставь - все тебе спасибо скажут.

а пока имеем то что имеем.

  • Нравится 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Есть задание, у него в последнем подзадании ставится метка на объект этого подзадания. Так вот проблема в том, что после завершения этого подзадания(выдается и-п agr_krot_task_complete), и соответственно всего задания, метка не снимается с объекта. А само задание завершается нормально - в ПДА переносится в раздел "Выполненные" и все пункты задания отмечены зеленым.

Код этого последнего подзадания:

<objective>
<text>agr_meet_krot_band_2</text>
<icon>ui_iconsTotal_agr_meet_krot_band</icon>
<map_location_type hint="agr_take_krots_info_hint">green_location</map_location_type>
<object_story_id>agr_krot</object_story_id>
<map_location_hidden>1</map_location_hidden>
<infoportion_complete>agr_krot_task_complete</infoportion_complete>
</objective>

Не могу понять, что-же в нем не так ?

Ссылка на комментарий
4-ех инфопорций?
function portions()
db.actor:has_info_portion("поршень1") and
db.actor:has_info_portion("поршень2") and
db.actor:has_info_portion("поршень3") and
db.actor:has_info_portion("поршень4") then
db.actor:give_info_portion("поршень, завершающий квест")
end

Всё просто. Аналогично и с другим количеством поршней.

Изменено пользователем BoBaH_671
  • Спасибо 1

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

 

 

Как сделать так, что-бы квест выполнился при наличии 4-ех инфопорций?

Использовать для проверки условия выполнения задания ф-цию:<function_complete>скрипт_файл.имя_функции</function_complete>

В самой ф-ции проверять выдачу всех необходимых и-п, примерно так как и подсказал BoBaH_671, но все-же по другому:

function имя_функции()
if db.actor:has_info_portion("и-п1") and db.actor:has_info_portion("и-п2") and db.actor:has_info_portion("и-п3") and db.actor:has_info_portion("и-п4") then
return true
end
return false
end
Ссылка на комментарий

Всем здорова, не знал куда написать, поэтому пишу сюда.
Хотел поставить диалог с квеста который уже отработан, так как что-то пошло не так, а переигрывать не хотел, но диалога нет. Можно как-нибудь диалог прописать, или я не правильно прописывал(раньше диалоги прописывал, все нормально работало)

ArtFil.gif

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...