All.spawn. Создание NPC — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Строка 1: | Строка 1: | ||
− | + | == Что,как,зачем == | |
+ | Итак, я хочу рассказать вам как создать NPC через all.spawn. | ||
+ | Метод был выявлен мною путем проб и ошибок. | ||
+ | Конечно же у вас появился вопрос: « Ну а зачем же мучатся с all.spawn, если можно сделать тоже самое через скрипт?». | ||
+ | Ответ: | ||
+ | Хоть этот способ и не такой быстрый и легкий, но у него есть свои плюсы, необходимые многим, один из них - мы можем задать story id нашему NPC. | ||
+ | "А что дает нам это?" | ||
+ | Много чего, ну для примера - мы сможем поставить отметку на него. | ||
+ | Я не буду объяснять такие простые вещи как декомпиляция all.spawn и остальное, но если же вы все таки не знаете как, пишите мне в лс на Гейменаторе(stalkers-life, или Идиот) | ||
+ | Итак, хватит лишних слов, перейдем к работе... | ||
+ | |||
+ | |||
+ | == Работаем!!! == | ||
+ | |||
+ | С помощью ACDC декомпилируем all.spawn | ||
+ | |||
+ | Получаем кучу файлов типа : alife_l01_escape , way_l01_escape и тд. | ||
+ | |||
+ | Создадим нового непися на Кордоне. | ||
+ | Открываем alife_l01_escape, и крутим в самый низ. | ||
+ | |||
+ | Если у вас чистая игра и вы ничего не делали в Олл спавне то посленяя секция у вас будет под номером 869. | ||
+ | Добавляем туда вот такой код(в конец): | ||
+ | |||
+ | [870] | ||
+ | ; cse_abstract properties | ||
+ | section_name = stalker | ||
+ | name = noobik | ||
+ | position = -172.21215820313,-19.941787719727,-161.09272766113 | ||
+ | direction = 0,0,0 | ||
+ | |||
+ | ; cse_alife_trader_abstract properties | ||
+ | money = 5000 | ||
+ | character_profile = esc_noobik | ||
+ | |||
+ | ; cse_alife_object properties | ||
+ | game_vertex_id = 52 | ||
+ | distance = 0 | ||
+ | level_vertex_id = 76655 | ||
+ | object_flags = 0xffffffbf | ||
+ | custom_data = <<END | ||
+ | |||
+ | [logic] | ||
+ | cfg = scripts\noobik_logic | ||
+ | |||
+ | ; cse[smart_terrains] | ||
+ | none = true | ||
+ | END | ||
+ | story_id = 10000 | ||
+ | |||
+ | ; cse_visual properties | ||
+ | visual_name = actors\soldier\soldier_beret_1 | ||
+ | |||
+ | ; 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 = -172.21215820313,-19.941787719727,-161.09272766113 | ||
+ | upd:o_model = 0 | ||
+ | upd:o_torso = 0.028013030067086,0,0.9996075630188 | ||
+ | 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 | ||
+ | |||
+ | |||
+ | Разъясню некоторые пункты, чтобы в след. раз не пришлось прибегать к тутору. | ||
+ | |||
+ | section_name = stalker -//это для игры тут пишется к примеру если ето у тебя сталкера или бандюки то должно быть section_name = stalker | ||
+ | name = noobik -//пишем что хотим | ||
+ | position = -172.21215820313,-19.941787719727,-161.09272766113 -//позиция | ||
+ | direction = 0,0,0 -// направление взгляда(можно писать всегда нули) | ||
+ | |||
+ | |||
+ | ; cse_alife_trader_abstract properties | ||
+ | money = 5000 -//его бабло | ||
+ | character_profile = esc_noobik -//ссылка на профиль в character_desc_локация(раз создаем в алайф эскейп значит и профиль будет искатсья в чарактер_деск_ескейп) | ||
+ | |||
+ | |||
+ | ; cse_alife_object properties | ||
+ | game_vertex_id = 52 -// гейм вертекс | ||
+ | distance = 0 | ||
+ | level_vertex_id = 76655 -//левел вертекс | ||
+ | object_flags = 0xffffffbf | ||
+ | custom_data = <<END | ||
+ | |||
+ | |||
+ | [logic] | ||
+ | cfg = scripts\noobik_logic -// ссылка на логику | ||
+ | |||
+ | |||
+ | ; cse[smart_terrains] | ||
+ | none = true | ||
+ | END | ||
+ | story_id = 10000 -//его стори айди | ||
+ | |||
+ | ; cse_visual properties | ||
+ | visual_name = actors\soldier\soldier_beret_1 -// его визуал | ||
+ | |||
+ | |||
+ | upd:health = 1 | ||
+ | upd:timestamp = 0 | ||
+ | upd:creature_flags = 0 | ||
+ | upd:position = -172.21215820313,-19.941787719727,-161.09272766113 -//опять пишем позицию | ||
+ | upd:o_model = 0 | ||
+ | upd:o_torso = 0.028013030067086,0,0.9996075630188 | ||
+ | upd:g_team = 0 | ||
+ | upd:g_squad = 1 | ||
+ | upd:g_group = 2 | ||
+ | |||
+ | |||
+ | upd:next_game_vertex_id = 65535-//честно не знаю что это, я всегда пишу эти цифры | ||
+ | upd:prev_game_vertex_id = 65535-//не знаю, но пишем всегда это | ||
+ | upd:distance_from_point = 0 | ||
+ | upd:distance_to_point = 0 | ||
+ | |||
+ | Компилируем, получаем файл all.spawn.new , копируем его в геймдату/спавнс и переименовываем просто в олл спавн. | ||
+ | Это еще не все! | ||
+ | |||
+ | еперь | ||
+ | |||
+ | открываем файл character_desc_escape | ||
+ | |||
+ | перед профилем волка вставляем это: | ||
+ | |||
+ | |||
+ | <!---------------------------------------esc_noobik-----------------------------------------------------> | ||
+ | <specific_character id="esc_noobik" team_default = "1"> | ||
+ | <name>Нубик</name> | ||
+ | <icon>ui_npc_u_stalker_neytral_balon_1</icon> | ||
+ | <bio>esc_ckryacker</bio> | ||
+ | |||
+ | <class>esc_noobik</class> | ||
+ | <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> | ||
+ | |||
+ | <rank>434</rank> | ||
+ | <reputation>5</reputation> | ||
+ | <money min="600" max="2000" infinitive="0"/> | ||
+ | |||
+ | <snd_config>characters_voice\human_01\stalker\</snd_config> | ||
+ | <crouch_type>-1</crouch_type> | ||
+ | |||
+ | <visual>actors\soldier\soldier_beret_1</visual> | ||
+ | <supplies> | ||
+ | [spawn] \n | ||
+ | wpn_pm \n | ||
+ | ammo_9x18_fmj = 1 \n | ||
+ | wpn_ak74u \n | ||
+ | ammo_5.45x39_fmj \n | ||
+ | </supplies> | ||
+ | |||
+ | #include "gameplay\character_criticals_4.xml" | ||
+ | |||
+ | </specific_character> | ||
+ | |||
+ | у нас будет чел с визуалом военного, иконкой волка, и голосом обычного сталкера | ||
+ | |||
+ | |||
+ | теперь создаем файл логики, | ||
+ | в папке config/scripts создаем файл noobik_logik.ltx | ||
+ | и пишем туды: | ||
+ | |||
+ | [logic] | ||
+ | active = remark1 | ||
+ | danger = danger_ignore | ||
+ | |||
+ | [danger_ignore] | ||
+ | ignore_distance = 5 | ||
+ | |||
+ | [remark1] | ||
+ | no_move = true | ||
+ | |||
+ | все, он никуда не уйдет пока на него не нападут = ) | ||
+ | |||
+ | Теперь открываем файл game_story_ids | ||
+ | |||
+ | и в самый низ вписываем: | ||
+ | 10000 = "esc_noobik" | ||
+ | |||
+ | теперь открываем файл npc_profile | ||
+ | вставляем сие: | ||
+ | |||
+ | <character id="esc_noobik"> | ||
+ | <class>esc_noobik</class> | ||
+ | <specific_character>esc_noobik</specific_character> | ||
+ | </character> | ||
+ | |||
+ | Все, мы на финишной прямой! | ||
+ | Открываем файл spawn_sections | ||
+ | |||
+ | и в писываем: | ||
+ | [esc_noobik]:stalker | ||
+ | $spawn = "respawn\esc_noobik" | ||
+ | character_profile = esc_noobik | ||
+ | spec_rank = novice | ||
+ | community = stalker | ||
+ | |||
+ | Все, все готово! | ||
+ | Начинаем новую игру, и видем сталкера с именем Нубик = ) | ||
+ | |||
+ | |||
+ | == Послесловие == | ||
+ | Ну вот, если вы все сделали правильно, все будет работать. | ||
+ | Это был тутор по созданию нового непися с нуля, тобишь не имея его Нигде прописаным. | ||
+ | Спасибо Николай ФеНиКс, Futura за помощь в находке метода = ) | ||
+ | |||
+ | |||
+ | Автор статьи - stalkers-life | ||
+ | |||
+ | [[Категория:скрипты]] |
Версия 10:42, 28 февраля 2010
Что,как,зачем
Итак, я хочу рассказать вам как создать NPC через all.spawn. Метод был выявлен мною путем проб и ошибок. Конечно же у вас появился вопрос: « Ну а зачем же мучатся с all.spawn, если можно сделать тоже самое через скрипт?». Ответ: Хоть этот способ и не такой быстрый и легкий, но у него есть свои плюсы, необходимые многим, один из них - мы можем задать story id нашему NPC. "А что дает нам это?" Много чего, ну для примера - мы сможем поставить отметку на него. Я не буду объяснять такие простые вещи как декомпиляция all.spawn и остальное, но если же вы все таки не знаете как, пишите мне в лс на Гейменаторе(stalkers-life, или Идиот) Итак, хватит лишних слов, перейдем к работе...
Работаем!!!
С помощью ACDC декомпилируем all.spawn
Получаем кучу файлов типа : alife_l01_escape , way_l01_escape и тд.
Создадим нового непися на Кордоне. Открываем alife_l01_escape, и крутим в самый низ.
Если у вас чистая игра и вы ничего не делали в Олл спавне то посленяя секция у вас будет под номером 869. Добавляем туда вот такой код(в конец):
[870]
- cse_abstract properties
section_name = stalker name = noobik position = -172.21215820313,-19.941787719727,-161.09272766113 direction = 0,0,0
- cse_alife_trader_abstract properties
money = 5000 character_profile = esc_noobik
- cse_alife_object properties
game_vertex_id = 52 distance = 0 level_vertex_id = 76655 object_flags = 0xffffffbf custom_data = <<END
[logic] cfg = scripts\noobik_logic
- cse[smart_terrains]
none = true END story_id = 10000
- cse_visual properties
visual_name = actors\soldier\soldier_beret_1
- 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 = -172.21215820313,-19.941787719727,-161.09272766113 upd:o_model = 0 upd:o_torso = 0.028013030067086,0,0.9996075630188 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
Разъясню некоторые пункты, чтобы в след. раз не пришлось прибегать к тутору.
section_name = stalker -//это для игры тут пишется к примеру если ето у тебя сталкера или бандюки то должно быть section_name = stalker name = noobik -//пишем что хотим position = -172.21215820313,-19.941787719727,-161.09272766113 -//позиция direction = 0,0,0 -// направление взгляда(можно писать всегда нули)
- cse_alife_trader_abstract properties
money = 5000 -//его бабло character_profile = esc_noobik -//ссылка на профиль в character_desc_локация(раз создаем в алайф эскейп значит и профиль будет искатсья в чарактер_деск_ескейп)
- cse_alife_object properties
game_vertex_id = 52 -// гейм вертекс distance = 0 level_vertex_id = 76655 -//левел вертекс object_flags = 0xffffffbf custom_data = <<END
[logic]
cfg = scripts\noobik_logic -// ссылка на логику
- cse[smart_terrains]
none = true END story_id = 10000 -//его стори айди
- cse_visual properties
visual_name = actors\soldier\soldier_beret_1 -// его визуал
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -172.21215820313,-19.941787719727,-161.09272766113 -//опять пишем позицию
upd:o_model = 0
upd:o_torso = 0.028013030067086,0,0.9996075630188
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2
upd:next_game_vertex_id = 65535-//честно не знаю что это, я всегда пишу эти цифры
upd:prev_game_vertex_id = 65535-//не знаю, но пишем всегда это
upd:distance_from_point = 0
upd:distance_to_point = 0
Компилируем, получаем файл all.spawn.new , копируем его в геймдату/спавнс и переименовываем просто в олл спавн. Это еще не все!
еперь
открываем файл character_desc_escape
перед профилем волка вставляем это:
<specific_character id="esc_noobik" team_default = "1">
<name>Нубик</name>
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
<bio>esc_ckryacker</bio>
<class>esc_noobik</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<rank>434</rank> <reputation>5</reputation> <money min="600" max="2000" infinitive="0"/>
<snd_config>characters_voice\human_01\stalker\</snd_config> <crouch_type>-1</crouch_type>
<visual>actors\soldier\soldier_beret_1</visual> <supplies> [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_ak74u \n ammo_5.45x39_fmj \n </supplies>
- include "gameplay\character_criticals_4.xml"
</specific_character>
у нас будет чел с визуалом военного, иконкой волка, и голосом обычного сталкера
теперь создаем файл логики,
в папке config/scripts создаем файл noobik_logik.ltx
и пишем туды:
[logic] active = remark1 danger = danger_ignore
[danger_ignore] ignore_distance = 5
[remark1] no_move = true
все, он никуда не уйдет пока на него не нападут = )
Теперь открываем файл game_story_ids
и в самый низ вписываем: 10000 = "esc_noobik"
теперь открываем файл npc_profile вставляем сие:
<character id="esc_noobik"> <class>esc_noobik</class> <specific_character>esc_noobik</specific_character> </character>
Все, мы на финишной прямой! Открываем файл spawn_sections
и в писываем: [esc_noobik]:stalker $spawn = "respawn\esc_noobik" character_profile = esc_noobik spec_rank = novice community = stalker
Все, все готово! Начинаем новую игру, и видем сталкера с именем Нубик = )
Послесловие
Ну вот, если вы все сделали правильно, все будет работать. Это был тутор по созданию нового непися с нуля, тобишь не имея его Нигде прописаным. Спасибо Николай ФеНиКс, Futura за помощь в находке метода = )
Автор статьи - stalkers-life