SOC: Для совсем еще зеленых ч.1 — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(орфография) |
OlegatoR (обсуждение | вклад) (Отмена правки 14693, сделанной участником 5.228.4.26 (обс.)) |
||
(не показаны 12 промежуточные версии 11 участников) | |||
Строка 1: | Строка 1: | ||
− | '''Внимание: Перед прочтением данной статьи ознакомтесь со следующей статьей: [http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B3%D1%80%D1%8B_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80%D0%B0_%D0%BE%D1%82_%D0%91%D0%B0%D1%80%D0%B4%D0%B0%D0%BA%D0%B0 | + | '''Внимание: Перед прочтением данной статьи ознакомтесь со следующей статьей: [http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B3%D1%80%D1%8B_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B5%D1%80%D0%B0_%D0%BE%D1%82_%D0%91%D0%B0%D1%80%D0%B4%D0%B0%D0%BA%D0%B0 Распаковка игры].''' |
− | Сейчас в мире модостроения сталкера слишком большое | + | Сейчас в мире модостроения сталкера слишком большое количество новичков, задающих тупые вопросы типа: ''«А как увеличить рост ГГ?», «А как уменьшить время закидывания болта?», «А как?», «Что?», «Почему?».'' |
− | Вот я и решил написать эту | + | |
− | Итак, с чего бы начать? Ну для начала, я думаю, надо начать с объяснения, что где лежит. Начнем с основного | + | Вот я и решил написать эту небольшую статейку, точнее это не статейка вовсе, а разбирание вместе с вами, мои юные друзья, конфигов. |
− | config/system.ltx | + | |
− | Например, у нас есть отдельные профили сталкеров. Но игра не будет их считывать из воздуха | + | === Файл system.ltx === |
+ | Итак, с чего бы начать? Ну для начала, я думаю, надо начать с объяснения, что где лежит. Начнем с основного - '''''config/system.ltx.''''' В этом файле лежит основная информация об игре, инклуды к остальным конфигам (об этом позже), некоторые параметры инвентаря, прицела, крови, список тех, кого можно таскать и информация о некоторых файлах. Сейчас объясню подробнее про последнее. Например, у нас есть отдельные профили сталкеров. Но игра не будет их считывать из воздуха и, поэтому, прежде необходимо занести его в базу информации, совершив подобную операцию: | ||
<lua> | <lua> | ||
[profiles] | [profiles] | ||
Строка 11: | Строка 12: | ||
files = npc_profile | files = npc_profile | ||
;список xml файлов, содержащих описания конкретных сталкеров и торговцев | ;список xml файлов, содержащих описания конкретных сталкеров и торговцев | ||
− | specific_characters_files = character_desc_general, character_desc_simulation,character_desc_escape, character_desc_garbage, character_desc_agroprom, character_desc_darkvalley, character_desc_deadcity, character_desc_bar, character_desc_yantar, character_desc_military, character_desc_radar, character_desc_pripyat, character_desc_aes, character_desc_kishka, character_desc_sarcofag, | + | specific_characters_files = character_desc_general, character_desc_simulation,character_desc_escape, character_desc_garbage, character_desc_agroprom, character_desc_darkvalley, character_desc_deadcity, character_desc_bar, character_desc_yantar, character_desc_military, character_desc_radar, character_desc_pripyat, character_desc_aes, character_desc_kishka, character_desc_sarcofag, [<здесь мы ставим запятую] название_нашего_файла [<название файла не должно содержать пробелов, только знак подчеркивания. После последнего файла запятая не ставится] |
</lua> | </lua> | ||
− | Итак. Многие, наверно, заметили комментарии. То | + | === Комментарии === |
+ | Итак. Многие, наверно, заметили комментарии. То есть, пояснения, например, как это: | ||
<lua> | <lua> | ||
;список xml файлов, содержащих описания конкретных сталкеров и торговцев | ;список xml файлов, содержащих описания конкретных сталкеров и торговцев | ||
</lua> | </lua> | ||
− | Так делают немногие люди которые занимаются модостроением, ибо не хотят объяснять принцип действия своих конфигов и прочего. Но | + | Так делают немногие люди, которые занимаются модостроением, ибо не хотят объяснять принцип действия своих конфигов и прочего. Но GSC часто оставляли подобные пояснения. В общем, функция эта далеко не бесполезная для людей, которые забывают что, где и как. Так же желательно писать комментарии для старых значений. Например, в одном из параметров было числовое значение 0.3, вы изменили на 0.2. Значит, желательно после 0.2 поставить знак начала комментария (То есть '''";"''') и написать старое число. То есть, получится так: 0.2 ; 0.3. И самое главное: не забудьте символ ";"! Комментарии так же нельзя писать в несколько строк:<lua> |
− | <lua> | + | |
;Здесь комментарий | ;Здесь комментарий | ||
А здесь еще один | А здесь еще один | ||
</lua> | </lua> | ||
− | + | В этом случае игра может вылететь. Старайтесь либо умещать все в одном предложении, либо ставьте '''";"''' перед каждой новой строкой комментария. | |
− | Так же существует такое определение как секции, то | + | === Секции === |
− | + | Так же существует такое определение, как секции, то есть, '''[название_секции]'''. Этот параметр отвечает за контроль нескольких опций внутри себя. Просмотрев какой-нибудь ltx-файл, нетрудно заметить, что он состоит из таких секций. | |
− | gamedata/config/alife.ltx | + | |
− | Здесь нет ничего интересного, кроме: | + | Если написано так: '''[название_секции]''':''другая_секция'', это значит, что секция с названием '''название_секции''' берёт за основу секцию с названием '''другая_секция'''. Самый простой пример - открываем файл '''''unique_items.ltx''''' (он находится в папке '''''misc''''' и содержит в себе модифицированные оружие и броню), видим самую первую секцию '''[outfit_novice_m1]''':''novice_outfit'', то есть это Аномальная кожанка, которая берёт за основу обычную куртку (из файла '''''outfits.ltx'''''), следовательно, в этой секции мы видим только те параметры костюма, которые были изменены. |
+ | === Файл alife.ltx === | ||
+ | Идём дальше, к файлу '''''gamedata/config/alife.ltx'''''. Здесь нет ничего интересного, кроме: | ||
<lua> | <lua> | ||
− | time_factor = 10 | + | time_factor = 10 ;скорость течения игрового времени ;360 - скорость для демонстрации смены дня и ночи, если хотите сделать течение времени реальным, то измените параметр на 1 |
+ | switch_distance = 150 ;Расстояние от ГГ, на котором все существа переходят на упрощенную систему симуляции жизни | ||
+ | start_time = 05:30:00 ;Время начала новой игры | ||
+ | start_date = 01.05.2012 ;Дата начала новой игры | ||
</lua> | </lua> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Итак, по порядку. | + | === Папки === |
− | + | '''''config/creatures''''' - информация о ГГ, противниках и прочих существах. Например, их устойчивость к определенному виду урона. У ГГ много интересных настроек. Так же, здесь лежит информация об отношениях группировок к ГГ и между собой. | |
− | actor.ltx - конфиг ГГ | + | |
− | damages.ltx - конфиг урона для нпс | + | '''''config/gameplay''''' - информация о диалогах, профилях сталкеров (например, можно дать какому-нибудь бандиту вместо ПМ Грозу, но об этом позже), энциклопедии, заданиях (не их цели и награды, а текст, иконка и пр.). |
− | game_relations.ltx - | + | |
− | helicopter.ltx - конфиг вертолета | + | '''''config/misc''''' - информация о предметах, спавне сталкеров, костюмах, артефактах, генераторе предметов в трупах, гулагах, квестовых предметах, аномалиях и торговцах. |
− | immunities.ltx - иммунитет. | + | |
− | monsters.ltx - | + | '''''config/models''''' - подробные параметры для некоторых моделей игры, в том числе там находятся конфиги фонаря, транспорта и разрушаемых предметов. |
− | m_army.ltx - конфиг военных | + | |
− | m_bandit.ltx - конфиг бандитов | + | '''''config/scripts''''' - логика персонажей (по каким местам им надо ходить, при каких обстоятельствах им надо бегать к той или иной точке и пр.) и дверей (открыта, закрыта, при каких обстоятельствах ей нужно быть открытой). |
− | m_bloodsucker.ltx - конфиг | + | |
− | m_boar.ltx - конфиг | + | '''''config/text/rus''''' - текст. Если бы не эти файлы, мы бы видели в игре что-то типа ''«wpn_ak74_name»'' (хотя зачастую вместо этих идентификаторов можно писать русский текст). Стоит отметить одну интересную особенность - игра подгружает эти файлы все разом. То есть можно писать свой текст в любом из этих файлов, игра его в любом случае найдёт. |
− | m_burer.ltx - конфиг | + | |
− | m_cat.ltx - конфиг | + | '''''config/ui''''' - информация об игровом интерфейсе (он же GUI). |
− | m_chimera.ltx - конфиг | + | |
− | m_controller.ltx - конфиг | + | '''''config/weapons''''' - конфиги оружия. Можно сделать их убойнее, поменять цену и многое другое. Там же можно добавить новые стволы. |
− | m_crow.ltx - конфиг | + | |
− | m_dog.ltx - конфиг | + | '''''config/weathers''''' - конфиги погоды, подробнее в статье [http://stalkerin.gameru.net/wiki/index.php/Настройка_погоды_и_освещения Настройка погоды и освещения] |
− | m_dog_.ltx - | + | |
− | m_flesh.ltx - конфиг | + | === Папка creatures === |
− | m_fraction.ltx - конфиг каких | + | Итак, по порядку. Первой папкой в списке у нас в списке была '''''config/creatures:''''' |
− | m_fracture.ltx - | + | |
− | m_giant.ltx - конфиг псевдогиганта | + | '''''actor.ltx''''' - конфиг ГГ |
− | m_person.ltx - конфиг торговцев. | + | |
− | m_phantom.ltx - по идее старый конфиг полтергейста, | + | '''''damages.ltx''''' - конфиг урона для нпс |
− | m_poltergeist.ltx - конфиг полтергейста | + | |
− | m_pseudodog.ltx - конфиг псевдособаки | + | '''''game_relations.ltx''''' - отношение группировок к ГГ и между собой |
− | m_rat.ltx - конфиг крысы | + | |
− | m_snork.ltx - конфиг снорка | + | '''''helicopter.ltx''''' - конфиг вертолета |
− | m_stalker.ltx - конфиг сталкеров | + | |
− | m_stalker_monolith.ltx - конфиг монолитовцев | + | '''''immunities.ltx''''' - иммунитет. Возможно, устойчивость разных костюмов (не на ГГ) к воздействиям |
− | m_stalker_zombied.ltx - конфиг зомбированных сталкеров (не путать с обычными зомби) | + | |
− | m_tushkano.ltx - конфиг тушканов | + | '''''monsters.ltx''''' - файл, по сути обобщающий все конфиги монстров (игра сначала обращается к нему, а потом с помощью него находит остальные файлы) |
− | m_zombie.ltx - конфиг зомби | + | |
− | spawn_sections.ltx - | + | '''''m_army.ltx''''' - конфиг военных |
− | stalkers.ltx - | + | |
− | vssver.scc - | + | '''''m_bandit.ltx''''' - конфиг бандитов |
− | + | ||
− | + | '''''m_bloodsucker.ltx''''' - конфиг кровососа | |
+ | |||
+ | '''''m_boar.ltx''''' - конфиг кабана | ||
+ | |||
+ | '''''m_burer.ltx''''' - конфиг бюрера | ||
+ | |||
+ | '''''m_cat.ltx''''' - конфиг кошки | ||
+ | |||
+ | '''''m_chimera.ltx''''' - конфиг химеры | ||
+ | |||
+ | '''''m_controller.ltx''''' - конфиг контролёра | ||
+ | |||
+ | '''''m_crow.ltx''''' - конфиг вороны | ||
+ | |||
+ | '''''m_dog.ltx''''' - конфиг собаки | ||
+ | |||
+ | '''''m_dog_.ltx''''' - неиспользуемый конфиг собаки | ||
+ | |||
+ | '''''m_flesh.ltx''''' - конфиг плоти | ||
+ | |||
+ | '''''m_fraction.ltx''''' - конфиг каких то солдат. | ||
+ | |||
+ | '''''m_fracture.ltx''''' - конфиг излома | ||
+ | |||
+ | '''''m_giant.ltx''''' - конфиг псевдогиганта | ||
+ | |||
+ | '''''m_person.ltx''''' - конфиг торговцев. Возможно, не используется | ||
+ | |||
+ | '''''m_phantom.ltx''''' - по идее, старый конфиг полтергейста, нет ничего интересного | ||
+ | |||
+ | '''''m_poltergeist.ltx''''' - конфиг полтергейста | ||
+ | |||
+ | '''''m_pseudodog.ltx''''' - конфиг псевдособаки | ||
+ | |||
+ | '''''m_rat.ltx''''' - конфиг крысы | ||
+ | |||
+ | '''''m_snork.ltx''''' - конфиг снорка | ||
+ | |||
+ | '''''m_stalker.ltx''''' - конфиг сталкеров | ||
+ | |||
+ | '''''m_stalker_monolith.ltx''''' - конфиг монолитовцев | ||
+ | |||
+ | '''''m_stalker_zombied.ltx''''' - конфиг зомбированных сталкеров (не путать с обычными зомби) | ||
+ | |||
+ | '''''m_tushkano.ltx''''' - конфиг тушканов | ||
+ | |||
+ | '''''m_zombie.ltx''''' - конфиг зомби | ||
+ | |||
+ | '''''spawn_sections.ltx''''' - подробнее - в темах, посвященные спавну сталкеров | ||
+ | |||
+ | '''''stalkers.ltx''''' - файл, обобщающий все конфиги людей | ||
+ | |||
+ | '''''vssver.scc''''' - вовсе ненужный файл | ||
+ | |||
+ | === Файл actor.ltx === | ||
+ | Ну что ж, глянем конфиг ГГ: | ||
<lua> | <lua> | ||
[actor_terrain] | [actor_terrain] | ||
− | 255,255,000,255 ;не | + | 255,255,000,255 ;по сути, эти цифры - цвет (жёлтый) в формате RGB + прозрачность. Вкратце - он |
+ | ;указывает на то, где позволено ходить объекту (есть специальные файлы, в которых карта частями | ||
+ | ;окрашена в разные сплошные цвета). В нашем случае абсолютно бесполезен (так как ГГ и так может | ||
+ | ;гулять где хочет), но, видимо указывается обязательно, хотя не факт, что используется в игре. | ||
[actor]:common_ph_friction_params_on_npc_death | [actor]:common_ph_friction_params_on_npc_death | ||
− | GroupControlSection = spawn_group ;Нет необходимости | + | GroupControlSection = spawn_group ;Нет необходимости изменять |
− | $spawn = "actor" ;Нет необходимости | + | $spawn = "actor" ;Нет необходимости изменять |
− | $ed_icon = ed\ed_actor ;Нет необходимости | + | $ed_icon = ed\ed_actor ;Нет необходимости изменять |
− | $player = on ;Нет необходимости | + | $player = on ;Нет необходимости изменять |
$prefetch = 16 | $prefetch = 16 | ||
− | cform = skeleton ;Нет необходимости | + | cform = skeleton ;Нет необходимости изменять |
− | class = O_ACTOR ;Класс. Нет необходимости | + | class = O_ACTOR ;Класс. Нет необходимости изменять |
money = 40; ;Нерабочий конфиг | money = 40; ;Нерабочий конфиг | ||
rank = 3; ;Нерабочий конфиг | rank = 3; ;Нерабочий конфиг | ||
− | script_binding = bind_stalker.actor_init ;Нет необходимости | + | script_binding = bind_stalker.actor_init ;Нет необходимости изменять |
− | visual = actors\hero\stalker_novice.ogf ; | + | visual = actors\hero\stalker_novice.ogf ;Модель при виде от 3-го лица, возможно, изменять её надо не здесь. |
− | destroyed_vis_name = physics\Dead_Body\skelet_crash ;Нет необходимости | + | destroyed_vis_name = physics\Dead_Body\skelet_crash ;Нет необходимости изменять |
+ | |||
+ | terrain = actor_terrain ;Нет необходимости изменять; как видим, это ссылка на самую верхнюю секцию файла | ||
− | + | max_item_mass = 50.0 ;Сколько герой может носить кг. за плечами. Если число перевалит за 50, то для ГГ это будет предел и он будет очень быстро уставать. | |
+ | jump_speed = 6. ;Высота прыжка изменя на 20 будешь высоко прыгать | ||
− | + | crouch_coef = 0.45 ;Скорость при передвежении вприсяди | |
− | + | ||
− | crouch_coef = 0.45 ;Скорость при передвежении | + | |
climb_coef = 0.7 ;Скорость при залезании на лестницу | climb_coef = 0.7 ;Скорость при залезании на лестницу | ||
− | run_coef = 2.1 ;Скорость при | + | run_coef = 2.1 ;Скорость при быстром шаге |
− | sprint_koef = 2.6 ;Скорость при | + | sprint_koef = 2.6 ;Скорость при беге |
− | run_back_coef = 1.8 ;Скорость при | + | run_back_coef = 1.8 ;Скорость при быстром шаге назад |
walk_back_coef = 0.8 ;Скорость при хождении назад | walk_back_coef = 0.8 ;Скорость при хождении назад | ||
− | air_control_param = 0.1 ;Управляемость в | + | air_control_param = 0.1 ;Управляемость в прыжке. Нет смысла менять, только ради экспериментов |
− | walk_accel = 17 | + | walk_accel = 17 ;Ускорение при ходьбе |
− | pickup_info_radius = 5 ;Радиус | + | pickup_info_radius = 5 ;Радиус, при котором над предметами выводятся их названия, если на них навести прицел |
− | ef_creature_type = 17 ;Нет необходимости изменять | + | ef_creature_type = 17 ;Нет необходимости изменять |
; attach params | ; attach params | ||
Строка 124: | Строка 174: | ||
ph_box0_center = 0.0, 0.9, 0.0 ;Нет необходимости изменять | ph_box0_center = 0.0, 0.9, 0.0 ;Нет необходимости изменять | ||
− | ph_box0_size = 0.35, 0.9, 0.35 ;Нет необходимости изменять | + | ph_box0_size = 0.35, 0.9, 0.35 ;Нет необходимости изменять (Габариты ГГ стоя) |
ph_box1_center = 0.0, 0.75, 0.0 ;Нет необходимости изменять | ph_box1_center = 0.0, 0.75, 0.0 ;Нет необходимости изменять | ||
− | ph_box1_size = 0.35, 0.75, 0.35 ;Нет необходимости изменять | + | ph_box1_size = 0.35, 0.75, 0.35 ;Нет необходимости изменять (Габариты ГГ в присяде) |
ph_box2_center = 0.0, 0.6, 0.0 ;Нет необходимости изменять | ph_box2_center = 0.0, 0.6, 0.0 ;Нет необходимости изменять | ||
− | ph_box2_size = 0.35, 0.6, 0.35 ;Нет необходимости изменять | + | ph_box2_size = 0.35, 0.6, 0.35 ;Нет необходимости изменять (Габариты ГГ в полном присяде) |
stalker_restrictor_radius = .55;0.55;0.75;0.9 ;Нет необходимости изменять | stalker_restrictor_radius = .55;0.55;0.75;0.9 ;Нет необходимости изменять | ||
stalker_small_restrictor_radius = .55 ;Нет необходимости изменять | stalker_small_restrictor_radius = .55 ;Нет необходимости изменять | ||
Строка 141: | Строка 191: | ||
weapon_bone2 = bip01_r_finger11 ;Нет необходимости изменять | weapon_bone2 = bip01_r_finger11 ;Нет необходимости изменять | ||
− | damage = actor_damage ; | + | damage = actor_damage ;Ссылка на секцию о повреждениях ГГ. Находится почти в самом низу конфига |
− | hit_probability_gd_novice = 0.20 ;Вероятность | + | hit_probability_gd_novice = 0.20 ;Вероятность попадения в ГГ на разных сложностях. |
− | hit_probability_gd_stalker = 0.30 | + | hit_probability_gd_stalker = 0.30 |
− | hit_probability_gd_veteran = 0.40 | + | hit_probability_gd_veteran = 0.40 |
− | hit_probability_gd_master = 0.50 | + | hit_probability_gd_master = 0.50 |
− | hit_sounds = actor_hit_snds ; | + | hit_sounds = actor_hit_snds ;Ссылка на секцию со звуками разных поврежддений ГГ. См. ниже. |
;actor condition | ;actor condition | ||
− | immunities_sect = actor_immunities_gd_master ; | + | immunities_sect = actor_immunities_gd_master ;Ссылка на секцию с иммунитетом ГГ |
− | condition_sect = actor_condition ; | + | condition_sect = actor_condition ;Ссылка на секцию с описанием изменения состояния ГГ (при радиации, кровотечении и тп.) |
− | heavy_breath_snd = actor\breath_1 | + | heavy_breath_snd = actor\breath_1 ;Звук тяжёлого дыхания при усталости |
heavy_blood_snd = affects\heartbeat ;Звук при тяжёлом кровотечении | heavy_blood_snd = affects\heartbeat ;Звук при тяжёлом кровотечении | ||
material = creatures\actor ;Нет необходимости изменять | material = creatures\actor ;Нет необходимости изменять | ||
− | camera_height_factor = 0.85 ; | + | camera_height_factor = 0.85 ;Высота камеры над землёй, попросту говоря, рост ГГ (параметр 0.95 самый приемлимый) |
;Дисперсия стрельбы с учетом ходьбы и бега | ;Дисперсия стрельбы с учетом ходьбы и бега | ||
− | disp_base = 0.8 | + | disp_base = 0.8 ;Угол (в градусах) разлета пуль, когда актёр стоит на месте |
disp_aim = 0.04 | disp_aim = 0.04 | ||
− | disp_vel_factor = 2.0 | + | disp_vel_factor = 2.0 ;На сколько увеличится дисперсия при скрости в 10 м/с (не обязательно при беге) |
− | disp_accel_factor = 2.0 | + | disp_accel_factor = 2.0 ;Еще на сколько увеличится, если актёр бежит (+ скорость) |
− | disp_crouch_factor = -0.2 | + | disp_crouch_factor = -0.2 ;Уменьшение если актёр сидит |
− | disp_crouch_no_acc_factor = -0.4 | + | disp_crouch_no_acc_factor = -0.4 ;Уменьшение если актёр сидит + без ускорения |
− | ;disp_jump_factor = 2.0 | + | ;disp_jump_factor = 2.0 ;Уменьшение при прыжке |
missile_throw_offset = 0.3, 0.5, 0.5 | missile_throw_offset = 0.3, 0.5, 0.5 | ||
− | body_remove_time = 60000 ;Время уничтожения трупа (с учетом TimeFactor). | + | body_remove_time = 60000 ;Время уничтожения трупа (с учетом TimeFactor). |
− | sleep_time_factor = 1000 ;400 | + | sleep_time_factor = 1000 ;400 ;Ускорение времени во сне. Все параметры, связанные со сном ГГ, не имеют смысла ввиду отсутствия сна в игре (сон в модах не использует параметры из этого файла) |
− | max_sleep_hours = 12 | + | max_sleep_hours = 12 |
;species of monster | ;species of monster | ||
− | species = actor ; | + | species = actor ;Относится ко сну |
Строка 187: | Строка 237: | ||
; visibility parameters | ; visibility parameters | ||
− | ;Параметры которые ниже лучше не менять. | + | ;Параметры, которые ниже лучше не менять. Отвечают за видимость ГГ. Комментарии от GSC. |
DynamicObjectsCount = 32 | DynamicObjectsCount = 32 | ||
min_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла | min_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла | ||
Строка 200: | Строка 250: | ||
still_visible_time = 5000 ; время, которое объект всё ещё считается видимым, даже если он уже не во фрустуме | still_visible_time = 5000 ; время, которое объект всё ещё считается видимым, даже если он уже не во фрустуме | ||
− | [actor_immunities_gd_novice] ;Коэфециенты иммунитета на уровне сложности | + | [actor_immunities_gd_novice] ;Коэфециенты иммунитета на уровне сложности новичок. Чем меньше значение, тем меньше урон. Если поставить 0.0, ГГ станет практически бессмертным (сможет умереть только от радиации или кровотечения). |
burn_immunity = 0.5 ;Огонь (костер, жарка и тп.) | burn_immunity = 0.5 ;Огонь (костер, жарка и тп.) | ||
− | strike_immunity = 0.5 ;Удар (падение с большой высоты, аномалия " | + | strike_immunity = 0.5 ;Удар (падение с большой высоты, аномалия "Карусель" и тп.) |
shock_immunity = 0.5 ;Электрошок (Аномалия "Электра") | shock_immunity = 0.5 ;Электрошок (Аномалия "Электра") | ||
− | wound_immunity = 0.5 ;Разрыв (Атаки животных, еще | + | wound_immunity = 0.5 ;Разрыв (Атаки животных, еще, возможно, аномалия "Мясорубка" и тп.) |
radiation_immunity = 0.5 ;Радиация | radiation_immunity = 0.5 ;Радиация | ||
− | telepatic_immunity = 0.5 ;Пси | + | telepatic_immunity = 0.5 ;Пси-воздействие |
− | chemical_burn_immunity = 0.5 | + | chemical_burn_immunity = 0.5 ;Хим. воздействие (аномалия "Холодец") |
− | explosion_immunity = 0.1 ;Взрывы (Бочки) | + | explosion_immunity = 0.1 ;Взрывы (Бочки, РПГ) |
− | fire_wound_immunity = 0.5 | + | fire_wound_immunity = 0.5 ;Пулестойкость |
[actor_immunities_gd_stalker] | [actor_immunities_gd_stalker] | ||
− | burn_immunity = 0. | + | burn_immunity = 0.00 |
− | strike_immunity = 0. | + | strike_immunity = 0.00 |
− | shock_immunity = 0. | + | shock_immunity = 0.00 |
− | wound_immunity = 0. | + | wound_immunity = 0.00 |
− | radiation_immunity = 0. | + | radiation_immunity = 0.00 |
− | telepatic_immunity = 0. | + | telepatic_immunity = 0.00 |
− | chemical_burn_immunity = 0. | + | chemical_burn_immunity = 0.00 |
− | explosion_immunity = 0. | + | explosion_immunity = 0.00 |
− | fire_wound_immunity = 0. | + | fire_wound_immunity = 0.00 |
[actor_immunities_gd_veteran] | [actor_immunities_gd_veteran] | ||
− | burn_immunity = 0.8 | + | burn_immunity = 0.8 |
strike_immunity = 0.8 | strike_immunity = 0.8 | ||
shock_immunity = 0.8 | shock_immunity = 0.8 | ||
Строка 235: | Строка 285: | ||
[actor_immunities_gd_master] | [actor_immunities_gd_master] | ||
− | burn_immunity = 1.0 | + | burn_immunity = 1.0 |
strike_immunity = 1.0 | strike_immunity = 1.0 | ||
shock_immunity = 1.0 | shock_immunity = 1.0 | ||
Строка 246: | Строка 296: | ||
[actor_condition] | [actor_condition] | ||
− | satiety_v = 0.000015 ;Скорость | + | satiety_v = 0.000015 ;Скорость увеличения голода (если сделать больше, то и есть он будет хотеть быстрее) |
radiation_v = 0.0001 ;Скорость уменьшения радиации | radiation_v = 0.0001 ;Скорость уменьшения радиации | ||
− | satiety_power_v = 0.000055 ; | + | satiety_power_v = 0.000055 ;Увеличение выносливости при уменьшении сытости |
− | satiety_health_v = 0.0001 ; | + | satiety_health_v = 0.0001 ;Увеличение здоровья при уменьшении сытости |
− | satiety_critical = 0.0 ; | + | satiety_critical = 0.0 ;Критическое значения сытости (в процентах от 0..1). При каком значении сытости начинает уменьшаться здоровье |
radiation_health_v = 0.004 ;Уменьшение здоровья при воздействии радиации | radiation_health_v = 0.004 ;Уменьшение здоровья при воздействии радиации | ||
− | morale_v = 0.0001 ;Скорость восстановления морали( | + | morale_v = 0.0001 ;Скорость восстановления морали (что бы это не значило) |
− | psy_health_v = 0.001 ; | + | psy_health_v = 0.001 ;Скорость восстановления пси-здоровья |
− | alcohol_v = -0.0003 | + | alcohol_v = -0.0003 ;Скорость уменьшения опьянения |
− | health_hit_part = 1.0 ; | + | health_hit_part = 1.0 ;Процент хита, уходящий на отнимание здоровья |
− | power_hit_part = 0.1 ; | + | power_hit_part = 0.1 ;Процент хита, уходящий на отнимание силы |
− | max_power_leak_speed = 0.0 ; | + | max_power_leak_speed = 0.0 ;Накопление усталости (макс граница, до которой восстанавливается сила) в секунду игрового времени |
− | max_walk_weight = 60 | + | max_walk_weight = 60 ;Максимальное кол-во таскаемого веса. Если значение хоть на 0.1 выше, то персонаж преестанет идти |
bleeding_v = 0.0005 ;Потеря крови при кровотечении | bleeding_v = 0.0005 ;Потеря крови при кровотечении | ||
wound_incarnation_v = 0.003 ;Скорость с которой пропадает кровотечение | wound_incarnation_v = 0.003 ;Скорость с которой пропадает кровотечение | ||
− | min_wound_size = 0.0256 ; | + | min_wound_size = 0.0256 ;Минимальный размер раны, после которого она считается зажившей. |
;--when actor in sleep | ;--when actor in sleep | ||
− | ; | + | ;Снова сон |
satiety_v_sleep = 0.00001 | satiety_v_sleep = 0.00001 | ||
radiation_v_sleep = 0.0003 | radiation_v_sleep = 0.0003 | ||
Строка 284: | Строка 334: | ||
;actor_condition only | ;actor_condition only | ||
− | jump_power = 0.01 ;0.005 ; | + | jump_power = 0.01 ;0.005 ;уменьшение выносливости без учета максимального веса (предела) |
− | jump_weight_power = 0.05 ;0.045 | + | jump_weight_power = 0.05 ;0.045 ;уменьшение выносливости с прыжком с учетом максимального веса |
− | overweight_jump_k = 5;10 ;10 | + | overweight_jump_k = 5;10 ;10 ;коэффициент влияния перегрузки при прыжке с весом (умножается на jump_weight_power). На сколько умножается уменьшение веса, если достигнут предел в макс. весе. В нашем случае (jump_weight_power*overweight_jump_k) 0.25 |
− | stand_power = -0.005 ;Скорость восстановления выносливости | + | stand_power = -0.005 ;Скорость восстановления выносливости |
− | walk_power = 0.00001 ; | + | walk_power = 0.00001 ;уменьшение выносливости за секунду ходьбы без учета макс. веса |
− | walk_weight_power = 0.00005; ; | + | walk_weight_power = 0.00005; ;уменьшение выносливости за секунду во ходьбы с учетом веса макс. веса |
− | overweight_walk_k = 5;9 ;10 ;коэффициент | + | overweight_walk_k = 5;9 ;10 ;коэффициент влияния перегрузки ноши (умножается на walk_weight_power) |
− | accel_k = 3;5 ;коэффициент на | + | accel_k = 3;5 ;коэффициент на быстрый шаг (умножается walk_power, walk_weight_power) |
− | sprint_k = 75;150;185;180;200; ;коэффициент на | + | sprint_k = 75;150;185;180;200; ;коэффициент на бег (умножается walk_power, walk_weight_power) |
; хромота | ; хромота | ||
− | limping_health_begin = 0.1 ;порог здоровья меньше которого | + | limping_health_begin = 0.1 ;порог здоровья, меньше которого ГГ начинает хромать |
− | limping_health_end = 0.2 ;порог здоровья больше которого | + | limping_health_end = 0.2 ;порог здоровья, больше которого ГГ перестает хромать |
− | limping_power_begin = 0.1 ;порог силы меньше которого | + | limping_power_begin = 0.1 ;порог силы, меньше которого ГГ начинает хромать |
− | limping_power_end = 0.2 ;порог силы больше которого | + | limping_power_end = 0.2 ;порог силы, больше которого ГГ перестает хромать |
− | use_limping_state = on ;Не обязателен для редактирования | + | use_limping_state = on ;Не обязателен для редактирования |
− | cant_walk_power_begin = 0.01 ;порог силы меньше которого | + | cant_walk_power_begin = 0.01 ;порог силы, меньше которого ГГ не может двигаться |
− | cant_walk_power_end = 0.10 ;порог силы больше которого | + | cant_walk_power_end = 0.10 ;порог силы, больше которого ГГ сможет двигаться |
− | cant_sprint_power_begin = 0.20 ;порог силы меньше которого | + | cant_sprint_power_begin = 0.20 ;порог силы, меньше которого ГГ не может бежать в спринте |
− | cant_sprint_power_end = 0.30 ;порог силы больше которого | + | cant_sprint_power_end = 0.30 ;порог силы, больше которого ГГ сможет бежать в спринте |
− | can_sleep_callback = dream.can_sleep_callback ; | + | can_sleep_callback = dream.can_sleep_callback ;Сон |
− | sleep_video_name_callback = dream.sleep_video_name_callback | + | sleep_video_name_callback = dream.sleep_video_name_callback |
− | [actor_damage] ; | + | [actor_damage] ;Отвечает за то, сколько отнимаеться у ГГ жизней если ему попали в определённую часть тела. Выше мы видели ссылку на него. |
;bone_name = <hit_scale>,<fwd_damage_anim_index>,<wound_scale> | ;bone_name = <hit_scale>,<fwd_damage_anim_index>,<wound_scale> | ||
;<hit_scale> - коэфф. изменения хита (уменьшения здоровья) | ;<hit_scale> - коэфф. изменения хита (уменьшения здоровья) | ||
Строка 375: | Строка 425: | ||
− | [actor_hit_snds] ;Звуки | + | [actor_hit_snds] ;Звуки разных воздействий на ГГ |
− | burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Горение |
− | shock =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | shock =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Электрошок |
− | strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Падение с большой высоты |
− | wound =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | wound =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Укус |
− | radiation =monsters\biting\def_0; actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ; | + | radiation =monsters\biting\def_0; actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ;Радиация |
− | telepatic =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | telepatic =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Пси-атака |
− | fire_wound =actor\bullet_hit_1,actor\bullet_hit_2,actor\bullet_hit_3,actor\bullet_hit_4 ; | + | fire_wound =actor\bullet_hit_1,actor\bullet_hit_2,actor\bullet_hit_3,actor\bullet_hit_4 ;Огнестрел |
− | ; actor\pain_1,actor\pain_3,actor\pain_4,actor\pain_5,actor\pain_6,actor\pain_7,actor\pain_8 ;Закоментированые звуки.Если расскоментировать то они | + | ; actor\pain_1,actor\pain_3,actor\pain_4,actor\pain_5,actor\pain_6,actor\pain_7,actor\pain_8 ;Закоментированые звуки. Если расскоментировать, то они будут присутствовать в игре |
− | chemical_burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | chemical_burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Химическое воздействие |
− | explosion =affects\tinnitus3a ; | + | explosion =affects\tinnitus3a ;Взрыв |
− | wound_2 =actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ; | + | wound_2 =actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ;Ранение, повлёкшее кровотечение |
− | physic_strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ; | + | physic_strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Удар предметами (например, которые пускает полтергейст на ГГ) |
</lua> | </lua> | ||
− | Разобрались?Отлично. | + | Разобрались? Отлично. Теперь про инклуды. Допустим, вы создали новый конфиг (например, с оружием или предметами). Его обязательно нужно отметить в игре, иначе игра его попросту не увидит. Открываем, например, '''''config/system.ltx''''' и добавляем инклуд. В начале файла пишем ''#include "название_файла.ltx"''; если файл в папке отличной от '''''system.ltx''''', пишем ''#include "название_папки/название_файла.ltx"''. |
+ | |||
+ | === Файл game_relations.ltx === | ||
+ | Идём дальше, посмотрим, например, файл '''''config/creatures/game_relations.ltx''''' | ||
<lua> | <lua> | ||
[game_relations] | [game_relations] | ||
− | + | rating = novice, 300, experienced, 600, veteran, 900, master ;При каком значении опыта повышается ранг. То есть, изначально идёт novice (новичок), при достижении 300 ГГ (или любой NPC, хотя у них опыт прописывается изначально) становится expirienced (опытный). Дальнейшие несколько параметров используют тот же принцип. | |
− | rating = novice, 300, experienced, 600, veteran, 900, master | + | monster_rating = weak, 400, normal, 800, strong ;Аналогично предыдущему, но относится к монстрам, слабый-обычный-сильный. Используется в статистике. |
− | monster_rating = weak, 400, normal, 800, strong | + | reputation = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent ;Репутация ГГ или NPC |
− | reputation = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent | + | |
;шкалы для вывода названий вместо чисел | ;шкалы для вывода названий вместо чисел | ||
;рейтингов, репутаций и благосклонности в интерфейсе | ;рейтингов, репутаций и благосклонности в интерфейсе | ||
− | rating_names = novice, 300, experienced, 600, veteran, 900, master | + | rating_names = novice, 300, experienced, 600, veteran, 900, master ;В общем, аналогично параметру rating |
− | reputation_names = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent | + | reputation_names = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent ;Это тоже |
− | goodwill_names = enemy, -400, indifferent, 500, friendly | + | goodwill_names = enemy, -400, indifferent, 500, friendly ;А это уже отношение персонажей друг к другу, враг-нейтрал-друг. |
− | ;пороговые значения для отношения персонажей. | + | ;пороговые значения для отношения персонажей. Репутация к персонажу и ее порог, при которой НПС становиться другом или врагом. Допустим, мы создали диалог, в котором даем 500 репутации. Значит, НПС достиг порога в репутации к вам и стал другом. Если чуть меньше(450, например), то никакого эффекта не будет и НПС так и останеться нейтрален). |
attitude_neutal_threshold = -400 ;когда attitude меньше значения, то выставляется ALife::eRelationEnemy | attitude_neutal_threshold = -400 ;когда attitude меньше значения, то выставляется ALife::eRelationEnemy | ||
attitude_friend_threshold = 500 ;когда attitude меньше значения, то выставляется ALife::eRelationNeutral, иначе ALife::eRelationFriend | attitude_friend_threshold = 500 ;когда attitude меньше значения, то выставляется ALife::eRelationNeutral, иначе ALife::eRelationFriend | ||
Строка 412: | Строка 464: | ||
goodwill_friend = 1000 | goodwill_friend = 1000 | ||
− | ;названия группировок | + | ;названия группировок; рекомендуется к прочтению сразу после этой статьи (создание новой группировки):[http://stalkerin.gameru.net/wiki/index.php/Создание_новой_группировки] |
communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10, freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16 | communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10, freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16 | ||
− | + | ;Помим, что зомбированные (но не просто зомби) технически являются отдельной группировкой. | |
; отношение персонажа к актеру (или другому NPC) вычисляется по формуле | ; отношение персонажа к актеру (или другому NPC) вычисляется по формуле | ||
Строка 423: | Строка 475: | ||
; rank_goodwill //отношение ранга персонажа к рангу актера из [rank_relations] | ; rank_goodwill //отношение ранга персонажа к рангу актера из [rank_relations] | ||
− | [communities_relations] ;Отношения группировок к Actor`у и другим группировкам.Если отношения уходят в минус(-) то они враги для той или иной группировки | + | [communities_relations] ;Отношения группировок к Actor`у и другим группировкам. Если отношения уходят в минус(-), то они враги для той или иной группировки |
; |actor |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg |freedom|bandit |zombied|strange|trader |arena_enemy| | ; |actor |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg |freedom|bandit |zombied|strange|trader |arena_enemy| | ||
;================================================================================================================================= | ;================================================================================================================================= | ||
Строка 443: | Строка 495: | ||
arena_enemy = -5000, -5000, -5000, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, 0, 0 | arena_enemy = -5000, -5000, -5000, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, 0, 0 | ||
− | [rank_relations] ;Не | + | [rank_relations] ;Судя по всему, отношение рангов друг к другу. Не файт, что используется в игре. |
; novice, experienced, veteran, master | ; novice, experienced, veteran, master | ||
;================================================================ | ;================================================================ | ||
Строка 453: | Строка 505: | ||
− | [reputation_relations] ; | + | [reputation_relations] ;Судя по всему, отношение репутаций друг к другу. |
; terrible, very_bad, bad, neutral, good, very_good, excellent | ; terrible, very_bad, bad, neutral, good, very_good, excellent | ||
;================================================================ | ;================================================================ | ||
Строка 507: | Строка 559: | ||
community_goodwill_limits = -3000, 1000 | community_goodwill_limits = -3000, 1000 | ||
;------------------------------------------------------- | ;------------------------------------------------------- | ||
− | free_friend_attack_goodwill = -2500 ;Свободная аттака друга( | + | free_friend_attack_goodwill = -2500 ;Свободная аттака друга (понижается отношение) |
− | free_neutral_attack_goodwill = -1000 ;Свободная аттака по нейтралу( | + | free_neutral_attack_goodwill = -1000 ;Свободная аттака по нейтралу (понижается отношение) |
− | free_enemy_attack_goodwill = 0 ;Свободная аттака врага( | + | free_enemy_attack_goodwill = 0 ;Свободная аттака врага (понижается отношение) |
− | danger_friend_attack_goodwill = -200 ;Аттака друга при опасности( | + | danger_friend_attack_goodwill = -200 ;Аттака друга при опасности (понижается отношение) |
− | danger_neutral_attack_goodwill = -200 ;Аттака нейтрала при опасности( | + | danger_neutral_attack_goodwill = -200 ;Аттака нейтрала при опасности (понижается отношение) |
− | danger_enemy_attack_goodwill = 0 ;Аттака врага при опасности( | + | danger_enemy_attack_goodwill = 0 ;Аттака врага при опасности (понижается отношение) |
− | free_friend_attack_reputation = -20 ;Свободная аттака друга( | + | free_friend_attack_reputation = -20 ;Свободная аттака друга (понижается репутация) |
− | free_neutral_attack_reputation = -10 ;Свободная аттака нейтрала( | + | free_neutral_attack_reputation = -10 ;Свободная аттака нейтрала (понижается репутация) |
− | free_enemy_attack_reputation = 0 ;Свободная аттака врага( | + | free_enemy_attack_reputation = 0 ;Свободная аттака врага (понижается репутация) |
− | danger_friend_attack_reputation = 0 ;Аттака друга при опасности( | + | danger_friend_attack_reputation = 0 ;Аттака друга при опасности (понижается репутация) |
− | danger_neutral_attack_reputation = 0 ;Аттака нейтрала при опасности( | + | danger_neutral_attack_reputation = 0 ;Аттака нейтрала при опасности (понижается репутация) |
− | danger_enemy_attack_reputation = 0 ;Аттака врага при опасности( | + | danger_enemy_attack_reputation = 0 ;Аттака врага при опасности (понижается репутация) |
;-------------------------------------------------- | ;-------------------------------------------------- | ||
− | ;(с) мин. время через которое снова будет зарегистрировано | + | ;(с) мин. время, через которое снова будет зарегистрировано |
− | ;сообщение об атаке на персонажа, и соответственно | + | ;сообщение об атаке на персонажа, и, соответственно, вычтется attack_goodwill и attack_reputation |
;(работает аналогично и при помощи другим персонажам в бою) | ;(работает аналогично и при помощи другим персонажам в бою) | ||
min_attack_delta_time = 3 | min_attack_delta_time = 3 | ||
− | friend_kill_goodwill = -1000 ;Свободное убийство друга( | + | friend_kill_goodwill = -1000 ;Свободное убийство друга (понижается отношение) |
− | neutral_kill_goodwill = -1000 ;Свободное убийство нейтрала( | + | neutral_kill_goodwill = -1000 ;Свободное убийство нейтрала (понижается отношение) |
− | enemy_kill_goodwill = 0 ;Свободное убийство врага( | + | enemy_kill_goodwill = 0 ;Свободное убийство врага (понижается отношение) |
− | community_member_kill_goodwill = -1000 ; | + | community_member_kill_goodwill = -1000 ;Неизвестно |
;убийство члена группировки отражается на отношении | ;убийство члена группировки отражается на отношении | ||
Строка 541: | Строка 593: | ||
; | ; | ||
− | ; помощь | + | ; помощь ГГ персонажу во время боя |
; | ; | ||
fight_remember_time = 10 ;(c) время которое про драку будет помнить реестр | fight_remember_time = 10 ;(c) время которое про драку будет помнить реестр | ||
Строка 581: | Строка 633: | ||
[monster_communities] | [monster_communities] | ||
− | ;номера | + | ;номера, которые присваиваются соответствующим видам |
;255 - команда не задается | ;255 - команда не задается | ||
communities = actor, 255, human, 255, arena_monstr, 39, boar, 40, bloodsucker, 41, flesh, 42, dog, 43, pseudodog, 44, cat, 45, chimera, 46, giant, 47, zombie, 48, burer, 49, controller, 50, poltergeist, 51, snork, 52, fracture, 53, bird, 54, rat, 55, tushkano, 56 | communities = actor, 255, human, 255, arena_monstr, 39, boar, 40, bloodsucker, 41, flesh, 42, dog, 43, pseudodog, 44, cat, 45, chimera, 46, giant, 47, zombie, 48, burer, 49, controller, 50, poltergeist, 51, snork, 52, fracture, 53, bird, 54, rat, 55, tushkano, 56 | ||
Строка 610: | Строка 662: | ||
tushkano = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 | tushkano = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 | ||
</lua> | </lua> | ||
− | Рассмотрим какого нибудь монстра.Например плоть: | + | === Монстры === |
+ | Рассмотрим какого нибудь монстра. Например, плоть: | ||
<lua> | <lua> | ||
;=========================================================================== | ;=========================================================================== | ||
; ПЛОТЬ | ; ПЛОТЬ | ||
;=========================================================================== | ;=========================================================================== | ||
− | [m_flesh_e]:monster_base | + | [m_flesh_e]:monster_base |
GroupControlSection = spawn_group | GroupControlSection = spawn_group | ||
SpaceRestrictionSection = space_restrictor,zone_mosquito_bald,zone_gravi_zone | SpaceRestrictionSection = space_restrictor,zone_mosquito_bald,zone_gravi_zone | ||
Строка 623: | Строка 676: | ||
Scheduled = on ; option for ALife Simulator | Scheduled = on ; option for ALife Simulator | ||
Human = off ; option for ALife Simulator | Human = off ; option for ALife Simulator | ||
− | Health = 250 ; | + | Health = 250 ; количество жизней в оффлайне (то есть на расстоянии, указанном в параметре switch_distance из файла alife.ltx) |
− | MinSpeed = 1.0 ; мин. скорость перемещения | + | MinSpeed = 1.0 ; мин. скорость перемещения в оффлайне |
− | MaxSpeed = 1.5 ; макс. скорость перемещения | + | MaxSpeed = 1.5 ; макс. скорость перемещения в оффлайне |
− | going_speed = 2.0 | + | going_speed = 2.0 |
current_level_going_speed = 1;2 ; option for ALife Simulator | current_level_going_speed = 1;2 ; option for ALife Simulator | ||
− | search_speed = .5 ; скорость поиска чего либо | + | search_speed = .5 ; скорость поиска чего-либо |
− | visual = monsters\flesh\flesh ; | + | visual = monsters\flesh\flesh ;Модель живой плоти |
− | corpse_visual = monsters\flesh\flesh_dead ; | + | corpse_visual = monsters\flesh\flesh_dead ;Модель мертвой плоти |
− | icon = ui_npc_monster_flesh ;Иконка | + | icon = ui_npc_monster_flesh ;Иконка при обыске |
− | MaxHealthValue = 1.0 ; | + | MaxHealthValue = 1.0 ; Максимальное количество жизней. |
DynamicObjectsCount = 32 | DynamicObjectsCount = 32 | ||
− | smart_terrain_choose_interval = 00:15:00 | + | smart_terrain_choose_interval = 00:15:00 |
− | Spawn_Inventory_Item_Section = mutant_flesh_eye ;Что | + | Spawn_Inventory_Item_Section = mutant_flesh_eye ;Что можно найти при обыске. Берётся из файла monster_items.ltx |
− | Spawn_Inventory_Item_Probability = 0.2 ;Шанс выпадения | + | Spawn_Inventory_Item_Probability = 0.2 ;Шанс выпадения части тела, если поставить 1.0, то будет выпадать всегда. При значении 2.0 попадётся две части. |
ef_creature_type = 7 ; option for evaluation functions | ef_creature_type = 7 ; option for evaluation functions | ||
Строка 668: | Строка 721: | ||
ph_mass = 200;100 ; also it's the food | ph_mass = 200;100 ; also it's the food | ||
− | destroyed_vis_name = physics\dead_body\skelet_crash_monster | + | destroyed_vis_name = physics\dead_body\skelet_crash_monster ;то, что останется при попадении монстра, например, в "Карусель" |
;---------------------------------------------------------------------------- | ;---------------------------------------------------------------------------- | ||
− | ph_skeleton_airr_lin_factor = 2.0 ;550.0 (изменно из-за того, что убрано домножение коэффициент 0.002 из кода) | + | ph_skeleton_airr_lin_factor = 2.0 ;550.0 (изменно из-за того, что убрано домножение коэффициент 0.002 из кода) -Комментарии от GSC, проходим мимо |
ph_skeleton_airr_ang_factor = 0.0 ;0.0 (изменно из-за того, что убрано домножение на коэффициент 0.3 из кода (0.0*0.3=0.0)) | ph_skeleton_airr_ang_factor = 0.0 ;0.0 (изменно из-за того, что убрано домножение на коэффициент 0.3 из кода (0.0*0.3=0.0)) | ||
ph_skeleton_hinger_factor1 = 1.0 ;1.0 (изменно из-за того, что убрано домножение на коэффициент 5.0 из кода) | ph_skeleton_hinger_factor1 = 1.0 ;1.0 (изменно из-за того, что убрано домножение на коэффициент 5.0 из кода) | ||
Строка 682: | Строка 735: | ||
;---------------------------------------------------------------------------- | ;---------------------------------------------------------------------------- | ||
− | ; Передвежение и | + | ; Передвежение и ускорение при движении |
;---------------------------------------------------------------------------- | ;---------------------------------------------------------------------------- | ||
Строка 700: | Строка 753: | ||
;-------------------------------------------------------------------------- | ;-------------------------------------------------------------------------- | ||
− | ; Параметры | + | ; Параметры атаки |
;-------------------------------------------------------------------------- | ;-------------------------------------------------------------------------- | ||
Строка 717: | Строка 770: | ||
;------------------------------------------------------------------------- | ;------------------------------------------------------------------------- | ||
− | satiety_v = 0.0001 ;0.01 ;Скорость | + | satiety_v = 0.0001 ;0.01 ;Скорость увеличения голода |
− | radiation_v = 0.00001 ;0.004 ;Скорость вывода радиации из организма | + | radiation_v = 0.00001 ;0.004 ;Скорость вывода радиации из организма |
− | satiety_power_v = 0.005 ;0.01 ;Чем меньше голод тем больше у плоти будет макс. энергии | + | satiety_power_v = 0.005 ;0.01 ;Чем меньше голод, тем больше у плоти будет макс. энергии |
− | satiety_health_v = 0.0005 ;0.001 ;0.03 ;Чем меньше голод тем больше у плоти будет макс. жизни | + | satiety_health_v = 0.0005 ;0.001 ;0.03 ;Чем меньше голод, тем больше у плоти будет макс. жизни |
− | satiety_critical = -1.0 ;0.25 ;Крит. значение голода | + | satiety_critical = -1.0 ;0.25 ;Крит. значение голода |
− | radiation_health_v = 0.01 ;0.006 ; | + | radiation_health_v = 0.01 ;0.006 ;Уменьшение здоровья при воздействии радиации |
− | morale_v = 0.01 | + | morale_v = 0.01 |
health_hit_part = 1.0 ;0.8 | health_hit_part = 1.0 ;0.8 | ||
power_hit_part = 1.0 ;0.9 | power_hit_part = 1.0 ;0.9 | ||
psy_health_v = 0.1 ;скорость восстановления пси-здоровья | psy_health_v = 0.1 ;скорость восстановления пси-здоровья | ||
− | immunities_sect = flesh_immunities ; | + | immunities_sect = flesh_immunities ;Ссылка на секцию с параметрами иммунитета |
;открытые раны | ;открытые раны | ||
bleeding_v = 0.04 ;потеря жизней при ране в секунду | bleeding_v = 0.04 ;потеря жизней при ране в секунду | ||
wound_incarnation_v = 0.05 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) | wound_incarnation_v = 0.05 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) | ||
− | min_wound_size = 0.01 ;Мин. параметр при котором начнеться кровотечение(если меньше то | + | min_wound_size = 0.01 ;Мин. параметр, при котором начнеться кровотечение (если меньше, то кончится) |
− | ;Сон | + | ;Сон |
− | sleep_health = 1.0 ;1.5 | + | sleep_health = 1.0 ;1.5 ;Восстановление различных параметров при сне |
sleep_power = 1.0 ;1.5 | sleep_power = 1.0 ;1.5 | ||
sleep_satiety = 1.0 ;0.8 | sleep_satiety = 1.0 ;0.8 | ||
Строка 742: | Строка 795: | ||
sleep_psy_health = 1.0 | sleep_psy_health = 1.0 | ||
− | eat_freq = 5.0 | + | eat_freq = 5.0 |
− | eat_slice = 0.01 | + | eat_slice = 0.01 |
− | eat_slice_weight = 10.0 | + | eat_slice_weight = 10.0 |
− | satiety_threshold = 0.5 ; | + | satiety_threshold = 0.5 ; если значение ниже 0.5, монстр становится голодным |
;--------------------------------------------------------- | ;--------------------------------------------------------- | ||
Строка 755: | Строка 808: | ||
max_hear_dist = 40 ;Дистанция на которой слышны звуки | max_hear_dist = 40 ;Дистанция на которой слышны звуки | ||
− | sound_idle = monsters\flesh\flesh_idle_ ;Звук ходьбы | + | sound_idle = monsters\flesh\flesh_idle_ ;Звук ходьбы. Открыв эту папку, видим файлы с названиями типа flesh_idle_0, flesh_idle_1 и тд. Как видим в параметре на конце названия отсутствует цифра, значит будут использоваться все файлы в этой папке, начинающиеся на flesh_idle_ |
sound_eat = monsters\flesh\flesh_eat_ ;Звук поедания | sound_eat = monsters\flesh\flesh_eat_ ;Звук поедания | ||
sound_aggressive = monsters\flesh\flesh_aggressive_ ;Звук агрессии | sound_aggressive = monsters\flesh\flesh_aggressive_ ;Звук агрессии | ||
− | sound_attack_hit = monsters\flesh\flesh_attack_ ;Звук | + | sound_attack_hit = monsters\flesh\flesh_attack_ ;Звук атаки |
sound_take_damage = monsters\flesh\flesh_pain_ ;Звук получения урона | sound_take_damage = monsters\flesh\flesh_pain_ ;Звук получения урона | ||
sound_die = monsters\flesh\flesh_death_ ;Звук смерти | sound_die = monsters\flesh\flesh_death_ ;Звук смерти | ||
− | sound_threaten = monsters\flesh\flesh_attack_ ;Звук | + | sound_threaten = monsters\flesh\flesh_attack_ ;Звук угрозы в сторону противника |
− | sound_landing = monsters\biting\def_ ; | + | sound_landing = monsters\biting\def_ ;Звук падения |
− | sound_steal = monsters\biting\def_ ; | + | sound_steal = monsters\biting\def_ ;Монстр крадётся |
sound_panic = monsters\flesh\flesh_panic_ ;Звук паники | sound_panic = monsters\flesh\flesh_panic_ ;Звук паники | ||
− | sound_growling = monsters\biting\def_ ; | + | sound_growling = monsters\biting\def_ ;Возможно, звук подъема на ноги. Этот и предыдущие звуки с таким значением параметра пуст. |
sound_die_in_anomaly = monsters\flesh\flesh_anomaly_death_ ;Звук при умирании в аномалии | sound_die_in_anomaly = monsters\flesh\flesh_anomaly_death_ ;Звук при умирании в аномалии | ||
− | ;sound_distant = monsters\dog\flesh_distant_ ; только для расстояний свыше | + | ;sound_distant = monsters\dog\flesh_distant_ ; только для расстояний свыше switch_distance |
killer_clsids = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE | killer_clsids = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE | ||
Строка 780: | Строка 833: | ||
;--------------------------------------------------------- | ;--------------------------------------------------------- | ||
− | ; | + | ; Зрение |
;--------------------------------------------------------- | ;--------------------------------------------------------- | ||
Строка 804: | Строка 857: | ||
;--------------------------------------------------------- | ;--------------------------------------------------------- | ||
− | DayTime_Begin = 6 ; | + | DayTime_Begin = 6 ; Начало дня для монстра |
− | DayTime_End = 21 ; | + | DayTime_End = 21 ; Конец дня для монстра |
− | Min_Satiety = 0.4 ;0.6 ; | + | Min_Satiety = 0.4 ;0.6 ; Минимальное значение голода |
− | Max_Satiety = 1.0 ; | + | Max_Satiety = 1.0 ; Максимальное значение голода |
;------------------------------------------------------------------------- | ;------------------------------------------------------------------------- | ||
− | ; Мораль( | + | ; Мораль (возможно, что-то типа пси-здоровья, или оно и есть) |
;------------------------------------------------------------------------- | ;------------------------------------------------------------------------- | ||
Строка 822: | Строка 875: | ||
;------------------------------------------------------------------------- | ;------------------------------------------------------------------------- | ||
− | ; | + | ; Прочее |
;------------------------------------------------------------------------- | ;------------------------------------------------------------------------- | ||
− | critical_wound_threshold = 0.4 | + | critical_wound_threshold = 0.4 ;Критический порог ранения |
critical_wound_decrease_quant = 0. | critical_wound_decrease_quant = 0. | ||
Строка 838: | Строка 891: | ||
− | distance_to_corpse = 0.9 | + | distance_to_corpse = 0.9 |
selector_approach = 20.0, 1.0, 1000.0, 0.0, 0.0, 1000.0, 10000.0, | selector_approach = 20.0, 1.0, 1000.0, 0.0, 0.0, 1000.0, 10000.0, | ||
Строка 855: | Строка 908: | ||
;================================================================================= | ;================================================================================= | ||
− | ; Урон | + | ; Урон для каждой части тела |
;================================================================================= | ;================================================================================= | ||
[m_Flesh_damage] | [m_Flesh_damage] | ||
Строка 871: | Строка 924: | ||
;================================================================================= | ;================================================================================= | ||
− | ; | + | ; Где может ходить, изменять бессмысленно |
;================================================================================= | ;================================================================================= | ||
[flesh_terrain] | [flesh_terrain] | ||
Строка 878: | Строка 931: | ||
;=========================================================================== | ;=========================================================================== | ||
− | ; | + | ; Параметры перемещения |
;=========================================================================== | ;=========================================================================== | ||
[m_flesh_step_params] | [m_flesh_step_params] | ||
Строка 892: | Строка 945: | ||
;=========================================================================== | ;=========================================================================== | ||
− | ; Иммунитет( | + | ; Иммунитет (Аналог иммунитета ГГ) |
;=========================================================================== | ;=========================================================================== | ||
[flesh_immunities] | [flesh_immunities] | ||
− | burn_immunity = 1.0 | + | burn_immunity = 1.0 |
strike_immunity = 1 | strike_immunity = 1 | ||
shock_immunity = 1.0 | shock_immunity = 1.0 | ||
Строка 907: | Строка 960: | ||
;=========================================================================== | ;=========================================================================== | ||
− | ; | + | ; Специальные эффекты |
;=========================================================================== | ;=========================================================================== | ||
[m_flesh_attack_effector] | [m_flesh_attack_effector] | ||
Строка 934: | Строка 987: | ||
;=========================================================================== | ;=========================================================================== | ||
− | ; | + | ; Параметры урона врагам |
;=========================================================================== | ;=========================================================================== | ||
Строка 940: | Строка 993: | ||
;--------------------------------------------------------------------------------------------------------------------------------------------- | ;--------------------------------------------------------------------------------------------------------------------------------------------- | ||
; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist | ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist | ||
+ | ; время, урон на сколько направленный | ||
+ | ; тратящееся отлетит пр-к импульс | ||
+ | ; на удар при смерти | ||
;--------------------------------------------------------------------------------------------------------------------------------------------- | ;--------------------------------------------------------------------------------------------------------------------------------------------- | ||
− | ; | + | ;Удар левой ногой |
stand_attack_0 = 0.25, 0.26, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | stand_attack_0 = 0.25, 0.26, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | ||
− | ; | + | ;Удар обоими ногами |
stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | ||
stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 | ||
Строка 952: | Строка 1008: | ||
;********************************************************************************* | ;********************************************************************************* | ||
− | ; Профиль | + | ; Профиль слабой плоти |
;********************************************************************************* | ;********************************************************************************* | ||
− | [flesh_weak]:m_flesh_e ; | + | [flesh_weak]:m_flesh_e ;Как видим, за основу берётся основной конфиг плоти |
$spawn = "monsters\fleshes\flesh_01_weak" | $spawn = "monsters\fleshes\flesh_01_weak" | ||
visual = monsters\flesh\flesh | visual = monsters\flesh\flesh | ||
Строка 964: | Строка 1020: | ||
immunities_sect = flesh_immunities_weak ;Иммунитет сильной флешки... | immunities_sect = flesh_immunities_weak ;Иммунитет сильной флешки... | ||
attack_params = flesh_attack_params_weak | attack_params = flesh_attack_params_weak | ||
− | spec_rank = weak ; | + | spec_rank = weak ;Ранг монстра, позже отображающийся в нашей статистике (если поставить у слабой плоти этот параметр равным strong, то за убийство таких плотей будут прибавляться сильные) |
− | community = flesh ; | + | community = flesh ;К какому типу монстра относится. Берётся из game_relations.ltx |
− | [flesh_immunities_weak] ;Иммунитет | + | [flesh_immunities_weak] ;Иммунитет слабой плоти |
burn_immunity = 1.0 | burn_immunity = 1.0 | ||
strike_immunity = 1 | strike_immunity = 1 | ||
Строка 978: | Строка 1034: | ||
fire_wound_immunity = 0.6 | fire_wound_immunity = 0.6 | ||
− | [flesh_attack_params_weak] | + | [flesh_attack_params_weak] ;Параметры атаки слабой плоти |
;--------------------------------------------------------------------------------------------------------------------------------------------- | ;--------------------------------------------------------------------------------------------------------------------------------------------- | ||
; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist | ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist | ||
Строка 990: | Строка 1046: | ||
;********************************************************************************* | ;********************************************************************************* | ||
− | ; Профиль обычной плоти | + | ; Профиль обычной плоти, всё как и раньше |
;********************************************************************************* | ;********************************************************************************* | ||
Строка 1030: | Строка 1086: | ||
;********************************************************************************* | ;********************************************************************************* | ||
− | ; Профиль сильной плоти | + | ; Профиль сильной плоти |
;********************************************************************************* | ;********************************************************************************* | ||
Строка 1068: | Строка 1124: | ||
− | [flesh_group] ; | + | [flesh_group] ;Возможно, просто параметры для SDK |
GroupControlSection = spawn_group | GroupControlSection = spawn_group | ||
;$spawn = "monsters\flesh-group" ; option for Level Editor | ;$spawn = "monsters\flesh-group" ; option for Level Editor | ||
Строка 1115: | Строка 1171: | ||
bip01_l_thigh | bip01_l_thigh | ||
</lua> | </lua> | ||
− | + | === Папка gameplay === | |
− | + | Теперь переходим к '''''config/gameplay.''''' | |
− | + | В файлах типа '''''character_desc_название_локации.xml''''' находится описание всех NPC, появляющихся в игре. | |
− | character_desc_название_локации.xml | + | Для примера разберем профиль Волка: |
− | разберем | + | Открываем файл '''''character_desc_escape.xml''''' |
− | + | ||
<xml> | <xml> | ||
− | <!---------------------------------------esc_wolf-----------------------------------------------------> -- | + | <!---------------------------------------esc_wolf-----------------------------------------------------> <!--Эта строчка является всего лишь комментарием, чтобы проще было ориентироваться. Обращаем внимание на то, как в xml-файлах обозначаются комментарии--> |
− | <specific_character id="esc_wolf" | + | <specific_character id="esc_wolf" team_default = "1" <!--Подробнее в статьях, посященных созданию персонажей--> |
− | <name>esc_wolf_name</name> --Имя | + | <name>esc_wolf_name</name> <!--Имя. Берётся из stable_bio_name.xml, может находиться в любом файле из папки text/rus; так же можно написать GENERATE_NAME_stalker и тогда в игре создастся уникальное имя (так же можно написать GENERATE_NAME_bandit, GENERATE_NAME_sergeant, GENERATE_NAME_private, GENERATE_NAME_captain, GENERATE_NAME_lieutenant)--> |
− | <icon>ui_npc_u_stalker_neytral_balon_1</icon> --Иконка | + | <icon>ui_npc_u_stalker_neytral_balon_1</icon> <!--Иконка из файла ui_npc_unique.xml--> |
− | <bio>esc_wolf_bio</bio> --Биография. | + | <bio>esc_wolf_bio</bio> <!--Биография. В игре не используется.--> |
− | <class>esc_wolf</class> | + | <class>esc_wolf</class> |
− | <community>stalker</community> -- группировка <terrain_sect>stalker_terrain</terrain_sect> | + | <community>stalker</community> <!-- группировка --> <terrain_sect>stalker_terrain</terrain_sect> |
− | <rank>434</rank> -- | + | <rank>434</rank> <!--Ранг. Смотрим выше, при каких значениях какой ранг даётся--> |
− | <reputation>5</reputation> --Репутация | + | <reputation>5</reputation> <!--Репутация--> |
− | <money min="600" <!-- | + | <money min="600" <!--Минимально возможное количество денег--> max="2000" <!--Максимально возможное количество денег--> infinitive="0"/> <!--Если поставить 1, то у Волка будут бесконечные деньги, но за раз не больше ограничений, указанных в этой строчке, хотя никто не запрещает торговать по нескольку раз--> |
− | <snd_config>characters_voice\human_01\stalker\</snd_config> -- | + | <snd_config>characters_voice\human_01\stalker\</snd_config> <!--Голос. Варианты в папке sounds\characters_voice\--> |
− | <crouch_type>-1</crouch_type> -- | + | <crouch_type>-1</crouch_type> <!--Тип анимации приседания--> |
− | <visual>actors\neytral\stalker_neytral_balon_1</visual> -- | + | <visual>actors\neytral\stalker_neytral_balon_1</visual> <!--Модель. Ищем в папке meshes\actors. Там можно найти много моделей, не использующихся в игре, но вполне рабочих--> |
− | <supplies> <!-- | + | <supplies> <!--Список предметов, которые будут у NPC. Разделяются обязательно с помощью \n.--> |
[spawn] \n | [spawn] \n | ||
wpn_pm \n | wpn_pm \n | ||
Строка 1148: | Строка 1203: | ||
hand_radio \n | hand_radio \n | ||
</supplies> | </supplies> | ||
− | + | <!--Дальше идут ссылки на диалоги, которые могут появиться у персонажа--> | |
− | #include "gameplay\character_criticals_4.xml" | + | #include "gameplay\character_criticals_4.xml" |
− | <start_dialog>escape_lager_volk_talk</start_dialog> -- | + | <start_dialog>escape_lager_volk_talk</start_dialog> <!--Самый первый диалог с Волком--> |
− | <start_dialog>dm_hello_dialog</start_dialog> | + | <start_dialog>dm_hello_dialog</start_dialog> <!--Приветствие--> |
− | <actor_dialog>dm_cool_info_dialog</actor_dialog> -- | + | <actor_dialog>dm_cool_info_dialog</actor_dialog> <!--Стандартный диалог об интересной инфе--> |
− | <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> | + | <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <!--Просит аптечку при ранении--> |
− | <actor_dialog>tm_wolf_dialog</actor_dialog> | + | <actor_dialog>tm_wolf_dialog</actor_dialog> <!--Работа--> |
− | <actor_dialog>tm_wolf_reward</actor_dialog> | + | <actor_dialog>tm_wolf_reward</actor_dialog> <!--Выдача награды за работу--> |
</specific_character> | </specific_character> | ||
</xml> | </xml> | ||
− | + | О создании своих диалогов очень подробно написано в статье - [http://stalkerin.gameru.net/wiki/index.php/SoC._Создание_диалогов Создание диалогов]. | |
− | + | ||
− | + | На этом пока все. | |
− | + | ||
− | + | Стартер статьи: '''Fireman3000''' | |
− | + | ||
− | + | ||
− | + | ||
− | На этом все. | + | |
---- | ---- | ||
− | Небольшие поправочки и замечания, ну уж совсем небольшие: Kiray | + | Небольшие поправочки и замечания, ну уж совсем небольшие: '''Kiray''' |
+ | |||
+ | Довёл до ума: '''Madevi''' | ||
+ | [[Категория:Неоформленные статьи]] |
Текущая версия на 21:46, 26 декабря 2016
Внимание: Перед прочтением данной статьи ознакомтесь со следующей статьей: Распаковка игры.
Сейчас в мире модостроения сталкера слишком большое количество новичков, задающих тупые вопросы типа: «А как увеличить рост ГГ?», «А как уменьшить время закидывания болта?», «А как?», «Что?», «Почему?».
Вот я и решил написать эту небольшую статейку, точнее это не статейка вовсе, а разбирание вместе с вами, мои юные друзья, конфигов.
Содержание
Файл system.ltx
Итак, с чего бы начать? Ну для начала, я думаю, надо начать с объяснения, что где лежит. Начнем с основного - config/system.ltx. В этом файле лежит основная информация об игре, инклуды к остальным конфигам (об этом позже), некоторые параметры инвентаря, прицела, крови, список тех, кого можно таскать и информация о некоторых файлах. Сейчас объясню подробнее про последнее. Например, у нас есть отдельные профили сталкеров. Но игра не будет их считывать из воздуха и, поэтому, прежде необходимо занести его в базу информации, совершив подобную операцию:
[profiles] ;список xml файлов, содержащих профили сталкеров и торговцев files = npc_profile ;список xml файлов, содержащих описания конкретных сталкеров и торговцев specific_characters_files = character_desc_general, character_desc_simulation,character_desc_escape, character_desc_garbage, character_desc_agroprom, character_desc_darkvalley, character_desc_deadcity, character_desc_bar, character_desc_yantar, character_desc_military, character_desc_radar, character_desc_pripyat, character_desc_aes, character_desc_kishka, character_desc_sarcofag, [<здесь мы ставим запятую] название_нашего_файла [<название файла не должно содержать пробелов, только знак подчеркивания. После последнего файла запятая не ставится]
Комментарии
Итак. Многие, наверно, заметили комментарии. То есть, пояснения, например, как это:
;список xml файлов, содержащих описания конкретных сталкеров и торговцевТак делают немногие люди, которые занимаются модостроением, ибо не хотят объяснять принцип действия своих конфигов и прочего. Но GSC часто оставляли подобные пояснения. В общем, функция эта далеко не бесполезная для людей, которые забывают что, где и как. Так же желательно писать комментарии для старых значений. Например, в одном из параметров было числовое значение 0.3, вы изменили на 0.2. Значит, желательно после 0.2 поставить знак начала комментария (То есть ";") и написать старое число. То есть, получится так: 0.2 ; 0.3. И самое главное: не забудьте символ ";"! Комментарии так же нельзя писать в несколько строк:
;Здесь комментарий А здесь еще один
В этом случае игра может вылететь. Старайтесь либо умещать все в одном предложении, либо ставьте ";" перед каждой новой строкой комментария.
Секции
Так же существует такое определение, как секции, то есть, [название_секции]. Этот параметр отвечает за контроль нескольких опций внутри себя. Просмотрев какой-нибудь ltx-файл, нетрудно заметить, что он состоит из таких секций.
Если написано так: [название_секции]:другая_секция, это значит, что секция с названием название_секции берёт за основу секцию с названием другая_секция. Самый простой пример - открываем файл unique_items.ltx (он находится в папке misc и содержит в себе модифицированные оружие и броню), видим самую первую секцию [outfit_novice_m1]:novice_outfit, то есть это Аномальная кожанка, которая берёт за основу обычную куртку (из файла outfits.ltx), следовательно, в этой секции мы видим только те параметры костюма, которые были изменены.
Файл alife.ltx
Идём дальше, к файлу gamedata/config/alife.ltx. Здесь нет ничего интересного, кроме:
time_factor = 10 ;скорость течения игрового времени ;360 - скорость для демонстрации смены дня и ночи, если хотите сделать течение времени реальным, то измените параметр на 1 switch_distance = 150 ;Расстояние от ГГ, на котором все существа переходят на упрощенную систему симуляции жизни start_time = 05:30:00 ;Время начала новой игры start_date = 01.05.2012 ;Дата начала новой игры
Папки
config/creatures - информация о ГГ, противниках и прочих существах. Например, их устойчивость к определенному виду урона. У ГГ много интересных настроек. Так же, здесь лежит информация об отношениях группировок к ГГ и между собой.
config/gameplay - информация о диалогах, профилях сталкеров (например, можно дать какому-нибудь бандиту вместо ПМ Грозу, но об этом позже), энциклопедии, заданиях (не их цели и награды, а текст, иконка и пр.).
config/misc - информация о предметах, спавне сталкеров, костюмах, артефактах, генераторе предметов в трупах, гулагах, квестовых предметах, аномалиях и торговцах.
config/models - подробные параметры для некоторых моделей игры, в том числе там находятся конфиги фонаря, транспорта и разрушаемых предметов.
config/scripts - логика персонажей (по каким местам им надо ходить, при каких обстоятельствах им надо бегать к той или иной точке и пр.) и дверей (открыта, закрыта, при каких обстоятельствах ей нужно быть открытой).
config/text/rus - текст. Если бы не эти файлы, мы бы видели в игре что-то типа «wpn_ak74_name» (хотя зачастую вместо этих идентификаторов можно писать русский текст). Стоит отметить одну интересную особенность - игра подгружает эти файлы все разом. То есть можно писать свой текст в любом из этих файлов, игра его в любом случае найдёт.
config/ui - информация об игровом интерфейсе (он же GUI).
config/weapons - конфиги оружия. Можно сделать их убойнее, поменять цену и многое другое. Там же можно добавить новые стволы.
config/weathers - конфиги погоды, подробнее в статье Настройка погоды и освещения
Папка creatures
Итак, по порядку. Первой папкой в списке у нас в списке была config/creatures:
actor.ltx - конфиг ГГ
damages.ltx - конфиг урона для нпс
game_relations.ltx - отношение группировок к ГГ и между собой
helicopter.ltx - конфиг вертолета
immunities.ltx - иммунитет. Возможно, устойчивость разных костюмов (не на ГГ) к воздействиям
monsters.ltx - файл, по сути обобщающий все конфиги монстров (игра сначала обращается к нему, а потом с помощью него находит остальные файлы)
m_army.ltx - конфиг военных
m_bandit.ltx - конфиг бандитов
m_bloodsucker.ltx - конфиг кровососа
m_boar.ltx - конфиг кабана
m_burer.ltx - конфиг бюрера
m_cat.ltx - конфиг кошки
m_chimera.ltx - конфиг химеры
m_controller.ltx - конфиг контролёра
m_crow.ltx - конфиг вороны
m_dog.ltx - конфиг собаки
m_dog_.ltx - неиспользуемый конфиг собаки
m_flesh.ltx - конфиг плоти
m_fraction.ltx - конфиг каких то солдат.
m_fracture.ltx - конфиг излома
m_giant.ltx - конфиг псевдогиганта
m_person.ltx - конфиг торговцев. Возможно, не используется
m_phantom.ltx - по идее, старый конфиг полтергейста, нет ничего интересного
m_poltergeist.ltx - конфиг полтергейста
m_pseudodog.ltx - конфиг псевдособаки
m_rat.ltx - конфиг крысы
m_snork.ltx - конфиг снорка
m_stalker.ltx - конфиг сталкеров
m_stalker_monolith.ltx - конфиг монолитовцев
m_stalker_zombied.ltx - конфиг зомбированных сталкеров (не путать с обычными зомби)
m_tushkano.ltx - конфиг тушканов
m_zombie.ltx - конфиг зомби
spawn_sections.ltx - подробнее - в темах, посвященные спавну сталкеров
stalkers.ltx - файл, обобщающий все конфиги людей
vssver.scc - вовсе ненужный файл
Файл actor.ltx
Ну что ж, глянем конфиг ГГ:
[actor_terrain] 255,255,000,255 ;по сути, эти цифры - цвет (жёлтый) в формате RGB + прозрачность. Вкратце - он ;указывает на то, где позволено ходить объекту (есть специальные файлы, в которых карта частями ;окрашена в разные сплошные цвета). В нашем случае абсолютно бесполезен (так как ГГ и так может ;гулять где хочет), но, видимо указывается обязательно, хотя не факт, что используется в игре. [actor]:common_ph_friction_params_on_npc_death GroupControlSection = spawn_group ;Нет необходимости изменять $spawn = "actor" ;Нет необходимости изменять $ed_icon = ed\ed_actor ;Нет необходимости изменять $player = on ;Нет необходимости изменять $prefetch = 16 cform = skeleton ;Нет необходимости изменять class = O_ACTOR ;Класс. Нет необходимости изменять money = 40; ;Нерабочий конфиг rank = 3; ;Нерабочий конфиг script_binding = bind_stalker.actor_init ;Нет необходимости изменять visual = actors\hero\stalker_novice.ogf ;Модель при виде от 3-го лица, возможно, изменять её надо не здесь. destroyed_vis_name = physics\Dead_Body\skelet_crash ;Нет необходимости изменять terrain = actor_terrain ;Нет необходимости изменять; как видим, это ссылка на самую верхнюю секцию файла max_item_mass = 50.0 ;Сколько герой может носить кг. за плечами. Если число перевалит за 50, то для ГГ это будет предел и он будет очень быстро уставать. jump_speed = 6. ;Высота прыжка изменя на 20 будешь высоко прыгать crouch_coef = 0.45 ;Скорость при передвежении вприсяди climb_coef = 0.7 ;Скорость при залезании на лестницу run_coef = 2.1 ;Скорость при быстром шаге sprint_koef = 2.6 ;Скорость при беге run_back_coef = 1.8 ;Скорость при быстром шаге назад walk_back_coef = 0.8 ;Скорость при хождении назад air_control_param = 0.1 ;Управляемость в прыжке. Нет смысла менять, только ради экспериментов walk_accel = 17 ;Ускорение при ходьбе pickup_info_radius = 5 ;Радиус, при котором над предметами выводятся их названия, если на них навести прицел ef_creature_type = 17 ;Нет необходимости изменять ; attach params attachable_items = device_torch,attachable_item,hand_radio ;Нет необходимости изменять ph_box0_center = 0.0, 0.9, 0.0 ;Нет необходимости изменять ph_box0_size = 0.35, 0.9, 0.35 ;Нет необходимости изменять (Габариты ГГ стоя) ph_box1_center = 0.0, 0.75, 0.0 ;Нет необходимости изменять ph_box1_size = 0.35, 0.75, 0.35 ;Нет необходимости изменять (Габариты ГГ в присяде) ph_box2_center = 0.0, 0.6, 0.0 ;Нет необходимости изменять ph_box2_size = 0.35, 0.6, 0.35 ;Нет необходимости изменять (Габариты ГГ в полном присяде) stalker_restrictor_radius = .55;0.55;0.75;0.9 ;Нет необходимости изменять stalker_small_restrictor_radius = .55 ;Нет необходимости изменять medium_monster_restrictor_radius = 0.1 ;Нет необходимости изменять ph_crash_speed_min = 14 ;Нет необходимости изменять ph_crash_speed_max = 30 ;Нет необходимости изменять ph_collision_damage_factor = 1.0 ;Нет необходимости изменять ph_mass = 80 ;Нет необходимости изменять weapon_bone0 = bip01_r_finger1 ;Нет необходимости изменять weapon_bone1 = bip01_l_finger1 ;Нет необходимости изменять weapon_bone2 = bip01_r_finger11 ;Нет необходимости изменять damage = actor_damage ;Ссылка на секцию о повреждениях ГГ. Находится почти в самом низу конфига hit_probability_gd_novice = 0.20 ;Вероятность попадения в ГГ на разных сложностях. hit_probability_gd_stalker = 0.30 hit_probability_gd_veteran = 0.40 hit_probability_gd_master = 0.50 hit_sounds = actor_hit_snds ;Ссылка на секцию со звуками разных поврежддений ГГ. См. ниже. ;actor condition immunities_sect = actor_immunities_gd_master ;Ссылка на секцию с иммунитетом ГГ condition_sect = actor_condition ;Ссылка на секцию с описанием изменения состояния ГГ (при радиации, кровотечении и тп.) heavy_breath_snd = actor\breath_1 ;Звук тяжёлого дыхания при усталости heavy_blood_snd = affects\heartbeat ;Звук при тяжёлом кровотечении material = creatures\actor ;Нет необходимости изменять camera_height_factor = 0.85 ;Высота камеры над землёй, попросту говоря, рост ГГ (параметр 0.95 самый приемлимый) ;Дисперсия стрельбы с учетом ходьбы и бега disp_base = 0.8 ;Угол (в градусах) разлета пуль, когда актёр стоит на месте disp_aim = 0.04 disp_vel_factor = 2.0 ;На сколько увеличится дисперсия при скрости в 10 м/с (не обязательно при беге) disp_accel_factor = 2.0 ;Еще на сколько увеличится, если актёр бежит (+ скорость) disp_crouch_factor = -0.2 ;Уменьшение если актёр сидит disp_crouch_no_acc_factor = -0.4 ;Уменьшение если актёр сидит + без ускорения ;disp_jump_factor = 2.0 ;Уменьшение при прыжке missile_throw_offset = 0.3, 0.5, 0.5 body_remove_time = 60000 ;Время уничтожения трупа (с учетом TimeFactor). sleep_time_factor = 1000 ;400 ;Ускорение времени во сне. Все параметры, связанные со сном ГГ, не имеют смысла ввиду отсутствия сна в игре (сон в модах не использует параметры из этого файла) max_sleep_hours = 12 ;species of monster species = actor ;Относится ко сну ;---STEP MANAGER------------------------------------------------------ LegsCount = 2 ;Нет необходимости изменять step_params = stalker_step_manager ;Нет необходимости изменять foot_bones = stalker_foot_bones ;Нет необходимости изменять memory_update_time = 100 ;Нет необходимости изменять ; visibility parameters ;Параметры, которые ниже лучше не менять. Отвечают за видимость ГГ. Комментарии от GSC. DynamicObjectsCount = 32 min_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 1.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 1.0 time_quant = 0.005 decrease_value = 0.1 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5;0 ; фактор освещения (только для Актёра) transparency_threshold = 0.4 ; 0.25 still_visible_time = 5000 ; время, которое объект всё ещё считается видимым, даже если он уже не во фрустуме [actor_immunities_gd_novice] ;Коэфециенты иммунитета на уровне сложности новичок. Чем меньше значение, тем меньше урон. Если поставить 0.0, ГГ станет практически бессмертным (сможет умереть только от радиации или кровотечения). burn_immunity = 0.5 ;Огонь (костер, жарка и тп.) strike_immunity = 0.5 ;Удар (падение с большой высоты, аномалия "Карусель" и тп.) shock_immunity = 0.5 ;Электрошок (Аномалия "Электра") wound_immunity = 0.5 ;Разрыв (Атаки животных, еще, возможно, аномалия "Мясорубка" и тп.) radiation_immunity = 0.5 ;Радиация telepatic_immunity = 0.5 ;Пси-воздействие chemical_burn_immunity = 0.5 ;Хим. воздействие (аномалия "Холодец") explosion_immunity = 0.1 ;Взрывы (Бочки, РПГ) fire_wound_immunity = 0.5 ;Пулестойкость [actor_immunities_gd_stalker] burn_immunity = 0.00 strike_immunity = 0.00 shock_immunity = 0.00 wound_immunity = 0.00 radiation_immunity = 0.00 telepatic_immunity = 0.00 chemical_burn_immunity = 0.00 explosion_immunity = 0.00 fire_wound_immunity = 0.00 [actor_immunities_gd_veteran] burn_immunity = 0.8 strike_immunity = 0.8 shock_immunity = 0.8 wound_immunity = 0.8 radiation_immunity = 0.8 telepatic_immunity = 0.8 chemical_burn_immunity = 0.8 explosion_immunity = 0.6 fire_wound_immunity = 0.8 [actor_immunities_gd_master] burn_immunity = 1.0 strike_immunity = 1.0 shock_immunity = 1.0 wound_immunity = 1.0 radiation_immunity = 1.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 1.0 fire_wound_immunity = 1.0 [actor_condition] satiety_v = 0.000015 ;Скорость увеличения голода (если сделать больше, то и есть он будет хотеть быстрее) radiation_v = 0.0001 ;Скорость уменьшения радиации satiety_power_v = 0.000055 ;Увеличение выносливости при уменьшении сытости satiety_health_v = 0.0001 ;Увеличение здоровья при уменьшении сытости satiety_critical = 0.0 ;Критическое значения сытости (в процентах от 0..1). При каком значении сытости начинает уменьшаться здоровье radiation_health_v = 0.004 ;Уменьшение здоровья при воздействии радиации morale_v = 0.0001 ;Скорость восстановления морали (что бы это не значило) psy_health_v = 0.001 ;Скорость восстановления пси-здоровья alcohol_v = -0.0003 ;Скорость уменьшения опьянения health_hit_part = 1.0 ;Процент хита, уходящий на отнимание здоровья power_hit_part = 0.1 ;Процент хита, уходящий на отнимание силы max_power_leak_speed = 0.0 ;Накопление усталости (макс граница, до которой восстанавливается сила) в секунду игрового времени max_walk_weight = 60 ;Максимальное кол-во таскаемого веса. Если значение хоть на 0.1 выше, то персонаж преестанет идти bleeding_v = 0.0005 ;Потеря крови при кровотечении wound_incarnation_v = 0.003 ;Скорость с которой пропадает кровотечение min_wound_size = 0.0256 ;Минимальный размер раны, после которого она считается зажившей. ;--when actor in sleep ;Снова сон satiety_v_sleep = 0.00001 radiation_v_sleep = 0.0003 satiety_power_v_sleep = 0.0001 satiety_health_v_sleep = 0.00001 radiation_health_v_sleep = 0.001 morale_v_sleep = 0.0 psy_health_v_sleep = 0.0 alcohol_v_sleep = -0.0005 bleeding_v_sleep = 0.0 wound_incarnation_v_sleep = 0.0 max_power_leak_speed_sleep = -0.00001; ;health_restore_v = 0.0001 ;;;;;;;; ;actor_condition only jump_power = 0.01 ;0.005 ;уменьшение выносливости без учета максимального веса (предела) jump_weight_power = 0.05 ;0.045 ;уменьшение выносливости с прыжком с учетом максимального веса overweight_jump_k = 5;10 ;10 ;коэффициент влияния перегрузки при прыжке с весом (умножается на jump_weight_power). На сколько умножается уменьшение веса, если достигнут предел в макс. весе. В нашем случае (jump_weight_power*overweight_jump_k) 0.25 stand_power = -0.005 ;Скорость восстановления выносливости walk_power = 0.00001 ;уменьшение выносливости за секунду ходьбы без учета макс. веса walk_weight_power = 0.00005; ;уменьшение выносливости за секунду во ходьбы с учетом веса макс. веса overweight_walk_k = 5;9 ;10 ;коэффициент влияния перегрузки ноши (умножается на walk_weight_power) accel_k = 3;5 ;коэффициент на быстрый шаг (умножается walk_power, walk_weight_power) sprint_k = 75;150;185;180;200; ;коэффициент на бег (умножается walk_power, walk_weight_power) ; хромота limping_health_begin = 0.1 ;порог здоровья, меньше которого ГГ начинает хромать limping_health_end = 0.2 ;порог здоровья, больше которого ГГ перестает хромать limping_power_begin = 0.1 ;порог силы, меньше которого ГГ начинает хромать limping_power_end = 0.2 ;порог силы, больше которого ГГ перестает хромать use_limping_state = on ;Не обязателен для редактирования cant_walk_power_begin = 0.01 ;порог силы, меньше которого ГГ не может двигаться cant_walk_power_end = 0.10 ;порог силы, больше которого ГГ сможет двигаться cant_sprint_power_begin = 0.20 ;порог силы, меньше которого ГГ не может бежать в спринте cant_sprint_power_end = 0.30 ;порог силы, больше которого ГГ сможет бежать в спринте can_sleep_callback = dream.can_sleep_callback ;Сон sleep_video_name_callback = dream.sleep_video_name_callback [actor_damage] ;Отвечает за то, сколько отнимаеться у ГГ жизней если ему попали в определённую часть тела. Выше мы видели ссылку на него. ;bone_name = <hit_scale>,<fwd_damage_anim_index>,<wound_scale> ;<hit_scale> - коэфф. изменения хита (уменьшения здоровья) ;<wound_scale> - коэфф. изменения величины открытой раны ;-1 - нет анимаций, четный номер - спереди, нечетный номер - сзади, УКАЗЫВАЕТСЯ ТОЛЬКО ПЕРЕДНИЙ!!! ЗАДНИЙ НА АВТОМАТЕ default = 1.0, -1, 1.0 bip01_pelvis = 1.0, 10, 1.5 bip01_spine = 1.0, 10, 1.5 bip01_spine1 = 1.0, 0, 1.5 bip01_spine2 = 1.0, 0, 1.5 bip01_neck = 1.0, 0, 1.5 bip01_head = 0.2, 0, 1.5 eyelid_1 = 0.0, 0, 0.0 eye_left = 0.0, 0, 0.0 eye_right = 0.0, 0, 0.0 jaw_1 = 0.0, 0, 0.0 bip01_l_clavicle = 1.0, 4, 1.5 bip01_l_upperarm = 1.0, 4, 1.5 bip01_l_forearm = 1.0, 4, 1.5 bip01_l_hand = 1.0, 4, 0.5 bip01_l_finger0 = 0.0, 4, 0.0 bip01_l_finger01 = 0.0, 4, 0.0 bip01_l_finger02 = 0.0, 4, 0.0 bip01_l_finger1 = 0.0, 4, 0.0 bip01_l_finger11 = 0.0, 4, 0.0 bip01_l_finger12 = 0.0, 4, 0.0 bip01_l_finger2 = 0.0, 4, 0.0 bip01_l_finger21 = 0.0, 4, 0.0 bip01_l_finger22 = 0.0, 4, 0.0 bip01_r_clavicle = 1.0, 2, 1.5 bip01_r_upperarm = 1.0, 2, 1.5 bip01_r_forearm = 1.0, 2, 1.5 bip01_r_hand = 1.0, 2, 0.0 bip01_r_finger0 = 0.0, 2, 0.0 bip01_r_finger01 = 0.0, 2, 0.0 bip01_r_finger02 = 0.0, 2, 0.0 bip01_r_finger1 = 0.0, 2, 0.0 bip01_r_finger11 = 0.0, 2, 0.0 bip01_r_finger12 = 0.0, 2, 0.0 bip01_r_finger2 = 0.0, 2, 0.0 bip01_r_finger21 = 0.0, 2, 0.0 bip01_r_finger22 = 0.0, 2, 0.0 bip01_l_thigh = 1.0, 8, 1.5 bip01_l_calf = 1.0, 8, 1.5 bip01_l_foot = 1.0, 8, 1.5 bip01_l_toe0 = 1.0, 8, 1.5 bip01_r_thigh = 1.0, 6, 1.5 bip01_r_calf = 1.0, 6, 1.5 bip01_r_foot = 1.0, 6, 1.5 bip01_r_toe0 = 1.0, 6, 1.5 [actor_animation] ;Не обязателен для редактирования ;углы дворота ног актера во время стрейфов (в градусах) fwd_l_strafe_yaw = 45 back_l_strafe_yaw = 45 fwd_r_strafe_yaw = 45 back_r_strafe_yaw = 45 l_strafe_yaw = 0 r_strafe_yaw = 0 [actor_hit_snds] ;Звуки разных воздействий на ГГ burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Горение shock =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Электрошок strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Падение с большой высоты wound =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Укус radiation =monsters\biting\def_0; actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ;Радиация telepatic =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Пси-атака fire_wound =actor\bullet_hit_1,actor\bullet_hit_2,actor\bullet_hit_3,actor\bullet_hit_4 ;Огнестрел ; actor\pain_1,actor\pain_3,actor\pain_4,actor\pain_5,actor\pain_6,actor\pain_7,actor\pain_8 ;Закоментированые звуки. Если расскоментировать, то они будут присутствовать в игре chemical_burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Химическое воздействие explosion =affects\tinnitus3a ;Взрыв wound_2 =actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4 ;Ранение, повлёкшее кровотечение physic_strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4 ;Удар предметами (например, которые пускает полтергейст на ГГ)
Разобрались? Отлично. Теперь про инклуды. Допустим, вы создали новый конфиг (например, с оружием или предметами). Его обязательно нужно отметить в игре, иначе игра его попросту не увидит. Открываем, например, config/system.ltx и добавляем инклуд. В начале файла пишем #include "название_файла.ltx"; если файл в папке отличной от system.ltx, пишем #include "название_папки/название_файла.ltx".
Файл game_relations.ltx
Идём дальше, посмотрим, например, файл config/creatures/game_relations.ltx
[game_relations] rating = novice, 300, experienced, 600, veteran, 900, master ;При каком значении опыта повышается ранг. То есть, изначально идёт novice (новичок), при достижении 300 ГГ (или любой NPC, хотя у них опыт прописывается изначально) становится expirienced (опытный). Дальнейшие несколько параметров используют тот же принцип. monster_rating = weak, 400, normal, 800, strong ;Аналогично предыдущему, но относится к монстрам, слабый-обычный-сильный. Используется в статистике. reputation = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent ;Репутация ГГ или NPC ;шкалы для вывода названий вместо чисел ;рейтингов, репутаций и благосклонности в интерфейсе rating_names = novice, 300, experienced, 600, veteran, 900, master ;В общем, аналогично параметру rating reputation_names = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent ;Это тоже goodwill_names = enemy, -400, indifferent, 500, friendly ;А это уже отношение персонажей друг к другу, враг-нейтрал-друг. ;пороговые значения для отношения персонажей. Репутация к персонажу и ее порог, при которой НПС становиться другом или врагом. Допустим, мы создали диалог, в котором даем 500 репутации. Значит, НПС достиг порога в репутации к вам и стал другом. Если чуть меньше(450, например), то никакого эффекта не будет и НПС так и останеться нейтрален). attitude_neutal_threshold = -400 ;когда attitude меньше значения, то выставляется ALife::eRelationEnemy attitude_friend_threshold = 500 ;когда attitude меньше значения, то выставляется ALife::eRelationNeutral, иначе ALife::eRelationFriend ;константы, которые присвоят скриптовые функции set_relation для personal goodwill goodwill_enemy = -1000 goodwill_neutal = 0 goodwill_friend = 1000 ;названия группировок; рекомендуется к прочтению сразу после этой статьи (создание новой группировки):[http://stalkerin.gameru.net/wiki/index.php/Создание_новой_группировки] communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10, freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16 ;Помим, что зомбированные (но не просто зомби) технически являются отдельной группировкой. ; отношение персонажа к актеру (или другому NPC) вычисляется по формуле ; attitude = personal_goodwill + //личное отношение персонажа к актеру (если раньше не встречались, то 0) ; community_goodwill + //отношение группировки персонажа лично к актеру (если раньше контактов не было, то 0) ; community_to_community + //отношение группировки персонажа к группировке актера из [communities_relations] ; reputation_goodwill + //отношение репутации персонажа к репутации актера из [reputation_relations] ; rank_goodwill //отношение ранга персонажа к рангу актера из [rank_relations] [communities_relations] ;Отношения группировок к Actor`у и другим группировкам. Если отношения уходят в минус(-), то они враги для той или иной группировки ; |actor |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg |freedom|bandit |zombied|strange|trader |arena_enemy| ;================================================================================================================================= actor = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000 actor_dolg = 0, 0, 0, 0, -5000, -500, -5000, 5000, 600, -5000, -5000, -5000, 0, 0, -5000 actor_freedom = 0, 0, 0, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, -5000 stalker = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000 monolith = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, 5000, 5000, -5000, 0, -5000 military = -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000, -5000, -5000, -5000, 0, 0, -5000 killer = -5000, -5000, 0, -5000, -5000, -5000, 5000, -5000, -5000, -5000, 0, -5000, -5000, 0, -5000 ecolog = 0, 600, -5000, 0, -5000, 1000, -5000, 5000, 500, -5000, -500, -5000, 0, 0, 0 dolg = 0, 600, -5000, 0, -5000, -500, -5000, 5000, 5000, -5000, -5000, -5000, 0, 0, 0 freedom = 0, -5000, 600, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, 0 bandit = -5000, -5000, 0, -5000, -5000, -500, 0, -5000, -5000, 0, 0, -5000, -5000, 0, -5000 zombied = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000 stranger = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -500, -5000, 0, 0, 0 trader = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 arena_enemy = -5000, -5000, -5000, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, 0, 0 [rank_relations] ;Судя по всему, отношение рангов друг к другу. Не файт, что используется в игре. ; novice, experienced, veteran, master ;================================================================ novice = 0, 0, 0, 0 experienced = 0, 0, 0, 0 veteran = 0, 0, 0, 0 master = 0, 0, 0, 0 [reputation_relations] ;Судя по всему, отношение репутаций друг к другу. ; terrible, very_bad, bad, neutral, good, very_good, excellent ;================================================================ terrible = 0, 0, 0, 0, 0, 0, 0 very_bad = 0, 0, 0, 0, 0, 0, 0 bad = 0, 0, 0, 0, 0, 0, 0 neutral = 0, 0, 0, 0, 0, 0, 0 good = 0, 0, 0, 0, 0, 0, 0 very_good = 0, 0, 0, 0, 0, 0, 0 excellent = 0, 0, 0, 0, 0, 0, 0 ; ; очки рейтинга и репутации начисляемые за определенные действия ; ;коэффициенты "сочувствия" группировок ;после воздействия на одного из членов группировки ;goodwill его распространится на остальных членов группировки ;с определенным коэффициентом [communities_sympathy] actor = 0.0 actor_dolg = 0.0 actor_freedom = 0.0 stalker = 0.0 monolith = 0.0 military = 0.0 killer = 0.0 ecolog = 0.0 dolg = 0.1 freedom = 0.1 bandit = 0.0 zombied = 0.0 trader = 0.0 stranger = 0.0 arena_enemy = 0.0 ; ;очки рейтинга, получаемые за убийство персонажа ;с определенным статусом ;вроде не рабочий конфиг [rank_kill_points] novice = 0 experienced = 0 veteran = 0 master = 0 ;очки рейтинга, репутации и доброжелательности начисляемые ;в зависимости от совершенного действия ;Рабочий конфиг но срабатывает не всегда [action_points] personal_goodwill_limits = -1000, 1000 community_goodwill_limits = -3000, 1000 ;------------------------------------------------------- free_friend_attack_goodwill = -2500 ;Свободная аттака друга (понижается отношение) free_neutral_attack_goodwill = -1000 ;Свободная аттака по нейтралу (понижается отношение) free_enemy_attack_goodwill = 0 ;Свободная аттака врага (понижается отношение) danger_friend_attack_goodwill = -200 ;Аттака друга при опасности (понижается отношение) danger_neutral_attack_goodwill = -200 ;Аттака нейтрала при опасности (понижается отношение) danger_enemy_attack_goodwill = 0 ;Аттака врага при опасности (понижается отношение) free_friend_attack_reputation = -20 ;Свободная аттака друга (понижается репутация) free_neutral_attack_reputation = -10 ;Свободная аттака нейтрала (понижается репутация) free_enemy_attack_reputation = 0 ;Свободная аттака врага (понижается репутация) danger_friend_attack_reputation = 0 ;Аттака друга при опасности (понижается репутация) danger_neutral_attack_reputation = 0 ;Аттака нейтрала при опасности (понижается репутация) danger_enemy_attack_reputation = 0 ;Аттака врага при опасности (понижается репутация) ;-------------------------------------------------- ;(с) мин. время, через которое снова будет зарегистрировано ;сообщение об атаке на персонажа, и, соответственно, вычтется attack_goodwill и attack_reputation ;(работает аналогично и при помощи другим персонажам в бою) min_attack_delta_time = 3 friend_kill_goodwill = -1000 ;Свободное убийство друга (понижается отношение) neutral_kill_goodwill = -1000 ;Свободное убийство нейтрала (понижается отношение) enemy_kill_goodwill = 0 ;Свободное убийство врага (понижается отношение) community_member_kill_goodwill = -1000 ;Неизвестно ;убийство члена группировки отражается на отношении ;группировки (умножается на communities_sympathy) friend_kill_reputation = -40 neutral_kill_reputation = -15 enemy_kill_reputation = 0 ; ; помощь ГГ персонажу во время боя ; fight_remember_time = 10 ;(c) время которое про драку будет помнить реестр friend_fight_help_goodwill = 200 neutral_fight_help_goodwill = 200 enemy_fight_help_goodwill = 0 friend_fight_help_reputation = 10 neutral_fight_help_reputation = 10 enemy_fight_help_reputation = 0 ;свойства, которые изменяются у сталкеров в ;зависимости от их ранга ;коэффициенты линейно интерполируются для рангов от 0 (novice) до 100 (experienced) [ranks_properties] immunities_novice_k = 1.0 immunities_experienced_k = 1.0 visibility_novice_k = 1 visibility_experienced_k = 1 dispersion_novice_k = 1.0 dispersion_experienced_k = 0.1 ; диапазон изменения рангов при регистрации в новом смарт террейне [smart_terrain_rank_change] min = 1 max = 30 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; для монстров ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [monster_communities] ;номера, которые присваиваются соответствующим видам ;255 - команда не задается communities = actor, 255, human, 255, arena_monstr, 39, boar, 40, bloodsucker, 41, flesh, 42, dog, 43, pseudodog, 44, cat, 45, chimera, 46, giant, 47, zombie, 48, burer, 49, controller, 50, poltergeist, 51, snork, 52, fracture, 53, bird, 54, rat, 55, tushkano, 56 [monster_relations] ; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг ; actor,human,arena_monstr, boar, bloodsucker, flesh, dog, pseudodog, cat, chimera, giant, zombie, burer, controller, poltergeist, snork, fracture, bird, rat, tushkano ;========================================================================================================================================================================== actor = 1, 1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1 human = 0 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1 arena_monstr= -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 boar = -2, -2, 0, 1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0 bloodsucker = -2, -2, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 flesh = -2, -1, 0, 0, -1, 1, -1, -1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0 dog = -2, -1, 0, -1, 0, -1, 1, 0, 0, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0 pseudodog = -2, -1, 0, -1, 0, -1, 0, 1, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0 cat = -2, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 chimera = -2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 giant = -2, -1, 0, -1, 0, -1, -1, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 zombie = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 burer = -2, -2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 controller = -2, -2, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0 poltergeist = -2, -1, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 snork = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0 fracture = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 bird = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 rat = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 tushkano = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
Монстры
Рассмотрим какого нибудь монстра. Например, плоть:
;=========================================================================== ; ПЛОТЬ ;=========================================================================== [m_flesh_e]:monster_base GroupControlSection = spawn_group SpaceRestrictionSection = space_restrictor,zone_mosquito_bald,zone_gravi_zone $spawn = "monsters\fleshes\flesh_base" ; option for Level Editor $npc = on ; option for Level Editor $prefetch = 16 Scheduled = on ; option for ALife Simulator Human = off ; option for ALife Simulator Health = 250 ; количество жизней в оффлайне (то есть на расстоянии, указанном в параметре switch_distance из файла alife.ltx) MinSpeed = 1.0 ; мин. скорость перемещения в оффлайне MaxSpeed = 1.5 ; макс. скорость перемещения в оффлайне going_speed = 2.0 current_level_going_speed = 1;2 ; option for ALife Simulator search_speed = .5 ; скорость поиска чего-либо visual = monsters\flesh\flesh ;Модель живой плоти corpse_visual = monsters\flesh\flesh_dead ;Модель мертвой плоти icon = ui_npc_monster_flesh ;Иконка при обыске MaxHealthValue = 1.0 ; Максимальное количество жизней. DynamicObjectsCount = 32 smart_terrain_choose_interval = 00:15:00 Spawn_Inventory_Item_Section = mutant_flesh_eye ;Что можно найти при обыске. Берётся из файла monster_items.ltx Spawn_Inventory_Item_Probability = 0.2 ;Шанс выпадения части тела, если поставить 1.0, то будет выпадать всегда. При значении 2.0 попадётся две части. ef_creature_type = 7 ; option for evaluation functions ef_weapon_type = 2 ef_detector_type = 1 panic_threshold = 0.1 cform = skeleton ; collision class class = SM_FLESH ; AI class script_binding = bind_monster.bind bone_torso = bip01_spine1 ; bone name bone_head = bip01_head ; bone name bone_fire = bip01_head ; bone name weapon_usage = 0 ; boolean ;--------------------------------------------------------------------- ; Физика тела ;--------------------------------------------------------------------- ; movement ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.55, 0.9, 0.55 ph_box1_center = 0.0, 0.6, 0.0 ph_box1_size = 0.40, 0.6, 0.40 ph_crash_speed_min = 10 ph_crash_speed_max = 30 ph_collision_damage_factor = 0.1 ph_mass = 200;100 ; also it's the food destroyed_vis_name = physics\dead_body\skelet_crash_monster ;то, что останется при попадении монстра, например, в "Карусель" ;---------------------------------------------------------------------------- ph_skeleton_airr_lin_factor = 2.0 ;550.0 (изменно из-за того, что убрано домножение коэффициент 0.002 из кода) -Комментарии от GSC, проходим мимо ph_skeleton_airr_ang_factor = 0.0 ;0.0 (изменно из-за того, что убрано домножение на коэффициент 0.3 из кода (0.0*0.3=0.0)) ph_skeleton_hinger_factor1 = 1.0 ;1.0 (изменно из-за того, что убрано домножение на коэффициент 5.0 из кода) ph_skeleton_ddelay = 15.0 ;Время изменения значения трения в суставе с момента создания шелла, сек ph_skel_fatal_impulse_factor = 12.0 ph_after_death_velocity_factor= 0.75 ph_skel_shot_up_factor = 0.25 ;---------------------------------------------------------------------------- ;---------------------------------------------------------------------------- ; Передвежение и ускорение при движении ;---------------------------------------------------------------------------- ; speed factors linear | angular_real | angular_path | min | max Velocity_Stand = 0, 1.79, 1.79 1, 1 Velocity_WalkFwdNormal = 1.5, 2.0, 2.0, 0.2, 2.0 Velocity_WalkFwdDamaged = 1.2, 1.14, 1.14, 0.2, 2.0 Velocity_RunFwdNormal = 5.2, 2.5, 2.5, 0.2, 1 Velocity_RunFwdDamaged = 5.5, 3.0, 3.0, 0.3, 1 Velocity_Drag = 1.5, 2.14, 2.14, 1, 1 Velocity_Steal = 1.3, 2.14, 2.14, 1, 1 ; acceleration Accel_Generic = 1.5 Accel_Calm = 2.5 Accel_Aggressive = 8.5 ;-------------------------------------------------------------------------- ; Параметры атаки ;-------------------------------------------------------------------------- MinAttackDist = 2.3 ;Мин. дистанция атаки MaxAttackDist = 2.9 ;Макс. дистанция атаки as_min_dist = 1.3 as_step = 0.4 attack_effector = m_flesh_attack_effector attack_params = m_flesh_attack_params Melee_Rotation_Factor = 2.6 ;------------------------------------------------------------------------- ; Entity Conditions ;------------------------------------------------------------------------- satiety_v = 0.0001 ;0.01 ;Скорость увеличения голода radiation_v = 0.00001 ;0.004 ;Скорость вывода радиации из организма satiety_power_v = 0.005 ;0.01 ;Чем меньше голод, тем больше у плоти будет макс. энергии satiety_health_v = 0.0005 ;0.001 ;0.03 ;Чем меньше голод, тем больше у плоти будет макс. жизни satiety_critical = -1.0 ;0.25 ;Крит. значение голода radiation_health_v = 0.01 ;0.006 ;Уменьшение здоровья при воздействии радиации morale_v = 0.01 health_hit_part = 1.0 ;0.8 power_hit_part = 1.0 ;0.9 psy_health_v = 0.1 ;скорость восстановления пси-здоровья immunities_sect = flesh_immunities ;Ссылка на секцию с параметрами иммунитета ;открытые раны bleeding_v = 0.04 ;потеря жизней при ране в секунду wound_incarnation_v = 0.05 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) min_wound_size = 0.01 ;Мин. параметр, при котором начнеться кровотечение (если меньше, то кончится) ;Сон sleep_health = 1.0 ;1.5 ;Восстановление различных параметров при сне sleep_power = 1.0 ;1.5 sleep_satiety = 1.0 ;0.8 sleep_radiation = 1.0 ;1.1 sleep_psy_health = 1.0 eat_freq = 5.0 eat_slice = 0.01 eat_slice_weight = 10.0 satiety_threshold = 0.5 ; если значение ниже 0.5, монстр становится голодным ;--------------------------------------------------------- ; Звуки ;--------------------------------------------------------- SoundThreshold = 0.07 ; range [0..1] max_hear_dist = 40 ;Дистанция на которой слышны звуки sound_idle = monsters\flesh\flesh_idle_ ;Звук ходьбы. Открыв эту папку, видим файлы с названиями типа flesh_idle_0, flesh_idle_1 и тд. Как видим в параметре на конце названия отсутствует цифра, значит будут использоваться все файлы в этой папке, начинающиеся на flesh_idle_ sound_eat = monsters\flesh\flesh_eat_ ;Звук поедания sound_aggressive = monsters\flesh\flesh_aggressive_ ;Звук агрессии sound_attack_hit = monsters\flesh\flesh_attack_ ;Звук атаки sound_take_damage = monsters\flesh\flesh_pain_ ;Звук получения урона sound_die = monsters\flesh\flesh_death_ ;Звук смерти sound_threaten = monsters\flesh\flesh_attack_ ;Звук угрозы в сторону противника sound_landing = monsters\biting\def_ ;Звук падения sound_steal = monsters\biting\def_ ;Монстр крадётся sound_panic = monsters\flesh\flesh_panic_ ;Звук паники sound_growling = monsters\biting\def_ ;Возможно, звук подъема на ноги. Этот и предыдущие звуки с таким значением параметра пуст. sound_die_in_anomaly = monsters\flesh\flesh_anomaly_death_ ;Звук при умирании в аномалии ;sound_distant = monsters\dog\flesh_distant_ ; только для расстояний свыше switch_distance killer_clsids = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE ;Продолжительность звуков idle_sound_delay = 85000 eat_sound_delay = 3000 attack_sound_delay = 6000 sound_distant_idle = monsters\flesh\flesh_idle_ distant_idle_sound_delay = 80000 distant_idle_sound_range = 100.0 ;--------------------------------------------------------- ; Зрение ;--------------------------------------------------------- eye_fov = 100 ;На сколько градусов плоть видит жертву eye_range = 30 ;60 ;расстояние на котором плоть видит жертву ; number of visible objects monster can handle DynamicObjectsCount = 32 min_view_distance = 0.4 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.2 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 ;--------------------------------------------------------- ; Логика ;--------------------------------------------------------- DayTime_Begin = 6 ; Начало дня для монстра DayTime_End = 21 ; Конец дня для монстра Min_Satiety = 0.4 ;0.6 ; Минимальное значение голода Max_Satiety = 1.0 ; Максимальное значение голода ;------------------------------------------------------------------------- ; Мораль (возможно, что-то типа пси-здоровья, или оно и есть) ;------------------------------------------------------------------------- Morale_Hit_Quant = 0.1 Morale_Attack_Success_Quant = 0.1 Morale_Take_Heart_Speed = 0.1 Morale_Despondent_Speed = 0.1 Morale_Stable_Speed = 0.01 Morale_Despondent_Threashold = 0.5 ;------------------------------------------------------------------------- ; Прочее ;------------------------------------------------------------------------- critical_wound_threshold = 0.4 ;Критический порог ранения critical_wound_decrease_quant = 0. critical_wound_anim_head = critical_hit_head_0 critical_wound_bones_head = flesh_critical_wound_bones_head critical_wound_anim_torso = critical_hit_torso_0 critical_wound_bones_torso = flesh_critical_wound_bones_torso critical_wound_anim_legs = critical_hit_torso_0 critical_wound_bones_legs = flesh_critical_wound_bones_legs distance_to_corpse = 0.9 selector_approach = 20.0, 1.0, 1000.0, 0.0, 0.0, 1000.0, 10000.0, DamagedThreshold = 0.2 material = creatures\hoof step_params = m_flesh_step_params LegsCount = 4 damage = m_flesh_damage ;species of monster species = flesh terrain = flesh_terrain ;================================================================================= ; Урон для каждой части тела ;================================================================================= [m_Flesh_damage] ;bone_name = <hit_scale>,-1,<wound_scale> ;<hit_scale> - коэфф. изменения хита (уменьшения здоровья) ;<wound_scale> - коэфф. изменения величины открытой раны default = 0.25, -1, 0.10 bip01_pelvis = 1.0, -1, 0.1 bip01_spine = 1.0, -1, 0.1 bip01_neck = 1.0, -1, 0.3 bip01_head = 2.0, -1, 0.10, 10 ;================================================================================= ; Где может ходить, изменять бессмысленно ;================================================================================= [flesh_terrain] 255,000,255,255 ;=========================================================================== ; Параметры перемещения ;=========================================================================== [m_flesh_step_params] ;------------------------------------------------------------------------------------------------------------- ; anim | cycles | time1 | power1 | time2 | power2 | time3 | power3 | time4 | power4 | ;------------------------------------------------------------------------------------------------------------- stand_walk_fwd_0 = 8, 0.2, 1, 0.25, 0.7, 0.5, 1.0, 0.7, 1.0 stand_walk_dmg_0 = 7, 0.2, 1, 0.25, 0.7, 0.5, 1.0, 0.7, 1.0 stand_run_0 = 6, 0.2, 1, 0.25, 0.7, 0.5, 1.0, 0.7, 1.0 stand_run_dmg_0 = 6, 0.2, 1, 0.25, 0.7, 0.7, 1.0, 0.7, 1.0 stand_steal_0 = 1, 0.2, 1, 0.25, 0.7, 0.7, 1.0, 0.7, 1.0 stand_drag_0 = 1, 0.2, 1, 0.25, 0.7, 0.7, 1.0, 0.7, 1.0 ;=========================================================================== ; Иммунитет (Аналог иммунитета ГГ) ;=========================================================================== [flesh_immunities] burn_immunity = 1.0 strike_immunity = 1 shock_immunity = 1.0 wound_immunity = 0.15 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.55 fire_wound_immunity = 0.15 ;=========================================================================== ; Специальные эффекты ;=========================================================================== [m_flesh_attack_effector] duality_h = 0.01 duality_v = 0.01 blur = 0.01 gray = 0.5 noise_intensity = 0.0 noise_grain = 1 noise_fps = 30 color_base = 0.65,0.15,0.1 color_gray = 0.333,0.333,0.333 color_add = 0,0,0 time = 0.3 time_attack = 0.05 ; fade in time_release = 0.25 ; fade out ; camera effects ce_time = 0.45 ;time ce_amplitude = -10.0 ce_period_number = 2.0 ce_power = 1.5 ;0.7 ; power ;=========================================================================== ; Параметры урона врагам ;=========================================================================== [m_flesh_attack_params] ;--------------------------------------------------------------------------------------------------------------------------------------------- ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist ; время, урон на сколько направленный ; тратящееся отлетит пр-к импульс ; на удар при смерти ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Удар левой ногой stand_attack_0 = 0.25, 0.26, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 ;Удар обоими ногами stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_3 = 0.40, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 ;********************************************************************************* ; Профиль слабой плоти ;********************************************************************************* [flesh_weak]:m_flesh_e ;Как видим, за основу берётся основной конфиг плоти $spawn = "monsters\fleshes\flesh_01_weak" visual = monsters\flesh\flesh corpse_visual = monsters\flesh\flesh_dead icon = ui_npc_monster_flesh panic_threshold = 0.2 rank = 0 immunities_sect = flesh_immunities_weak ;Иммунитет сильной флешки... attack_params = flesh_attack_params_weak spec_rank = weak ;Ранг монстра, позже отображающийся в нашей статистике (если поставить у слабой плоти этот параметр равным strong, то за убийство таких плотей будут прибавляться сильные) community = flesh ;К какому типу монстра относится. Берётся из game_relations.ltx [flesh_immunities_weak] ;Иммунитет слабой плоти burn_immunity = 1.0 strike_immunity = 1 shock_immunity = 1.0 wound_immunity = 0.20 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.5 fire_wound_immunity = 0.6 [flesh_attack_params_weak] ;Параметры атаки слабой плоти ;--------------------------------------------------------------------------------------------------------------------------------------------- ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Left leg strike stand_attack_0 = 0.25, 0.10, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.0 ;Both leg strike stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_3 = 0.40, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 ;********************************************************************************* ; Профиль обычной плоти, всё как и раньше ;********************************************************************************* [flesh_normal]:m_flesh_e $spawn = "monsters\fleshes\flesh_02_normal" visual = monsters\flesh\flesh corpse_visual = monsters\flesh\flesh_dead icon = ui_npc_monster_flesh panic_threshold = 0.2 rank = 401 immunities_sect = flesh_immunities_normal attack_params = flesh_attack_params_normal spec_rank = normal community = flesh [flesh_immunities_normal] burn_immunity = 1.0 strike_immunity = 1 shock_immunity = 1.0 wound_immunity = 0.15 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.5 fire_wound_immunity = 0.4 [flesh_attack_params_normal] ;--------------------------------------------------------------------------------------------------------------------------------------------- ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Left leg strike stand_attack_0 = 0.25, 0.20, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.0 ;Both leg strike stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_3 = 0.40, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 ;********************************************************************************* ; Профиль сильной плоти ;********************************************************************************* [flesh_strong]:m_flesh_e $spawn = "monsters\fleshes\flesh_03_strong" visual = monsters\flesh\flesh_strong icon = ui_npc_monster_flesh_strong panic_threshold = 0.05 rank = 801 immunities_sect = flesh_immunities_strong attack_params = flesh_attack_params_strong spec_rank = strong community = flesh [flesh_immunities_strong] burn_immunity = 1.0 strike_immunity = 1 shock_immunity = 1.0 wound_immunity = 0.10 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.5 fire_wound_immunity = 0.3 [flesh_attack_params_strong] ;--------------------------------------------------------------------------------------------------------------------------------------------- ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Left leg strike stand_attack_0 = 0.25, 0.30, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.0 ;Both leg strike stand_attack_1 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_2 = 0.30, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 stand_attack_3 = 0.40, 0.40, 150, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 [flesh_group] ;Возможно, просто параметры для SDK GroupControlSection = spawn_group ;$spawn = "monsters\flesh-group" ; option for Level Editor $npc = on ; option for Level Editor Human = off ; option for ALife Simulator class = AI_FLE_G ; AI class monster_section = m_flesh_e [flesh_critical_wound_bones_head] ;Критические места для ранений в области головы bip01_neck bip01_head bip01_ponytail1 bip01_ponytail2 [flesh_critical_wound_bones_torso] ;Критические места в области торса bip01_pelvis bip01_l_calf bip01_r_calf bip01_spine bip01_spine1 bip01_spine2 bip01_l_clavicle bip01_r_clavicle [flesh_critical_wound_bones_legs] ;Критические места в области ног bip01_l_horselink bip01_l_foot bip01_l_toe0 bip01_r_thigh bip01_r_horselink bip01_r_foot bip01_r_toe0 bip01_l_upperarm bip01_l_forearm bip01_l_hand bip01_l_finger0 bip01_l_finger01 bip01_r_upperarm bip01_r_forearm bip01_r_hand bip01_r_finger0 bip01_r_finger01 bip01_l_thigh
Папка gameplay
Теперь переходим к config/gameplay. В файлах типа character_desc_название_локации.xml находится описание всех NPC, появляющихся в игре. Для примера разберем профиль Волка: Открываем файл character_desc_escape.xml
<!---------------------------------------esc_wolf-----------------------------------------------------> <!--Эта строчка является всего лишь комментарием, чтобы проще было ориентироваться. Обращаем внимание на то, как в xml-файлах обозначаются комментарии--> <specific_character id="esc_wolf" team_default = "1" <!--Подробнее в статьях, посященных созданию персонажей--> <name>esc_wolf_name</name> <!--Имя. Берётся из stable_bio_name.xml, может находиться в любом файле из папки text/rus; так же можно написать GENERATE_NAME_stalker и тогда в игре создастся уникальное имя (так же можно написать GENERATE_NAME_bandit, GENERATE_NAME_sergeant, GENERATE_NAME_private, GENERATE_NAME_captain, GENERATE_NAME_lieutenant)--> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <!--Иконка из файла ui_npc_unique.xml--> <bio>esc_wolf_bio</bio> <!--Биография. В игре не используется.--> <class>esc_wolf</class> <community>stalker</community> <!-- группировка --> <terrain_sect>stalker_terrain</terrain_sect> <rank>434</rank> <!--Ранг. Смотрим выше, при каких значениях какой ранг даётся--> <reputation>5</reputation> <!--Репутация--> <money min="600" <!--Минимально возможное количество денег--> max="2000" <!--Максимально возможное количество денег--> infinitive="0"/> <!--Если поставить 1, то у Волка будут бесконечные деньги, но за раз не больше ограничений, указанных в этой строчке, хотя никто не запрещает торговать по нескольку раз--> <snd_config>characters_voice\human_01\stalker\</snd_config> <!--Голос. Варианты в папке sounds\characters_voice\--> <crouch_type>-1</crouch_type> <!--Тип анимации приседания--> <visual>actors\neytral\stalker_neytral_balon_1</visual> <!--Модель. Ищем в папке meshes\actors. Там можно найти много моделей, не использующихся в игре, но вполне рабочих--> <supplies> <!--Список предметов, которые будут у NPC. Разделяются обязательно с помощью \n.--> [spawn] \n wpn_pm \n ammo_9x18_fmj = 1 \n wpn_ak74u \n ammo_5.45x39_fmj \n device_torch \n hand_radio \n </supplies> <!--Дальше идут ссылки на диалоги, которые могут появиться у персонажа--> #include "gameplay\character_criticals_4.xml" <start_dialog>escape_lager_volk_talk</start_dialog> <!--Самый первый диалог с Волком--> <start_dialog>dm_hello_dialog</start_dialog> <!--Приветствие--> <actor_dialog>dm_cool_info_dialog</actor_dialog> <!--Стандартный диалог об интересной инфе--> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <!--Просит аптечку при ранении--> <actor_dialog>tm_wolf_dialog</actor_dialog> <!--Работа--> <actor_dialog>tm_wolf_reward</actor_dialog> <!--Выдача награды за работу--> </specific_character>
О создании своих диалогов очень подробно написано в статье - Создание диалогов.
На этом пока все.
Стартер статьи: Fireman3000
Небольшие поправочки и замечания, ну уж совсем небольшие: Kiray
Довёл до ума: Madevi