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

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

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

strelok200 Ты как создаёшь квест? Через "Есть ли у тебя работа?" или как нормальный квест, написаный вручную?

 

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

Тогда нормал. Выложи куски кода твоего квеста под спойлер...

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

 

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

<dialog id="monoh_razg">

<has_info>monohrom_quest</has_info>

<dont_has_info>monohrom_comp</dont_has_info>

<phrase_list>

<phrase id="0">

<text>monoh_razg_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>monoh_razg_1</text>

<next>2</next>

</phrase>

<phrase id="2">

<text>monoh_razg_2</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>monoh_razg_3</text>

<next>4</next>

</phrase>

<phrase id="4">

<text>monoh_razg_4</text>

<next>5</next>

</phrase>

<phrase id="5">

<text>monoh_razg_5</text>

<give_info>monohrom_comp</give_info>

</phrase>

</phrase_list>

</dialog>

<dialog id="shulgan">

<has_info>monohrom_comp</has_info>

<dont_has_info>shulgan_qvest</dont_has_info>

<phrase_list>

<phrase id="0">

<text>shulgan_0</text>

<next>1</next>

</phrase>

<phrase id="1">

<text>shulgan_1</text>

<next>2</next>

</phrase>

<phrase id="2">

<text>shulgan_2</text>

<next>3</next>

</phrase>

<phrase id="3">

<text>shulgan_3</text>

<next>4</next>

</phrase>

<phrase id="4">

<text>shulgan_4</text>

<give_info>shulgan_qvest</give_info>

<action>new_dialog.spawn_dolg1</action>

<action>new_dialog.spawn_dolg2</action>

<action>new_dialog.spawn_shulgan</action>

<action>new_dialog.spawn_kostoprav</action>

</phrase>

</phrase_list>

</dialog>

 

 

 

<game_task id="kostoprav_quest">

<title>Освободить Костоправа из лап долговцев</title>

<objective>

<text>Освободить Костоправа из лап долговцев</text>

<icon>ui_iconsTotal_kill_stalker</icon>

<infoportion_complete>kostoprav_svoboden</infoportion_complete>

</objective>

<objective>

<text>Убить долговцев</text>

<icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon>

<infoportion_set_complete>dead_shulgan</infoportion_set_complete>

</objective>

<objective>

<text>Поговорить с Костоправом</text>

<map_location_type hint="Костоправ">blue_location</map_location_type>

<object_story_id>esc_noobik</object_story_id>

<infoportion_set_complete>kostoprav_talk</infoportion_set_complete>

</objective>

<objective>

<text>Поговорить с Монохромом</text>

<map_location_type hint="Монохром">blue_location</map_location_type>

<object_story_id>sv_vasily</object_story_id>

<infoportion_complete>kostoprav_svoboden</infoportion_complete>

</objective>

</game_task>

 

 

Не буду тут выкладывать профили НПС но вот логика одного из них (которого нужно убить)

 

[logic]

active = remark@search

on_death = death

 

[death]

on_info = %+dead_shulgan%

 

[remark@fire]

combat_ignore_cond = {!is_sniper_enemy}

radius = 0 anim = hide on_info = {=health_le(0.5)}

remark@search wounded = wounded@work sniper = true

 

[remark@search]

combat_ignore_cond = true

combat_ignore_keep_when_attacked = false anim = hide target = actor on_info = {=see_enemy}

remark@fire wounded = wounded@work

 

[wounded@work]

hp_state = 0|wounded_heavy@help_heavy hp_state_see = 0|wounded_heavy@help_heavy hp_victim = 0|nil hp_fight = 0|false hp_cover = 0|false

 

 

[shulgan_spawn]:stalker

$spawn = "respawn\shulgan_spawn"

character_profile = shulgan

spec_rank = regular

community = dolg

custom_data = scripts\shulgan_logic.ltx

 

 

function spawn_dolg1() alife():create("dolg1_spawn",vector():set(-9.4430656433105,-0.0013552308082581,24.313859939575),19295,1) end

function spawn_dolg2() alife():create("dolg2_spawn",vector():set(-9.4799509048462,-0.0025458633899689,20.721883773804),19290,1) end

function spawn_shulgan() alife():create("shulgan_spawn",vector():set(-11.477420806885,0.2169174849987,21.254106521606),19290,1) end

function spawn_kostoprav() alife():create("kostoprav_spawn",vector():set(-11.35520362854,0.21686115860939,26.383003234863),19298,1) end

 

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий
"скриптовая функция спавна"

Зачем так мудрить? 4 функции... Можно всё в одну написать:

 

вместо этого:

function spawn_dolg1() alife():create("dolg1_spawn",vector():set(-9.4430656433105,-0.0013552308082581,24.313859939575),19295,1) end 
function spawn_dolg2() alife():create("dolg2_spawn",vector():set(-9.4799509048462,-0.0025458633899689,20.721883773804),19290,1) end 
function spawn_shulgan() alife():create("shulgan_spawn",vector():set(-11.477420806885,0.2169174849987,21.254106521606),19290,1) end
function spawn_kostoprav() alife():create("kostoprav_spawn",vector():set(-11.35520362854,0.21686115860939,26.383003234863),19298,1) end

напиши вот это:

function my_spawn()
alife():create("dolg1_spawn",vector():set(-9.4430656433105,-0.0013552308082581,24.313859939575),19295,1)
alife():create("dolg2_spawn",vector():set(-9.4799509048462,-0.0025458633899689,20.721883773804),19290,1)
alife():create("shulgan_spawn",vector():set(-11.477420806885,0.2169174849987,21.254106521606),19290,1)
alife():create("kostoprav_spawn",vector():set(-11.35520362854,0.21686115860939,26.383003234863),19298,1)
end

 

и где у тебя в диалоге:

<action>new_dialog.spawn_dolg1</action>
<action>new_dialog.spawn_dolg2</action>
<action>new_dialog.spawn_shulgan</action>
<action>new_dialog.spawn_kostoprav</action>

замени на:

<action>new_dialog.my_spawn</action>

 

З.Ы. имя функции можешь изменить как тебе надо.

 

---

потом уничтожаю атакующих но квест не выполняется

При убийстве того, кого надо, выдавай поршен, который будет завершать задание... Может есть лучше вариант, но я не знаю...

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

Ну я так и сделал, через логику:

[logic]

active = remark@search

on_death = death

 

[death]

on_info = %+dead_shulgan%

 

[remark@fire]

combat_ignore_cond = {!is_sniper_enemy}

radius = 0 anim = hide on_info = {=health_le(0.5)}

remark@search wounded = wounded@work sniper = true

 

[remark@search]

combat_ignore_cond = true

combat_ignore_keep_when_attacked = false anim = hide target = actor on_info = {=see_enemy}

remark@fire wounded = wounded@work

 

[wounded@work]

hp_state = 0|wounded_heavy@help_heavy hp_state_see = 0|wounded_heavy@help_heavy hp_victim = 0|nil hp_fight = 0|false hp_cover = 0|false

 

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий
strelok200, за метки на задания отвечает строка в строении квеста <object_story_id></object_story_id>. А дальше уже смотря на то, на что указывать. Про предметы и подобное сказать не могу, а вот если хотите, чтобы метка указывала на перса, то тут его надо спавнить через алл.спавн. Есть способ, чтобы она указывала и в том случае, если перс заспавнен через скрипт, но это нужно поискать (где-то даже на форуме, кажется, видел), помню лишь одно, что там меняется сама функция спавна и в нее прописывается сразу id перса (возможно, что и для предметов подойдет тоже самое).

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

Официальный Discord-сервер по NS OGSR. 
Неофициальный филиал "У Костра", но тоже Discord-сервер.

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

Народ! Скажем у меня есть два моих квеста-скажем: kvest_1 и kvest_2. Где и что прописать, чтобы диалог на квест_2

у НПС был только после выполнения квеста_1?

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

При выполнении квеста_1 выдавай инфопоршень. В ветке диалога квеста_2 поставь условие на наличие этого инфопоршня.

ТЧ 1.0004. SAP и Trans mod

github

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

После ида диалога пишешь тег has_info. Это и есть проверка на наличие инфопоршня. Как-то так.

<dialog id="kvest_2_start">
<has_info>kvest_1_done</has_info>
<phrase_list>
...................
</phrase_list>
</dialog>

kvest_1_done - ид инфопоршня.

PS: а вообще поиск никто не отменял, это элементарные вещи, которые разжеваны множество раз.

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

ТЧ 1.0004. SAP и Trans mod

github

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

Делаю простой квест, но он почему то не появляется в Мне нужна работа.

[tm_find_item_2]
type = find_item
community = actor
text = tm_find_item_2_text
description = tm_find_item_2_descr
parent = trader
target = item_dap_shapai
reward_money = 1000
reward_reputation = +15
reward_rank = 3[spoiler="storyline_info_taskmanager.xml"][/spoiler]
reward_item = medkit_army, vodka
time = 604800

tm_find_item_2

  <string id="tm_find_item_2">
    <text>Найти документы на Свалке</text>
  </string>
  <string id="tm_find_item_2_descr">
    <text>По слухам где то на Свалке выляются ни кому не нужные документы.</text>
  </string>
  <string id="tm_find_item_2_text">
    <text>Меченый, где то на Свалке валяются документы, найди их и принеси мне. Награда достойная.</text>
  </string>

<article id="tm_find_item_2_descr" name="find_item" article_type="task">
        <text>tm_find_item_2_descr</text>
</article>

[item_dap_shapai]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency = 
$spawn                 = "devices\pda"
$prefetch             = 16
class= II_ATTCH
cform= skeleton
visual= equipments\item_pda.ogf
radius= 1

description         = enc_equipment_device_pda_dap_1

inv_name    = pda_dap_1
inv_name_short = pda_dap_1
inv_weight    = 0.2

inv_grid_width= 2
inv_grid_height= 1
inv_grid_x    = 6
inv_grid_y    = 13
cost= 2000

Я знаю, что ищем документы, а предмет ПДА, просто нужно проверить, а квеста нету..

 

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

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

Я раньше тоже пытался сделать простой квест. Проблема такая же была. Теперь делаю только сложные

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий
FANAT, вы где-то потеряли строчку, где задается приоритет выдачи квеста над всеми остальными (это в скелете квеста).

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

Официальный Discord-сервер по NS OGSR. 
Неофициальный филиал "У Костра", но тоже Discord-сервер.

Ссылка на комментарий
FANAT!!!, ALEX BOY, прав, ты потерял где то "приоритет выдачи квеста над всеми остальными". Ведь без него работать ничего не будет!
ВИТ@/\|{ЕР
Ссылка на комментарий

Насчет квеста Мне нужна работа(выше) нифига он не работает, и ни у кого не работает, сами вспомните где вы видели в мне нужна работа квест с документами..

Теперь другое.. Делаю квест через диалог, и при непосредственном получении самого квеста вылет без фатальной ошибки, где то что напутал, гляньте кто шарит.. Квест найти и принести документы

 <game_task id="escape_krisuk_quest">
<title>Найти документы в Х-10</title>
<objective>
<text>Отдать документы Сяку</text>
<icon>ui_iconsTotal_find_item</icon>
<infoportion_complete>zadanie_krisuk_vipolnil</infoportion_complete>
</objective>
<objective>
<text>Найти спрятанные документы</text>
<function_complete>dap_werit.escape_krisuk_have</function_complete>
<infoportion_set_complete>zadanie_krisuk_vipolnil</infoportion_set_complete>
<article>opisanie_2</article>
</objective>
<objective>
<text>Отдать документы Сяку</text>
<infoportion_complete>zadanie_krisuk_vipolnil</infoportion_complete>
<map_location_type hint="Сяк">blue_location</map_location_type>
<object_story_id>Sak</object_story_id>
</objective>
</game_task>

 

<article id="opisanie_2" name="Найти спрятанные документы" article_type="task">
    <texture x="400" y="0" width="350" height="250">ui\ui_icons_dap_locs</texture>
    <text>opisanie_2</text>
</article>

 

 <info_portion id="zadanie_krisuk_dal">
    <task>escape_krisuk_quest</task>
</info_portion>

<info_portion id="escape_krisuk_have">
</info_portion>

<info_portion id="zadanie_krisuk_vipolnil">
</info_portion>

 

function escape_krisuk_have()
return sak.have_item_namber("doc_dap_patr6",1) ~= true -- проверка на нахождение предмета в рюкзаке
end

function give_doc_dap_patr6(first_speaker, second_speaker) -- передача предмета
sak.out_item_namber("doc_dap_patr6", 1)
end

function complete_doc_dap_patr6(first_speaker, second_speaker) -- получение награды
dialogs.relocate_money(second_speaker, 10000, "in")
end

function spawn_doc_dap_patr6()
    local obj = alife():create("doc_dap_patr6",vector():set(-19.652,-17.805,-7.5715),3598,2784)
end

 

 <dialog id="escape_krisuk_quest">
<dont_has_info>zadanie_krisuk_dal</dont_has_info>
<phrase_list>
<phrase id="0">
<text>escape_krisuk_quest_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_krisuk_quest_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>escape_krisuk_quest_2</text>
<give_info>zadanie_krisuk_dal</give_info>
<action>dap_werit.spawn_doc_dap_patr6</action>
</phrase>
<phrase id="3">
<text>escape_krisuk_quest_3</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>

<dialog id="escape_krisuk_quest_completed">
<precondition>dap_werit.escape_doc_dap_patr6</precondition>
<has_info>zadanie_krisuk_dal</has_info>
<dont_has_info>zadanie_krisuk_vipolnil</dont_has_info>
<phrase_list>
<phrase id="0">
<text>escape_krisuk_quest_completed_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_krisuk_quest_completed_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<give_info>zadanie_krisuk_vipolnil</give_info>
<text>escape_krisuk_quest_completed_2</text>
<action>dap_werit.give_doc_dap_patr6</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>escape_krisuk_quest_completed_3</text>
<action>dap_werit.complete_doc_dap_patr6</action>
</phrase>
</phrase_list>
</dialog>

 

 

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...