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

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


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

<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 перса (возможно, что и для предметов подойдет тоже самое).
Ссылка на комментарий

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

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

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

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

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

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

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

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

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

[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!!!, 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>

 

 

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

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

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

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

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

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

Войти

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

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

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