All.spawn. Создание NPC — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

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
 +
 +
[[Категория:скрипты]]

Версия 08:54, 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>

  1. 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

Другие места
LANGUAGE