Создание NPC через all.spawn
Нам понадобятся:
1. all.spawn
2. spawn_sections.ltx
3. character_desc_escape.xml
4. npc_profile.xml
5. game_story_ids.ltx
Начнем.
1. Распаковываем all.spawn с помощью ACDC. После декомпиляции открываем файл alife_l01_escape.ltx. Пролистываем его до конца. Если у вас чистый all.spawn, то последняя секция должна быть [869]. В самом конце вставляем эту секцию:
Код
[870]
; cse_abstract properties
section_name = stalker
name = esc_newbie
position = -214.590072631836,-23.1829700469971,-125.076843261719
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942
; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_newbie
; cse_alife_object properties
game_vertex_id = 59
distance = 0
level_vertex_id = 39266
object_flags = 0xffffffbf
custom_data = <<END
[logic]
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
[walker@stay_at_position]
path_walk = esc_newbie_position_walk
path_look = esc_newbie_position_look
[combat_ignore]
combat_ignore_cond = always
[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
; cse
[smart_terrains]
none = true
END
story_id = 10000
; cse_visual properties
visual_name = actors\neytral\ stalker_neytral_nauchniy.ogf
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0x6d6d695f
upd:creature_flags = 0x75
upd:position = -214.590072631836,-23.1829700469971,-125.076843261719
upd:o_model = 0
upd:o_torso = -0.000645029998850077,0.0445535257458687,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 5
; 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,0,0,2,0
predicate4 = 2,2,1,2
; cse_ph_skeleton properties
upd:start_dialog =
; se_stalker properties
Думаю, нужно объяснить что к чему.
Код
[870]
; cse_abstract properties
section_name = stalker - тип предмета, в нашем случае NPC
name = esc_newbie - это мы будем вписывать в game_story_ids.ltx
position = -214.590072631836,-23.1829700469971,-125.076843261719 - координаты спавна NPC
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942 - координаты взгляда NPC
; cse_alife_trader_abstract properties
money = 5000 - его деньги
character_profile = esc_newbie - ссылка на character_desc_escape.xml, раз мы в alife_l01_escape.ltx работаем
; cse_alife_object properties
game_vertex_id = 59 - гейм вертекс спавна
distance = 0
level_vertex_id = 39266 - левел вертекс спавна
object_flags = 0xffffffbf
custom_data = <<END
[logic] - тут прописывается логика, в нашем случае "пассивный" walker
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
[walker@stay_at_position]
path_walk = esc_newbie_position_walk
path_look = esc_newbie_position_look
[combat_ignore]
combat_ignore_cond = always
[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
; cse
[smart_terrains] - здесь прописывается смарт террейн, где будет бродить NPC. У нас ходит везде.
none = true
END
story_id = 10000 - его id, нужен для game_story_ids.ltx
; cse_visual properties
visual_name = actors\neytral\ stalker_neytral_nauchniy.ogf - модель NPC
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
health = 1 - здоровье NPC
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0x6d6d695f
upd:creature_flags = 0x75
upd:position = -214.590072631836,-23.1829700469971,-125.076843261719
upd:o_model = 0
upd:o_torso = -0.000645029998850077,0.0445535257458687,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 5
; 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,0,0,2,0
predicate4 = 2,2,1,2
; cse_ph_skeleton properties
upd:start_dialog =
; se_stalker properties
C этим файлом закончили. Сохраняем, выходим.
2. Открываем way_l01_escape.ltx. В самом конце вписываем эту секцию:
Код
[esc_newbie_position_walk]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position =
p0:game_vertex_id =
p0:level_vertex_id =
[esc_newbie_position_look]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position =
p0:game_vertex_id =
p0:level_vertex_id =
Объясняю:
Код
[esc_newbie_position_walk]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = координаты, на которых стоит NPC
p0:game_vertex_id = гейм вертекс спавна NPC
p0:level_vertex_id = левел вертекс спавна NPC
[esc_newbie_position_look]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = координаты, на которых стоит NPC
p0:game_vertex_id = гейм вертекс спавна NPC
p0:level_vertex_id = левел вертекс спавна NPC
Сохраняем. Запускаем компиляцию нового all.spawn.
3. В character_desc_escape.xml перед секцией Волка добавляем эту секцию:
Код
<!---------------------------------------esc_newbie----------------------------------------------------->
<specific_character id="esc_newbie" team_default = "1">
<name>Тестовый</name>
<icon>ui_npc_u_stalker_neytral_rukzak_3</icon>
<bio>Тестовый непись</bio>
<class>esc_newbie</class>
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>1000</rank>
<reputation>400</reputation>
<money min="1000" max="3000" infinitive="0"/>
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
<visual>actors\neytral\ stalker_neytral_nauchniy.ogf</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>hello_dialog</start_dialog>
</specific_character>
Сохраняем, выходим.
4. В npc_profile.xml после секции "escape_trader" добавляем эту секцию:
Код
<character id="esc_newbie">
<class>esc_newbie</class>
</character>
Сохряняем.
5. В spawn_sections.ltx после секции [dolg_regular] вставляем эту секцию:
Код
[esc_newbie]:stalker
$spawn = "respawn\esc_newbie"
character_profile = esc_newbie
spec_rank = master
community = stalker
Сохраняем, выходим.
6. Ну и в game_story_ids.ltx в самом конце вписываем эту строчку
Сохраняем и выходим. Все, наш NPC готов!
P.S. Нужно начинать новую игру.
Автор: [MarveL]