Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Форум » Моды для игр » Модостроение » Модостроение. Создание и редактирование квестов
Модостроение. Создание и редактирование квестов
denis2000Дата: Пн, 10.10.2011, 21:25 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

Создание новых квестов и редактирование существующих

Если у вас появились вопросы по созданию и редактированию квестов, изменению существующих и добавлению новых в игру. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]

[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                       local reason = string.format(fmt, ...)
                       error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Code
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пн, 09.04.2012, 01:05 | Сообщение # 31
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый вечер!
Так как ссылка на Сборник модостроения ЗП v10.10.11 (автор: XOBAH) в шапке этой темы, то пишу сюда!
Решил попробовать спавн базы Чапая на Затоне после помощи группе Спартака. Сделал все как написано в сборнике.
Запустил SGM 1.7. На лесничестве пусто. Взял квест на Шевченко, перебил группу Кастета. Вернулся к Бороде. В разговоре он упомянул о лесничестве. На слова Дегтярева: "Я помогу разобраться с бандитами" Борода говорит, что пока лесничество под контролем бандитов, сделать ничего нельзя. Но Чапай и его банда появятся только после сдачи КПК Моргана. Квест не запускается, Морган не спавнится и его КПК тоже. Возникает логический тупик. Возможно, эта тема когда-то ранее поднималась, но я ничего не нашел.
 
denis2000Дата: Ср, 11.04.2012, 11:23 | Сообщение # 32
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Мешает отсутствие инфопорции zat_lesnichestvo_svobodno
[cut]В файле sgm_tasks.script в функции task_update() вместо
Code
if has_alife_info("zat_bandit_base_leader_death") and has_alife_info("zat_bandit_base_bodyguard_1_death") and has_alife_info("zat_bandit_base_bodyguard_2_death") and has_alife_info("zat_bandit_base_bodyguard_3_death") and has_alife_info("zat_bandit_base_bodyguard_4_death") then
        if not has_alife_info("zat_lesnichestvo_svobodno") then
           give_info("zat_lesnichestvo_svobodno")
        end
     else
        if has_alife_info("zat_lesnichestvo_svobodno") then
           disable_info("zat_lesnichestvo_svobodno")
        end
     end


ставь
Code
if not has_alife_info("zat_lesnichestvo_svobodno") then
           give_info("zat_lesnichestvo_svobodno")
        end
[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Сб, 14.04.2012, 21:34 | Сообщение # 33
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый Вечер.
У Вано, Зулуса и Бродяги при нормальном прохождении игры флешки получить невозможно.
Возникла мысль подредактировать квесты таким образом, чтобы эти персонажи сами отдали свои флешки в качестве награды за оказанные им услуги.
[cut=Квест Долги Вано][jup_a10_actor_agree_back_vano_duties]
icon = ui_inGame2_Dolgi
prior = 1
storyline = false
title = {+jup_a10_back_vano} jup_a10_actor_back_vano_duties_name, {+jup_a10_kill_all_bandit} jup_a10_kill_all_bandit_name, jup_a10_actor_agree_back_vano_duties_name
descr = {+jup_a10_back_vano} jup_a10_actor_back_vano_duties_text, {+jup_a10_kill_all_bandit} jup_a10_kill_all_bandit_text, jup_a10_actor_agree_back_vano_duties_text
target = {+jup_a10_back_vano} jup_a10_stalker_vano, {+jup_a10_death_0 =squad_exist(jup_a10_bandit_squad_3)} jup_a10_bandit_squad_3, {+jup_a10_kill_all_bandit =squad_exist(jup_a10_bandit_squad_3)} jup_a10_bandit_leader, {=squad_exist(jup_a10_bandit_squad_3)} jup_a10_bandit_leader
;target = {+jup_a10_back_vano} jup_a10_stalker_vano, {+jup_a10_kill_all_bandit}jup_a10_bandit_leader
condlist_0 = {+jup_a10_vano_give_task_end} complete
;condlist_1 = {+jup_a10_fals} fail
После этого дописал:
reward_money = 10000
reward_item = dv_stalker_vano_case[/cut]
Получилось все правильно. Вано при разговоре с ним дал флешку и деньги.
[cut=Квест Бродяги][jup_b4_monolith_squad_help]
icon = ui_inGame2_Vizhivshiy_monolit
prior = 2
storyline = false
title = {+jup_b4_duty_redy_go_to_monolit_squad} jup_b4_stalkers_come_name, {+jup_b4_freedom_redy_go_to_monolit_squad} jup_b4_stalkers_come_name, jup_b4_monolith_squad_help_name
descr = {+jup_b4_duty_redy_go_to_monolit_squad} jup_b4_stalkers_come_duty_text, {+jup_b4_freedom_redy_go_to_monolit_squad} jup_b4_stalkers_come_freedom_text, jup_b4_monolith_squad_help_text
target = {+jup_b4_duty_redy_go_to_monolit_squad} jup_a6_duty_leader, {+jup_b4_freedom_redy_go_to_monolit_squad} jup_a6_freedom_leader, jup_a6_smart_id
condlist_0 = {+jup_b4_monolith_squad_in_duty} complete %+jup_b4_monolith_squad_redy_go_yanov%
condlist_1 = {+jup_b4_monolith_squad_in_freedom} complete %+jup_b4_monolith_squad_redy_go_yanov%
condlist_2 = {+jup_b4_monolith_squad_out} fail %+jup_b4_task_end%
on_complete = %=add_actor_rank(2) +jup_b4_task_end%[/cut]
При добавлении в квест Бродяги фрагмента:
reward_money = 10000
reward_item = dv_monolit_brodiaga_case
в тот момент, когда монолитовцев принимают в Долг или Свободу, приходит сообщение о том, что получен соответствующий бронекостюм, флешка и деньги. Флешку и деньги, таким образом, дает принимающая группировка.
Что и где нужно прописать, чтобы флешку дал Бродяга при первом разговоре с ним после вступления в группировку
[cut=В файле dialogs.scripts нашел диалог]function monolith_leader_is_alive(first_speaker, second_speaker)
if not (has_alife_info("jup_b4_monolith_squad_in_freedom") or has_alife_info("jup_b4_monolith_squad_in_duty")) then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_monolith_skin"})
end

if has_alife_info("jup_b4_monolith_squad_in_freedom") then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_freedom_skin"})
elseif has_alife_info("jup_b4_monolith_squad_in_duty") then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_duty_skin"})
end

return false
end

function monolith_leader_dead_or_hired(first_speaker, second_speaker)
if has_alife_info("jup_b218_soldier_hired") then
return true
end

if not (has_alife_info("jup_b4_monolith_squad_in_freedom") or has_alife_info("jup_b4_monolith_squad_in_duty")) then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_monolith_skin"})
end

if has_alife_info("jup_b4_monolith_squad_in_freedom") then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_freedom_skin"})
elseif has_alife_info("jup_b4_monolith_squad_in_duty") then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_duty_skin"})
end

return true
end[/cut]
[cut=Попробовал в эту функцию дописать]function monolith_leader_is_alive(first_speaker, second_speaker)
if not (has_alife_info("jup_b4_monolith_squad_in_freedom") or has_alife_info("jup_b4_monolith_squad_in_duty")) then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_monolith_skin"})
end

if has_alife_info("jup_b4_monolith_squad_in_freedom") then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_freedom_skin"})
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "dv_monolit_brodiaga_case")
elseif has_alife_info("jup_b4_monolith_squad_in_duty") then
return xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_duty_skin"})
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "dv_monolit_brodiaga_case")
end

return false
end

function monolith_leader_dead_or_hired(first_speaker, second_speaker)
if has_alife_info("jup_b218_soldier_hired") then
return true
end

if not (has_alife_info("jup_b4_monolith_squad_in_freedom") or has_alife_info("jup_b4_monolith_squad_in_duty")) then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_monolith_skin"})
end

if has_alife_info("jup_b4_monolith_squad_in_freedom") then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_freedom_skin"})
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "dv_monolit_brodiaga_case")
elseif has_alife_info("jup_b4_monolith_squad_in_duty") then
return not xr_conditions.is_alive(nil,nil,{"jup_b4_monolith_squad_leader_duty_skin"})
dialogs.relocate_item_section_to_actor(second_speaker, first_speaker, "dv_monolit_brodiaga_case")
end

return true
end[/cut]
После такой правки при попытке заговорить с Локи о приеме монолитовцев игра вылетела с ошибкой: update_game_loaded.
Возможно, что я неправильно вставил флешку. В каком файле прописан первый диалог с Бродягой после вступления в группировки. Заранее благодарен за любые советы.


Сообщение отредактировал sergej5500 - Сб, 14.04.2012, 21:37
 
denis2000Дата: Вс, 15.04.2012, 12:42 | Сообщение # 34
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Сделайте отдельный диалог и выдайте награду в нем.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Ср, 18.04.2012, 13:10 | Сообщение # 35
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый День.
Решил переделать квест Чапая по убийству Шакала. Переместил точку спавна Шакала и его команды в здание, где находится прототип гаусса, около аномалии "Железный Лес". Сделал нужные поправки в файлах. Неписи стоят там, где нужно. Проблема в том, что после уничтожения Шакала Тесак и его команда становятся враждебными. Как отключить враждебность Тесака? Заранее благодарен за советы.

Убирай выдачу инфопорции zat_b103_merc_fight из логики Шакала и компании. denis2000
 
fauoneДата: Ср, 18.04.2012, 16:55 | Сообщение # 36
Гражданский
Пользователи
Сообщений: 19
Награды: 0
Репутация: [ -30 ]

ребят подскажите как увидеть гамедату в зп и чн??

КМБ. Инструкция 1. denis2000

если кто знает-где взять плагины на фотошоп DDS-скиньте ссыли!

Для этого есть тема Программы для модинга STALKER'а. denis2000
 
sergej5500Дата: Сб, 05.05.2012, 22:19 | Сообщение # 37
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер.
На основе урока 33 из КМБ (автор GEONEZIS) сделал квест для Вано.
[cut=Сам квест][jup_a10_stalker_vano_artefact_quest]
icon = ui_inGame2_Kontrakt_s_uchenimi
prior = 2
storyline = false
title = {=actor_has_item(af_ice) =actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_title_3, {=actor_has_item(af_ice) !actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_title_2, {!actor_has_item(af_ice) =actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_title_1, jup_a10_stalker_vano_artefact_quest_title_0
descr = {=actor_has_item(af_ice) =actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_text_3, {=actor_has_item(af_ice) !actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_text_2, {!actor_has_item(af_ice) =actor_has_item(af_fire)} jup_a10_stalker_vano_artefact_quest_text_1, jup_a10_stalker_vano_artefact_quest_text_0
target = {=actor_has_item(af_ice) =actor_has_item(af_fire)} jup_a10_stalker_vano_id, nil
condlist_0 = {+jup_a10_stalker_vano_quest_end} complete[/cut]
[cut=Диалоги]<dialog id="jup_a10_stalker_vano_artefact_quest_begin">
<dont_has_info>jup_a10_stalker_vano_artefact_quest_init</dont_has_info>
<dont_has_info>jup_a10_stalker_vano_artefact_quest_no_quest</dont_has_info>
<precondition>dialogs_jupiter.jup_a10_stalker_vano_not_have_arts</precondition>
<phrase_list>
<phrase id="0">
<text>jup_a10_stalker_vano_artefact_quest_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>jup_a10_stalker_vano_artefact_quest_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>jup_a10_stalker_vano_artefact_quest_2</text>
<give_info>jup_a10_stalker_vano_artefact_quest_no_quest</give_info>
</phrase>
<phrase id="3">
<text>jup_a10_stalker_vano_artefact_quest_3</text>
<action>dialogs_zaton.zat_b30_owl_stalker_trader_give_quest</action>
<next>4</next>
</phrase>
<phrase id="4">
<text>jup_a10_stalker_vano_artefact_quest_4</text>
<give_info>jup_a10_stalker_vano_artefact_quest_init</give_info>
</phrase>
</phrase_list>
</dialog>
<dialog id="jup_a10_stalker_vano_artefact_quest_end">
<has_info>jup_a10_stalker_vano_artefact_quest_init</has_info>
<dont_has_info>jup_a10_stalker_vano_artefact_quest_end</dont_has_info>
<precondition>dialogs_jupiter.jup_a10_stalker_vano_have_arts</precondition>
<phrase_list>
<phrase id="0">
<text>jup_a10_stalker_vano_artefact_quest_5</text>
<give_info>jup_a10_stalker_vano_artefact_quest_end</give_info>
<next>1</next>
</phrase>
<phrase id="1">
<text>jup_a10_stalker_vano_artefact_quest_6</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>jup_a10_stalker_vano_artefact_quest_7</text>
<action>dialogs_jupiter.jup_a10_stalker_vano_relocates_arts</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>jup_a10_stalker_vano_artefact_quest_8</text>
<action>dialogs_jupiter.jup_a10_stalker_vano_relocates_money_to_actor</action>
<next>4</next>
</phrase>
<phrase id="4">
<text>jup_a10_stalker_vano_artefact_quest_9</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog> [/cut]
[cut=Задания]<string id="jup_a10_stalker_vano_artefact_quest_title_0">
<text>Поручение Вано: найти артефакты Снежинка и Пламя</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_text_0">
<text>Сыч попросил найти для него два арта- Снежинка и Пламя.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_title_1">
<text>Поручение Вано: найти артефакт Снежинка</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_text_1">
<text>Артефакт Пламя найден. Найдите Снежинку.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_title_2">
<text>Поручение Вано: найти артефакт Пламя</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_text_2">
<text>Артефакт Снежинка найден. Найдите Пламя.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_title_3">
<text>Поручение Вано: передайте найденные артефакты Вано.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_text_3">
<text>Оба артефакта найдены. Отдайте их Вано, и заберите награду.</text>
</string> [/cut]
[cut=Русификация диалогов]<string id="jup_a10_stalker_vano_artefact_quest_0">
<text>Есть какое дело?</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_1">
<text>Нужны артефакты Пламя и Снежинка. Достанешь, хорошо заплачу.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_2">
<text>Нет, друг- сам ищи.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_3">
<text>Сделаю.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_4">
<text>Вот и отлично.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_5">
<text>Я нашел артефакты, наш уговор в силе?</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_6">
<text>Да, отличная работа, давай артефакты сюда.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_7">
<text>Держи.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_8">
<text>Вот твои деньги.</text>
</string>
<string id="jup_a10_stalker_vano_artefact_quest_9">
<text>Бывай.</text>
</string> [/cut]
[cut=Инфопорции]<info_portion id="jup_a10_stalker_vano_artefact_quest_no_quest"></info_portion>
<info_portion id="jup_a10_stalker_vano_artefact_quest_init"></info_portion>
<info_portion id="jup_a10_stalker_vano_artefact_quest_end"></info_portion>[/cut]
[cut=Скриптовые функции]function jup_a10_stalker_vano_give_quest()
task_manager.get_task_manager():give_task("jup_a10_stalker_vano_artefact_quest")
end
function jup_a10_stalker_vano_have_arts(first_speaker, second_speaker)
return ((db.actor:object("af_ice") ~= nil) and (db.actor:object("af_fire") ~= nil))
end
function jup_a10_stalker_vano_not_have_arts(first_speaker, second_speaker)
return ((db.actor:object("af_ice") == nil) and (db.actor:object("af_fire") == nil))
end
function jup_a10_stalker_vano_relocates_arts(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_ice")
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_fire")
end
function jup_a10_stalker_vano_relocates_money_to_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 30000)
end [/cut]
Запустил игру и сразу побежал на Янов проверять. Диалоги у Вано появились, артефакты он берет и дает деньги. Скрипты работают отлично. Не работают инфопорции. Задания не появляются в ПДА и не обновляются. Что я пропустил или не дописал? Заранее благодарен за советы.

Ты выдаешь в диалоге совсем другой квест. denis2000

Добавлено (19.04.2012, 08:38)
---------------------------------------------
Доброе утро!
Спасибо denis2000 за подсказку. Квест запустился и работает. Как ввести дополнительное условие для взятия квеста?
Он должен быть доступен после решения проблемы с долгом Вано. Заранее благодарен за советы.

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

Добавлено (05.05.2012, 22:19)
---------------------------------------------
Всем Добрый Вечер!
Создал нового НПС на Кордоне. Прописал ему квест на поиск 10 АК-74 и 10 Абаканов.
За основу взял квест от Geonezis для Тремора на поиск анабиотиков и щупалец.
[cut=Сделал диалог]<dialog id="esc_rasvet_001_quest_begin_dialog">
<dont_has_info>esc_rasvet_001_quest_started</dont_has_info>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quest_begin_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quest_begin_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quest_begin_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quest_begin_3</text>
<next>4</next>
<next>44</next>
</phrase>
<phrase id="4">
<text>esc_rasvet_001_quest_begin_4</text>
<next>5</next>
</phrase>
<phrase id="5">
<text>esc_rasvet_001_quest_begin_5</text>
<give_info>esc_rasvet_001_quest_started</give_info>
<action>sgm_dialogs.give_esc_rasvet_001_quest</action>
</phrase>
<phrase id="44">
<text>esc_rasvet_001_quest_begin_6</text>
<next>444</next>
</phrase>
<phrase id="444">
<text>esc_rasvet_001_quest_begin_7</text>
</phrase>
</phrase_list>
</dialog>
<dialog id="esc_rasvet_001_quest_end_dialog">
<dont_has_info>esc_rasvet_001_quest_done</dont_has_info>
<has_info>esc_rasvet_001_quest_started</has_info>
<precondition>sgm_dialogs.actor_has_first_esc_rasvet_001_quest_item</precondition>
<precondition>sgm_dialogs.actor_has_second_esc_rasvet_001_quest_item</precondition>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quest_end_0</text>
<next>1</next>
<action>sgm_dialogs.transfer_esc_rasvet_001_quest_object</action>
<give_info>esc_rasvet_001_quest_done</give_info>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quest_end_1</text>
<next>2</next>
<next>3</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quest_end_2</text>
<next>22</next>
</phrase>
<phrase id="22">
<text>esc_rasvet_001_quest_end_4</text>
<next>11111</next>
<action>sgm_dialogs.money_esc_rasvet_001_quest</action>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quest_end_3</text>
<next>33</next>
</phrase>
<phrase id="33">
<text>esc_rasvet_001_quest_end_5</text>
<next>11111</next>
<action>sgm_dialogs.medcomplect_esc_rasvet_001_quest</action>
</phrase>
<phrase id="11111">
<text>esc_rasvet_001_quest_end_6</text>
</phrase>
</phrase_list>
</dialog>[/cut]
[cut noguest=Сделал скрипт]function actor_has_first_esc_rasvet_001_quest_item(first_speaker, second_speaker)
local cnt = 0
local function esc_001_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "wpn_ak74" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(esc_001_count, nil)
if cnt > 9 then
return true
end
return false
end

function actor_has_second_esc_rasvet_001_quest_item(first_speaker, second_speaker)
local cnt = 0
local function esc_001_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "wpn_abakan" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(esc_001_count, nil)
if cnt > 9 then
return true
end
return false
end

function transfer_esc_rasvet_001_quest_object(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "wpn_ak74", 10)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "wpn_abakan", 10)
end

function money_esc_rasvet_001_quest(first_speaker, second_speaker)
local amount = 15000
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function medcomplect_esc_rasvet_001_quest(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bag_medkit_2", 5)
end

function give_esc_rasvet_001_quest()
task_manager.get_task_manager():give_task("esc_rasvet_001_quest")
end [/cut]
Прописал в стартовый набор эти стволы и запустил игру. Квест берется, но не сдается. Видимо, не работает счетчик предметов в инвентаре. В чем я ошибся? И еще вопрос: как можно прописать проверку качества этих стволов? В игре придется подбирать трофейные стволы. Нужно, чтобы НПС брал только отремонтированное оружие. Заранее благодарен за советы.

Сообщение отредактировал sergej5500 - Ср, 18.04.2012, 23:30
 
denis2000Дата: Сб, 05.05.2012, 23:11 | Сообщение # 38
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Диалоги вроде рабочие. Скрипт проверки наличия определенного количества предметов тоже рабочий (древний код еще GSС-овский). Проверяй дальше видимо проблема не здесь.
Для проверки состояния предметов делай так:
Code
if (item:section() == "wpn_ak74") and (item:condition()>0.9) then

То есть не только секция предмета "wpn_ak74", но и состояние не хуже 0,9.
К тому же придется переделать скрипт переноса предметов от ГГ к НПС с учетом состояния предметов.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ALEKS58Дата: Вс, 06.05.2012, 13:16 | Сообщение # 39
Новичок
Пользователи
Сообщений: 66
Награды: 0
Репутация: [ 3 ]

В прохождении Geonezis Addon + Sigerous Mod 2.0 уже несколько игровых суток прошло , а антенна ещё не отремонтирована (в квесте за монолит ) . Подскажите в чём ошибка , и как её исправить ?

Причина редактирования: Нарушение П.4.1. (Кросспостинг) Наказание!
Пост№1, Пост№2, Пост№3


ALEKS58
 
sergej5500Дата: Вс, 06.05.2012, 20:05 | Сообщение # 40
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый День!
Сделал несколько новых НПС на Кордоне! Уникальных НПС, на которые завязаны квесты, спавню в отдельных сквадах.
Как спавнить сквады по определенному условию, разобрался. Если я дописываю в конфиг сквада Медведева фразу
online_cond = {+esc_rasvet_002_quest_done} true,
спавн сталкеров на блокпосту происходит по завершению соответстующего квеста.
Вопрос, как по этому-же инфопоршню удалить другой сквад с НПС, квест с которым завершен, что бы они не тормозили игру. Не просто их убить, нужно что бы они просто исчезли. Заранее благодарен за подсказки.
 
denis2000Дата: Вс, 06.05.2012, 21:19 | Сообщение # 41
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Сделай рестриктор с логикой:
Code
[logic]
active = sr_idle

[sr_idle]
on_info = {+esc_rasvet_002_quest_done =squad_exist(<стори ид сквада для удаления>)} nil %=remove_squad(<стори ид сквада для удаления>)%


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пт, 11.05.2012, 15:12 | Сообщение # 42
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый Вечер! Делал квест на основе квеста от Geonezis для Тремора на поиск анабиотиков и щупалец. Квест полностью рабочий, выполняется без проблем, но не выдаются промежуточные инфопорции. Сейчас специально загрузил
Geonezis Addon, там та же история. Промежуточные инфопорции не выдаются. Приведу здесь квест и скрипты.
[cut=Квест][geonezis_zat_tremor_quest]
icon = ui_inGame2_Kontrakt_s_uchenimi
prior = 1
storyline = false
title = {+zat_tremor_quest_have_anabiotic +zat_tremor_quest_have_krovosos} zat_tremor_quest_title3, {+zat_tremor_quest_have_anabiotic -zat_tremor_quest_have_krovosos} zat_tremor_quest_title2, {+zat_tremor_quest_have_krovosos -zat_tremor_quest_have_anabiotic} zat_tremor_quest_title1, zat_tremor_quest_title0
descr = {+zat_tremor_quest_have_anabiotic +zat_tremor_quest_have_krovosos} zat_tremor_quest_text3, {+zat_tremor_quest_have_anabiotic -zat_tremor_quest_have_krovosos} zat_tremor_quest_text2, {+zat_tremor_quest_have_krovosos -zat_tremor_quest_have_anabiotic} zat_tremor_quest_text1, zat_tremor_quest_text0
target = {+zat_tremor_quest_have_anabiotic +zat_tremor_quest_have_krovosos} zat_b22_stalker_medic
condlist_0 = {+zat_tremor_quest_done} complete
condlist_1 = {+zat_b22_stalker_medic_death} fail
on_complete = %=add_actor_rank(3) =inc_faction_goodwill_to_actor(stalker:50) =edit_counter(stat_kvestov:1:plus)%[/cut]
[cut=Dialogs_zaton]function actor_has_first_tremor_quest_item(first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "mutant_krovosos_booty" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 2 then
return true
end
return false
end

function actor_has_second_tremor_quest_item(first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "drug_anabiotic" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return true
end
return false
end

function transfer_zat_tremor_quest_object(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "drug_anabiotic", 2)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "mutant_krovosos_booty", 3)
end

function money_zat_tremor_quest(first_speaker, second_speaker)
local amount = 15000
dialogs.relocate_money_to_actor(first_speaker, second_speaker, amount)
end

function medcomplect_zat_tremor_quest(first_speaker, second_speaker)
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit_elite", 10)
end

function give_tremor_quest()
task_manager.get_task_manager():give_task("geonezis_zat_tremor_quest")
end [/cut]
[cut=sgm_tasks]--/Квест: Поручение Тремора
if has_alife_info("zat_tremor_quest_started") and (not has_alife_info("zat_tremor_quest_have_anabiotic")) then
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "drug_anabiotic" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
give_info("zat_tremor_quest_have_anabiotic")
end
end
if has_alife_info("zat_tremor_quest_started") and (not has_alife_info("zat_tremor_quest_have_krovosos")) then
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "mutant_krovosos_booty" then
cnt = cnt + 1
end
end
db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 2 then
give_info("zat_tremor_quest_have_krovosos")
end
end[/cut]
Видимо, не работает функция в sgm_tasks. Как можно исправить данную функцию, что бы промежуточные инфопорции выдавались и задания обновлялись. Заранее благодарен за советы.

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

Добавлено (11.05.2012, 00:34)
---------------------------------------------
Добрый Вечер!
Сделал квест на поиск 10 артефактов разных видов на примере квеста Тесака на поиск еды.
Приведу детали квеста.
[cut=sgm_dialogs]function sgm_dialogs.esc_rasvet_001_quests_1_have_arts(first_speaker, second_speaker)
local item_sections = {
[1] = "af_baloon",
[2] = "af_gravi",
[3] = "af_ice",
[4] = "af_glass",
[5] = "af_fuzz_kolobok",
[6] = "af_gold_fish",
[7] = "af_fire"

}
local needed = 10
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)
-- printf("?sgm_dialogs.esc_rasvet_001_quests_1_have? : section [%s] count [%s]", tostring(v), tostring(count))
end

return count >= needed
end
function esc_rasvet_001_quests_1_relocates_arts(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
local i = 10
local j = 0
local section
local item_sections = {
[1] = "af_baloon",
[2] = "af_gravi",
[3] = "af_ice",
[4] = "af_glass",
[5] = "af_fuzz_kolobok",
[6] = "af_gold_fish",
[7] = "af_fire"
}

local function transfer_object_item(temp, item)
if (item:section() == section and i ~= 0) then
actor:transfer_item(item, npc)
i = i - 1
end
end

for k,v in pairs(item_sections) do
section = v
j = i
actor:iterate_inventory(transfer_object_item, nil)
if ((j - i) ~= 0) then
news_manager.relocate_item(actor, "out", section, j - i)
end
-- printf("?esc_rasvet_001_quests_1_relocates_arts? : section [%s] lasts [%s] from 6", tostring(v), tostring(i))
end
end
function esc_rasvet_001_quests_1_relocates_money_to_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 120000)
end[/cut]
[cut=dialogs_escape]<dialog id="esc_rasvet_001_quests_1_begin">
<dont_has_info>esc_rasvet_001_quests_1_init</dont_has_info>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quests_1_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quests_1_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quests_1_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quests_1_3</text>
<next>4</next>
<next>5</next>
</phrase>
<phrase id="4">
<text>esc_rasvet_001_quests_1_4</text>
<give_info>esc_rasvet_001_quests_1_no_quest</give_info>
</phrase>
<phrase id="5">
<text>esc_rasvet_001_quests_1_5</text>
<give_info>esc_rasvet_001_quests_1</give_info>
<next>6</next>
</phrase>
<phrase id="6">
<text>esc_rasvet_001_quests_1_6</text>
<give_info>esc_rasvet_001_quests_1_init</give_info>
<next>7</next>
</phrase>
<phrase id="7">
<text>esc_rasvet_001_quests_1_61</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
<dialog id="esc_rasvet_001_quests_1_end">
<has_info>esc_rasvet_001_quests_1_init</has_info>
<dont_has_info>esc_rasvet_001_quests_1_end</dont_has_info>
<precondition>sgm_dialogs.esc_rasvet_001_quests_1_have_arts</precondition>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quests_1_7</text>
<give_info>esc_rasvet_001_quests_1_end</give_info>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quests_1_8</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quests_1_9</text>
<action>sgm_dialogs.esc_rasvet_001_quests_1_relocates_arts</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quests_1_10</text>
<action>sgm_dialogs.esc_rasvet_001_quests_1_relocates_money_to_actor</action>
<next>4</next>
</phrase>
<phrase id="4">
<text>esc_rasvet_001_quests_1_11</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>[/cut]
[cut=tm_escape][esc_rasvet_001_quests_1]
icon = ui_inGame2_Kontrakt_s_uchenimi
prior = 1
storyline = false
title = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001_quests_1_got_name, esc_rasvet_001_quests_1_bring_name
descr = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001_quests_1_got_text, esc_rasvet_001_quests_1_bring_text
target = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001
condlist_0 = {+esc_rasvet_001_quests_1_end} complete [/cut]
Изучив оригинальный квест, выяснил, что он запускается посредством инфопорции с названием квеста в диалоге. Вроде все сделал по образцу, но у меня инфопорция не срабатывает и квест не запускается. Скриптовые функции работают отлично. Артефакты можгно принести и получить за них награду.
При добавлении в диалог <action>sgm_dialogs.esc_rasvet_001_quests_1</action> и функции
function esc_rasvet_001_quests_1()
task_manager.get_task_manager():give_task("esc_rasvet_001_quests_1")
end происходит вылет. Если делать квест на основе урока от Geonezis на поиск артефактов Пламя и Снежинка, action нормально работает и квест запускается. Как сделать, чтобы квест запустился? Заранее благодарен за советы.

Ожидаю ЛОГ! denis2000
Лучше не именовать функции таким образом sgm_dialogs.esc_rasvet_001_quests_1_have_arts
Ну и лог конечно-же...
XOBAH


Добавлено (11.05.2012, 15:12)
---------------------------------------------
Добрый День! Привожу проблемный квест. Задание найти 10 артефактов 7 разных видов. Сделан на основе квеста Тесака на поиск продуктов.
[cut=Квест]<dialog id="esc_rasvet_001_quests_1_begin">
<dont_has_info>esc_rasvet_001_quests_1_init</dont_has_info>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quests_1_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quests_1_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quests_1_2</text>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quests_1_3</text>
<next>4</next>
<next>5</next>
</phrase>
<phrase id="4">
<text>esc_rasvet_001_quests_1_4</text>
<give_info>esc_rasvet_001_quests_1_no_quest</give_info>
</phrase>
<phrase id="5">
<text>esc_rasvet_001_quests_1_5</text>
<action>sgm_dialogs.esc_rasvet_001_quests_1</action>
<next>6</next>
</phrase>
<phrase id="6">
<text>esc_rasvet_001_quests_1_6</text>
<give_info>esc_rasvet_001_quests_1_init</give_info>
<next>7</next>
</phrase>
<phrase id="7">
<text>esc_rasvet_001_quests_1_61</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
<dialog id="esc_rasvet_001_quests_1_end">
<has_info>esc_rasvet_001_quests_1_init</has_info>
<dont_has_info>esc_rasvet_001_quests_1_end</dont_has_info>
<precondition>sgm_dialogs.esc_rasvet_001_quests_1_have_arts</precondition>
<phrase_list>
<phrase id="0">
<text>esc_rasvet_001_quests_1_7</text>
<give_info>esc_rasvet_001_quests_1_end</give_info>
<next>1</next>
</phrase>
<phrase id="1">
<text>esc_rasvet_001_quests_1_8</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>esc_rasvet_001_quests_1_9</text>
<action>sgm_dialogs.esc_rasvet_001_quests_1_relocates_arts</action>
<next>3</next>
</phrase>
<phrase id="3">
<text>esc_rasvet_001_quests_1_10</text>
<action>sgm_dialogs.esc_rasvet_001_quests_1_relocates_money_to_actor</action>
<next>4</next>
</phrase>
<phrase id="4">
<text>esc_rasvet_001_quests_1_11</text>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>

function esc_rasvet_001_quests_1()
task_manager.get_task_manager():give_task("esc_rasvet_001_quests_1")
end
function sgm_dialogs.esc_rasvet_001_quests_1_have_arts(first_speaker, second_speaker)
local item_sections = {
[1] = "af_baloon",
[2] = "af_gravi",
[3] = "af_ice",
[4] = "af_glass",
[5] = "af_fuzz_kolobok",
[6] = "af_gold_fish",
[7] = "af_fire"

}
local needed = 10
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)
-- printf("?sgm_dialogs.esc_rasvet_001_quests_1_have? : section [%s] count [%s]", tostring(v), tostring(count))
end

return count >= needed
end
function esc_rasvet_001_quests_1_relocates_arts(first_speaker, second_speaker)
local npc = dialogs.who_is_npc(first_speaker, second_speaker)
local actor = dialogs.who_is_actor(first_speaker, second_speaker)
local i = 10
local j = 0
local section
local item_sections = {
[1] = "af_baloon",
[2] = "af_gravi",
[3] = "af_ice",
[4] = "af_glass",
[5] = "af_fuzz_kolobok",
[6] = "af_gold_fish",
[7] = "af_fire"
}

local function transfer_object_item(temp, item)
if (item:section() == section and i ~= 0) then
actor:transfer_item(item, npc)
i = i - 1
end
end

for k,v in pairs(item_sections) do
section = v
j = i
actor:iterate_inventory(transfer_object_item, nil)
if ((j - i) ~= 0) then
news_manager.relocate_item(actor, "out", section, j - i)
end
-- printf("?esc_rasvet_001_quests_1_relocates_arts? : section [%s] lasts [%s] from 6", tostring(v), tostring(i))
end
end
function esc_rasvet_001_quests_1_relocates_money_to_actor(first_speaker, second_speaker)
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 120000)
end

[esc_rasvet_001_quests_1]
icon = ui_inGame2_Kontrakt_s_uchenimi
prior = 1
storyline = false
title = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001_quests_1_got_name, esc_rasvet_001_quests_1_bring_name
descr = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001_quests_1_got_text, esc_rasvet_001_quests_1_bring_text
target = {=esc_rasvet_001_quests_1_have_arts} esc_rasvet_001
condlist_0 = {+esc_rasvet_001_quests_1_end} complete[/cut]
При ативации <action>sgm_dialogs.esc_rasvet_001_quests_1</action> происходит вылет
[cut=Лог вылета]FATAL ERROR
[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...files 1\Зов Припяти\gamedata\scripts\xr_logic.script:478: attempt to index local 'npc' (a nil value)[/cut]
При замене <action>sgm_dialogs.esc_rasvet_001_quests_1</action> на
<give_info>esc_rasvet_001_quests_1</give_info> вылета не происходит, но квест не активируется. Скриптовые функции работают нормально, можно принести артефакты и получить деньги./text>


Сообщение отредактировал sergej5500 - Пт, 11.05.2012, 15:14
 
denis2000Дата: Пт, 11.05.2012, 15:30 | Сообщение # 43
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Функуция esc_rasvet_001_quests_1_have_arts в xr_conditions.script присутствует?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пт, 11.05.2012, 16:27 | Сообщение # 44
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Попробовал дописать функцию esc_rasvet_001_quests_1_have_arts в файл xr_conditions.script по аналогии с функцией zat_b103_actor_has_needed_food из оригигнального квеста. Ничего не изменилось. Квест по прежнему не берется. Функция esc_rasvet_001_quests_1_have_arts у меня работает нормально. Когда подхожу к НПС, не имея 10 артефактов, то соответствующая ветка диалога не появляется.
 
denis2000Дата: Пт, 11.05.2012, 16:38 | Сообщение # 45
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (sergej5500)
Ничего не изменилось. Квест по прежнему не берется.

Тоесть тот же лог вылета? Тогда ты сделал это неправильно.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Форум » Моды для игр » Модостроение » Модостроение. Создание и редактирование квестов
Поиск: