Jump to content

Добро пожаловать к нам на сайт! Про Ваш статус и права можно прочитать в Этой теме

Для просмотра картинок и скачивания файлов с форума - пройдите регистрацию!   Проблемы с регистрацией - вам сюда




Photo

Квестописание в ЗП


  • Please log in to reply
6 replies to this topic

#1
Виталий_Зверь

Виталий_Зверь

    Убийца тушканов

  • Не в сети
  • Старожилы
  • Завсегдатай - больше 1 год на сайте
<- Информация ->
  • Joined:
    14-March 09
  • 1,376 posts
  • Пропуск №: 281

0 warning points
Репутация: 5,532

Репутация: 5532 Постов: 1376
  • Страна проживания:Россия
  • Реальное имя:Виталий
  • Пол:Мужчина
  • Город:ЕКБ, Россия
Квесты в "Зов Припяти"

Квестописание в Зове слегка отличается от написания в ТЧ, поэтому я решил создать эту тему.

Действие первое.
В первую очередь создадим диалог.
Открываем файл dialogs_zaton.xml и добавляем:

<dialog id="proba_kvest">
<phrase_list>
<phrase id="0">
<text>Мы тут тест проводим, можно?</text>
<next>1</next>
</phrase>  
<phrase id="1">
<text>Валяй, у меня уши не отпадут...</text>
<next>2</next>
</phrase>  
<phrase id="2">
<text>Спaсибо, ты настоящий друг, хоть и лысый...</text>
</phrase>  
</phrase_list>
</dialog>

Небольшие пояснения:

<dialog id="proba_kvest">         название диалога.
<phrase id="0">                         вызывается строка.
<text>Привет</text>                 эта строка и есть текст диалога
<next>1</next>                         переход к следущей строке.

 

Теперь пропишем этот диалог Султану.
Находим в character_desc_zaton.xml нашего персонажа: zat_b7_bandit_boss_sultan и вставляем в подобные диалоги свой:

<actor_dialog>proba_kvest</actor_dialog>

примечание: proba_kvest - это название диалога.
Теперь можно проверить и поговорить с Султаном на заданую тему...



#2
Виталий_Зверь

Виталий_Зверь

    Убийца тушканов

  • Не в сети
  • Старожилы
  • Завсегдатай - больше 1 год на сайте
<- Информация ->
  • Joined:
    14-March 09
  • 1,376 posts
  • Пропуск №: 281

0 warning points
Репутация: 5,532

Репутация: 5532 Постов: 1376
  • Страна проживания:Россия
  • Реальное имя:Виталий
  • Пол:Мужчина
  • Город:ЕКБ, Россия

Действие второе.

Теперь сам квест.
Создадим свой скрипт. По адресу ....\GSC World Publishing\S.T.A.L.K.E.R. - Зов Припяти\gamedata\scripts ,

напишем в нём функцию создания квеста:

function test_zver_kvest()
     task_manager.get_task_manager():give_task("test_kvest_1")
end

Этой функцией мы вызовем из диалога сам квест.

Для этого под нужную нам строчку квеста вставим актион:
<action>название скрипта.название функции</action>

Примечание:

test_zver_kvest - это название функции.
test_kvest_1 - это название квеста.
Название скрипта - это как вы назвали свой скрипт.

 

Теперь перейдём к файлу tm_zaton.ltx и в конец пишем:

[Название квеста]
icon =
prior =
storyline =
title =
descr =
target =
condlist_0 =

Назовём это условием квеста... разберём, как составить в следущем действии...



#3
Виталий_Зверь

Виталий_Зверь

    Убийца тушканов

  • Не в сети
  • Старожилы
  • Завсегдатай - больше 1 год на сайте
<- Информация ->
  • Joined:
    14-March 09
  • 1,376 posts
  • Пропуск №: 281

0 warning points
Репутация: 5,532

Репутация: 5532 Постов: 1376
  • Страна проживания:Россия
  • Реальное имя:Виталий
  • Пол:Мужчина
  • Город:ЕКБ, Россия

Действие третье.
Разберём условия квеста, для этого я хочу воспользоваться статьёй Xmk.

icon - иконка квеста
Пример использования: icon = ui_inGame2_Put_v_pripyat

 

prior - приоритет квеста
Пример использования: prior = 112

 

storyline - флаг задания (true - сюжетное, false - несюжетное)
Пример использования: storyline = true

 

title - название задание (id из xml) - если брать название не из xml, то в игре оно будет отображаться без пробелов
Пример использования: title = zat_a9_way_gates_check_transport_workshop_name

 

descr - описание задания (id из xml) - если брать название не из xml, то в игре оно будет отображаться без пробелов
Пример использования: descr = zat_a9_way_gates_check_transport_workshop_text

 

target - цель на карте (метка)
Примеры использования:
target =zat_a2_stalker_barmen (ID нпц, на которого будет поставлена метка)
target = {+название_инфопоршня}zat_a2_stalker_barmen -- проверка инфопоршня, после которого метка будет поставлена на нпц

 

on_init - инфопоршень, который "включает" задание
Пример использования: on_init = %+название_инфопоршня%

 

condlist_x -- блок условий. возможные значения complete, reversed, fail

Примеры использования:
condlist_0 = {+название_инфопоршня} complete - если поршень есть, задание выполнено
condlist_1 = {+название_инфопоршня} reversed - если поршень есть, есть возможность повторить задание
condlist_2 = {+название_инфопоршня} fail - если поршень есть, задание провалено

on_complete - действия, которые выполняются, если задание выполнено
on_reversed - действия, которые выполняются, если задание провалено

Примеры использования:
on_complete = %=inc_faction_goodwill_to_actor(stalker:200)% -- повышаем репу у сталкеров (функция юзаются из xr_effect)
on_reversed = {+название_ифопоршня} %=inc_faction_goodwill_to_actor(stalker:200)% -- повышаем репу у сталкеров, только если есть опр.инфопоршень
on_complete = %+название_инфопоршня% -- выдаем инфопоршень

reward_money - денежная награда
Пример использования: reward_money = 5000

 

Теперь оформим наш квест:

[Название квеста]
icon = ui_inGame2_Razgovor_s_glazu_na_glaz
prior = 200
storyline = false
title = Задание на данный момент
descr = Описание задания
target = здесь пишем имя персонажа на которого поставить отметку
condlist_0 = {+Ваш инфопоршень на выполнение квеста} complete
condlist_1 = {+Ваш инфопоршень на провал квеста} fail
reward_money = 5000
reward_item =wpn_sig550:ammo_5.56x45_ss190:ammo_5.56x45_ss190:ammo_5.56x45_ss190:ammo_5.56x45_ss190

Квест готов.



#4
Виталий_Зверь

Виталий_Зверь

    Убийца тушканов

  • Не в сети
  • Старожилы
  • Завсегдатай - больше 1 год на сайте
<- Информация ->
  • Joined:
    14-March 09
  • 1,376 posts
  • Пропуск №: 281

0 warning points
Репутация: 5,532

Репутация: 5532 Постов: 1376
  • Страна проживания:Россия
  • Реальное имя:Виталий
  • Пол:Мужчина
  • Город:ЕКБ, Россия

Теперь выложу, то что нам понадобится для квестописания...

ФУНКЦИИ

=======================================================================
ВЫДАЁМ ПРЕДМЕТ АКТОРУ
=======================================================================
function название функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название предмета", "in")
end

Размещается в файлах скрипт.

Выдача поршня вставляется под строку действия.
название скрипта.название функции

Примечание, что бы выдать два одинаковых предмета пишем

function название функции (first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "название предмета", "in",2)
end

Если надо больше меняем цифру 2 на нужную нам.
=========================================================================
ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.
=========================================================================
function название функции(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета")
end

размещается в файлах скрипт

выдача поршня вставляется под строку действия
название скрипта.название функции

Примечание, что бы отобрать два одинаковых предмета пишем

function название функции(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета",2)
end

Если надо больше меняем цифру 2 на нужную нам.
=======================================================================
СПАВНИМ ВЕЩЬ В РЮКЗАК ГГ
=======================================================================
function название функции()
local obj = alife():create("ВЕЩЬ", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end

В диалог
название скрипта.название функции

===========================================================================
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА
===========================================================================
Вариант первый
function Название функции()
if db.actor:object("название предмета") then
return true
end
return false
end

в диалог

имя скрипта.название функции

<---------как вариант(пользуются ПЫС)------------------>

function название функции(first_speaker, second_speaker)
return first_speaker:object("название предмета") ~= nil
end

в диалог

имя скрипта.название функции
===========================================================================
ПРОВЕРКА ВЕЩЕЙ У ГГ
===========================================================================
function Название функции(first_speaker, second_speaker)
return first_speaker:object("название предмета") ~= nil or
first_speaker:object("название предмета") ~= nil or
first_speaker:object("название предмета") ~= nil
end

в диалог

имя скрипта.название функции

описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора
============================================================================
ПРОВЕРКА ДЕНЕГ У ГГ
============================================================================
Вариант первый(используют ПЫС)

function название функции(first_speaker, second_speaker)
return first_speaker:money() >= 2000
end

в диалог

имя скрипта.название функции

<-----------Вариант два-------------->
Использовал на ТЧ, но и в ЗП работает

function название функции()
return db.actor:money()>=10000
end
в диалог

имя скрипта.название функции

=========================================================================
СПАВН ПРЕДМЕТА
=========================================================================
function spawn_vintar()
alife():create("Название предмета",vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210)
end

В диалог

название скрипта.название функции

==========================================================================
МГНОВЕННАЯ СМЕРТЬ ГГ
==========================================================================

function название функции(npc, actor)
npc:kill(actor)
end

В диалог

название скрипта.название функции
===========================================================================
ПРОВЕРКА КОЛ-ВА ОДИНАКОВЫХ ПРЕДМЕТОВ
===========================================================================
function название функции(first_speaker, second_speaker)
local item_sections = {"Предмет"}
local needed = количество одинаковых предметов, ставится цифра без знаков
local count = 0
local item_section
local function calc(temp, item)
if item:section() == item_section then
count = count + 1
end
end
for k,v in pairs(item_sections) do
item_section = v
get_story_object("actor"):iterate_inventory(calc, actor)
end
return count >= needed
end

в диалог
имя скрипта.название функции
==========================================================================
ЛЕЧЕНИЕ ГГ
==========================================================================
Вставим этот актион в диалог

dialogs.medic_magic_potion
==========================================================================
ВЫДАЧА ДЕНЕГ от НПС ГГ
==========================================================================

function название функции(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
end

В диалог

название скрипта.название функции
==========================================================================

ИНФОПОРШНИ

==========================================================================
ПОРШЕНЬ НА ОДНОРАЗОВОЕ ПРОЧТЕНИЕ ДИАЛОГА.
==========================================================================
прописываем в файле info_какойто.xml


в конце ветки диалога запишем
Название поршня
в начале диалога под id квеста запишем
название поршня
===========================================================================
ПОРШЕНЬ НА СКРЫТИЕ ДИАЛОГА ДО ПРОЧТЕНИЯ ОПРЕДЕЛЁНОГО ДИАЛОГА.
===========================================================================

прописываем в файле info_какойто.xml

В конце диалога после которого должна появиться новая ветка
название поршня

в начале новой ветки под id прописываем
название поршня
теперь новый диалог недоступен пока мы не прочтём первый
==========================================================================================
ПОРШЕНЬ НА ЗАПРЕТ ДИАЛОГА ЕСЛИ В ПРЕДИДУЩЕМ МЫ ПОСТАВИЛИ УСЛОВИЕ ПО КОТОРОМУ ЕГО НЕ БУДЕТ
==========================================================================================

прописываем в файле info_какойто.xml

В конце определяющего диалога ставим
название поршня

под id квеста(диалога) который не должен появиться прописываем
название поршня
Теперь диалог не появится.
===============================================================================

ИКОНКИ КВЕСТОВ

ui_inGame2_Skat_4
ui_inGame2_Pripasi
ui_inGame2_Naezd
ui_inGame2_Nedostupniy_taynik
ui_inGame2_Artefakti_na_zakaz
ui_inGame2_Zamanchivi y_biznes
ui_inGame2_kompas
ui_inGame2_Temniy_biznes
ui_inGame2_Lager_naemnikov
ui_inGame2_Put_na_plato
ui_inGame2_Tri_tovarisha
ui_inG ame2_Ohota_na_Himeru
ui_inGame2_V_poiskah_Soroki
ui_inGame2_Bezopasnoe_mesto
ui_inGame2_Put_v_pripyat
ui_inGame2_Neizvestnoe_oruzhie
ui _inGame2_Propavshaya_razvedgruppa
ui_inGame2_Skoplenie_monolita
ui_inGame2_Propavshiy_chasovoy
ui_inGame2_Razgovor_s_glazu_na_glaz
ui_in Game2_Radiopomehi
ui_inGame2_Neizvestniy
ui_inGame2_Evakuatsiya
ui_inGame2_Laboratoriya_X8
ui_inGame2_Odin_vistrel
ui_inGame2_Skat_1
u i_inGame2_Pripyat_1
ui_inGame2_Ohota_na_Burerov
ui_inGame2_Anomalnoe_rastenie
ui_inGame2_Nochnaya_ohota
ui_inGame2_Dolgi
ui_inGame2_Oaz is
ui_inGame2_Radiotechnika
ui_inGame2_Bespilotniy_razvedchik
ui_inGame2_Vizhivshiy_monolit
ui_inGame2_Gipoteza
ui_inGame2_Peremennoe_p si_izluchenie
ui_inGame2_Issledovanie_anomaliy
ui_inGame2_Issledovatelskaya_gruppa
ui_inGame2_Vozmezdie
ui_inGame2_Chuzhie_zaslugi
ui_i nGame2_Zalozhnik
ui_inGame2_Krazha
ui_inGame2_Kopachi
ui_inGame2_Kontrakt_s_uchenimi
ui_inGame2_Sklad_dolga
ui_inGame2_Istoriya_dolga
u i_inGame2_Instrumenti
ui_inGame2_Poslednie_razrabotki
ui_inGame2_Ohrana_uchenih
ui_inGame2_Ohota_na_Krovososov
ui_inGame2_Mesta_evakuats ii
ui_inGame2_Skat_2
ui_inGame2_Skat_5
ui_inGame2_Skat_3
ui_inGame2_Strannoe_yavlenie
ui_inGame2_Ischeznovenie_stalkerov
ui_inGame2_Lo govo_krovososov
ui_inGame2_Reputatsiya
ui_inGame2_Osobiy_zakaz
ui_inGame2_Sdelka
ui_inGame2_Karti_mestnosti

ИМЕНА НПС НА "ЗАТОНЕ
zat_b7_bandit_boss_sultan СУЛТАН
zat_a2_stalker_barmen БОРОДА
zat_a2_stalker_nimble Шустрый
jup_a10_bandit_leader Валет
zat_a2_stalker_mechanic Шуруп
zat_b22_stalker_medic Вампир
zat_b30_owl_stalker_trader Сыч
zat_b106_stalker_gonta Гонта
zat_b106_stalker_garmata Гармата
zat_b38_stalker_cop Чувак сьеденый медиком
zat_b38_stalker_hunter Охотник???
zat_b33_stalker_snag ????
zat_b42_mayron ?????
zat_b28_draper ????????
zat_b28_umerov
zat_b28_smoliak
zat_b18_noah Ной
zat_b215_stalker_guide Проводник????



#5
KoHoVaLOFF

KoHoVaLOFF

    Пришедший

  • Не в сети
  • Пользователь

<- Информация ->
  • Joined:
    23-September 10
  • 2 posts
  • Пропуск №: 2653

0 warning points
Репутация: 19

Репутация: 19
  • Пол:Мужчина
  • Город:Улан-Удэ, Россия

*
POPULAR

У меня вопрос: как удалить сюжетные квесты в ЗП? Я пробовал удалять сюжетку и диалоги в файлах character_desc_zaton.xml, dialogs_zaton.xml, tm_zaton.ltx, но когда я начинаю игру ГГ приходит сообщение на ПДА с текстом TITLE_DOESNT_EXIST. Что делать?



#6
Виталий_Зверь

Виталий_Зверь

    Убийца тушканов

  • Не в сети
  • Старожилы
  • Завсегдатай - больше 1 год на сайте
<- Информация ->
  • Joined:
    14-March 09
  • 1,376 posts
  • Пропуск №: 281

0 warning points
Репутация: 5,532

Репутация: 5532 Постов: 1376
  • Страна проживания:Россия
  • Реальное имя:Виталий
  • Пол:Мужчина
  • Город:ЕКБ, Россия

*
POPULAR

Надо удалять не только тексты... нужно удалить все диалоги из скриптов и профилей НПС

#7
KoHoVaLOFF

KoHoVaLOFF

    Пришедший

  • Не в сети
  • Пользователь

<- Информация ->
  • Joined:
    23-September 10
  • 2 posts
  • Пропуск №: 2653

0 warning points
Репутация: 19

Репутация: 19
  • Пол:Мужчина
  • Город:Улан-Удэ, Россия
Quote (Виталий_Зверь)
Надо удалять не только тексты... нужно удалить все диалоги из скриптов и профилей НПС

В общем надо чистить в этих файлах?
configs\gameplay\dialogs_zaton.xml
configs\gameplay\info_zaton.xml
configs\gameplay\character_desc_zaton.xml
configs\text\rus\st_ quests_zaton.xml
configs\misc\tm_zaton.ltx
scripts\dialogs_zaton.script





реклама на сайте подключена

Использование материалов сайта только с разрешения Администрации!
Или с указанием прямой ссылки на источник. 2008 - 2017 © Stalker-Worlds