Модостроение. Создание и редактирование квестов
|
|
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 за это полезное сообщение: |
|
|
9vova8 | Дата: Пн, 07.01.2013, 19:19 | Сообщение # 91 |
Новичок
Пользователи
Сообщений: 91
| При таком условии получается такая ошибка [cut noguest=ошибка]stack trace:
001B:0387105B lua.JIT.1.1.4.dll[/cut]
[cut=условие] <precondition>actor_has_item("jup_b217_quest_item")</precondition>[/cut]
В диалогах невозможно использование аргументов функций. Создавайте новую функцию в скриптах и используйте ее. XOBAH
|
|
|
Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
prohodchik | Дата: Вс, 17.02.2013, 15:50 | Сообщение # 92 |
Новичок
Пользователи
Сообщений: 50
| Цитата (denis2000) zat_b101_logic.ltx у меня нет такого файла в чистой gamedata
Проект в разработке – "Болотные легенды"
|
|
|
Эти 0 пользователя(ей) поблагодарили prohodchik за это полезное сообщение: |
|
|
Ааз | Дата: Вс, 17.02.2013, 17:40 | Сообщение # 93 |
Хозяин Зоны
Зомби
| Я делаю квест на чистый Зов Припяти 1.6.02, тип квеста: "убить сталкера", при этом возникло несколько казусов: - при убийстве сталкера не выдается инфопоршень, квест висит. - проблемы с описанием задания - не получается сделать метки в задании на НПСа, которого требуется убить и после убийства метка должна переходить на квестодателя (в моём случае убиваемый НПС и НПС-квестодатель спавнятся скриптами). Ниже привожу все изменения в файлах. [cut noguest=Файл zat_stalkers.ltx (инклуд прописан в spawn_sections.ltx)][zat_demiurg]:stalker_trader $spawn = "respawn\zat_demiurg" character_profile = zat_demiurg spec_rank = master community = stalker custom_data = scripts\zaton\zat_demiurg.ltx
[zat_renegat]:stalker $spawn = "respawn\zat_renegat" character_profile = zat_renegat spec_rank = veteran community = stalker story_id = zat_renegat custom_data = scripts\zaton\zat_renegat.ltx[/cut]
[cut noguest=character_desc_zaton_new.xml (зарегистрирован в system.ltx)]<?xml version='1.0' encoding="windows-1251"?>
<xml>
<specific_character id="zat_demiurg" team_default="1"> <name>zat_demiurg</name> <icon>ui_inGame2_neutral_1</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>zat_demiurg</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\stalker\</snd_config> <rank>635</rank> <reputation>10</reputation> <money min="15000" max="18000" infinitive="0" /> <visual>actors\stalker_neutral\stalker_neutral_nauchniy</visual>
<supplies> [spawn] \n wpn_sig550 \n ammo_5.56x45_ss190 = 1 \n
#include "gameplay\character_items_nd_nl.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs.xml" </supplies>
<actor_dialog>zat_renegat_kill</actor_dialog> <actor_dialog>zat_renegat_kill_complete</actor_dialog> <actor_dialog>actor_break_dialog</actor_dialog>
#include "gameplay\character_criticals_4.xml" </specific_character> <specific_character id="zat_renegat" team_default="1"> <name>zat_renegat</name> <icon>ui_inGame2_bandit_2</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>zat_renegat</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_02\bandit\</snd_config>
<rank>310</rank> <reputation>-5</reputation>
<visual>actors\stalker_bandit\stalker_bandit_2</visual> <supplies>
[spawn] \n wpn_ak74 \n ammo_5.45x39_fmj = 1 \n wpn_pm \n ammo_9x18_fmj = 1 \n grenade_rgd5 = 2 \n
#include "gameplay\character_items_nd.xml" #include "gameplay\character_drugs.xml" #include "gameplay\character_drugs_mil.xml" </supplies> #include "gameplay\character_criticals_4.xml" </specific_character>
</xml>[/cut]
[cut noguest=dialogs_zaton_new.xml (зарегистрирован в system.ltx)]<?xml version="1.0" encoding="windows-1251" ?> <game_dialogs> <dialog id="zat_renegat_kill"> <dont_has_info>zat_renegat_kill_done</dont_has_info> <dont_has_info>zat_renegat_kill_give</dont_has_info> <phrase_list> <phrase id="0"> <text>Привет, работа есть?</text> <next>1</next> </phrase> <phrase id="1"> <text>Да, работа для тебя будет. Но прежде спрошу: ты знаешь что-нибудь о Ренегатах?</text> <next>2</next> <next>21</next> </phrase> <phrase id="2"> <text>Нет, впервые слышу, а что?</text> <next>3</next> </phrase> <phrase id="21"> <text>Ну слышал кое-что от сталкеров. А в чем собственно проблема?</text> <next>3</next> </phrase> <phrase id="3"> <text>Вообщем, я тебе вот что скажу - я Демиург, один из оставшихся в живых чистонебовцев. Ренегаты - наши заклятые враги. С ними мы, чистонебовцы, воевали в 2011 году. Однако после боя на ЧАЭС, когда почти весь клан погиб, я думал, что они успокоятся и не станут искать оставшихся в живых. Однако я ошибался. Один из Ренегатов находится сейчас здесь, на Затоне. Не иначе, как по мою душу явился, гад смердячий, а ведь я подозревал, что за мной непременно будет слежка. Поэтому нашел прикид, в котором меня хрен кто раскусит. Ну а тебя я попрошу расправиться с идущим по моему следу противником. Оплату гарантирую. Как вернешься, побеседуем обстоятельнее. Берешься?</text> <next>4</next> </phrase> <phrase id="4"> <text>Берусь.</text> <give_info>zat_renegat_kill_give</give_info> <action>dialogs_zaton.zat_renegat_kill_quest</action> <action>renegat_spawn.spawn_zat_renegat</action> </phrase> </phrase_list> </dialog>
<dialog id="zat_renegat_kill_complete"> <has_info>zat_renegat_kill_give</has_info> <dont_has_info>zat_renegat_kill_done</dont_has_info> <has_info>zat_renegat_mertv</has_info> <phrase_list> <phrase id="0"> <text>Ренегата я устранил, от греха подальше.</text> <next>1</next> </phrase> <phrase id="1"> <text>Вот спасибо, выручил ты меня. Я уж думал, что всё - кирдык тебе...</text> <give_info>zat_renegat_kill_done</give_info> </phrase> </phrase_list> </dialog> </game_dialogs>[/cut]Добавлено (17.02.2013, 17:28) --------------------------------------------- [cut noguest=info_zaton.xml]<info_portion id="zat_renegat_kill_done"></info_portion> <info_portion id="zat_renegat_kill_give"></info_portion> <info_portion id="zat_renegat_mertv"></info_portion>[/cut]
[cut noguest=zat_profiles.xml (зарегистрирован в system.ltx)]<?xml version='1.0' encoding="windows-1251"?>
<xml>
<character id="zat_demiurg"> <class>zat_demiurg</class> </character>
<character id="zat_renegat"> <class>zat_renegat</class> </character>
</xml>[/cut]
[cut noguest=tm_zaton.ltx][zat_renegat_kill] icon = ui_inGame2_Bezopasnoe_mesto storyline = false title = zat_renegat_kill_quest_name descr = zat_renegat_kill_quest_text target = zat_demiurg condlist_0 = {+zat_renegat_kill_done} complete on_complete = %=inc_faction_goodwill_to_actor(stalker:40)% reward_money = 4500[/cut]
[cut noguest=st_quests_zaton.xml]<string id="zat_renegat_kill_quest_name"> <text>Ренегат: убрать сталкера из группировки Ренегаты.</text> </string> <string id="zat_renegat_kill_quest_text"> <text>Убить ренегата, который расположился где-то неподалеку от Скадовска, после чего доложить Демиургу о выполнении задания.</text> </string>[/cut]
[cut noguest=demiurg_spawn.script]function spawn_demiurg() if not has_alife_info("spawn_demiurg_complite") then local p=vector(),lv,gv p.x = 113.776520 p.y = -7.348208 p.z = 186.347198 lv = 1162412 gv = 316 alife():create("zat_demiurg",p,lv,gv) give_info("spawn_demiurg_complite") end end[/cut]
[cut noguest=renegat_spawn.script]function spawn_zat_renegat() if not has_alife_info("spawn_renegat_complite") then local p=vector(),lv,gv p.x = 173.417191 p.y = 11.494859 p.z = -264.904175 lv = 1262839 gv = 23 alife():create("zat_renegat",p,lv,gv) give_info("spawn_renegat_complite") end end[/cut]
[cut noguest=dialogs_zaton.script]function zat_renegat_kill_quest() task_manager.get_task_manager():give_task("zat_renegat_kill_give") end[/cut] Добавлено (17.02.2013, 17:40) --------------------------------------------- [cut noguest=zat_demiurg.ltx][logic] active = remark@trader [remark@trader] invulnerable = true on_combat = combat meet = meet_trader [combat] combat_type =
[meet_trader] abuse = false use = true allow_break = false meet_on_talking = true[/cut]
[cut noguest=zat_renegat.ltx][logic] on_death = death active = remark1 danger = danger_ignore
[danger_ignore] ignore_distance = 5
[death] on_info = %+zat_renegat_mertv%
[remark1] no_move = true anim = sit_ass on_actor_dist_le = 2| remark@hello meet = meet_guide
[meet_guide] abuse = false use = false allow_break = false meet_on_talking = false
[remark@hello] no_move = true meet = meet_guide on_actor_dist_le = 10| remark1[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили Ааз за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 17.02.2013, 20:19 | Сообщение # 94 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Ааз, Я бы подправил квест таким образом.
[cut=Квест]Файл tm_zaton. target = zat_demiurg -- это квестовая метка. Она у Вас постоянно висит на квестодателе. Надо писать так: target = {+zat_renegat_mertv} zat_demiurg, zat_renegat Метка повиснет на ренегате, после смерти перескочит на квестодателя.
Секцию title = zat_renegat_kill_quest_name descr = zat_renegat_kill_quest_text лучше писать так: title = {+zat_renegat_mertv} zat_renegat_kill_quest_name1, zat_renegat_kill_quest_name descr = {+zat_renegat_mertv} zat_renegat_kill_quest_text1, zat_renegat_kill_quest_name
Текстовое содержание квеста: <string id="zat_renegat_kill_quest_name"> <text>Ренегат: убрать сталкера из группировки Ренегаты.</text> </string> <string id="zat_renegat_kill_quest_text"> <text>Убить ренегата, который расположился где-то неподалеку от Скадовска.</text> </string> <string id="zat_renegat_kill_quest_name1"> <text>Ренегат: получить награду.</text> </string> <string id="zat_renegat_kill_quest_text1"> <text>Доложить Демиургу о выполнении задания.</text> </string> [/cut]
Сообщение отредактировал sergej5500 - Вс, 17.02.2013, 20:28 |
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Ааз | Дата: Вс, 17.02.2013, 20:57 | Сообщение # 95 |
Хозяин Зоны
Зомби
| sergej5500, внёс исправления, начал новую игру, отметил опять отсутствие описания, при убийстве НПС задание естественно опять не обновилось. Я уж не знаю, как и быть-то...
|
|
|
Эти 0 пользователя(ей) поблагодарили Ааз за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 17.02.2013, 21:05 | Сообщение # 96 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Ааз, Может, это не имеет значения, но у всех НПС, логику которых я просматривал, on_death = death пишется под ссылкой на активную секцию логики. Попробуй первый абзац в логике ренегата написать так:
[logic] active = remark1 danger = danger_ignore on_death = death
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Ааз | Дата: Вс, 17.02.2013, 21:46 | Сообщение # 97 |
Хозяин Зоны
Зомби
| sergej5500, и даже так не помогает...Квест-то делался на основе тутора от Johann, но неточностей там хватает...По идее нужен новый тутор... Добавлено (17.02.2013, 21:46) --------------------------------------------- Да и кстати, меток на персонажах так и не появилось. Ни на НПСе, которого требуется убить, ни на квестодателе после убийства НПС.
|
|
|
Эти 0 пользователя(ей) поблагодарили Ааз за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 17.02.2013, 22:17 | Сообщение # 98 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Ааз, Нашел у Вас одну ошибку. В скрипте вы запускаете квест zat_renegat_kill_give, а в tm_zaton квест называется zat_renegat_kill. Поэтому метки не появляются. Квест не активируется. Я поправил у себя эту ошибку и попробовал запустить квест. Всё получилось. Метки перескочили и диалоги отработали нормально.
Добавлено (17.02.2013, 22:17) --------------------------------------------- Ааз, В варианте [cut=квест][zat_renegat_kill] icon = ui_inGame2_Bezopasnoe_mesto storyline = false title = {+zat_renegat_mertv} zat_renegat_kill_quest_name1, zat_renegat_kill_quest_name descr = {+zat_renegat_mertv} zat_renegat_kill_quest_text1, zat_renegat_kill_quest_name target = {+zat_renegat_mertv} zat_demiurg, {-zat_renegat_mertv} zat_renegat condlist_0 = {+zat_renegat_kill_done} complete on_complete = %=inc_faction_goodwill_to_actor(stalker:40)% reward_money = 4500[/cut] квест вполне рабочий. Нужно вызывать его так: [cut=скрипт]function zat_renegat_kill_quest() task_manager.get_task_manager():give_task("zat_renegat_kill") end[/cut]
Сообщение отредактировал sergej5500 - Вс, 17.02.2013, 22:19 |
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Ааз | Дата: Вс, 17.02.2013, 22:31 | Сообщение # 99 |
Хозяин Зоны
Зомби
| sergej5500, огромное спасибо за помощь. Квест я протестировал. В общем-то всё ок, только метка почему-то на квестодателя не переходит и при взятии задания оно сразу же обновляется. А потом обновляется еще раз, когда НПС погибает.
|
|
|
Эти 0 пользователя(ей) поблагодарили Ааз за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 18.02.2013, 00:06 | Сообщение # 100 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Ааз, Метку можно поставить только на объект, имеющий story_id. Добавь в zat_stalkers.ltx в секцию [zat_demiurg]:stalker_trader строку story_id = zat_demiurg.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
sapfir | Дата: Чт, 04.04.2013, 15:54 | Сообщение # 101 |
Боец резерва
Долг
Сообщений: 635
| Вот я установил атмосфер для sgm 2.2. И (как мне объяснили) при начале псишторма, у меня появляется задание "TITLE DOESNT EXIST". Если по русски, то "Названия не существует". Как я понял, это задание не закончили. Подскажете, где файл, который отвечает за описание задание, и что надо сделать в этом задании(тоже файл)?
КПК Сапфира
|
|
|
Эти 0 пользователя(ей) поблагодарили sapfir за это полезное сообщение: |
|
|
FantomICW | Дата: Чт, 04.04.2013, 16:06 | Сообщение # 102 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| sapfir1998, название и описание обычно прописывается в configs/text/rus/st_quests_.
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
sapfir | Дата: Чт, 04.04.2013, 16:42 | Сообщение # 103 |
Боец резерва
Долг
Сообщений: 635
| FantomICW, странно, там все прописано...
КПК Сапфира
|
|
|
Эти 0 пользователя(ей) поблагодарили sapfir за это полезное сообщение: |
|
|
mizabrik | Дата: Чт, 04.04.2013, 18:03 | Сообщение # 104 |
Почетный инженер «Свободы»
Свобода
Сообщений: 360
| sapfir1998, возможно неправильно написан идентификатор строки. Проверьте совпадает ли с идентификатором строки параметр title в секции [sgm_pri_zone_cleaning] файл gamedata/config/misc/tasks/tm_pripyat.ltx.
|
|
|
Эти 0 пользователя(ей) поблагодарили mizabrik за это полезное сообщение: |
|
|
FantomICW | Дата: Чт, 04.04.2013, 20:55 | Сообщение # 105 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| Здравствуйте! Создавал квест на убийство нпс, столкнулся с вылетом. Не могу понять в чем проблема. [cut=Лог]stack trace:
0023:060A105B lua.JIT.1.1.4.dll[/cut]
Затронуто несколько файлов (все новые прописал через #include куда надо) [cut=jup_b46_spatial_bubble_zone]Код [logic] active = sr_idle@jup_b46_sos_sound
[sr_idle@jup_b46_sos_sound] on_info = {+jup_b46_spatial_bubble_started -jup_b46_task_gived -jup_b46_spatial_bubble_ruptured} %+jup_b46_task_gived =give_task(jup_b46_spatial_bubble)% on_info2 = {=distance_to_obj_le(jup_b46_spatial_bubble_zone:50)} %=play_sound(jup_b46_spatial_bubble_sos)% on_info3 = {+jup_b46_spatial_bubble_ruptured} sr_idle@jup_b46_rupture %=stop_sound% on_info4 = {+pila_quest_init -spawn_jup_killer_ross_squad} %=create_squad(jup_killer_ross_squad:jup_b46) +spawn_jup_killer_ross_squad%
[sr_idle@jup_b46_rupture] on_game_timer = 46 | {-jup_b46_duty_founder_squad_spawned} %+jup_b46_duty_founder_squad_spawned =spawn_object(wpn_ak74:jup_b46_corps_spawn) =spawn_corpse(jup_b46_duty_founder:jup_b46_corps_spawn) =spawn_object(wpn_ak74u:jup_b46_corps_spawn) =spawn_corpse(jup_b46_duty_founder_squad_01:jup_b46_corps_spawn) =spawn_object(wpn_ak74u:jup_b46_corps_spawn) =spawn_corpse(jup_b46_duty_founder_squad_02:jup_b46_corps_spawn) =spawn_object(wpn_ak74:jup_b46_corps_spawn) =spawn_corpse(jup_b46_duty_founder_squad_03:jup_b46_corps_spawn) =spawn_object(wpn_abakan:jup_b46_corps_spawn) =spawn_object(wpn_abakan:jup_b46_corps_spawn) =spawn_corpse(jup_b46_duty_founder_squad_04:jup_b46_corps_spawn) =spawn_object(medkit:jup_b46_corps_spawn)% on_info = {-jup_b46_duty_founder_pda_start =actor_has_item(jup_b46_duty_founder_pda)} %+jup_b46_duty_founder_pda_start =play_sound(jup_b46_duty_founder_pda_diary) =give_task(jup_b46_duty_founder_pda)% on_info2 = {+jup_b46_duty_founder_squad_spawned +jup_b46_duty_founder_pda_start} sr_idle@end
[sr_idle@end] Добавлена строка с on_info3[/cut]
[cut=icw_dialogs.xml (текст диалогов)]Код <?xml version="1.0" encoding="windows-1251" ?> <string_table> <string id="pila_quest_dialog_1"> <text>Привет, сталкер. Чего сидишь здесь?</text> </string> <string id="pila_quest_dialog_2"> <text>Из каких из "этих"?</text> </string> <string id="pila_quest_dialog_3"> <text>Из наёмников Росса?</text> </string> <string id="pila_quest_dialog_4"> <text>Кого?</text> </string> <string id="pila_quest_dialog_5"> <text>А, ясно. Слушай, мужик, хочешь подзаработать?</text> </string> <string id="pila_quest_dialog_6"> <text>Ну допустим.</text> </string> <string id="pila_quest_dialog_7"> <text>Да нет, спасибо.</text> </string> <string id="pila_quest_dialog_8"> <text>Меня один мужик пресует, как раз сей Росс. Длинная история... В общем он там глава небольшой группы наёмников из человек 10-12. Вальнёшь его и его подручных, заплачу отменно. Ну чё, по рукам?</text> </string> <string id="pila_quest_dialog_9"> <text>По рукам. Где мне их найти?</text> </string> <string id="pila_quest_dialog_10"> <text>Спасибо, мужик, что согласился! Их минибаза недалеко от Янова, у градирни. Возьмёшь КПК Росса и отнесёшь мне. Буду ждать тебя на Янове. Идёт?</text> </string> <string id="pila_quest_dialog_11"> <text>Идёт, идёт. Скорее бы уже пришёл... Ладно, готовь деньги.</text> </string> <?xml version="1.0" encoding="windows-1251" ?> </string_table> [/cut]
[cut=icw_info ]Код <?xml version='1.0' encoding="windows-1251"?> <game_information_portions> <!-------------------------------------------------> <info_portion id="pila_quest_no_quest"></info_portion> <info_portion id="pila_quest_init"></info_portion> <info_portion id="pila_quest_end"></info_portion> <info_portion id="jup_killer_ross_squad_death"></info_portion> <info_portion id="spawn_jup_killer_ross_squad"></info_portion> </game_information_portions> [/cut]
[cut=extended_dialogs.xml (модель диалога)]Код <dialog id="pila_quest_begin"> <dont_has_info>pila_quest_init</dont_has_info> <dont_has_info>pila_quest_no_quest</dont_has_info> <precondition>sgm_dialogs.actor_not_have_pda_ross</precondition> <phrase_list> <phrase id="0"> <text>pila_quest_dialog_1</text> <next>1</next> </phrase> <phrase id="1"> <text>pila_quest_dialog_2</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>pila_quest_dialog_3</text> </phrase> <phrase id="3"> <text>pila_quest_dialog_4</text> <next>4</next> </phrase> <phrase id="4"> <text>pila_quest_dialog_5</text> <next>5</next> <next>6</next> </phrase> <phrase id="5"> <text>pila_quest_dialog_6</text> <action>sgm_dialogs.pila_quest_give_quest</action> <next>7</next> </phrase> <phrase id="6"> <text>pila_quest_dialog_7</text> <give_info>pila_quest_no_quest</give_info> <action>dialogs.break_dialog</action> </phrase> <phrase id="7"> <text>pila_quest_dialog_8</text> <give_info>pila_quest_init</give_info> <next>8</next> </phrase> <phrase id="8"> <text>pila_quest_dialog_9</text> <next>9</next> </phrase> <phrase id="9"> <text>pila_quest_dialog_10</text> <next>10</next> </phrase> <phrase id="10"> <text>pila_quest_dialog_11</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> </game_dialogs> [/cut]
[cut=sgm_dialogs.script]Код function pila_quest_give_quest() task_manager.get_task_manager():give_task("pila_quest") end
function actor_have_pda_ross(first_speaker, second_speaker) return db.actor:object("pda_ross") ~= nil end
function actor_not_have_pda_ross(first_speaker, second_speaker) return db.actor:object("pda_ross") == nil end
function pila_quest_give_pda(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "pda_ross") end
function function pila_quest_give_reward(first_speaker, second_speaker) dialogs.relocate_money_to_actor(first_speaker, second_speaker, 7500) end [/cut]
[cut=character_desc_icw]Код <specific_character id="jup_stalker_pila" team_default = "1"> <name>Пила</name> <icon>ui_inGame2_neutral_2</icon> <map_icon x="1" y="0"></map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>jup_stalker_pila</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_03\stalker\</snd_config> <rank>200</rank> <money min="3500" max="8500" infinitive="0"/> <reputation>0</reputation> <visual>actors\stalker_neutral\stalker_neutral_13</visual> <supplies> [spawn] \n wpn_lr300 = 1 \n ammo_5.45x39_ap = 1 \n wpn_beretta \n ammo_9x19_pbp = 1 \n grenade_rgd5 = 2 \n #include "gameplay\character_items_2.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs_2.xml" </supplies> <actor_dialog>pila_quest_begin</actor_dialog> <actor_dialog>actor_break_dialog</actor_dialog> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character>
<specific_character id="jup_killer_ross" team_default = "1"> <name>Росс</name> <icon>ui_inGame2_killer_4</icon> <map_icon x="1" y="0"></map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>jup_killer_ross</class> <community>killer</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_03\stalker\</snd_config> <rank>200</rank> <money min="3500" max="8500" infinitive="0"/> <reputation>0</reputation> <visual>actors\stalker_merc\stalker_merc_4</visual> <supplies> [spawn] \n wpn_groza = 1 \n ammo_5.45x39_ap = 1 \n wpn_beretta \n ammo_9x19_pbp = 1 \n grenade_rgd5 = 2 \n pda_ross = 1 \n #include "gameplay\character_items_2.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs_2.xml" </supplies> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character> [/cut]
[cut=spawn_sections_icw]Код [jup_stalker_pila]:quest_stalker_heavy $spawn = "respawn\jup_stalker_pila" character_profile = jup_stalker_pila spec_rank = master community = stalker story_id = jup_stalker_pila custom_data = scripts\bonus\jup_stalker_pila.ltx
[jup_killer_ross]:stalker $spawn = "respawn\jup_killer_ross" character_profile = jup_killer_ross spec_rank = master community = killer story_id = jup_killer_ross [/cut]
[cut=Логика нпс, выдающего задание]Код [logic] active = move@pila
[move@pila] move_dest_number = 621603 move_look_vertex = 623801 move_state_when_center = sit_ass move_state_when_move = walk move_combat_disable = true meet = meet invulnerable = true combat_ignore_cond = true combat_ignore_keep_when_attacked = true on_info = {+pila_quest_end =dist_to_actor_ge(90)} nil %=release_npc%
[meet] abuse = false use = true allow_break = false meet_on_talking = false trade_enable = false [/cut]
[cut=squad_descr_icw]Код [jup_killer_ross_squad]:online_offline_group faction = killer npc = jup_killer_ross, sim_default_killer_1, sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_1, sim_default_killer_2, sim_default_killer_3, sim_default_killer_3, sim_default_killer_2, sim_default_killer_4 story_id = jup_killer_ross_squad target_smart = jup_b46 on_death = %+jup_killer_ross_squad_death% [/cut]
[cut=tm_extended]Код [pila_quest] icon = ui_inGame2_Shustriy_Find_1 prior = 2 storyline = false title = {=actor_has_item(pda_ross)} pila_quest_title_3, pila_quest_title_0 descr = pila_quest_text_0 target = {=actor_has_item(pda_ross)} jup_stalker_pila, {+jup_killer_ross_squad_death} pda_ross, jup_killer_ross condlist_0 = {+pila_quest_end} complete [/cut]
В sgm_spawner.script добавил Код create("jup_stalker_pila",-58.588,3.764,155.301,621603,453) в секции заселения Юпитера. Новый квестовый нпс, который выдает квест спавнится нормально. При разговоре вылет с выше указанным логом. Не подскажете, в чем проблема?
Сообщение отредактировал FantomICW - Чт, 04.04.2013, 20:57 |
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
|