Пользователей: 0
Гостей: 322
Всего: 322

» Подробно
» Сегодня


Привет, Гость!

Ник


Пароль


Запомнить?




» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное






Форумы > S.T.A.L.K.E.R. Тень Чернобыля > Модификации > Квестостроение.

Страница 2 из 2«12
Быстрый переход:


 

Автор Сообщение
weron_team
[1] Странник
Онлайн статус=0  Профиль    




Посты: 1352
Откуда: МО Лыткарин
Занятие:
Возраст: 34

11-03-2008
30-06-2008 17:04 GMT3 часа #626083   Split
Причем тут квестыв и спавн NPC? Ты темой ошибся


@LE}{EY
[1] Banned
Онлайн статус=0  Профиль    




Посты: 130
Откуда: Иркутск
Занятие: S.T.A.L.K.E.R
Возраст: 31

01-07-2008 12:34 GMT3 часа #626883   Split
инструкциятут в поиске наберите "создание квестов". там есть статьи


Я пришёл к выводу, что не всё так плохо, как я предпологал, но и не так хорошо, как хотелось бы.
Electrius
[1] Странник
Онлайн статус=0  Профиль    




Посты: 15
Откуда:
Занятие:
Возраст:

12-06-2009 22:15 GMT3 часа #938038   Split
Подскажите как создавать свои метки на карте вроде <map_location_type hint="esc_dinamit_to_volk">green_location</map_location_type>


Не умеешь - не берись !
№47-Hitman
[1] Странник
Онлайн статус=0  Профиль    




Посты: 176
Откуда: Ижевск
Занятие: Модмейкерство
Возраст: 30

24-10-2011
13-06-2009 18:38 GMT3 часа #938856   Split
Electrius Если нужно на НПС или спейс рестриктор нужно в файле game_story_ids.ltx надо создать ид, а в функции спавна указать номер ид или в all.spawn

добавлено спустя 1 минуту

Завтра кстати могу выложить свой туториал по созданию квестов

Сообщение было успешно отредактировано №47-Hitman (13-06-2009 18:38 GMT3 часа, назад)

New Life Team
The Chronicles of S.T.A.L.K.E.R.: Gunslinger | Разработка
№47-Hitman
[1] Странник
Онлайн статус=0  Профиль    




Посты: 176
Откуда: Ижевск
Занятие: Модмейкерство
Возраст: 30

24-10-2011
15-06-2009 16:25 GMT3 часа #940426   Split
Как и обещал, выкладываю туториал по созданию квеста
Мой туториал по созданию квеста "Найти предмет и вернуть его"

Создадим квест по поиску АК74У.

Для начала нужно создать диалог, сделаем его у Волка:

Заходим в gamedata\config\gameplay\dialogs_escape.xml и в самом конце до строчки </game_dialogs> пишем:

<dialog id="escape_volk_ak74u_quest">
<has_info>esc_kill_bandits_quest_done</has_info>
<dont_has_info>escape_volk_ak74u_start</dont_has_info>
<phrase_list>
<phrase id="0">
<text>escape_volk_ak74u_quest_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_volk_ak74u_quest_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>escape_volk_ak74u_quest_2</text>
<give_info>escape_volk_ak74u_start</give_info>
<action>new_life.spawn_ak74u</action>
</phrase>
<phrase id="3">
<text>escape_volk_ak74u_quest_3</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
<dialog id="escape_volk_ak74u_quest_completed">
<precondition>new_life.escape_volk_ak74u_have</precondition>
<has_info>escape_volk_ak74u_have</has_info>
<dont_has_info>escape_volk_ак74u_done</dont_has_info>
<phrase_list>
<phrase id="0">
<text>escape_volk_ak74u_quest_completed_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>escape_volk_ak74u_quest_completed_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>escape_volk_ak74u_quest_completed_2</text>
<give_info>escape_volk_ak74u_done</give_info>
<action>new_life.give_volk_ak74u</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>escape_volk_ak74u_quest_completed_3</text>
<action>new_life.complete_volk_quest</action>
</phrase>
</phrase_list>
</dialog>

Теперь нужно прописать эти диалоги Волку, для этого заходим в gamedata\config\gameplay\character_desc_escape.xml и находим профиль Волка(он называется esc_wolf), перед строкой </specific_character> пишем:

<actor_dialog>escape_volk_ak74u_quest</actor_dialog>
<actor_dialog>escape_volk_ak74u_quest_completed</actor_dialog>

Нам понадобятся два диалога: 1 для получения квеста, 2 для передачи автомата.

<dialog id="escape_volk_ak74u_quest"> - Это название диалога

<has_info>esc_kill_bandits_quest_done</has_info> - эта строка означает что квест появится только если получен инфопоршень esc_kill_bandits_quest_done

<dont_has_info>escape_volk_ak74u_start</dont_has_info> - эта строка означает что если получен инфопоршень escape_volk_ak74u_start , то этот диалог больше не появится.

<text>escape_volk_ak74u_quest_0</text> - это ссылка на текст фразы меченого

<next>1</next> - это ссылка на текст с id= 1 , а id= 1 это <text>escape_volk_ak74u_quest_1</text> (ссылка на текст Волка)


<next>2</next>
<next>3</next> - эти две строчки означают что идет разветвление диалога


<give_info>escape_volk_ak74u_start</give_info> - выдача инфопоршня, после которого начинается квест


<action>new_life.spawn_ak74u</action> - функция вызываемая из скрипта new_life, в данном случае спаунится предмет AK74У


<action>dialogs.break_dialog</action> - функция отвечающая за выход из диалога


Во втором диалоге есть строка <precondition>new_life.escape_volk_ak74u_have</precondition> - она отвечает за появление диалога если выполняется функция
escape_volk_ak74u_have

Теперь нужно сделать текст диалога на русском языке, для этого заходим в gamedata\config\tex\rus\stable_dialogs_escape.xml и в нём пишем следующее(в конце перед </string_table>):

<string id="escape_volk_ak74u_quest_0">
<text>Здорова Волк, для меня есть какая-нибудь работа?</text>
</string>
<string id="escape_volk_ak74u_quest_1">
<text>Да, есть одно дело: вобщем шёл сюда в лагерь к Сидырычу, решил пройти через тоннель чтоб воякам денег не платить, а там собак было штук десять. Ну я начал отстреливаться, где-то шестерых убил и патроны кончились, пришлось АКСУ выкинуть, чтоб от стаи собак убежать. Таки лежит там наверно АКСУ. \nНу как, возьмёшься? Только осторожней там, после последнего выброса появились в тоннеле перещающиеся аномалии электра.</text>
</string>
<string id="escape_volk_ak74u_quest_2">
<text>Да, я как раз буду рядом проходить, конечно принесу...</text>
</string>
<string id="escape_volk_ak74u_quest_3">
<text>Нет, Волк, сам туда иди...</text>
</string>
<string id="escape_volk_ak74u_quest_completed_0">
<text>Привет, Волк, ну как оно?...</text>
</string>
<string id="escape_volk_ak74u_quest_completed_1">
<text>Сидор водку не даёт, хе хе, а так всё хорошо.</text>
</string>
<string id="escape_volk_ak74u_quest_completed_2">
<text>Вот, нашел я твой АКСУ.</text>
</string>
<string id="escape_volk_ak74u_quest_completed_3">
<text>Эх спасибо тебе Меченый, вот держи, может на что-нибудь хватит.</text>
</string>

Итак, диалог готов, теперь нужно сделать сам квест, для этого заходим в gamedata\config\gameplay\tasks_escape.xml и в самом конце пишем:

<game_task id="escape_volk_ak74u">
<title>Найти потерянный АКСУ</title>
<objective>
<text>Найти потерянный АКСУ</text>
<icon>ui_iconsTotal_weapons</icon>
<infoportion_complete>escape_volk_ak74u_done</infoportion_complete>
<article>tex_escape_volk_ak74u</article>
</objective>
<objective>
<text>Найти АКСУ</text>
<function_complete>new_life.escape_volk_ak74u_have</function_complete>
<infoportion_set_complete>escape_volk_ak74u_have</infoportion_set_complete>
</objective>
<objective>
<text>Принести АКСУ Волку</text>
<map_location_type hint="Волк">blue_location</map_location_type>
<object_story_id>Escape_novice_lager_volk</object_story_id>
<infoportion_complete>escape_volk_ak74u_done</infoportion_complete>
</objective>
</game_task>

<game_task id="escape_volk_ak74u"> - id квеста


<title>Найти потерянный АКСУ</title> - название квеста


<text>Найти потерянный АКСУ</text> - тоже название квеста))


<icon>ui_iconsTotal_weapons</icon> - иконка задания


<infoportion_complete>escape_volk_ak74u_done</infoportion_complete> - квест будет выполнен, если был получен инфопоршень escape_volk_ak74u_done


<article>tex_escape_volk_ak74u</article> - ссылка на текстовый файл с описанием задания


<text>Найти АКСУ</text> - название подзадачи


<function_complete>new_life.escape_volk_ak74u_have</function_complete> - проверка на наличие предмета


<infoportion_set_complete>escape_volk_ak74u_have</infoportion_set_complete> если функция new_life.escape_volk_ak74u_have выполнилась, то выдаётся инфопоршень escape_volk_ak74u_have и выполняется подзадача


<text>Принести АКСУ Волку</text> - название второй подзадачи


<map_location_type hint="Волк">blue_location</map_location_type> - указатель на Волка


<object_story_id>Escape_novice_lager_volk</object_story_id> - id Волка в Файле gamedata\config\game_story_ids.ltx


<infoportion_complete>escape_volk_ak74u_done</infoportion_complete> - если будет получен этот инфопоршень, то выполнится подзадача и соответственно сам квест


Нужно сделать инфопоршни, заходим в gamedata\config\gameplay\info_l01escape.xml и в нём в конце до строчки </game_information_portions> пишем:



<info_portion id="escape_volk_ak74u_start">
<task>escape_volk_ak74u</task>
</info_portion>

<info_portion id="escape_volk_ak74u_have">
</info_portion>

<info_portion id="escape_volk_ak74u_done">
</info_portion>



Теперь нужно сделать описание квеста, заходим в gamedata\config\gameplay\storyline_info_escape.xml и пишем в конце:



<article id="tex_escape_volk_ak74u" name="Найти потерянный ак74u" article_type="task">
<texture x="0" y="800" width="200" height="100">ui\ui_icon_equipment</texture>
<text>tex_escape_volk_ak74u</text>
</article>



Сделаем описание на русском, заходим в stable_dialogs_escape.xml и в конце до строки </string_table> пишем:

<string id="tex_escape_volk_ak74u">
<text>Волк попросил принести потерянный в туннеле АКСУ</text>
</string>




Теперь создадим скриптовый файл new_life в gamedata\scripts\new_life.script и пишем:




function spawn_ak74u()
amk.spawn_item("wpn_ak74u",vector():set(-78.85,-1.29,154.74),163,189935) -- спавн ak74u в тоннеле на кордоне
end

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

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

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




Чтобы эти скрипты заработали, нужно создать файлы amk.script и sak.script, в аmk.script пишем




function spawn_item(spawn_item, pos, gv,lv)
if gv==nil then gv=db.actor:game_vertex_id() end
if lv==nil then lv=db.actor:level_vertex_id() end
return alife():create(spawn_item, pos, lv, gv)
end

function remove_item_from_inventory(remove_item,npc)
if npc==nil then npc=db.actor end
if remove_item~=nil then
-- npc:mark_item_dropped(remove_item)
alife():release(alife():object(remove_item:id()), true)
return true
end
return false
end







В sak.script пишем






local items_count=0
local itemin=nil

function have_item_namber(itm,need_namber)
local actor=db.actor
items_count=0
itemin=itm
actor:iterate_inventory(cheking_item,actor)
if items_count>=need_namber then
return true
else
return false
end
end
function cheking_item(actor,item)
local items=item:section()
if items==itemin then
items_count=items_count+1
end
end
function create_items(npc,section,number)
for i=1,number do
alife():create(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id())
end
end
local reloc_params={}
local stalk
function out_item_namber(itm_section,need_number)
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found=0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(out_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function relocate_item_namber(stalker,itm_section,need_number)
stalk=stalker
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found=0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(reloc_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function checkout_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section then
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function reloc_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then
db.actor:transfer_item(item, stalk)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function out_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then
amk.remove_item_from_inventory(item, actor)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end





ВСё! Можно тестировать.




ПРИМЕЧАНИЕ!!!Если вы делаете такой квест на оригинальном сталкере, то ОБЯЗАТЕЛЬНО нужно создать файлы amk.script и sak.script


Если вы делаете квест на amk моде, то нужно создать только файл sak.script


Вот файлы квеста на всякий... http://narod.ru/disk/9872118000/Создание%20квеста%20by%20Hitman.7z.html


New Life Team
The Chronicles of S.T.A.L.K.E.R.: Gunslinger | Разработка
Loner7
[1] Странник
Онлайн статус=0  Профиль    




Посты: 4
Откуда:
Занятие:
Возраст:

09-03-2011 11:43 GMT3 часа #1447033   Split
народ помогите!!!
Я создал торговца на кордоне и в писал ему такой стандартный диалог
<start_dialog>hello_dialog</start_dialog>
<actor_dialog>dm_cool_info_dialog</actor_dialog>

а как добавить свой диалог например такой :
-Здорова Петрович, для меня есть какая-нибудь работа?
-Да, есть одно дело: вобщем шёл сюда в лагерь к Сидырычу, решил пройти через тоннель чтоб воякам денег не платить, а там собак было штук десять. Ну я начал отстреливаться, где-то шестерых убил и патроны кончились, пришлось АКСУ выкинуть, чтоб от стаи собак убежать. Таки лежит там наверно АКСУ. \nНу как, возьмёшься? Только осторожней там, после последнего выброса появились в тоннеле перещающиеся аномалии электра.
-Да, я как раз буду рядом проходить, конечно принесу...


Старый Пень
[1] Странник
Онлайн статус=0  Профиль    




Посты: 4
Откуда: Москва
Занятие: книги, модмейкерство, игры, музыка
Возраст: 29

16-07-2011 01:04 GMT3 часа #1502757   Split
Добрый вечер!
Есть вопросы:
1\как удалить стандаотную сужетную линию и установить на её место свою.
2\как создать квест на поиск нпс(который мл незнам где пропал)
3\можно-ли научить нпс "выполнять" квесты?
Заранее спс.


karavan
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 940
Откуда:
Занятие:
Возраст:

08-05-2013
16-07-2011 06:27 GMT3 часа #1502797   Split
Старый Пень
1. Руками. Чисти секции АллСпавна, удаляй/коментируй поршни и т.д.
2. То же прямыми руками.
3. Можно.

З.Ы.: Всё в твоих руках.

Loner7 Вот так:

<actor_dialog>название_твоего_диалога</actor_dialog>

и соответственно

<dialog id="название_твоего_диалога">


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
NaslednikTutti
[1] Странник
Онлайн статус=0  Профиль    




Посты: 18
Откуда: Чебоксары
Занятие:
Возраст:

20-08-2011 20:08 GMT3 часа #1513816   Split
Помогите пожалуйста написать квест, вообщем.. Нужно сделать так: чтоб допустим гг подходит к сидоровичу с вопросом "как мне дойти до свалки?". Сидорович: "да тут рядом совсем, идти на север по дороге, координаты я тебе скинул в твой пда" ну и в таком роде, чтоб после диалога у ГГ в пда появилось задание ДОЙТИ ДО СВАЛКИ с указателем до перехода на локацию свалки и как доходишь задание дойти до свалки выполнено...
Взаранее очень презнателен...


Вампир35
[1] Странник
Онлайн статус=0  Профиль    




Посты: 3
Откуда: Новочеркутино
Занятие: Модостроение
Возраст:

29-08-2011 15:02 GMT3 часа #1516687   Split
Цитата
# NaslednikTutti :
Помогите пожалуйста написать квест, вообщем.. Нужно сделать так: чтоб допустим гг подходит к сидоровичу с вопросом "как мне дойти до свалки?". Сидорович: "да тут рядом совсем, идти на север по дороге, координаты я тебе скинул в твой пда" ну и в таком роде, чтоб после диалога у ГГ в пда появилось задание ДОЙТИ ДО СВАЛКИ с указателем до перехода на локацию свалки и как доходишь задание дойти до свалки выполнено...
Взаранее очень презнателен...


1.Создать диалог.
2.Поставить метку на переход.
3.Создать на свалке Space restrictor который выдаст тебе инфопоршень на выполнение,подробнее пиши в личку


Связистт
[1] Странник
Онлайн статус=0  Профиль    




Посты: 129
Откуда:
Занятие: попытка модифицировать сталкер
Возраст: 36

29-08-2012 22:14 GMT3 часа #1627796   Split
Ребята подскажите как можно вернуть квест волка с динамитом


S@ukeLL
[7] Выживший
Онлайн статус=0  Профиль    




Посты: 1263
Откуда: Москва
Занятие: наука, история, медицина, оружие, PC игры, МиГи и Черные Акулы:)
Возраст:

22-07-2014
03-09-2012 19:45 GMT3 часа #1628514   Split
Цитата
Ребята подскажите как можно вернуть квест волка с динамитом

Его в P.M.A. моде вернули.

Что же касается квестостроения, делал простые второстепенные квесты, и заметил, что отлично работают новые квесты связанные с убийством НПС и поиском артефакта, а вот пробовал сделать квест на поиск предмета, того же динамита или бумажек каких, а этот квест тупо не появляется и все! Сначала я думал, что это Волк новые квесты не хочет принимать (я ему пытался квест на динамит сделать по схеме "Мне нужна работа"), но он даже не появился. У Сидоровича квесты на поиск итемса тоже не появляются, что тут не так? Может, игра требует, чтобы предметы были не простыми, а какими-то особыми, квестовыми?


Чёрный ангел печали, Давай отдохнём!
Посидим на ветвях, Помолчим в тишине...
Что на небе такого, Что стоит того,
Чтобы рухнуть на камни Тебе или мне?..


Форумы > S.T.A.L.K.E.R. Тень Чернобыля > Модификации > Квестостроение.

Страница 2 из 2«12





???????@Mail.ru Rambler's Top100
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»