Главная » Статьи » Статьи » Моддинг

Точный разбор секций all.spawn
Здарова всем. Рассматривать будем на сталкере.
[править]
Разбор секция alife

[81]
; cse_abstract properties
section_name = stalker
name = esc_soldier_death
position = -150.2001953125,-29.2462558746338,-228.743957519531
direction = -150.2001953125,-29.2462558746338,-228.743957519531

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_sold_dead

; cse_alife_object properties
game_vertex_id = 98
distance = 16.1000003814697
level_vertex_id = 339597
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
none=true
END

; cse_visual properties
visual_name = actors\soldier\soldier_bandana_3

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

upd:health = 0
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -150.2001953125,-29.2462558746338,-228.743957519531
upd:o_model = 0
upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531
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

Английские буквы..цифры...:(. Сейчас всё будет понятней:

[81] порядковый номер обьекта(не должен повторяться)
; cse_abstract properties (имя секции в acdc.pl или функции я не кодер, так шо хз но ето нам и не надо)
section_name = stalker (системное имя которое задано acdc.pl=> функция package alife_object;)
name = esc_soldier_death (свободное имя на английском языке)
position = -150.2001953125,-29.2462558746338,-228.743957519531 (позиция типа x,y,z, на уровне)
direction = -150.2001953125,-29.2462558746338,-228.743957519531 (направление взгляда x,y,z, на уровне)

; cse_alife_trader_abstract properties (пропорции для торговли)
money = 5000 (кол-во деньжат на старте игры)
character_profile = esc_sold_dead (профиль сталкера из xml,ltx файлов смотри урок по созданию нового НПС)

; cse_alife_object properties (опции обьекта)
game_vertex_id = 98 (вертекс уровня, подробно будет разобрано ниже)
distance = 16.1000003814697 (хз чё за фигня, в переходах например как радиус действия)
level_vertex_id = 339597 (всё понятно, вертекс на уровне )
object_flags = 0xffffffbf (флаг обьекта, типа offset для чтения движком и респавнером)
custom_data = <<END (далее идёт логика, эта строчка может отсутствовать)
[smart_terrains]
none=true {далее логика, смотреть в другой статье
END (завершение логики)

; cse_visual properties (Опция визуализации)

; cse_alife_creature_abstract properties (опции создания обьекта, если дословно)
g_team = 0 (команда НПС, все сталкеры 0)
g_squad = 1 (...)
g_group = 2 (группа, чё то около движка:()
health = 1 (количество жизней при старте НПС)
dynamic_out_restrictions = (...)
dynamic_in_restrictions = (...)

upd:health = 0 (...)
upd:timestamp = 0 (...)
upd:creature_flags = 0 (...)
upd:position = -150.2001953125,-29.2462558746338,-228.743957519531 (дополнительная позиция, лично я её учитываю при спавне)
upd:o_model = 0
upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531 (кординаты те же что и в дирекции)
upd:g_team = 0 (...)
upd:g_squad = 1 (...)
upd:g_group = 2 (...)

кое что: upd, скорее всего параметры которые не используются, или почти не используются

cse_alife_monster_abstract properties

upd:next_game_vertex_id = 31 (работает как гейм_вертекс) upd:prev_game_vertex_id = 15523 (работает как левел вертекс) upd:distance_from_point = 0 (...) значения не менять upd:distance_to_point = 0 (...) значения не менять

cse_alife_human_abstract properties

predicate5 = 2,2,0,1,1 (...) значение не менять predicate4 = 0,2,0,2 (...) значение не менять

cse_ph_skeleton properties (...)

upd:start_dialog = (...)

se_stalker properties (...)


Автора не забываем указать

Участник:Rez@niy Участник:Loxotron
[править]
Подробный разбор некоторых секций

game_vertex. Действительно, очень интересная секция. Как известно, можно поставить лишь начальный вертекс уровня и НПС заспавнится там где надо. Но уровни у GSC большие. Для удобства движок делит уровень на секции (сектора, поля, полигоны, называйте как хотите). Каждому уровню присвоен свой начальный game_vertex и исходя из него он делится на части.
[править]
Разбор некоторых "штук" и закидонов acdc.pl

Разберём некоторые секции acdc.pl package alife_object; содержит:

actor => 'cse_alife_creature_actor',

graph_point => 'cse_alife_graph_point',

stalker => 'se_stalker',
stalker_monolith => 'se_stalker',
stalker_zombied => 'se_stalker',
stalker_trader => 'se_stalker',
stalker_sakharov => 'se_stalker',
m_barman => 'se_stalker',
m_osoznanie => 'se_stalker',
mil_killer_respawn_1 => 'se_stalker',

m_trader => 'cse_alife_trader',


mil_freedom_respawn_1 => 'se_stalker',
mil_freedom_respawn_3 => 'se_stalker',
dolg_regular => 'se_stalker',

m_bloodsucker_e => 'se_monster',
bloodsucker_weak => 'se_monster',
bloodsucker_normal => 'se_monster',
bloodsucker_strong => 'se_monster',
bloodsucker_arena => 'se_monster',
bloodsucker_mil => 'se_monster',

m_boar_e => 'se_monster',
boar_weak => 'se_monster',
boar_normal => 'se_monster',
boar_strong => 'se_monster',

m_burer_e => 'se_monster',
burer_arena => 'se_monster',
m_burer_normal => 'se_monster',
m_burer_normal_black => 'se_monster',
burer_indoor => 'se_monster',
burer_outdoor => 'se_monster',

m_cat_e => 'se_monster',
cat_weak => 'se_monster',
cat_normal => 'se_monster',
cat_strong => 'se_monster',

m_chimera_e => 'se_monster',
chimera_weak => 'se_monster',
chimera_normal => 'se_monster',
chimera_strong => 'se_monster',

m_controller_e => 'se_monster',
m_controller_normal => 'se_monster',
m_controller_normal_fat => 'se_monster',
m_controller_old => 'se_monster',
m_controller_old_fat => 'se_monster',
controller_tubeman => 'se_monster',

m_crow => 'cse_alife_creature_crow',

m_dog_e => 'se_monster',
dog_weak => 'se_monster',
dog_normal => 'se_monster',
dog_strong => 'se_monster',

m_flesh_e => 'se_monster',
flesh_weak => 'se_monster',
flesh_normal => 'se_monster',
flesh_strong => 'se_monster',

m_fracture_e => 'se_monster',
fracture_normal => 'se_monster',
fracture_strong => 'se_monster',

m_gigant_e => 'se_monster',
gigant_normal => 'se_monster',
gigant_strong => 'se_monster',

m_phantom => 'cse_alife_creature_phantom',

m_poltergeist_e => 'se_monster',
m_poltergeist_normal => 'se_monster',
m_poltergeist_normal_tele => 'se_monster',
m_poltergeist_tele_outdoor => 'se_monster',
m_poltergeist_normal_flame => 'se_monster',
m_poltergeist_strong_flame => 'se_monster',

m_pseudodog_e => 'se_monster',
pseudodog_weak => 'se_monster',
pseudodog_normal => 'se_monster',
pseudodog_strong => 'se_monster',
pseudodog_arena => 'se_monster',
psy_dog => 'se_monster',
psy_dog_phantom => 'se_monster', # cse_alife_psy_dog_phantom really
psy_dog_radar => 'se_monster',

Теперь по русски.

dodik(класс из dll) => 'se_dodik', (имя скрипта)

Чтобы не переименовывать all.spawn смотрите конец acdc.pl и просто смените формат с all.spawn.new на all.spawn


Категория: Моддинг | Добавил: _Admin_ (31.10.2011)
Просмотров: 3374 | Рейтинг: 3.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Меню сайта

Свежие прохождения






Категории раздела

Мини-чат

Поиск

Статистика

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


Сегодня посетили:













Форма входа


Войти Зарегистрироваться