Расширенное меню


Меню категорий

Мир зоны [17]
Для модмейкера [18]
Прохождения [6]
FAQ Читы Коды [6]

Энциклопедия ST-SE






S.T.A.L.K.E.R. » Для модмейкера ҂ 15.09.2010 Среда (22:26) ∎ Добавил: Saha

Создание нового NPC


Автор:RaDJa

Уроков по созданию npc много, но многие из них не понятны, поэтому я сделал свою статью по этой теме.

Урок прменим и к ТЧ, и к ЧН, и к ЗП. 
Для работы нужна программа Active Perl (её нужно просто скачать и установить) и ACDC (в ней мы и будем работать) Замечу, что для каждого Сталкера нужен свой ACDC.

После того как скачали эти программы в папке с ACDC создаём .bat файлы: decompile и compile. Первый батник будет распаковывать all.spawn, второй запаковывать обратно изменённый all.spawn. В батнике decompile прописываем вот это:

perl acdc.pl -d all.spawn 
pause - для ТЧ

или

perl acdccop.pl -d all.spawn 
pause - для ЗП

perl acdc_cs.pl -d all.spawn 
pause - для ЧН

в батнике compile прописываем:

acdc.pl -c all.ltx 
pause - для ТЧ

acdccop.pl -c all.ltx 
pause - для ЗП и т.д.

далее закидываем all.spawn( путь gamedata\ spawns) в папку с acdc и запускаем decompile. Появилось много файлов ltx. Нам нужны файлы типа alife... и выбираем файл с нужной локацией.

Теперь приступаем к работе. Я буду показывать пример на базе ЗП.

-открываем alife_zaton 
-в самый конец добавляем нашего сталкера

[1865] -номер объекта должен быть выше последнего объекта в файле 
; cse_abstract properties 
section_name = stalker 
name = mudak -имя объекта 
position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже) 
direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 - угол поворота сталкера

; cse_alife_trader_abstract properties 
money = 416 
character_profile = mudak -имя в character desc...

; cse_alife_object properties 
game_vertex_id = 292 - для каждого уровня это значение своё 
distance = 0 
level_vertex_id = 76655 - не трогаем 
object_flags = 0xffffffbf 
custom_data = <<END

[logic] 
cfg = scripts\mudak_logic.ltx - ссылка на файл логики нашего сталкера

; cse 
[smart_terrains] 
none = true 
END 
story_id = 10000 - будем считать его порядковым номером (для новых npc лучше ставить больше 10000)

; cse_visual properties 
visual_name = actors\stalker_merc\stalker_merc_4

; cse_alife_creature_abstract properties 
g_team = 0 
g_squad = 1 
g_group = 2 
health = 1 -поставим 0 будет лежать труп 
dynamic_out_restrictions = 
dynamic_in_restrictions =

upd:health = 1 
upd:timestamp = 0 
upd:creature_flags = 0 
upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211 - место где он появится(рассмотрим позже) Важно! Нужно писать то же самое что и в строке position 
upd:o_model = 0 
upd:o_torso = 2.81339907646179,-0.0120869996026158,0 
upd:g_team = 0 
upd:g_squad = 1 
upd:g_group = 2

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535 
upd:prev_game_vertex_id = 65535 
upd:distance_from_point = 0 
upd:distance_to_point = 0

; cse_alife_human_abstract properties 
predicate5 = 1,2,2,1,2 
predicate4 = 0,1,1,1

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties

ПРИМЕР БЕЗ КОМЕНТОВ:

[1865] 
; cse_abstract properties 
section_name = stalker 
name = mudak 
position = 62.0999984741211,-3.55999994277954,37.5999984741211 
direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535

; cse_alife_trader_abstract properties 
money = 416 
character_profile = mudak

; cse_alife_object properties 
game_vertex_id = 292 
distance = 0 
level_vertex_id = 76655 
object_flags = 0xffffffbf 
custom_data = <<END

[logic] 
cfg = scripts\mudak_logic.ltx

; cse 
[smart_terrains] 
none = true 
END 
story_id = 10000

; cse_visual properties 
visual_name = actors\stalker_merc\stalker_merc_4

; cse_alife_creature_abstract properties 
g_team = 0 
g_squad = 1 
g_group = 2 
health = 1 
dynamic_out_restrictions = 
dynamic_in_restrictions =

upd:health = 1 
upd:timestamp = 0 
upd:creature_flags = 0 
upd:position = 62.0999984741211,-3.55999994277954,37.5999984741211 
upd:o_model = 0 
upd:o_torso = 2.81339907646179,-0.0120869996026158,0 
upd:g_team = 0 
upd:g_squad = 1 
upd:g_group = 2

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535 
upd:prev_game_vertex_id = 65535 
upd:distance_from_point = 0 
upd:distance_to_point = 0

; cse_alife_human_abstract properties 
predicate5 = 1,2,2,1,2 
predicate4 = 0,1,1,1

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties

ТЕПЕРЬ ЗАПАКОВЫВАЕМ ОБРАТНО в all.spawn (внимание!если что-то сделано не правильно, то запаковки не будет) Если же всё правильно, то должен появится файл all.spawn.new Закидываем его в вашу gamedata\spawns и переименовываем файл в all.spawn

Осталась работа в скриптах и конфигах

-В папку gamedata\config(s) вкладываем файл game_story_ids, открываем его и конце пишем: 10000 = "mudak"

-В папку gamedata\config(s)\creatures вставляем файл spawn_sections_zaton, открываем его и в самом конце вписываем:

[mudak]:stalker 
$spawn = "respawn\mudak" 
character_profile = mudak 
spec_rank = novice 
community = stalker

-Теперь по пути gamedata\config(s)\gameplay вставляем файл npc_profile и в нём пишем:

<character id="mudak"> 
<class>mudak</class> 
<specific_character>mudak</specific_character> 
</character>

-По этому же пути gamedata\config(s)\gameplay вставляем character_desc_zaton и вставляем в конце:

<!---------------------------------------mudak-----------------------------------------------------> 
<specific_character id="mudak" team_default = "1"> 
<name>Мудак</name> 
<icon>ui_inGame2_merc_4</icon> 
<bio>mudak</bio>

<class>mudak</class> 
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>

<rank>434</rank> 
<reputation>5</reputation> 
<money min="10000" max="10000" infinitive="0"/>

<snd_config>characters_voice\human_01\stalker\</snd_config> 
<crouch_type>-1</crouch_type>

<visual>actors\stalker_merc\stalker_merc_4</visual> 
<supplies> 
[spawn] \n 
wpn_pm \n 
ammo_9x18_fmj = 1 \n 
wpn_ak74 \n 
ammo_5.45x39_fmj \n 
</supplies>

#include "gameplay\character_criticals_4.xml"

<!--<start_dialog>zat_b5_stalker_commander_dialog</start_dialog>-->

</specific_character>

-Осталось только дать логику нашему сталкеру, чтобы он тупо не бродил по Затону 
В папке gamedata\config(s)\script создаём пустой файл mudak_logic.ltx и в нём пишем:

[logic] 
active = remark1 
danger = danger_ignore

[danger_ignore] 
ignore_distance = 5

[remark1] 
no_move = true

Теперь можно поглазеть на нашего сталкера в игре (Он должен появится на Шевченко)

Но хочу обратить внимание, что для упрощения снятия координат месторасположения npc в ТЧ можно воспользоваться во время игры консольной командой rs_stats on, а в ЗП rs_camera on


В мире Сталкер и не только - Создание нового NPC

  • Комментарии на сайте
  • Оставить комментарий через Вконтакте

Всего комментариев: 0 Оставь мнение не будь редиской ;)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]


Новости про Survarium, STALKER: Зов Припяти, Сталкер: Тень Чернобыля

Дизайн лицензирован на компанию ОАО "ГКТ" любое копирование карается по закону о нарушению
авторских прав. Совместно с S.E. Сайт создан в системе uCoz | Для просмотра сайта используйте Google Chrome.

Онлайн всего: 3
Гостей: 3
Пользователей: 0