SOC: Для совсем еще зеленых ч.1
Материал из S.T.A.L.K.E.R. Inside Wiki
Сейчас в мире модостроения сталкера слишком большое кол-во новичков задающие тупые вопросы по типу: «А как увеличить рост ГГ», «А как уменьшить время закидывания болта», «А как?», «Что?», «Почему?» Вот я и решил написать эту «небольшую статейку» точнее это не статейка, это разбирание вместе с вами мои юные друзья конфигов :) И так с чего бы начать. Ну для начала я думаю надо начать с объяснения что где лежит. Начнем с основного: 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 файлов, содержащих описания конкретных сталкеров и торговцев
Так делают не многие люди которые занимаються в модостроении ибо не хотят объяснять принцип действия своих конфигов и прочего.Но ПЫСы часто оставляют эти пояснения.Вобщем функция эта бесполезная но для людей которые забывают что и где они добавляли/изменяли писать комментарии обязательно.А так же желательно писать комментарии для старых значение.Например в одной из скриптов было числовое значение 0.3 вы изменили на 0.2.Значит желательно после 0.2 поставить комментарий(Тобишь ";") и написать старое число.Тобишь получиться так 0.2 ; 0.3.И самое главное не забудьте символ ";" иначе словите еррор!Комментарии так же нельзя писать в несколько строк,например так писать нельзя:
;Здесь комментарий А здесь еще один
Иначе тоже словите еррор. Старайтесь либо умещать все в 1 предложении либо ставьте ";" перед каждый комментарием. Так же существует такое определение как секции, то бишь [название_секции]. Этот параметр отвечает за контроль нескольких опций внутри себя. Думаю вы поймете это сами. Ну ладно идем дальше: gamedata/config/alife.ltx Здесь нет ничего интересного кроме:
time_factor = 10 ;1 скорость для демонстрации смены дня и ночи если хотите сделать реальным то измените на 1
и
start_time = 05:30:00 ;Время при начале новой игры start_date = 01.05.2012 ;Дата при начале новой игры
config/creatures - Здесь лежит информация об ГГ, Бандитах и прочих сталкерах. Например их устойчивость к определенному виду урона. У ГГ же куча интересных настроек. Так же здесь лежит информация об отношениях группировок к ГГ! config/gameplay - Здесь лежит информация об диалогах, профилях сталкеров (например можно дать какому нибудь бандиту заместо ПМ, Грозу или все сразу, в общем мы с вами разберем это позже), Энциклопедии (никогда не интересовался как ее редактировать, поэтому туториала не будет (но он есть на сайте, так что дерзайте)) и Инфопоршнях (к этой теме тоже вернемся), также информация об Заданиях (не их награды, а сам текст, иконка и пр.) config/misc - Очень интересная папка. Здесь лежит информация о предметах, спавне сталкеров, выпадении предметов, костюмах и их настройке, артефактах, генераторе предметов в трупах, гулагах, квестовых предметах и аномалиях. config/models - Толком никто не знает что это за папка, но по идее раньше туда писались все названия моделей… config/prefetch - То же самое, что и models. config/scripts - Конфиги скриптов. Здесь есть логика персонажей (по каким Гулагам им надо ходить, при каких обстоятельствах им надо бегать к той или иной точке и пр.) и дверей (открыта, закрыта, при каких обстоятельствах ей нужно быть открытой, коды для дверей в Х18 тоже можно изменять в этом файле) config/text/rus - Текст. Если бы не эти файлы — мы бы видели в игре что то типа «wpn_ak74_name», как в билде Кризиса 2 :) Стоит отметить одну интересную способность: игра подгружает эти файлы все разом. То бишь можно писать текст в любой из файлов (если тот конечно работоспособный), а игра его один фиг сумеет распознать. Можно даже в наглую переть диалоги с других локаций, и эта способность кстати очень удобная! config/ui - Вся информация о худе. Та еще мозгодрочка, поэтому разбирать пока что не будем :) config/weapons - Конфиги всего оружия. Можно сделать их убойнее, поменять цену и многое другое. Там же можно добавить и парочку новых :) config/weathers - Погода. Всегда ненавидел GSC за то что они сделали такой замудреный конфиг, я его не понимаю, но на Stalker Inside есть статья по поводу нее, а именно: [1] И-так по порядку. Первым у нас в списке был 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_terrain] 255,255,000,255 ;не совсем понятно что [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. ;Высота прыжка 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 ;уменьшение если актёр сидит + no acceleration ;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 ;Параметры которые ниже лучше не менять.О твечает за видимость actor`a, но в оригинале она и так нормальная… 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] ;Коэфециенты иммунитета на уровне сложности:Новичок.Если сделать их меньше значит и урона будет меньше 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.65 ;коэффициенты иммунитета strike_immunity = 0.65 shock_immunity = 0.65 wound_immunity = 0.65 radiation_immunity = 0.65 telepatic_immunity = 0.65 chemical_burn_immunity = 0.65 explosion_immunity = 0.3 fire_wound_immunity = 0.65 [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; ;коэффициент на "sprint" бег (умножается 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" если скрипт в другой папке тогда пишем #include "название_папки/название_файла.ltx".Перейдем дальше,посмотрим например config/creatures/game_relations.ltx
[game_relations] ;Разделение ранга,не нужен для редактирования rating = novice, 300, experienced, 600, veteran, 900, master monster_rating = weak, 400, normal, 800, strong 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 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] ;номера team которые присваиваются соответствующим видам ;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 ; кол-во жизней но вроде ни на что не влияет 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 ; сколько макс. может быть жизней у Плоти.Варьируеться от 0 до того значения которое вы поставили DynamicObjectsCount = 32 smart_terrain_choose_interval = 00:15:00 ;Вроде бы по скольку плоть ходит на остальных смарт террейнах... Spawn_Inventory_Item_Section = mutant_flesh_eye ;Что выпадает с плоти Spawn_Inventory_Item_Probability = 0.2 ;Шанс выпадения предмета,если поставить 1.0 то 100% будет выпадать 1 глаз плоти.Если поставить 2.0 то 100% что 2 глаза. 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 из кода) 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 ;Скорость голодания у плоти(аналог у Actor`a) radiation_v = 0.00001 ;0.004 ;Скорость вывода радиации из организма(аналог у Actor`a) satiety_power_v = 0.005 ;0.01 ;Чем меньше голод тем больше у плоти будет макс. энергии satiety_health_v = 0.0005 ;0.001 ;0.03 ;Чем меньше голод тем больше у плоти будет макс. жизни satiety_critical = -1.0 ;0.25 ;Крит. значение голода(Плоть должна проголодаться 2 раза для того чтобы начать умирать) 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 ; єтхышўхэшх ёvЄюёЄш яЁш 1 єъєёх eat_slice_weight = 10.0 ; єьхэ№°хэшх хфv є ЄЁєяр satiety_threshold = 0.5 ; below this value monster fill hunger ;--------------------------------------------------------- ; Звуки ;--------------------------------------------------------- SoundThreshold = 0.07 ; range [0..1] max_hear_dist = 40 ;Дистанция на которой слышны звуки sound_idle = monsters\flesh\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_ ; только для расстояний свыше 200м 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 ;------------------------------------------------------------------------- ; Other Stuff (refactoring needed) ;------------------------------------------------------------------------- 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; фшёЄ. фю ЄЁєяр, яЁш ъюЄюЁющ юэ яхЁхїюфшЄ т ёюёЄю эшх хфv 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(Хрен его знает лучше не трогать) ;================================================================================= [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 ;=========================================================================== ; Иммунитет(Полный аналог Actor`a) ;=========================================================================== [flesh_immunities] burn_immunity = 1.0 ;ъю¤ЇЇшЎшхэЄv шььєэшЄхЄр 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 ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Left leg strike stand_attack_0 = 0.25, 0.26, 70, 0.0, 0.5, 1.0, -1.0, 1.0, -1.0, 1.0, 2.5 ;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_weak]:m_flesh_e ;Используються конфиги от отца(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 ;Специальный ранг для другого вида флешек community = flesh ;Эт хз зачем писать но пусть будет [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] ;Вроде бы для спавна групп... 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
Перейдем дальше к config/gameplay: Про него сказать нечего.Ну кроме того что: Профили храняться в: character_desc_название_локации.xml разберем например профиль волка: открываем config/gameplay/character_desc_escape.xml
<!---------------------------------------esc_wolf-----------------------------------------------------> --Мультикомментарий.Кстати в XML и Script файлах комментарии пишеться после --.Мультикомментариев в Конфигах и скриптах не существует! <specific_character id="esc_wolf" -- ID team_default = "1" --Можно не трогать...> <name>esc_wolf_name</name> --Имя <icon>ui_npc_u_stalker_neytral_balon_1</icon> --Иконка <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 то у волка будут бесконечные деньги(но вы один хрен не сможете ему продавать предметы стоимостью больше 2000 ибо ограничение в макс. кол-во денег> > <snd_config>characters_voice\human_01\stalker\</snd_config> --Каким он говорил голосом <crouch_type>-1</crouch_type> --Что то там с приседанием <visual>actors\neytral\stalker_neytral_balon_1</visual> --Визуал(модель) <supplies> <!--А вот и самое няшное.Предметы.Здесь можно добавлять предметы в список.После каждого предмета обязательно ставить \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>
Впринципе все просто.Для работы с диалогами нужна сноровка и терпение,а так же прочтение статьи:[2] там все очень подробно рассказано! Так же есть infoportions.Хм даже не знаю как объяснить это.Кароче это такая функция которая используеться для определения событий например можно запретить возможность использовать один и тот же диалог много раз.Кстати хотел бы дополнить ту статью:
<precondition>используеться для проверки на наличие предмета или денег.Вызываеться из скрипта</precondition> <has_alife_info>Если известен инфопропортион</has_alife_info> <dont_has_alife_info>Если НЕ известен инфопропортион</dont_has_alife_info> <give_info>Дает инфопропортион</give_info>
На этом все.С вами был Fireman3000 вторую часть я скоро напишу...