Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 921 Опубликовано 2 марта 5 минут назад, Stalkervernite сказал: Paracetamol Понял. Тебе же надо что бы именно у группировок портилось? Или у гг с группировками отношения портились? Именно группировки. Хочу масштабную сценку сделать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 349 Опубликовано 2 марта (изменено) Paracetamol Понял. Тогда не знаю, извини. Щас поищу, может найду... Дополнено 1 минуту спустя Paracetamol https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/391/ Нашел, там как раз твой вопрос. Изменено 2 марта пользователем Stalkervernite 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта Восстанавливал бюрера. Вылет после его смерти. В гугле есть что-то похожее, но всё равно не то. gamedata\scripts\xr_statistic.script пробовал поковыряться, но всё равно не могу понять почему вылет. Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...s\xray_sdk_0.4\gamedata\scripts\sim_statistic.script:12: attempt to index global 'xr_statistic' (a nil value) в остальных файлах прописано вот так gamedata\config\creatures\monsters.ltx #include "m_burer.ltx" добавил иконку Спойлер ;=========================================================================== ; BURER ;=========================================================================== [m_burer_e]:monster_base GroupControlSection = spawn_group SpaceRestrictionSection = space_restrictor,zone_mosquito_bald,zone_radioactive ;$spawn = "monsters\old\burer" ; option for Level Editor $npc = on ; option for Level Editor $prefetch = 16 visual = monsters\burer\burer corpse_visual = monsters\burer\burer MaxHealthValue = 100 ; range [0..200] icon = ui_npc_monster_poltergeist Spawn_Inventory_Item_Section = mutant_burer_hand Spawn_Inventory_Item_Probability = 0.2 ;------------------------------------------------------------------------ ; Offline Alife ;------------------------------------------------------------------------ Scheduled = on ; option for ALife Simulator Human = off ; option for ALife Simulator Health = 400 ; option for ALife Simulator MinSpeed = 1.0 ; option for ALife Simulator MaxSpeed = 5.0 ; option for ALife Simulator going_speed = 3;4.5 ; option for ALife Simulator search_speed = 1.5 ; option for ALife Simulator smart_terrain_choose_interval = 00:15:00 ;--------------------------------------------------------------------- ; Physics ;--------------------------------------------------------------------- ph_box0_center = 0.0, 0.7, 0.0 ph_box0_size = 0.35, 0.7, 0.35 ph_box1_center = 0.0, 0.6, 0.0 ph_box1_size = 0.35, 0.6, 0.35 ph_crash_speed_min = 10 ph_crash_speed_max = 30 ph_collision_damage_factor = 0.1 ph_mass = 70; 100 destroyed_vis_name = physics\Dead_Body\trupik_crash ;---------------------------------------------------------------------------- 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 = 6.0 ph_after_death_velocity_factor= 0.75 ph_skel_shot_up_factor = 0.25 ;---------------------------------------------------------------------------- ;---------------------------------------------------------------------------- ; Movement::Velocities & Acceleration ;---------------------------------------------------------------------------- ; speed factors linear | angular_real | angular_path | min | max Velocity_Stand = 0, 6.0, 6.0, 0.2, 0.5 Velocity_RunFwdNormal = 5.0, 2.5, 2.5, 0.2, 1 Velocity_RunFwdDamaged = 3.5, 3.0, 3.0, 0.2, 1 Velocity_WalkFwdNormal = 1.6, 3.0, 3.0, 0.02, 1.5 Velocity_WalkFwdDamaged = 1.0, 3.0, 3.0, 0.5, 2.0 Velocity_Drag = 1.0, 3.0, 3.0, 1, 1 Velocity_Steal = 1.5, 3.0, 3.0, 1, 1 ; acceleration Accel_Generic = 1.5 Accel_Calm = 1.5 Accel_Aggressive = 200 ;6.5 ;-------------------------------------------------------------------------- ; Attack parameters ;-------------------------------------------------------------------------- MinAttackDist = 1.5 MaxAttackDist = 2.5 as_min_dist = 0.5 as_step = 0.3 attack_effector = m_burer_attack_effector attack_params = m_burer_attack_params Melee_Rotation_Factor = 1.8 ;------------------------------------------------------------------------- ; Entity Conditions ;------------------------------------------------------------------------- satiety_v = 0.0001 ;скорость уменьшения сытости со временем radiation_v = 0.00001 ;скорость уменьшения радиации satiety_power_v = 0.001 ;увеличение силы при уменьшении сытости satiety_health_v = 0.00007 ;увеличение здоровья при уменьшении сытости satiety_critical = -1.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться radiation_health_v = 0.01 ;уменьшение здоровья при воздействии радиации morale_v = 0.01 ;скорость восстановления морали health_hit_part = 0.5 ;процент хита, уходящий на отнимание здоровья power_hit_part = 1.0 ;процент хита, уходящий на отнимание силы psy_health_v = 0.1 ;скорость восстановления psy-здоровья immunities_sect = burer_immunities ;открытые раны bleeding_v = 0.05 ;потеря крови при номинальной ране в секунду wound_incarnation_v = 0.04 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) 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 ; увеличение сытости при 1 укусе eat_slice_weight = 10.0 ; уменьшение еды у трупа DayTime_Begin = 0 ; начала дня для монстра DayTime_End = 21 ; конец дня для монстра Min_Satiety = 0.6 ; мин. норма сытости (меньше - уже голодный) Max_Satiety = 0.9 ; макс. норма сытости (больше - очень сытый) satiety_threshold = 0.5 ; below this value monster fill hunger ;--------------------------------------------------------- ; Sounds and sound parameters ;--------------------------------------------------------- sound_idle = monsters\burer\burer_idle_ sound_eat = monsters\burer\burer_idle_ sound_aggressive = monsters\biting\def_ sound_attack_hit = monsters\burer\burer_attack_ sound_take_damage = monsters\burer\burer_telekinetic_ sound_die = monsters\burer\burer_attacking_ sound_threaten = monsters\biting\def_ sound_landing = monsters\biting\def_ sound_steal = monsters\biting\def_ sound_panic = monsters\burer\burer_attacking_ sound_growling = monsters\biting\def_ sound_gravi_attack = monsters\burer\burer_gravi_attack_ sound_tele_attack = monsters\biting\def_ sound_gravi_wave = monsters\burer\burer_gravi_wave_0 sound_die_in_anomaly = monsters\burer\burer_attacking_ killer_clsids = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE idle_sound_delay = 55000;5000 eat_sound_delay = 3000 attack_sound_delay = 14000;4000 sound_distant_idle = monsters\burer\burer_idle_ distant_idle_sound_delay = 80000 distant_idle_sound_range = 100.0 SoundThreshold = 0.06 ; range [0..1] max_hear_dist = 60 ;------------------------------------------------------------------------- ; Vision ;------------------------------------------------------------------------- DynamicObjectsCount = 32 eye_fov = 130 eye_range = 110 min_view_distance = 0.6 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.3 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 ;------------------------------------------------------------------------- ; Morale ;------------------------------------------------------------------------- Morale_Hit_Quant = 0.1 Morale_Attack_Success_Quant = 0.2 Morale_Take_Heart_Speed = 0.1 Morale_Despondent_Speed = 0.1 Morale_Stable_Speed = 0.1 Morale_Despondent_Threashold = 0.5 ;------------------------------------------------------------------------- ; Gravi Ability ;------------------------------------------------------------------------- Gravi_Speed = 76 ; meter/sec Gravi_Step = 2 ; meter Gravi_Time_To_Hold = 1200 ; milisec Gravi_Radius = 3.0 Gravi_Impulse_To_Objects = 60.0 Gravi_Impulse_To_Enemy = 400.0 Gravi_Hit_Power = 50.0 ;------------------------------------------------------------------------- ; Tele Ability ;------------------------------------------------------------------------- Tele_Max_Handled_Objects = 1;3 Tele_Time_To_Hold = 600 Tele_Object_Min_Mass = 30.0 Tele_Object_Max_Mass = 1000.0 Tele_Find_Radius = 7.0 sound_tele_hold = monsters\burer\burer_tele_hold sound_tele_throw = monsters\burer\burer_tele_throw ;------------------------------------------------------------------------- ; Scanner ;------------------------------------------------------------------------- scan_critical_value = 25.0 ; граничное значение scan_radius = 50.0 ; радиус сканирования scan_velocity_threshold = 4.0 ; граничная скорость, до которой движение актера игнорируется scan_decrease_value = 0.3 ; уменьшение текущей суммы в секунду scan_trace_time_freq = 2 ; частота трейса скорости (for programmer only) (1 = 2 раза в сек) scan_sound = monsters\burer\burer_scan_affect_0 scan_effector_section = m_burer_scan_effector ;------------------------------------------------------------------------- ; Particles ;------------------------------------------------------------------------- Particle_Tele_Object = static\fire_distort Particle_Gravi_Wave = anomaly2\burer_wave Particle_Gravi_Prepare = anomaly2\burer_prepare Particle_Shield = anomaly2\burer_shield_01 ;------------------------------------------------------------------------- ; Other Stuff (refactoring needed) ;------------------------------------------------------------------------- critical_wound_threshold = -1 critical_wound_decrease_quant = 0. ef_creature_type = 18 ; option for evaluation functions ef_weapon_type = 12 ef_detector_type = 1 panic_threshold = 0.1 cform = skeleton ; collision class class = SM_BURER ; 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 actor_restrictor = medium_monster ;medium_monster,stalker,none distance_to_corpse = 1.2 ; дист. до трупа, при которой он переходит в состояние еды selector_approach = 20.0, 1.0, 1000.0, 0.0, 0.0, 1000.0, 10000.0, terrain = burer_terrain hit_type = wound DamagedThreshold = 0.5 material = creatures\large step_params = m_burer_step_params LegsCount = 2 damage = m_burer_damage ;species of monster species = burer rank = 0 spec_rank = weak community = burer monster_type = indoor ;================================================================================= ; Burer Attack Params ;================================================================================= [m_burer_attack_params] ;--------------------------------------------------------------------------------------------------------------------------------------------- ; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, bottom, top ) | Test Dist ;--------------------------------------------------------------------------------------------------------------------------------------------- ;Left hand Strike stand_attack_0 = 0.4, 0.40, 100, 2.0, 1.0, 0.5, -1.6, 1.6, -1.6, 1.6, 2.5 ;================================================================================= ; Burer Attack Effector ;================================================================================= [m_burer_attack_effector] duality_h = 0.1; 0.01 duality_v = 0.01; 0.01 blur = 0.01 gray = 0.5 noise_intensity = 0.1;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.0,0.0 time = 3.00 time_attack = 0.05 ; fade in time_release = 0.50 ; fade out ; camera effects ce_time = 0.30 ;time ce_amplitude = 12.0 ce_period_number = 2.0 ce_power = 1.0 ;0.7 ; power ;================================================================================= ; Burer Step Params ;================================================================================= [m_burer_step_params] ;--------------------------------------------------------------------------- ; anim | Cycles | time1 | power1 | time2 | power2 | ;--------------------------------------------------------------------------- stand_walk_fwd_0 = 1, 0.4, 1, 0.9, 0.7, stand_walk_dmg_0 = 1, 0.4, 1, 0.9, 0.7, stand_run_fwd_0 = 1, 0.4, 1, 0.9, 0.6, stand_run_dmg_0 = 1, 0.4, 1, 0.9, 0.6, ;=========================================================================== ; BURER IMMUNITIES ;=========================================================================== [burer_immunities] burn_immunity = 1.0 strike_immunity = 1.0 shock_immunity = 1.0 wound_immunity = 1.0 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.5 fire_wound_immunity = 0.5 ;================================================================================= ; Burer Damage ;================================================================================= [m_Burer_damage] ;bone_name = <hit_scale>,-1,<wound_scale> ;<hit_scale> - коэфф. изменения хита (уменьшения здоровья) ;<wound_scale> - коэфф. изменения величины открытой раны default = 0.05, -1, 0.1 bip01_pelvis = 0.2, -1, 0.1 bip01_spine = 0.3, -1, 0.1 bip01_spine1 = 0.3, -1, 0.1 bip01_neck = 0.3, -1, 0.5 bip01_head = 1.0, -1, 0.2 ;================================================================================= ; Burer Scan Effector ;================================================================================= [m_burer_scan_effector] duality_h = 0.003 duality_v = 0.002 blur = 1.5 gray = 0.3 noise_intensity = 0.0 noise_grain = 2 noise_fps = 8 color_base = 0.55,0.5,0.5;0.637,0.442,0.456 color_gray = 0.333,0.333,0.333 color_add = 0.05,0.0,0.0 time = 10.00 time_attack = 0.3 ; fade in time_release = 0.85 ; fade out ;================================================================================= ; Terrain ;================================================================================= [burer_terrain] 255,000,255,255 ;================================================================================= ; *** PROFILES ******************************************************************* ;================================================================================= [burer_arena]:m_burer_e $spawn = "monsters\arena\burer_arena" visual = monsters\burer\burer_1 panic_threshold = 0.05 species = arena_monstr spec_rank = weak rank = 0 community = burer explosion_immunity = 0.2 fire_wound_immunity = 0.1 ; Gravi Strike Gravi_Speed = 76 ; meter/sec Gravi_Step = 2 ; meter Gravi_Time_To_Hold = 1200 ; milisec Gravi_Radius = 3.0 Gravi_Impulse_To_Objects = 60.0 Gravi_Impulse_To_Enemy = 400.0 Gravi_Hit_Power = 0.5 ; Tele Strike Tele_Max_Handled_Objects = 3 ;1;3 Tele_Time_To_Hold = 100 ;600 Tele_Object_Min_Mass = 30.0 Tele_Object_Max_Mass = 2000.0 ;1000.0 Tele_Find_Radius = 15 ;7.0 [m_burer_normal]:m_burer_e $spawn = "monsters\burers\burer_normal" monster_type = indoor rank = 0 spec_rank = weak community = burer Tele_Time_To_Hold = 200 [m_burer_normal_black]:m_burer_e $spawn = "monsters\burers\burer_normal_black" visual = monsters\burer\burer_1 monster_type = indoor rank = 0 spec_rank = weak community = burer Tele_Time_To_Hold = 200 [burer_indoor]:m_burer_normal $spawn = "monsters\burers\burer_indoor" monster_type = indoor Tele_Time_To_Hold = 200 [burer_outdoor]:m_burer_normal $spawn = "monsters\burers\burer_outdoor" ;monster_type = outdoor Спойлер local killCountProps = { neutral_novice = 1, neutral_experienced = 2, neutral_veteran = 3, neutral_master = 4, monolith_novice = 1, monolith_experienced = 2, monolith_veteran = 3, monolith_master = 4, military_novice = 1, military_experienced = 2, military_veteran = 3, military_master = 4, killer_novice = 1, killer_experienced = 2, killer_veteran = 3, killer_master = 4, ecolog_novice = 1, ecolog_experienced = 2, ecolog_veteran = 3, ecolog_master = 4, dolg_novice = 1, dolg_experienced = 2, dolg_veteran = 3, dolg_master = 4, freedom_novice = 1, freedom_experienced = 2, freedom_veteran = 3, freedom_master = 4, bandit_novice = 1, bandit_experienced = 2, bandit_veteran = 3, bandit_master = 4, zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4, tushkano_weak = 1, flesh_weak = 1, flesh_normal = 2, flesh_strong = 3, boar_weak = 1, boar_normal = 2, boar_strong = 3, dog_weak = 1, dog_normal = 2, dog_strong = 3, pseudodog_weak = 1, pseudodog_normal = 2, pseudodog_strong = 3, psy_dog_weak = 1, psy_dog_normal = 2, psy_dog_strong = 3, snork_weak = 2, snork_normal = 3, snork_strong = 4, poltergeist_weak = 2, pseudo_gigant_weak = 4, controller_weak = 4, bloodsucker_weak = 1, bloodsucker_normal = 2, bloodsucker_strong = 3, m_burer_e = 1 } local sect_alias = { tushkano_normal = "tushkano_weak", tushkano_strong = "tushkano_weak", poltergeist_normal = "poltergeist_weak", poltergeist_strong = "poltergeist_weak", pseudo_gigant_normal = "pseudo_gigant_weak", pseudo_gigant_strong = "pseudo_gigant_weak", controller_normal = "controller_weak", controller_strong = "controller_weak", psy_dog_weak = "psy_dog", psy_dog_normal = "psy_dog", psy_dog_strong = "psy_dog", rad_psy_dog = "psy_dog" } monster_classes = { [clsid.tushkano_s ] = "tushkano", [clsid.flesh_s ] = "flesh", [clsid.boar_s ] = "boar", [clsid.dog_s ] = "dog", [clsid.pseudodog_s ] = "pseudodog", [clsid.psy_dog_s ] = "psy_dog", [clsid.psy_dog_phantom_s] = "NIL", [clsid.snork_s ] = "snork", [clsid.poltergeist_s ] = "poltergeist", [clsid.gigant_s ] = "pseudo_gigant", [clsid.controller_s ] = "controller", [clsid.bloodsucker_s ] = "bloodsucker" [clsid.burer_s ] = "burer" } function addKillCount(npc) local props, sect = getNpcType(npc) if props == nil then return end local sect_name if sect_alias[sect] ~= nil then sect_name = sect_alias[sect] else sect_name = sect end if killCountProps[sect_name] == nil then --' print_table(sect_alias) --' abort("Statistic ERROR: required section [%s] not present, based [%s]", tostring(sect_name), tostring(sect)) return end actor_stats.add_points(props, sect_name, 1, killCountProps[sect_name]) db.actor:set_character_rank(db.actor:character_rank() + killCountProps[sect_name]) end function getNpcType(npc) if IsStalker(npc) then local community = "neutral" if npc:character_community() == "monolith" then community = "monolith" elseif npc:character_community() == "military" then community = "military" elseif npc:character_community() == "killer" then community = "killer" elseif npc:character_community() == "ecolog" then community = "ecolog" elseif npc:character_community() == "dolg" then community = "dolg" elseif npc:character_community() == "freedom" then community = "freedom" elseif npc:character_community() == "bandit" then community = "bandit" elseif npc:character_community() == "zombied" then community = "zombied" end local rank = ranks.get_obj_rank_name(npc) return "stalkerkills", community.."_"..rank else local community = monster_classes[get_clsid(npc)] if community == nil then abort("Statistic ERROR: cannot find monstr class for [%s]", npc:name()) end if community == "NIL" then return nil,nil end local rank = ranks.get_obj_rank_name(npc) return "monsterkills", community.."_"..rank end end дальше вот так gamedata\scripts\class_registrator.script cs_register (object_factory, "CBurer", "se_monster.se_monster", "SM_BURER", "burer_s") Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 131 Опубликовано 2 марта 3 минуты назад, Pepel сказал: m_burer_e = 1 Вместо этого напиши: burer_weak = 1, burer_normal = 2, burer_strong = 3, Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта Только что, imcrazyhoudini сказал: Вместо этого напиши: burer_weak = 1, burer_normal = 2, burer_strong = 3, я вот пытался burer_weak = 1 написать, но тоже ничего не поменялось. У меня кстати, даже сдк крашенулся, да так, что видеокарта два монитора отправила в сон. Сдк запустился, но сцена - всё черным-черно и вот такой лог. Пойду перезапускать машину. FATAL ERROR [error]Expression : Device lost [error]Function : S:\sources\Editors\ECore\Editor\Device.cpp [error]File : S:\sources\Editors\ECore\Editor\Device.cpp [error]Line : 337 [error]Description : HW.pDevice->Present( NULL, NULL, NULL, NULL ) Дополнено 42 минуты спустя 46 минут назад, imcrazyhoudini сказал: Вместо этого напиши: burer_weak = 1, burer_normal = 2, burer_strong = 3, всё равно пишет Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...s\xray_sdk_0.4\gamedata\scripts\sim_statistic.script:12: attempt to index global 'xr_statistic' (a nil value) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 299 Опубликовано 2 марта (изменено) del Изменено 23 июня пользователем oleg19966 Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта oleg19966 что ты братишка агрессируешь? Не видишь я новенький? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NachtSpinne 33 Опубликовано 2 марта (изменено) Добрый день. Такой вопрос интересный...часа 2 не могу решить проблему спавна ГГ. All.spawn распаковал, секцию с одного alife перенес на локацию другого alife, прописал координаты. Все равно спавнится в родном месте. Может ли быть какая то проблема, связанная с тем что я снёс весь оригинальный сюжет? Изменено 2 марта пользователем NachtSpinne Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта 7 минут назад, NachtSpinne сказал: Добрый день. Такой вопрос интересный...часа 2 не могу решить проблему спавна ГГ. All.spawn распаковал, секцию с одного alife перенес на локацию другого alife, прописал координаты. Все равно спавнится в родном месте. Может ли быть какая то проблема, связанная с тем что я снёс весь оригинальный сюжет? не понял причем тут alife. У всех спавн-элементов координаты прописаны в определенных секциях. Ты что-то другое поменял. Дополнено 3 минуты спустя просто пример из секции своего урока. Здесь прописан сталкер которого я делал через all.spawn [871] ; cse_abstract properties section_name = stalker ; name = esc_stream6oy ; position = -239, -20, -161 ; место появления на карте. можно целые числа. direction = 0, 0, 0 ; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NachtSpinne 33 Опубликовано 2 марта 11 минут назад, Pepel сказал: не понял причем тут alife. У всех спавн-элементов координаты прописаны в определенных секциях. Ты что-то другое поменял. Дополнено 3 минуты спустя просто пример из секции своего урока. Здесь прописан сталкер которого я делал через all.spawn [871] ; cse_abstract properties section_name = stalker ; name = esc_stream6oy ; position = -239, -20, -161 ; место появления на карте. можно целые числа. direction = 0, 0, 0 ; Странно, я нашел урок о том, что типа надо перенести секцию спавна игрока с alife кордона, на alife своей локации, и дополнительно прописать свои координаты...сейчас попробую не переносить ничего, а просто забить координаты. Дополнено 9 минуты спустя Pepel NachtSpinne не, не помогло. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта 6 минут назад, NachtSpinne сказал: Странно, я нашел урок о том, что типа надо перенести секцию спавна игрока с alife кордона, на alife своей локации, и дополнительно прописать свои координаты...сейчас попробую не переносить ничего, а просто забить координаты. Спойлер [63] ; cse_abstract properties section_name = actor name = level_prefix_actor_0001position = -246.726303100586, -24.7932605743408, -134.433868408203direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974 s_flags = 0x29 version = 118 script_version = 6 ; cse_alife_object propertiesgame_vertex_id = 4 distance = 0.699999988079071level_vertex_id = 11713 object_flags = 0xffffffbf custom_data = <<END [dont_spawn_character_supplies] [spawn] wpn_binoc detector_simple novice_outfit device_torch END ; cse_visual properties visual_name = actors\hero\stalker_novice ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 dynamic_out_restrictions = dynamic_in_restrictions = ; cse_alife_trader_abstract properties money = 40 trader_flags = 0 character_profile = actor ; cse_ph_skeleton properties ; cse_alife_creature_actor properties upd:health = 1 upd:timestamp = 0x75732029 upd:creature_flags = 0x70upd:position = -246.726303100586, -24.7932605743408, -134.433868408203 upd:o_torso = -1.39625442028046, 0.00431653670966625, 0 upd:actor_state = 0xd20 upd:actor_weapon = 110 Зеленым в первом варианте позиция меченого. В upd:position дублируется значение. Я не знаю за что этот параметр отвечает (возможно кто-нибудь ответит что это из более опытных), просто сделай их одинаковыми. Другим цветом отметил game и level vertex, тут тоже значения свои установи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NachtSpinne 33 Опубликовано 2 марта 10 минут назад, Pepel сказал: Вот оригинальная секция из alife_l01_escape.ltx (Скрыть контент) [63] ; cse_abstract properties section_name = actor name = level_prefix_actor_0001position = -246.726303100586, -24.7932605743408, -134.433868408203direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974 s_flags = 0x29 version = 118 script_version = 6 ; cse_alife_object propertiesgame_vertex_id = 4 distance = 0.699999988079071level_vertex_id = 11713 object_flags = 0xffffffbf custom_data = <<END [dont_spawn_character_supplies] [spawn] wpn_binoc detector_simple novice_outfit device_torch END ; cse_visual properties visual_name = actors\hero\stalker_novice ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 dynamic_out_restrictions = dynamic_in_restrictions = ; cse_alife_trader_abstract properties money = 40 trader_flags = 0 character_profile = actor ; cse_ph_skeleton properties ; cse_alife_creature_actor properties upd:health = 1 upd:timestamp = 0x75732029 upd:creature_flags = 0x70upd:position = -246.726303100586, -24.7932605743408, -134.433868408203 upd:o_torso = -1.39625442028046, 0.00431653670966625, 0 upd:actor_state = 0xd20 upd:actor_weapon = 110 Зеленым в первом варианте позиция меченого. В upd:position дублируется значение. Я не знаю за что этот параметр отвечает (возможно кто-нибудь ответит что это из более опытных), просто сделай их одинаковыми. Другим цветом отметил game и level vertex, тут тоже значения свои установи. Я это все сделал. Кроме жёлтого. Это же вроде позиционирование актора в пространстве, если не ошибаюсь. Их можно не трогать или нужно? Если нужно, то я их не менял, так как вообще хз откуда значения брать для жёлтого. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 2 марта 5 минут назад, NachtSpinne сказал: Я это все сделал. Кроме жёлтого. Это же вроде позиционирование актора в пространстве, если не ошибаюсь. Их можно не трогать или нужно? Если нужно, то я их не менял, так как вообще хз откуда значения брать для жёлтого. я прикручивал скрипт который снимал координаты через esc-титры. Там все координаты выводились на экран когда вернешься в игру. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
stalkersof 219 Опубликовано 2 марта Вот это обязательно менять game_vertex_id = 4 level_vertex_id = 11713 А вот это как раз и отвечает за положение актора вернее его ориентации взгляда. Вернее поворота гг при спавне. direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974 Позишен информер в помощь. 1 1 Freeplay Graphic Mod(FGM) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NachtSpinne 33 Опубликовано 2 марта 36 минут назад, stalkersof сказал: Вот это обязательно менять game_vertex_id = 4 level_vertex_id = 11713 А вот это как раз и отвечает за положение актора вернее его ориентации взгляда. Вернее поворота гг при спавне. direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974 Позишен информер в помощь. Все, спасибо. Позиционер вещь, а то я через консоль координаты писал. Но там не вся инфа и одна из координат почему то вообще не то значение показывало. Все получилось, можно продолжать идти дальше. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hunter 2 525 Опубликовано 2 марта Посоны, как убрать тряску камеры на ЧАЭС-2? Хотя бы просто визуально, чтобы ГГ не трясся) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 3 марта Три дня и три ночи я вот уже не могу добавить себе крысу. Тренился на бюрере по уроку ниже Спойлер в итоге - как был вылет так он и остался. забил на бюрера, решил попробовать восстановить крысу - копировал, исправлял, копировал, снова исправлял. Как была ошибка "Can't create entity:m_rat_e", так она и осталась. Что посоветуете господа хорошие? Дополнено 1 минуту спустя ПЫС: добавлял из скаченного мода. Так и назывался мод на тч "Крысы". Дополнено 16 минуты спустя Изменил класс в настройках на настроки тушканчика, ошибка исчезла. В игре пока не пробовал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 921 Опубликовано 3 марта Господа, как заспавнить труп НПС вне аи-сетки. Отключал использования аи сетки в сдк - нет толку. Спавнил скриптом труп - нет толку. Может знает кто как починить этот недуг? Движок ОГСР. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
stalkersof 219 Опубликовано 3 марта 9 часов назад, Hunter сказал: Посоны, как убрать тряску камеры на ЧАЭС-2? Хотя бы просто визуально, чтобы ГГ не трясся) Вот тут посмотри. Я сам отключал но это было давно не помню уже как. Но вроде бы статья толковая. Это все надо сделать для фриплея. Там в скрипте условие добавляется по которому действия не происходят. В частности если выдан инфопоршень то условие не выполняется. http://stalkerin.gameru.net/wiki/index.php?title=SoC._Создаем_фриплей_за_пару-тройку_минут.#.D0.97.D0.B5.D0.BC.D0.BB.D0.B5.D1.82.D1.80.D1.8F.D1.81.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.BF.D0.BE.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.BE.D0.B2 Freeplay Graphic Mod(FGM) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 349 Опубликовано 3 марта Pepel 2 часа назад, Pepel сказал: Изменил класс в настройках на настроки тушканчика, ошибка исчезла. В игре пока не пробовал. Да это и так понятно. ТЕБЕ ВСЕ ГОВОРЯТ УЖЕ ПОМЕНЯЙ КЛАСС. Тебе взять просто буквально и поменять одну строчку С class = AI_RAT_G Поменять на class = SM_CAT_S Дополнено 1 минуту спустя Pepel 2 часа назад, Pepel сказал: Три дня и три ночи я вот уже не могу добавить себе крысу. Тренился на бюрере по уроку ниже Восстановление вырезанных монстров: зомби, бюрер, ползающий полтергейст (Показать контент) в итоге - как был вылет так он и остался. забил на бюрера, решил попробовать восстановить крысу - копировал, исправлял, копировал, снова исправлял. Как была ошибка "Can't create entity:m_rat_e", так она и осталась. Что посоветуете господа хорошие? Дополнено 1 минуту спустя ПЫС: добавлял из скаченного мода. Так и назывался мод на тч "Крысы". Дополнено 16 минуты спустя Изменил класс в настройках на настройки тушканчика, ошибка исчезла. В игре пока не пробовал. ... Тебе надо лимит поставить на сообщение... Или хотя бы в личку писать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NachtSpinne 33 Опубликовано 3 марта Господа. Уже три часа как сижу и пытаюсь адекватное решение следующей проблеме найти. Попробовал создать нпс, все уроки которые в сети были, не прям все, но много просмотрел. В конфиге все сделал, в спавне прописал координаты, а оно мне еррор, жалуется на моего непися, что то не видит. Я к чему вообще...может кто подскажет адекватное пояснение, как создать нпс и как запихнуть его на локу? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 349 Опубликовано 3 марта NachtSpinne 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pepel 80 Опубликовано 3 марта (изменено) NachtSpinne тутор от меня. былдо создано 3 нпс по этому тутору. Все работали корректно Спойлер Просмотр данного файла желателен через программу Notepad++ для корректного отображения скриптов и конфигов. <1. Снятие координата в которой заспавнится нпс> Функция спавна имеет вид alife():create(section,position,levelvertex,gamevertex) Где: section - имя того/чего спавним position,levelvertex,gamevertex - координаты, позиция вершины обьекта, и сектора карты. Заходим, предварительно распаковав, в каталог gamedata/scripts/, в файле ui_main_menu.script в конце дописываем: function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end Теперь в игре идём на то место (или ногами или деморекордом), где будет спавниться обьект, выходим в меню игры, и жмём на клавишу СОЗДАТЕЛИ или ТИТРЫ (CREDITS) - соответственно нашему взоры не предстаёт никакой список создателей, а мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Скриним или записываем координаты. Спавнить нпс мы будем рядом с деревней новичков (справа от выхода из бункера Сидоровича) возле кладбища. В нашем случае: position= -245, -19, -163 level_vertex= 12032 game_vertex= 47 Примечание через ~вводим demo_record и просматриваем в режиме бога всё что происходит вокруг Задание: снять координаты для 10 новых сталкеров в разных точках карты (escape) </конец обзаца> <2. Персонаж.> Для создания персонажа необходимо создать его профиль, описание и спаун-секцию. 2.1 Создание профиля персонажа Чтобы создать профиль персонажа, необходимо в файл «gamedata\config\gameplay\npc_profile.xml» добавить строки: <character id="esc_grave1_stalker_leader"> ;идентификатор профиля <class>esc_grave1_stalker_leader</class> ;идентификатор класса </character> </2> <Идентификатор профиля конструируется как> <префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>, например, zat_b7_stalker_raider_leader. Во избежание путаницы, класс персонажа указывается такой же, как идентификатор профиля. Класс персонажа используется для связи профиля и описания персонажа. </конец обзаца> <2.2. Создание описания персонажа> С одним профилем персонажа может быть ассоциировано несколько описаний персонажей. Это позволяет, добавив в игру несколько персонажей с одним и тем же профилем, получить в результате персонажей с различным набором вещей, разным внешним видом (visual), и т.д. Для того чтобы создать описание персонажа, необходимо в файл «gamedata\config\gameplay\character_desc_имя_уровня.xml» добавить следующую конструкцию: <!---------------------------------------esc_stream6oy------------------------------------------------> ;комментарий. в данном случае вписан краткое название/имя персонажа. <specific_character id="esc_grave1_stalker_leader" team_default = "1"> ;идентификатор описания. Во избежание путаницы идентификатор описания: a) аналогичен идентификаторам класса и профиля в случае, если с профилем ассоциируется только одно описание; b) конструируется как <дентификатор_профиля>_ _default_<номер> (начиная с нуля), если с профилем ассоциируется несколько описаний. <name>@Stream6oy</name> ;идентификатор строки имени. <icon>ui_npc_u_stalker_neytral_balon_1</icon> ;идентификатор текстуры иконки. <map_icon x="1" y="0"></map_icon> ;расположение иконки по оси координат х/у. <bio>esc_wolf_bio</bio> ;идентификатор строки биографии (можно любое. пысы отказались от этой фичи, поэтому можно не прописывать. <class>esc_grave1_stalker_leader</class> ;идентификатор класса. <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> ;группировка персонажа. <rank>600</rank> ;ранг. Число, определяющее относительную «крутизну» персонажа:0 - 300 – новичок (novice), 301 - 600 – опытный (experienced), 601 - 900 – ветеран (veteran), 901 - 999 – мастер (master) <reputation>5</reputation> ;репутация. <money min="2" max="256" infinitive="0"/> ;деньги. <visual>actors\neytral\stalker_prizrak</visual> ;внешний вид. Путь к файлу «*.ogf» от папки «gamedata\meshes», содержащему внешний вид (visual) персонажа. Указывается без начальной «обратной косой», без точки и без расширения файла.От внешнего вида зависит бронированность персонажа. <snd_config>characters_voice\human_01\stalker\</snd_config> ;папка озвучки. Существует три разных голоса human_01 - молодой, human_02 - более взрослый, human_02 - голос в противогазе <crouch_type>-1</crouch_type> ; <panic_treshold>0</panic_treshold> ; от 0 до 1, сли функция оценки вероятности победы падает ниже указанного порога, то сталкер впадает в панику. сли установить 0 - в панику он впадать вообще не будет. Если ы 1 - то будет бегать от крысы. <supplies> ;то что спавнится в инвенате [spawn] \n ;секция спавна назначенных предметов wpn_bm16 \n ;wpn - оружие ammo_12x70_buck \n ;ammo - партроны #include "gameplay\character_items.xml" ;#include (вероятность "выпадания" предметов из документа character_items.xml) #include "gameplay\character_food.xml" ;#include (вероятность "выпадания" предметов из документа character_food.xml) #include "gameplay\character_drugs.xml" ;#include (вероятность "выпадания" предметов из документа character_drugs.xml) </supplies> #include "gameplay\character_criticals_4.xml" ;#include (вероятность "выпадания" предметов из документа character_items.xml) <start_dialog>hello_dialog</start_dialog> ;Стартовый диалог персонажа. Более подробно в описании диалогов. </specific_character> </конец обзаца> <3. Прописывание в секцию персонажа > gamedata\config\creatures\spawn_sections.ltx ;--------имяуровня-------------- ;чтобы отделить одних сталкеров от других ;--------имягруппировки------------ ;чтобы точно понимать кто и где состоит [esc_grave1_stalker_leader]:stalker $spawn = "respawn\esc_grave1_stalker_leader" character_profile = esc_grave1_stalker_leader spec_rank = novice community = stalker </конец обзаца> <4. Назначение файла с логикой поведения нпс> Создаем по адресу gamedata\config\scripts файл с логикой в формате <префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>.ltx В нашем случае esc_grave1_stalker_leader.ltx и лежит он в папке esc Пример логики №1 (простой) Пример логики при которой нпс находится на точке в которую его поставили. После прописывания файла в аллспавн логику можно изменить. [logic] ;секция логики. здесь прописаны действия которые в последующих секциях выполняет нпс active = remark@start ;первая фцнкция которую выполнит нпс. remark (замечание или реакция с которой начинается логика нпс) отправляет через домен (@) на старт, т.е. выполняет какое-то действие (см. секцию [remark@start]) combat_ignore = combat_ignore ;логика боя. расписана в секции [combat_ignore] danger = danger_condition ; [remark@start] anim = wait ;анимация ремарка, по умолчанию wait (ожидание) target = nil ;цель (направление взгляда, куда смотрит) = в пустоту (nil) [combat_ignore] ;секция боя combat_ignore_cond = always ; [danger_condition] ;условия реакции на опасность ignore_distance = 0 ;игнорирование дистанции на опасность. в нашем случае - ноль. Расстояние в метрах. ignore_distance_corpse = 0 ; Пример логики №2 (более сложный) [logic] ; active = walker@start ; [walker@start] ; path_walk = stream6oy_walk ;stream6oy_walk - данные связываются с командой прописанной в файле way_l01_escape.ltx all.spawn В файле way_l01_escape.ltx (all.spawn) прописывется секция путей по которой сталкер будет ходить непрерывно возвращаясь [stream6oy_walk] ;секция ссылается на код прописанный в доке с логикой points = p0,p1 ;все пути (поинты) p0:name = name00 ;название нулевого поинта p0:position = -239, -20, -161 ;координаты нулевого поинта p0:game_vertex_id = 47 ;гейм-вертексы нулевого поинта p0:level_vertex_id = 15547 ;левел-вертексфы нулевого поинта p0:links = p1(1) ;переход (линия) от нулевого поинта к следующей точке (в нашем случае предыдущему поинту - p1) p1:name = name01 p1:position = -255, -16, -174 p1:game_vertex_id = 41 p1:level_vertex_id = 7836 p1:links = p2(2) ;переход/возврат к следующей/предыдущей точке Если в строке задать через запятую точки как показано в примере, то нпс будет каждый раз возвращаясь в р0 (нулевой поинт/точку) отправляться в очередную точку. p[0]:links = p1(1),p2(1),p3(1) Нужно заметить, что после равенства не нужно прописывать сам поинт из которого следует нпс. Задание: задать 5 разным персонажам логику из 1 примера и 5 из примера 1 </конец обзаца> <5. Прописываем нпс в конфиги> gamedata\config\game_story_ids.ltx В самый конец вписываем 6001 = "esc_grave1_stalker_leader" ;порядковый номер и профиль </конец обзаца> <6. Прописывание в all.spawn> [871] ;номер секции в которой будет нпс. если она будет повторяться, то игра вылетит. ; cse_abstract properties section_name = stalker ; name = esc_stream6oy ; position = -239, -20, -161 ; место появления на карте. можно целые числа. direction = 0, 0, 0 ; ; cse_alife_trader_abstract properties money = 256 ; character_profile = esc_grave1_stalker_leader ; ; cse_alife_object properties game_vertex_id = 47 ;точка появления в игре distance = 5 level_vertex_id = 15547 ;точка появления на уровне object_flags = 0xffffffbf custom_data = <<END [logic] ;секция с логикой cfg = scripts\esc_grave1_stalker_leader.ltx ;файл с логикой в скриптах который можно менять даже после компиляции all.spawn. НО только нпс из примера 1! [smart_terrains] none = true END story_id = 6001 ;(в конец) прописываем нпс в файл gamedata\config\game_story_ids.ltx ; cse_visual properties visual_name = actors\neytral\stalker_prizrak ;визуал. в нашем случае визуал призрака ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 dynamic_out_restrictions = dynamic_in_restrictions = ; cse_alife_monster_abstract properties ; cse_alife_human_abstract properties equipment_preferences = 0, 2, 0, 2, 0 main_weapon_preferences = 1, 2, 2, 0 smart_terrain_id = 65535 ; cse_ph_skeleton properties ; se_stalker properties upd:health = 1 upd:timestamp = 0x302e3020 upd:creature_flags = 0x36 upd:position = -239, -20, -161 ;еще раз прописываем позицию место появления на карте. можно целые числа. upd:o_torso = 0, 0, 0 ; upd:g_squad = 1 upd:g_group = 5 ; cse_alife_human_stalker properties upd:start_dialog = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; *Заметка: в секции [63] находится гг. Его можно переместить поменяв координаты в соответсвующих секциях описанных в изложенном материале. Если нужно поставить путь, то переходим к 7му пункту Задание по пункту 4 выполнить! </конец обзаца> <7.Логика> Углубленное изучение логики В секции all.spawn содержится строчка которая уводит на логику в файл esc_grave1_stalker_leader.ltx (gamedata\config\scripts) [logic] ;секция с логикой cfg = scripts\esc_grave1_stalker_leader.ltx ;папка где лежал все скрипты с логикой к уровню на кордоне. *Удивительно что остальные файлы с логикой пысы додумались расфасовать по подпапкам В котором содержится код с секцией логики. Скрипт logic управляет переключением схем. В customdata любого персонажа (кроме свободных) должна присутствовать сеция [logic]. Функции, на которые ссылается секция [logic] должны находится в файлах \gamedata\scripts\xr_effects.script или \gamedata\scripts\xr_conditions.script. В секции должно присутствовать одно из полей: active = активная схема, запускающаяся первой. после = обычно следует схема walker (ходок). cfg = имя_ltx_файла_с_настройками Если задано поле cfg, то в качестве настроек персонажа будет использовано содержимое указанного файла. Пример. Настройки простого walker-а: [logic] active = walker [walker] path_walk = walk1 ;путь движения нпс. если задана одна точка пути, то нпс не будет двигаться до определенных условий. в случае опасности, в прежнюю точку не вернется. path_look = look1 ;направление взгляда нпс. если задана одна точка пути, то нпс не будет двигаться до определенных условий. в случае опасности, в прежнюю точку не вернется. иные функции - анимация в стоячем положении, анимации в движущемся положении расматривается в пункте 7.1 [logic] ;секция логики active = walker@start ;что будет выполняться в нашем случае черезе домен (собака) прописано дейсвие которое будет выполняться [walker@start] ;действие path_walk = stream6oy_walk ;путь = пути в файле way_l01_escape.ltx (all.spawn) секция [stream6oy_walk] ===================================== Простая логика при которой нпс будет стоять на одном месте. Если его что-то спугнет, то он на точку не вернется. [logic] active = remark@start combat_ignore = combat_ignore danger = danger_condition [remark@start] anim = wait target = nil [combat_ignore] combat_ignore_cond = always [danger_condition] ignore_distance = 0 ignore_distance_corpse = 0 <7.1. Работа с WayPoint`ами > Иногда одной логики бывает не достаточно чтобы персонажи вели себя в виртуальном мире естественно. Если логика отвечает за события и реакции на события и раздражители, то данная тема скорее дополнит нпс характеристиками которые сделает поведение более естественным. ВНИМАНИЕ! ФЛАГИ НЕ БУДУТ РАБОТАТЬ если: 1. после строчки "p0:name = wp00|flag1|flag2" с прописанными флагами в секции [look] не прописать код "p0:flags = 0x1" 2. после строчки "p0:name = wp00|flag1|flag2" с прописанными флагами [look] прописать код "p0:flags = 0x1" то тоже ничего не сработает. 3. Игра вылетит если в секции [walk] после строчки "p0:name = wp00|flag1|flag2" был прописан код "p0:flags = 0x1", но не был прописан в секции [look]. 4. после "p0:name = wp00|flag1|flag2" не будет "p0:flags = 0x1", то нпс просто ходит покругу, однако, если в секции [walk] прописать флаг анимации, то она будет работать. [bar_a1_proveren_1_walk] points = p0,p1,p2 *p0:name = wp00 *p0:flags = 0x1 p0:position = 115.718330383301,-5.30424022674561,12.8380241394043 p0:game_vertex_id = 1005 p0:level_vertex_id = 33757 p0:links = p1(1),p2(1) *p1:name = wp01 *p1:flags = 0x2 p1:position = 114.466262817383,-5.30527496337891,19.9635791778564 p1:game_vertex_id = 1005 p1:level_vertex_id = 33621 p1:links = p0(1),p2(1) *p2:name = wp02 *p2:flags = 0x3 p2:position = 114.42066192627,-5.30447292327881,17.8189525604248 p2:game_vertex_id = 1005 p2:level_vertex_id = 33491 p2:links = p0(1),p1(1) [bar_a1_proveren_1_look] points = p0,p1,p2 *p0:name = wp00|a=choose|t=40000 *p0:flags = 0x1 p0:position = 115.913108825684,-5.30524301528931,11.6880483627319 p0:game_vertex_id = 934 p0:level_vertex_id = 76465 *p1:name = wp01|a=choose|t=40000 *p1:flags = 0x2 p1:position = 113.710746765137,-5.30527496337891,19.9635791778564 p1:game_vertex_id = 1005 p1:level_vertex_id = 33494 *p2:name = wp02|a=ward|t=10000 *p2:flags = 0x3 p2:position = 113.741851806641,-5.30447292327881,17.8189525604248 p2:game_vertex_id = 1005 p2:level_vertex_id = 33492 </конец обзаца> <8.1. Анимация > </конец обзаца> <> </конец обзаца> Секции нпс в allspawn на кордоне [93] esc_lager1 [98] esc_lager6 [94] esc_lager2 [95] esc_lager3 [97] esc_lager5 [100] esc_wolf [99] esc_lager7 [96] esc_lager4 Дополнено 5 минуты спустя Stalkervernite я поменял класс, скопировал секции настроек из мода файла m_rat.ltx и вроде даже победил все основные ошибки. Но вот последнюю ошибку никак не могу победить. Выглядит она вот так Expression : count != 0 Function : CControlAnimationBase::UpdateAnimCount File : E:\stalker\sources\trunk\xr_3da\xrGame\ai\Monsters\control_animation_base.cpp Line : 426 Description : Error! No animation: stand_idle_ for monster l01_escape_m_rat_e О боги моддинга, что не так? Все анимации есть, крыса в АЕ нормально работает. Где-то может быть прописан этот самый stand_idle_ который может быть логично будет удалить? Изменено 3 марта пользователем Pepel Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 299 Опубликовано 3 марта (изменено) Paracetamol знаю как можно в оригинале через AC/DC. Только что проверил - Волк спавнится на крыше как и положено. Не знаю, сработает ли через СДК и на ОГСР движке. Напиши в личку, если надо. Спойлер Изменено 3 марта пользователем oleg19966 Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 349 Опубликовано 3 марта Pepel Не найдена анимация stand_idle_ Тебе нужно взять анимацию крысы самой. Щас скину. Дополнено 0 минут спустя rat_anim_3m_soc.ogfrat_animation.omfrat_anim_3m_soc.omf Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты