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

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


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

Kirgudu, я попробую удалить все эти теги и все эти условия с инфопоршнями вообще, но, по-моему, проблема не в этом. Вылеты происходили ещё до этого. А за плагин спасибо, посмотрю.

Да, вылеты продолжаются, только что проверил.

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

Нет, я по удалял открывающие теги: опять вылет. В итоге, я закомментировал мой диалог. Всё равно вылет :(. Попробую так - заново распакую ресурсы и вставлю свой диалог, при этом ничего другого не трогая (может, я до диалога что-то мог изменить, что вряд ли). А там посмотрим.


Так, проблема решилась - диалог работает без вылетов. В чём проблема - не знаю, возможно, неправильный тег, который мне выдал плагин XML Tools (Kirgudu, спасибо!), хотя это, вроде, не должно быть движковой ошибкой. Теперь сделаю из этого диалога задание.

 

Я не просто так спросил, удалил ли ты нижний закомментированный кусок целиком. Диалог внешне был совершенно правильным. Единственное место, из-за которого мог сбоить движок, было в том комментарии, вместе со всеми непарными тегами.
Ну да ладно, проблема решилась - и хорошо. Kirgudu

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

 Доброго времени суток!   :good2: 

В своём моде для ТЧ я хочу сделать возможность освободить Шустрого не только путём уничтожения бандитов на АТП, но и посредством переговоров с ними. С этой целью я добавил им  главного, прописал в гулаг, но после этого квест сбился: после разговора с Сидоровичем индикатор активного задания переключается на "Забрать флешку у Шустрого", что должно произойти после зачистки АТП. Сами же бандиты хаотично бродят по территории АТП (только главный идёт на своё место), и, если их всё же убить, то ничего не произойдёт, ибо по заданию они уже числятся убитыми. Как это можно исправить? 
А ещё нужно, чтобы после разговора с Петрухой, в случае согласия зачищать АТП в одиночку, метка на карте переключалась на главного и появилось новое задание - "Поговорить с главой бандитов". :)
Помогите, пожалуйста. 

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

 @Staffenberg, Чтобы было новое задание нужно в диалоге выдать <task>pogovor_banda</task> например.

Но для начала, я бы тебе посоветовал почитать всё о том как делаются квесты. Если ты спрашивает о такой мелочи, то ты особо не понимаешь что делаешь. Без обид, я так же начинал и до сих пор еще многого не выучил. :P

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

Спасибо. Если честно, то это должен быть мой первый квест. :D А что с бандитами делать, чтобы они на своих местах находились и не числились убитыми раньше времени?)
 

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

Я, наверное, криворук, но всё же мне опять нужна помощь. В общем, диалог рабочий вылетов нет (один, конечно, есть, но там понятная причина). В общем, в диалоге я прописал инфопоршень, который разрешает начать вести диалог только после принесения флешки от Шустрого, но не тут-то было: этот инфопоршень как будто в упор не читается и диалог можно начать сразу после инструктажа по КПК (поэтому собственно и вылет после пары веток в диалоге). При этом появляется сразу два диалога: на поиск арта и на его сдачу одновременно, причём я прописал, чтобы второй появился только после инфопоршней первого (немного запутано объясняю, поэтому выложу диалоги):

Первый диалог, на получение задания

<dialog id="esc_art">
 <phrase_list>
  <has_info>esc_serious_talk</has_info>
  <has_info>tutorial_end</has_info>
  <phrase id="0">
   <dont_has_info>esc_art_start</dont_has_info>
   <!--<dont_has_info>esc_art_gain</dont_has_info>--> 
   <dont_has_info>esc_art_done</dont_has_info> 
   <text>esc_art_dialog_0</text>
   <next>1</next>
  </phrase>
  <phrase id="1">
   <dont_has_info>esc_art_done</dont_has_info>
   <dont_has_info>esc_arts</dont_has_info>
   <text>esc_art_dialog_1</text>
   <next>11</next>
   <next>12</next>
  </phrase>
  <phrase id="11">
   <text>esc_art_dialog_11</text>
   <give_info>esc_arts</give_info> 
  </phrase>
  <phrase id="12">
   <text>esc_art_dialog_12</text>
   <next>121</next>
   <next>122</next>
  </phrase>
  <phrase id="121">
   <precondition>escape_dialog.trader_need_art</precondition>
   <text>esc_art_dialog_121</text>
   <next>1211</next>
   <next>1212</next>
  </phrase>
  <phrase id="1211">
   <text>esc_art_dialog_1211</text>
   <next>12111</next>
  </phrase>
  <phrase id="12111">
   <text>esc_art_dialog_12111</text>
   <give_info>esc_art_start</give_info> 
  </phrase>
  <phrase id="1212">
   <text>esc_art_dialog_1212</text>
   <next>12121</next>
  </phrase>
  <phrase id="12121">
   <text>esc_art_dialog_12121</text>
  </phrase>
  <phrase id="122">
   <has_info>esc_art_done</has_info> 
   <text>esc_art_dialog_122</text>
  </phrase>
 </phrase_list>
</dialog>

 

Второй диалог, на сдачу арта

<dialog id="esc_art_done">
 <phrase_list>
  <precondition>escape_dialog.have_esc_art</precondition>
  <!--<has_info>esc_art_gain</has_info>-->
  <dont_has_info>esc_art_done</dont_has_info>
  <phrase id="0">
   <text>esc_art_done_0</text>
   <next>1</next>
  </phrase>
  <phrase id="1">
   <text>esc_art_done_1</text>
   <action>escape_dialog.give_esc_art</action>
   <give_info>esc_art_done</give_info>
  </phrase>
 </phrase_list>
</dialog>

  

Повторюсь, что инфопоршни как будто не читаются, что касается и скриптовых строк, то есть precondition и action.

 

Прошу пользоваться тегами «code» и спойлерами. Kirgudu

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

Я заспавнил на АТП нового бандита и вот к чему это привело:
1)Сбился порядок выдачи инфопоршней в квесте с освобождением Шустрого (одновременно выдаётся задание "Поговорить с Волком" и "Забрать флешку у разведчика");
2) Толик спавнится мёртвым;
3) Бандиты хаотично бродят по территории АТП (кроме того самого, которого я заспавнил, его можно увидеть на 1:43).
Подскажите, пожалуйста, как это можно исправить?

http://www.youtube.com/watch?v=p61GZ9y2MN0



Если все сделано так, как был оформлен пост - ничего удивительного.
И вообще я бы предложил почитать темы, и попробовать сделать не все сразу, а что-то одно довести до рабочего состояния. dc

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

@Vadyanchikus, элементы has_infodont_has_info и precondition могут являться подчинёнными элементами для элементов dialog и phrase, но никак не phrase_list. Понятно, что у тебя эти условия игнорируются.
Почитай, наконец, уроки построения диалогов. Поиск на форуме работает, примеров и объяснений можно найти кучу. Навскидку:
http://www.amk-team.ru/forum/index.php?showtopic=7450&p=466322
http://www.amk-team.ru/forum/index.php?showtopic=6458&p=219306
Самому же проще будет, чем тыкаться наугад и долго гадать, в чём причина ошибки.

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

Ну, так в этом-то и дело, что я сначала расположил эти элементы сначала внутри phrase, а уже потом внутри phrase_list. Ладно, тогда почитаю, потом исправлю, что не так. В любом случае, спасибо большое за помощь.

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

@Vadyanchikus, опять невнимательно читаешь. Если хочешь скрыть диалог целиком - условия для этого надо располагать внутри элемента dialog, а не внутри других подчинённых dialog элементов.
 
Дискуссия уже выходит за рамки топика. Если будут вопросы по квестам - это одно. Если по созданию работающих диалогов - стоит переместиться в более подходящую тему.
 


Диалоги, зачастую, - неотъемлемая часть квеста. Так что, как по мне, тема вполне подходящая.

FantomICW

+1. dc

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

Это опять я. В общем, у меня проблемы с заданием: оно не создаётся в КПК (да и вообще не появляется каких-либо признаков, что я его взял), скрипт задания на выдачу награды не работает (то есть вообще ничего не происходит, что есть скрипт, что его нет). Кто может помочь - помогите, всё здесь: https://yadi.sk/d/KZfrN-NqWmoeJ. Мои изменения я пометил так: ***...***. Тексты я, пожалуй, скидывать не буду, ибо они не нужны.

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

@Vadyanchikus, по самому квесту тебе ответит кто-нибудь ещё (ТЧ не моя епархия). Но вот что бросилось мне в глаза, так это ошибка в твоём скрипте.

function give_esc_art(first_speaker, second_speaker)
  local artefact=first_speaker:object("af_vyvert")
  if artefact==nil then dialogs.relocate_item_section(second_speaker, "af_gravi", "out")
  else dialogs.relocate_item_section(second_speaker, artefact, "out")
  end
  dialogs.relocate_money(second_speaker, 1500, "in")
end

Что-то мне подсказывает, что функция relocate_item_section принимает на вход во втором аргументе либо строку (секцию), либо объект. Скорее строку, если судить по аналогичной функции в ЧН. А ты пытаешься в зависимости от условия передать и то и другое.
Второй вызов должен выглядеть так:

else dialogs.relocate_item_section(second_speaker, "af_vyvert", "out")

Будь внимательней.

 

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

Хм... Хорошо, поправлю. Тогда ещё один вопрос: почему диалог на выдачу задания не выдаётся сразу после разговора с Сидоровичем про флешку. Раньше я мог говорить с ним после отдачи флешки. Я решил облегчить себе жизнь и выдать диалог сразу после получения задания про флешку, поэтому стёр соответствующий тэг. Но игра всё равно выдаёт диалог только после выполнения задания, никак не раньше, как мне надо. В чём причина?
 

Всё, понял. Там с инфопоршнем одним намудрили, я не заметил.

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

Семён Семёныч! Условия появления диалога проверяй сам, какое-то из них не выполняется, вот и диалог не виден.

А вот что у тебя здесь?

<info_portion id="esc_art_start"></info_portion>
<task>esc_art</task>
<article>zone_artifact_af-vyvert</article>
<article>zone_artifact_af-gravi</article>
<article>zone_anomalies_gravi</article>
С каких это пор элементы article и task являются самостоятельными элементами в данном конфиге? Ну посмотри хоть пониже, в том же файле есть рабочие примеры.

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

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

 

 

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

Спасибо большое, помогло. Есть теперь несколько недочётов, но они не приводят к вылетам, надеюсь, сам найду решение (если интересно, то проблемы следующие: нет одного пункта в задании в КПК (думаю, я знаю, в чём проблема), задание не переносится в Выполненные и опять же не забирается артефакт Выверт и отдаётся артефакт Грави, которого у меня в инвентаре нет).

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

и опять же не забирается артефакт Выверт и отдаётся артефакт Грави, которого у меня в инвентаре нет

Чуток на эту тему: ф-ция типа relocate_item_section НЕ проверяет наличие необходимого предмета, а передает его путем создания\спавна. Следовательно, необходимо использовать какой-то прекондишн на проверку - а есть ли у ГГ требуемый предмет в инвентаре(то-бишь в рюкзаке). Если есть - передаем, если нет - блокируем ветку в диалоге на передачу предмета.

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

Чуток на эту тему: ф-ция типа relocate_item_section НЕ проверяет наличие необходимого предмета, а передает его путем создания\спавна. Следовательно, необходимо использовать какой-то прекондишн на проверку - а есть ли у ГГ требуемый предмет в инвентаре(то-бишь в рюкзаке). Если есть - передаем, если нет - блокируем ветку в диалоге на передачу предмета.

Хм... Я понял, о чём ты. Можно попробовать. Хотя одно условие уже есть, но используется не при выдаче награды, а при выполнении задания. Единственное, что я никак не пойму - задание механика Свободы на поиск водки (он потом прицел отдаёт). При выдаче награды используется как раз relocate_item_section, и никаких условий в скрипте нет. Может, у меня проблема из-за нескольких вариантов отдаваемого предмета?

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

Всем привет,в создании квестов столкнулся с проблемой : создал непися с диалогами и квестами(диалоги, квесты  и инфопоршни работают) НПС на примере Кости, т.е. с такой логикой в кастом.дата :

custom_data = <<END
[smart_terrains]

bar_kornet_camp = true
esc_kornet_brigada = true
road_kornet_brigada = true
road_kornet_brigada_end = true

bar_kornet_camp = {-kornet_esc}
esc_kornet_brigada = {+kornet_esc -kornet_road}
road_kornet_brigada = {+kornet_road -kornet_road_kamp}
road_kornet_brigada_end = {+kornet_road_kamp}

[spawner]
cond = {+kornet_bar}
END
story_id = 10009
spawn_story_id = 10009

 

 

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

Изменено пользователем Romann
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

bar_kornet_camp = true

esc_kornet_brigada = true

road_kornet_brigada = true

road_kornet_brigada_end = true

это лишнее, ведь ниже у тебя указаны условия активности для всех этих смартов.

 

 

а сразу ломится,почему-то на Агропром и там сидит

Какой-то из вышеперечисленных смартов находится на Агро ? И где именно он "сидит" - в каком гулаге ?

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

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

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

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

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

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

Войти

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

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

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