Здарова всем. Рассматривать будем на сталкере. [править] Разбор секция 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
|