Статья посвещена созданию нового НПС в S.T.A.L.K.E.R. Зов Припяти (1.6.02).
Создать НПС можно двумя способами. Через all.spawn и через скрипт. В статье мы не будем учить как создавать новые модели или новые текстуры. Всего лишь создание НПС из того что имеется в оригинале. Так же статья опирается на то что читатель умеет распаковывать ресурсы игры и all.spawn. Сначала разберём первый способ.
Для работы нам понадобиться: 1. Программа ActivePerl. 2. ACDC для ЗП. 3. Файлы из оригинальных распакованных ресурсов игры: gamedata\spawns\all.spawn gamedata\configs\gameplay\character_desc_zaton.xml gamedata\configs\gameplay\npc_profile.xml
Распаковываем файл all.spawn в итоге у нас получается несколько текстовых файлов. Откроем файл той локации на которой хотим заспавнить НПС. По нашей статье - это Затон, соответственно файл будет alife_zaton.ltx. В самый конец пишем: ~~~~~~~~~~~~~~~
Code
[1866] ; Номер секции. Он всегда должен быть больше чем у последней секции. Например последняя секция в этом файле с номером [1865], поэтому у нас [1866]. ; cse_abstract properties section_name = stalker name = dlt_nps_1 ; Это имя секции спавна. Можно написать любое, но нельзя чтобы такое же имя уже где-то было. position = 256.240051269531,19.8124237060547,550.824279785156 ; Координаты спавна нашего НПС. direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 ; Координаты поворота нашего НПС.
; cse_alife_trader_abstract properties character_profile = dlt_nps_1 ; Название профиля (характера) нашего НПС. Можно написать любое, но нельзя чтобы такое же название уже где-то было. Сам профиль создадим позже.
; cse_alife_object properties game_vertex_id = 292 ; Вертекс спавна нашего НПС. distance = 0 level_vertex_id = 1405060 ; Вертекст уровня спавна нашего НПС. object_flags = 0xfffffffb custom_data = <<END ; Логика нашего НПС. [logic] cfg = scripts\dlt_nps_1_logic.ltx ; Ссылка на файл с логикой нашего НПС. Сам файл создадим позже.
[spawn] ; Снаряжение НПС. В ЗП не используется. END
; cse_visual properties visual_name = actors\novice\green_stalker_2 ; Ссылка на визуал НПС. В ЗП не используется.
~~~~~~~~~~~~~~~ Все мои комментарии после знака ; можно удалить, но и с ними всё будет работать. Теперь все файлы можно снова упаковать в all.spawn.new и потом переименовать в all.spawn. Этот файл положить в gamedata\spawns.
Создадим профиль (характер) нашему НПС.
Открываем файл character_desc_zaton.xml и после строки <xml> пишем: ~~~~~~~~~~~~~~~
Code
<specific_character id="dlt_nps_1" team_default="1"> ; Название профиля (характера) которое мы указали в all.spawn. <name>Хемуль</name> ; Это системное имя нашего НПС. Можно написать любое, но нельзя чтобы такое же имя уже где-то было. <icon>ui_iconsNpc_soldier_beret</icon> ; Название текстуры иконки из gamedata\configs\ui\textures_descr\ui_iconstotal.xml <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>dlt_nps_01</class> ; Название класса нашего НПС. Должно отличаться от названия профиля (характера). <community>stalker</community> ; Группировка нашего НПС. <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\stalker\</snd_config> ; Ссылка на звуки голоса нашего НПС. <rank>50</rank> ; Ранг нашего НПС. <reputation>0</reputation> ; Репутация нашего НПС. <money min="1000" max="1000" infinitive="0" /> ; Количество денег нашего НПС. Если поставить infinitive="1", то деньги будут бесконечные. <visual>actors\stalker_neutral\stalker_neutral_2_face_6</visual> ; Ссылка на визуал нашего НПС.
<actor_dialog>actor_break_dialog</actor_dialog> ; Названия доступных диалогов с нашим НПС.
</specific_character>
~~~~~~~~~~~~~~~ Мы сделали профиль нашего НПС. Но нужно ещё прописать профиль в npc_profile.xml.
Пропись профиля в npc_profile.xml.
Открываем файл npc_profile.xml и после строки <xml> пишем: ~~~~~~~~~~~~~~~
Code
<character id="dlt_nps_1"> ; Название профиля (характера) нашего НПС. <class>dlt_nps_01</class> ; Название класса нашего НПС. </character>
~~~~~~~~~~~~~~~ Готово. Но мы помним что в all.spawn прописывали ещё ссылку на файл с логикой нашего НПС. Давайте создадим его.
Создание файла с логикой нашего НПС.
В папке gamedata\configs\scripts создаём файл с dlt_nps_1_logic.ltx. В него пишем: ~~~~~~~~~~~~~~~
Code
[logic] active = remark1 danger = danger_ignore commander = true ; Эта строчка делает нашего НПС главным в группе и при попытке диалога с ним он не будет нас посылать к главному.
[remark1] no_move = true meet = meet
[danger_ignore] ignore_distance = 10
[meet] use = true use_wpn = true
~~~~~~~~~~~~~~~ C такой логикой наш НПС будет просто стоять. Собственно это всё что нужно для создания НПС. Не забудьте положить файлы куда нужно и готово! НПС появиться при начале новой игры рядом с ГГ.
Статья написана Donec Libro Team (XemyL).
Сообщение отредактировал XemyL - Воскресенье, 15.04.2012, 10:18
Всем привет! Кому в падлу копировать и прописовать эти строки пишите в ЛС я дам вам ссылку на скачивание обсолютно прекрасной проги! По созданию NPS в ЗП! 1. Можно спавнить через скрипт. 2. Можно спавнить через all.spawn. 3. Красивое оформление. 4. Большая библеотека визуалов, иконок и т.д. 5. Возможность создания точек спавна. 6. И многое другое. Кому надо пишите!
P.S. Программа преднозначена для созжания NPS в ЗП!
XemyL, отличнейший тутор!!! Огромное спасибо!!! Желаю дальнейшего развития темы! Можно ли сразу предзаказ на следующие разделы: 1). Ну вообщем как создать телохранителя в чистом ЗП??? 2). Создание отдельной группировки (тож в чистом ЗП)... Например на затоне на лесопилке... 3). Создание торговца новой группировки (как редактировать торговлю не нужно) Наверное всё это можно найти в инете, но у автора свой стиль написания тутора, поэтому пожелаем ему дальнейших успехов!!! ======================================================== =====================< Заранее спасибо!!! >=================== ========================================================
Сообщение отредактировал K-9 - Понедельник, 09.01.2012, 13:47
K-9, спасибо. Не знаю, буду ли я писать ещё туторы. Просто работа над модом, учёба т.п. Мало времени... А сделать НПС торговцем на самом деле очень легко. Просто прописать такую логику:
Code
[logic] active = remark1 danger = danger_ignore level_spot = trader can_select_weapon = false trade = misc\trade\new_trade ; Ссылка на товар нашего торговца.
[remark1] no_move = true meet = meet
[danger_ignore] ignore_distance = 10
[meet] use = true use_wpn = true
Ну и конечно не забыть создать файл с товаром.
Сообщение отредактировал XemyL - Понедельник, 09.01.2012, 14:34
Steag, Да же знаю о какой говоришь... Она полная туфта, через альспавн или скрипт спавнит. Для глобального мода опытные мододелы её не используют, я был второй кто подтрогал эту программку, когда мне скинул сам ее создатель
XemyL, Спасибо брат!!! Усё скопировал, вечером попробую сделать торговца!!! ========================================================================== P.S: У меня тож учёба (но носу 3 эгзамена ), но мы тебя не торопим ))) Будет время, пиши!!! Удачи, и ещё раз спасибо!