|
Модостроение. Создание и редактирование квестов
|
|
| denis2000 | Дата: Пн, 10.10.2011, 21:25 | Сообщение # 1 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Создание и редактирование квестов Создание новых квестов и редактирование существующих Если у вас появились вопросы по созданию и редактированию квестов, изменению существующих и добавлению новых в игру. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 13.05.2012, 21:44 | Сообщение # 46 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый День! Сделал квест на поиск 7 артефактов 7 разных видов, по штуке каждого вида. [cut=Скрипт квеста]function esc_rasvet_astronom_artefact_quests() task_manager.get_task_manager():give_task("esc_rasvet_astronom_artefact_quests") end function esc_rasvet_astronom_artefact_quests_actor(first_speaker, second_speaker) return db.actor:object("af_baloon") ~= nil and db.actor:object("af_gravi") ~= nil and db.actor:object("af_ice") ~= nil and db.actor:object("af_glass") ~= nil and db.actor:object("af_fuzz_kolobok") ~= nil and db.actor:object("af_gold_fish") ~= nil and db.actor:object("af_fire") ~= nil end
function esc_rasvet_astronom_artefact_quests_otdat(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_baloon") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_gravi") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_ice") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_glass") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_fuzz_kolobok") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_gold_fish") dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_fire")
end function esc_rasvet_astronom_artefact_quests_nagrada_actor(first_speaker, second_speaker) dialogs.relocate_money_to_actor(first_speaker, second_speaker, 60000) end[/cut] Если прописать эти артефакты в стартовый набор, то квест проходим. Скрипты работают. Но если сохраниться после взятия квеста, и до его сдачи, то сохранения вылетают с логом [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 : ...es 1\Зов Припяти\gamedata\scripts\sgm_dialogs.script:5462: attempt to index field 'actor' (a nil value) [/cut] Предполагаю, что где-то ошибка скрипта, но не вижу где. Заранее благодарен за советы.
Обрати внимание на строку скрипта на который ссылается лог. denis2000Добавлено (13.05.2012, 21:44) --------------------------------------------- Добрый Вечер! Хочу вернуться к вылету, о котором писал в предыдущем посту. В строке 5462 находится функция return db.actor:object("af_baloon") ~= nil. Вроде в ней нет ничего необычного. В сборнике модостроения Хована про такой вылет написано, что скрипт пытается обратится к параметру, но его не существует. Добавить в конфиг необходимый параметр. Как я понял, скрипт должен проверять наличие артефактов у ГГ, и при наличии всех 7 штук обновить задание квеста. Если не перезагружаться, то все работает. Насчет совета добавить в конфиг необходимый параметр. Как это сделать? Заранее благодарен за советы?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| XOBAH | Дата: Вс, 13.05.2012, 22:11 | Сообщение # 47 |
 Техник Вольных
Вольные сталкеры
Сообщений: 912
| sergej5500, Не, не угадал. Нужно проверять наличие самого ГГ... Переделай проверку, таким образом [cut]if db.actor ~= nil then return db.actor:object("af_baloon") ~= nil and db.actor:object("af_gravi") ~= nil and db.actor:object("af_ice") ~= nil and db.actor:object("af_glass") ~= nil and db.actor:object("af_fuzz_kolobok") ~= nil and db.actor:object("af_gold_fish") ~= nil and db.actor:object("af_fire") ~= nil else return false end[/cut] PS: Могу ошибаться в синтаксисе, ибо в голове висят экзамены и синтаксис другого языка...
|
| |
|
| Эти 0 пользователя(ей) поблагодарили XOBAH за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 20.05.2012, 22:09 | Сообщение # 48 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый Вечер! Начал делать цепочку квестов для сталкеров Петрухи и Шило. Так как оригинальные Петруха и Шило ребята немногословные, (после спасения они говорят только: "Спасибо, что спас"), сделал для них поправку логики вида: on_info = {+zat_b53_thanks_dialog_end =dist_to_actor_ge(65)} nil %=release_npc%. После помощи Петрухе и получения награды, при удалении ГГ на 65 метров оба персонажа исчезают. Для реализации квестов создал 2 новых НПС с визуалами и именами Петрухи и Шила, спавн которых происходит по [cut=функции]if has_alife_info("zat_b53_thanks_dialog_end") and dont_has_alife_info("zaton_petrusha_spawn") then create("zaton_petrusha",120.94340515137,-7.3475394248962,190.58274841309,1174506,316) give_info("zaton_petrusha_spawn") end if has_alife_info("zat_b53_thanks_dialog_end") and dont_has_alife_info("zaton_shilo_spawn") then create("zaton_shilo",113.15841674805,-3.9360427856445,190.3991394043,1160053,316) give_info("zaton_shilo_spawn") end[/cut]В результате 2 НПС спавнятся на Скадовске и для них можно делать квесты. После получения награды от оригинального Петрухи из котла и до удаления ГГ на 65 метров Петруха и Шило существуют в двух экземплярах. То есть можно их пристрелить и затем на Скадовске встретить живыми и здоровыми. Вопрос, есть ли какая-нибудь инфопорция, выдаваемая в случае атаки главным героем или мутантами, бандитами этого конкретного сквада, которую можно прописать в логику уже заспавнившихся на Скадовске Петрухи и Шила и обеспечить их исчезновение. Заранее благодарен за советы.
Сообщение отредактировал sergej5500 - Вс, 20.05.2012, 22:33 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 21.05.2012, 12:44 | Сообщение # 49 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Абсолютно ничего не мешает выдать инфопорцию при удалении НПС и спавнить новых при наличии ее. Тогда не будет никаких "дубликатов".
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пн, 21.05.2012, 23:08 | Сообщение # 50 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер! Проблему с дубликатами Петрухи и Шила отчасти решил, прописав им в логику строку on_info = {+zat_b53_actor_enemy} nil %=release_npc%. Инфопорцию взял из логики оригинальных Петрухи и Шила. Касательно совета denis2000: Абсолютно ничего не мешает выдать инфопорцию при удалении НПС и спавнить новых при наличии ее. Тогда не будет никаких "дубликатов". Как это сделать технически? Функция release_npc используется в логике Меча и Петьки Размандяя. Вроде никаких инфопорций из нее не выводится. Как по срабатыванию этой функции прописать инфопорцию, пригодную для скрипта спавна "дубликатов"? В сборнике Хована есть функции проверки: жив НПС или мертв. После удаления Петруха не жив, не мертв. Заранее благодарен за советы.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 21.05.2012, 23:56 | Сообщение # 51 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Ну так вот же: Code on_info = {+zat_b53_thanks_dialog_end =dist_to_actor_ge(65)} nil %=release_npc +zat_b53_release_nps%. где - zat_b53_release_nps выдаваемая инфопорция. Стем же успехом заспавнить нпс можно прямо здесь или телепортировать существующих!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| denis2000 | Дата: Чт, 24.05.2012, 20:48 | Сообщение # 52 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Quote (sergej5500) online_cond Это работать не будет, нужно спавнить сквады по условию.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пт, 25.05.2012, 23:38 | Сообщение # 53 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый Вечер! Попробовал спавн сталкеров из оригинальной игры по условию. Проверял на сквадах Спартака и Кастета. [cut=Что изменил]Из конфигов сквадов убрал строки
spawn_point = zat_b7_stalkers_raiders_spawn и spawn_point = zat_b7_stalkers_victims_spawn_1
Из файла simulation.ltx убрал строки zat_b7_stalkers_raiders = zat_stalker_base_smart и zat_b7_stalkers_victims_1 = zat_b7
В файл sgm.tasks добавил функцию спавна
if db.actor:object("af_quest_b14_twisted") and dont_has_alife_info("zat_b7_stalkers_raiders_spawn") then create_force("zat_b7_stalkers_raiders","zat_stalker_base_smart") give_info("zat_b7_stalkers_raiders_spawn") end if db.actor:object("af_quest_b14_twisted") and dont_has_alife_info("zat_b7_stalkers_victims_1_spawn") then create_force("zat_b7_stalkers_victims_1","zat_b7") give_info("zat_b7_stalkers_victims_1_spawn") end
Спавн происходит при взятии артефакта на земснаряде[/cut] Функция спавна работает. У Спартака вроде все нормально, а у Кастета проблема. Султан не хочет давать квест на Шевченко. Сответствующие фразы просто не появляются в диалоге. Диалоги и логику сталкеров я не трогал. В чем может быть проблема. Заранее благодарен за советы.
Сообщение отредактировал sergej5500 - Пт, 25.05.2012, 23:39 |
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Сб, 26.05.2012, 00:36 | Сообщение # 54 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Исправляй квест "Наезд", его состояние зависит от наличия этих сквадов.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 17.06.2012, 16:36 | Сообщение # 55 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Попробуй убавить количество НПС до 6.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| FREEM@N | Дата: Вс, 22.07.2012, 20:33 | Сообщение # 56 |
 Легенда Зоны
Свобода
Сообщений: 1031
| А как создать такой квест типа принеси/подай на ЗП (хочю учёным прописать квест на поиск гаусс-пушки) У меня ЗП версии 1.6.2 (если надо)
Читай КМБ. denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили FREEM@N за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 22.07.2012, 21:32 | Сообщение # 57 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| FREEM@N Посмотрите эту тему Здесь также много ценной информации
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| prohodchik | Дата: Вс, 04.11.2012, 12:45 | Сообщение # 58 |
 Новичок
Пользователи
Сообщений: 50
| Как можно сменить основные квесты поиска вертолетов на другие?
Проект в разработке – "Болотные легенды"
Сообщение отредактировал prohodchik - Вс, 04.11.2012, 12:46 |
| |
|
| Эти 0 пользователя(ей) поблагодарили prohodchik за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 04.11.2012, 13:29 | Сообщение # 59 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| prohodchik, Можно например в файле zat_b101_logic.ltx замените выдачу квестов с такого: Code =give_task(zat_b101_heli_5_crash) +zat_b101_give_task =give_task(jup_b8_heli_4_crash) +jup_b8_give_task =give_task(zat_b28_heli_3_crash) =give_task(zat_b100_heli_2_crash) =give_task(jup_b9_heli_1_crash) +jup_b9_give_task =set_active_task(zat_b28_heli_3_crash) на свои.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| BadQVIK | Дата: Пт, 07.12.2012, 19:41 | Сообщение # 60 |
|
Удаленные
| denis2000, Просмотрел я КМБ, если честно то ничего не нашел...У меня с квестами была вечная проблема.Никак не могу научиться их делать. В ТЧ вроде как умудрился, а вот с ЗП посложнее будет! Если сможешь помочь, вытащи где-нибудь тутор по моей проблеме: как сделать чтобы мною созданный Нпс мог продавать информацию. На сколько я понял...Это не совсем сложно. Пишется диалог, в него вставляются поршни, эти поршни вызывают функцию со скрипта.Ну а в скрипте как понятно лежит та самая функция-условие(цена информации).Вот как-то так. Приме что я хочу сделать: [cut noguest=Обязательно к прочтению!!!]Примечание--Нпс Игорек! Допустим наш Игорек стоит на Скадовске.Гг подбегая к нему выявляет такой диалог - Привет а ты КТо? - Я игорек главный информатор в зоне! - У тебя есть информация про новых мутантов? - Конечно, я продам тебе ее за 2000 тысячи...
Условия Гг если да - Хорошо вот деньги Условия Гг если нет - Нет спасибо слишком дороговато!
Вот. Надеюсь я довольно точно обосновал свою проблему и просьбу. Мне будет достаточно если вы ребята объясните мне в текстовом виде: как это все блин сделать! Ну и если можно упакованный в архив пример такой неистовой мути.... Спасибо за внимание, жду ответа.Всем удачи![/cut]
Простейший диалог, реализовать его вы в состоянии сами. denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили BadQVIK за это полезное сообщение: |
|
|
|