Модостроение. Спавн и логика
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Code Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.06.2016, 09:31 | Сообщение # 1306 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| men_stalker,
Посмотри, как прописана эта переменная terrain у обычных сталкеров. И сделай так же.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
men_stalker | Дата: Чт, 16.06.2016, 11:15 | Сообщение # 1307 |
Инженер «Свободы»
Свобода
Сообщений: 184
| sergej5500,[cut=вот как прописано в оригинале] [stalker_terrain] 255,000,255,255
[sakharov_terrain] 255,001,255,255
[sim_smart_1] 255,002,255,255 [sim_smart_2] 255,003,255,255 [sim_smart_3] 255,004,255,255 [sim_smart_4] 255,005,255,255 [sim_smart_5] 255,006,255,255 [sim_smart_6] 255,007,255,255 [sim_smart_7] 255,008,255,255 [sim_smart_8] 255,009,255,255 [sim_smart_base] 255,010,255,255[/cut] Пытался так [stalker_terrain] 255,000,255,255 и так [trader_terrain] 255,000,255,255 Тот же эфект
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.06.2016, 11:21 | Сообщение # 1308 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| men_stalker,
Переменная, которой нет, называется terrain. Она должна быть прописана в секции stalker в файле m_stalker в configs\creatures. Прочие секции сталкеров берут её оттуда. Посмотри, чему она равна и добавь Сидоровичу.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
men_stalker | Дата: Чт, 16.06.2016, 15:02 | Сообщение # 1309 |
Инженер «Свободы»
Свобода
Сообщений: 184
| sergej5500, прописывал и так terrain= 255,255,255,255,0,1 и так terrain= stalker_terrain и вместе. толк один и тот же.
[cut=m_sidor];----------------------------------------------------------------------------------- ;Trader ;----------------------------------------------------------------------------------- [m_trader] GroupControlSection = spawn_group $spawn = "monsters\trader" ; option for Level Editor $prefetch = 5 cform = skeleton class = AI_TRADE_S class = AI_TRD_S visual = actors\stalker_trader\stalker_trader_1.ogf rank = 1 script_binding = bind_trader.bind ;format section{,section},count,min_factor,max_factor, ... ;supplies = m_bread,50,0.5,1.5, CANNED,30,0.5,1.5, MEDI_KIT,7,0,0.7, DETECTOR_SIMPLE,3,0,0.6, WPN_BINOC,1,0,0.70, WPN_FORT,WPN_PM,3,0.3,0.8, WPN_LR300,WPN_AK47,2,0.3,0.65, WPN_SVD,1,0,0.53, WPN_RPG7,1,0,0.53, grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62х54_fmj,10,0,1.0, ammo_og-7b,10,0,1.0 supplies = grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62x54_ap,10,0,1.0, ammo_og-7b,10,0,1.0 max_item_mass = 10000.0 ;---EVALUATION FUNCTIONS---------------------------------------------- ef_creature_type = 1 ; option for evaluation functions ef_weapon_type = 1
scheduled = on ; option for ALife Simulator Human = off ; option for ALife Simulator Health = 40 ; option for ALife Simulator MinSpeed = 1.0 ; option for ALife Simulator MaxSpeed = 1.5 ; option for ALife Simulator going_speed = 1.0 ; option for ALife Simulator ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.35, 0.9, 0.35 ph_box1_center = 0.0, 0.6, 0.0 ph_box1_size = 0.40, 0.6, 0.40 ph_crash_speed_min = 8;16 ph_crash_speed_max = 16;30 ph_mass = 170. cost = 1
Health = 100.0 money = 1000000 immunities_sect = trader_immunities condition_sect = trader_condition
;attach params attachable_items =
;species of monster species = human
[trader_foot_bones] front_left = bip01_l_foot front_right = bip01_r_foot
[trader_step_manager] ;order: left, right ;-------------------------------------------------------------------------- ;animation Cycles | time1 | power1 | time2 | power2 | ;-------------------------------------------------------------------------- [barman_movement_speeds] ;barman can't crouch or run ; danger ;; crouch ;;; walk danger_crouch_walk_forward = 0.8 danger_crouch_walk_backward = 0.575 danger_crouch_walk_left = 0.8 danger_crouch_walk_right = 0.8 ;;; run danger_crouch_run_forward = 2.0 danger_crouch_run_backward = 1.1 danger_crouch_run_left = 2.0 danger_crouch_run_right = 2.0 ;; stand ;;; walk danger_stand_walk_forward = 1.2 danger_stand_walk_backward = 1.2 danger_stand_walk_left = 1.2 danger_stand_walk_right = 1.2 ;;; run danger_stand_run_forward = 5.0 danger_stand_run_backward = 1.5 danger_stand_run_left = 5.0 danger_stand_run_right = 5.0 ; free ;; stand ;;; forward free_stand_walk_forward = 0.85 free_stand_run_forward = 2.5 ; panic ;; stand ;;; run ;;;; forward panic_stand_run_forward = 6.5 terrain = 255,255,255,255,0,1 ;terrain = stalker_terrain[/cut]
[cut=m_stalker][stalker_foot_bones] front_left = bip01_l_foot front_right = bip01_r_foot
[stalker_step_manager] ; order: left, right ;-------------------------------------------------------------------------- ; animation Cycles | time1 | power1 | time2 | power2 | ;-------------------------------------------------------------------------- dmg_norm_escape_0 = 1, 0.2, 1.3, 0.65, 1.3
dmg_norm_walk_fwd_1 = 1, 0.2, 0.2, 0.65, 0.2 dmg_norm_run_fwd_1 = 1, 0.2, 1, 0.65, 1
dmg_norm_walk_fwd_0 = 1, 0.2, 0.2, 0.65, 0.2 dmg_norm_walk_back_0 = 1, 0.2, 0.2, 0.65, 0.2 dmg_norm_walk_ls_0 = 1, 0.2, 0.2, 0.65, 0.2 dmg_norm_walk_rs_0 = 1, 0.2, 0.2, 0.65, 0.2
dmg_norm_run_fwd_0 = 1, 0.2, 1, 0.65, 1 dmg_norm_run_back_0 = 1, 0.2, 1, 0.65, 1 dmg_norm_run_ls_0 = 1, 0.2, 1, 0.65, 1 dmg_norm_run_rs_0 = 1, 0.2, 1, 0.65, 1
dmg_norm_turn_left_0 = 1, 0.2, 0.2, 0.65, 0.2 dmg_norm_turn_right_0 = 1, 0.2, 0.2, 0.65, 0.2
norm_escape_0 = 1, 0.2, 1.1, 0.65, 1.1 norm_escape_00 = 1, 0.2, 1.1, 0.65, 1.1 norm_escape_00 = 1, 0.2, 1.1, 0.65, 1.1
norm_walk_fwd_1 = 1, 0.2, 0.25, 0.65, 0.25 norm_jump_end = 1, 0.2, 1.2, 0.21, 1.2
norm_walk_fwd_0 = 1, 0.2, 0.25, 0.65, 0.25 norm_walk_back_0 = 1, 0.2, 0.25, 0.65, 0.25 norm_walk_ls_0 = 1, 0.2, 0.25, 0.65, 0.25 norm_walk_rs_0 = 1, 0.2, 0.25, 0.65, 0.25
norm_run_fwd_0 = 1, 0.2, 0.9, 0.65, 0.9 norm_run_back_0 = 1, 0.2, 0.8, 0.65, 0.8 norm_run_ls_0 = 1, 0.2, 0.8, 0.65, 0.8 norm_run_rs_0 = 1, 0.2, 0.8, 0.65, 0.8
norm_run_fwd_1 = 1, 0.2, 0.9, 0.65, 0.9 norm_turn_left_1 = 1, 0.2, 0.2, 0.65, 0.2 norm_turn_right_1 = 1, 0.2, 0.2, 0.65, 0.2
norm_turn_left_0 = 1, 0.2, 0.2, 0.65, 0.2 norm_turn_right_0 = 1, 0.2, 0.2, 0.65, 0.2
cr_walk_fwd_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_walk_back_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_walk_ls_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_walk_rs_0 = 1, 0.2, 0.1, 0.65, 0.1
cr_run_fwd_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_run_back_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_run_ls_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_run_rs_0 = 1, 0.2, 0.1, 0.65, 0.1
cr_turn_left_0 = 1, 0.2, 0.1, 0.65, 0.1 cr_turn_right_0 = 1, 0.2, 0.1, 0.65, 0.1
cl_run_back_0 = 1, 0.2, 1, 0.4, 1 cl_run_fwd_0 = 1, 0.2, 1, 0.4, 1
; ЗНАЧЕНИЯ visibility_threshold ДОЛЖНЫ БЫТЬ РАВНЫ для денжера и фри, ; иначе возникают артефакты с потерей видимости при переходе от денжера во фри. [stalker_vision_free] min_view_distance = 0.4 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 0.8 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 80.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.1 time_quant = 0.005 decrease_value = 0.1 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 1.0 ;0.5 luminocity_factor = 0.8 ;0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.4 ; 0.75
[stalker_vision_danger] min_view_distance = 0.7 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 40.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.1 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 1.0 ;0.5 luminocity_factor = 0.8 ;0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.4 ; 0.25
[stalker_sound_perceive] weapon = 2; 0.75; 10 коэффициент усиления приоритета\силы звука item = 0.5; коэффициент усиления приоритета\силы звука npc = 1;1;2 коэффициент усиления приоритета\силы звука anomaly = 0.0; коэффициент усиления приоритета\силы звука world = 0.2; коэффициент усиления приоритета\силы звука
[stalker_damage] default = 1.0, -1, 1.0
bip01_pelvis = 1, 1, 0.3 bip01_spine = 1, 1, 0.8 bip01_spine1 = 1, 1, 0.8 bip01_spine2 = 1, 1, 0.8 bip01_neck = 1, 0, 1.0 bip01_head = 4, 0, 1.0 , 3 eyelid_1 = 4, 0, 1.0 , 3 eye_left = 4, 0, 1.0 , 3 eye_right = 4, 0, 1.0 , 3 jaw_1 = 4, 0, 1.0
bip01_l_clavicle = 1, 10, 0.7 bip01_l_upperarm = 1, 10, 0.6 bip01_l_forearm = 1, 10, 0.5 bip01_l_hand = 0.1, -1, 0.2 bip01_l_finger0 = 0.05, -1, 0.1 bip01_l_finger01 = 0.05, -1, 0.1 bip01_l_finger02 = 0.05, -1, 0.1 bip01_l_finger1 = 0.05, -1, 0.1 bip01_l_finger11 = 0.05, -1, 0.1 bip01_l_finger12 = 0.05, -1, 0.1 bip01_l_finger2 = 0.05, -1, 0.1 bip01_l_finger21 = 0.05, -1, 0.1 bip01_l_finger22 = 0.05, -1, 0.1
bip01_r_clavicle = 1, 8, 0.7 bip01_r_upperarm = 1, 8, 0.6 bip01_r_forearm = 0.1, 8, 0.5 bip01_r_hand = 0.05, -1, 0.2 bip01_r_finger0 = 0.05, -1, 0.1 bip01_r_finger01 = 0.05, -1, 0.1 bip01_r_finger02 = 0.05, -1, 0.1 bip01_r_finger1 = 0.05, -1, 0.1 bip01_r_finger11 = 0.05, -1, 0.1 bip01_r_finger12 = 0.05, -1, 0.1 bip01_r_finger2 = 0.05, -1, 0.1 bip01_r_finger21 = 0.05, -1, 0.1 bip01_r_finger22 = 0.05, -1, 0.1
bip01_l_thigh = 1, 4, 0.5 bip01_l_calf = 1, 4, 0.4 bip01_l_foot = 0.1, 4, 0.3 bip01_l_toe0 = 0.1, -1, 0.2 bip01_r_thigh = 1, 6, 0.5 bip01_r_calf = 1, 6, 0.4 bip01_r_foot = 0.1, 6, 0.3 bip01_r_toe0 = 0.1, -1, 0.2
[critical_wound_head_section] bip01_head eyelid_1 eye_left eye_right jaw_1 bip01_l_hand bip01_l_finger0 bip01_l_finger01 bip01_l_finger02 bip01_l_finger1 bip01_l_finger11 bip01_l_finger12 bip01_l_finger2 bip01_l_finger21 bip01_l_finger22 bip01_r_hand bip01_r_finger0 bip01_r_finger01 bip01_r_finger02 bip01_r_finger1 bip01_r_finger11 bip01_r_finger12 bip01_r_finger2 bip01_r_finger21 bip01_r_finger22 bip01_neck
[critical_wound_torso_section] bip01_pelvis bip01_tail bip01_spine bip01_spine1 bip01_spine2
[critical_wound_hand_left_section] bip01_l_upperarm bip01_l_forearm bip01_l_clavicle
[critical_wound_hand_right_section] bip01_r_upperarm bip01_r_forearm bip01_r_clavicle
[critical_wound_leg_left_section] bip01_l_thigh bip01_l_calf bip01_l_foot bip01_l_toe0
[critical_wound_leg_right_section] bip01_r_thigh bip01_r_calf bip01_r_foot bip01_r_toe0
[critical_wound_body_parts_section] head = critical_wound_head_section torso = critical_wound_torso_section hand_left = critical_wound_hand_left_section hand_right = critical_wound_hand_right_section leg_left = critical_wound_leg_left_section leg_right = critical_wound_leg_right_section
[stalker_immunities] 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.5 fire_wound_immunity = 1.0 wound_2_immunity = 1.0
[stalker_condition] satiety_v = 0.00001 ;скорость уменьшения сытости со временем radiation_v = 0.0001 ;скорость уменьшения радиации satiety_power_v = 0.0005 ;увеличение силы при уменьшении сытости satiety_health_v = 0.1 ;0.0001 ;увеличение здоровья при уменьшении сытости satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться radiation_health_v = 0.001 ;уменьшение здоровья при воздействии радиации morale_v = 0.0001 ;скорость восстановления морали health_hit_part = 1.0 ;процент хита, уходящий на отнимание здоровья power_hit_part = 0.0 ;процент хита, уходящий на отнимание силы psy_health_v = 0.01 ; скорость восстановления psy-здоровья
sleep_health = 1.0 ;коэффициенты скоростей изменения параметров во время сна sleep_power = 1.0 sleep_satiety = 1.0 sleep_radiation = 1.0 sleep_psy_health = 1.0
;---LIMPING STATE----------------------------------------------------- use_limping_state = off limping_threshold = 0.5
;открытые раны bleeding_v = 0.0 ;потеря крови при номинальной ране в секунду wound_incarnation_v = 0.001 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) min_wound_size = 0.01
[stalker_terrain] 255,000,255,255
[sakharov_terrain] 255,001,255,255
[sim_smart_1] 255,002,255,255 [sim_smart_2] 255,003,255,255 [sim_smart_3] 255,004,255,255 [sim_smart_4] 255,005,255,255 [sim_smart_5] 255,006,255,255 [sim_smart_6] 255,007,255,255 [sim_smart_7] 255,008,255,255 [sim_smart_8] 255,009,255,255 [sim_smart_base] 255,010,255,255
[stalker_movement_speeds] ; danger ;; crouch ;;; walk danger_crouch_walk_forward = 1.1 danger_crouch_walk_backward = 1.05 danger_crouch_walk_left = 1.05 danger_crouch_walk_right = 1.05 ;;; run danger_crouch_run_forward = 2.5 danger_crouch_run_backward = 2.5 danger_crouch_run_left = 2.4 danger_crouch_run_right = 2.4 ;; stand ;;; walk danger_stand_walk_forward = 1.8 danger_stand_walk_backward = 1.8 danger_stand_walk_left = 2.0 danger_stand_walk_right = 2.0 ;;; run danger_stand_run_forward = 3.6 danger_stand_run_backward = 3.0 danger_stand_run_left = 2.0 danger_stand_run_right = 2.0 ; free ;; stand ;;; forward free_stand_walk_forward = 1.1 free_stand_run_forward = 3.0 ; panic ;; stand ;;; run ;;;; forward panic_stand_run_forward = 7.0
[stalker]:common_ph_friction_params_on_npc_death class = AI_STL_S ; Class identifier
can_select_items = on
;---EVALUATION FUNCTIONS---------------------------------------------- ef_creature_type = 17 ; option for evaluation functions
;---LEVEL EDITOR------------------------------------------------------ $spawn = "stalkers\stalker" ; option for Level Editor $npc = on ; option for Level Editor visual = actors\stalker_hero\stalker_hero_1.ogf; option for Level Editor corpse_visual = dynamics\equipments\item_rukzak.ogf ;actors\hero\stalker_novice.ogf; option for Level Editor custom_data = default_custom_data.ltx ; option for Level Editor character_profile = default ; option for Level Editor use_single_item_rule = off
;---GAME-------------------------------------------------------------- $prefetch = 32 cform = skeleton ; collision class ;биолог вид существа species = human
;---MATERIAL---------------------------------------------------------- material = creatures\human
;---DEAD_VISUAL------------------------------------------------------- destroyed_vis_name = dynamics\Dead_Body\skelet_crash
;---SCRIPTS----------------------------------------------------------- script_binding = bind_stalker.init
;---GROUP SECTIONS---------------------------------------------------- GroupControlSection = spawn_group SpaceRestrictionSection = space_restrictor,zone_mine_field attachable_items = device_torch,attachable_item,hand_radio,hand_radio_r,bread, vodka, energy_drink, kolbasa, guitar_a, harmonica_a, wpn_binoc, detector_simple, pri_a15_wpn_svu, pri_a15_wpn_wincheaster1300, wpn_binoc1, pri_a15_wpn_ak74u, pri_a15_wpn_ak74, pri_a15_documents, af_quest_b14_twisted, detector_advanced, detector_elite, device_pda, anomaly_scaner
;---SECTIONS---------------------------------------------------------- damage = stalker_damage immunities_sect = stalker_immunities condition_sect = stalker_condition
;---OFFLINE ALIFE------------------------------------------------------------------ Health = 100 ; option for ALife Simulator money = 5000 ; option for ALife Simulator going_speed = 3;2 ; option for ALife Simulator current_level_going_speed = 3 ; option for ALife Simulator search_speed = 0.5 ; option for ALife Simulator going_item_detect_probability = 0.1 ; option for ALife Simulator search_item_detect_probability = 0.9 ; option for ALife Simulator max_item_mass = 10000000.0 ; option for ALife Simulator inv_max_weight = 10000000.0 ; Допустимый вес инвентори MaxHealthValue = 100 ; option for ALife Simulator, range [0..200] smart_terrain_choose_interval = 00:15:00
;---ONLINE ALIFE------------------------------------------------------------------- time_to_search_for_artefacts = 60000 ; in milliseconds distance_to_search_for_artefacts= 30.0 ; in meters
;---ONLINE-OFFLINE ALIFE----------------------------------------------------------- terrain = 255,255,255,255,0,1 ;terrain = stalker_terrain
;---SOUND------------------------------------------------------------- sound_threshold = 0.08 self_sound_factor = 0.1 ;1.0 self_decrease_quant = 250 ; in milliseconds self_decrease_factor = 0.95 ; fading factor killer_clsids = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE sound_perceive_section = stalker_sound_perceive
;---VISIBILITY-------------------------------------------------------- vision_danger_section = stalker_vision_danger vision_free_section = stalker_vision_free eye_fov = 160 ;110;120 eye_range = 100 far_plane_factor = 1.0 ; фактор дальности тумана fog_density_factor = 0.05 ; фактор плотности тумана
;---MEMORY------------------------------------------------------------ DynamicObjectsCount = 32 DynamicSoundsCount = 32 DynamicHitCount = 32
;---ENEMY------------------------------------------------------------ ignore_monster_threshold = 0.0 ;0.6 ;0.8 max_ignore_distance = 15.0 panic_threshold = 0.0
;---SOUND PLAYER------------------------------------------------------ sound_death = fight\death\death_ sound_anomaly_death = fight\death\anomaly_ sound_hit = fight\hit\hit_ sound_humming = states\idle\idle_ sound_alarm = fight\enemy\enemy_ sound_backup = fight\backup\backup_,fight\threat\threat_close_ sound_detour = fight\detour\detour_,fight\fire\fire_,fight\threat\threat_close_ sound_friendly_fire = fight\friendly_fire\friendly_fire_ sound_panic_human = ;states\panic_human\panic_human_ sound_panic_monster = ;states\panic_monster\panic_monster_ sound_tolls = fight\tolls\tolls_ sound_wounded = fight\friend_hitted\hit_friend_ sound_grenade_alarm = fight\grenade\grenade_ sound_friendly_grenade_alarm = fight\friendly_grenade\friendly_grenade_ sound_need_backup = fight\cover_fire\cover_fire_ sound_running_in_danger = states\breath\breath_1 sound_walking_in_danger = states\breath\breath_2 sound_kill_wounded = help\wounded\kill_wounded_ sound_enemy_critically_wounded = fight\enemy_hit\enemy_hit_ sound_enemy_killed_or_wounded = fight\enemy_down\enemy_down_
sound_attack_no_allies = fight\fire\fire_,fight\threat\threat_distant_ sound_attack_allies_single_enemy = fight\attack\attack_,fight\attack\attack_one_,fight\fire\fire_ sound_attack_allies_several_enemies = fight\attack\attack_,fight\attack\attack_many_,fight\fire\fire_ sound_search1_no_allies = fight\threat\threat_distant_ sound_search1_with_allies = fight\searching_enemy\search_ sound_enemy_lost_no_allies = sound_enemy_lost_with_allies = fight\searching_enemy\enemy_lost_ sound_throw_grenade = fight\grenade\grenade_ready_
;---STEP MANAGER------------------------------------------------------ LegsCount = 2 step_params = stalker_step_manager foot_bones = stalker_foot_bones
;---MOVEMENT---------------------------------------------------------- movement_speeds = stalker_movement_speeds;
;---SIGHT------------------------------------------------------------------------- max_left_torso_angle = 45 ; максимальный угол поворота налево без доворота тела max_right_torso_angle = 30 ; максимальный угол поворота направо без доворота тела
;---WEAPON BONES------------------------------------------------------------------ weapon_bone0 = bip01_r_finger1 weapon_bone1 = bip01_l_finger1 weapon_bone2 = bip01_r_finger11
;---ANIMATION BONES------------------------------------------------------------------ bone_head = bip01_head bone_shoulder = bip01_spine2 bone_spin = bip01_spine1 bone_model = bip01
;---ANIMATION------------------------------------------------------------------------ crouch_type = 0 ; 0 - crouch a little, 1 - crouch full; -1 - random crouch
;---FIRE DISPERSIONS-------------------------------------------------- disp_walk_stand = 3 ;8 ;6 disp_walk_crouch = 2 ;4 ;3 disp_run_stand = 5 ;14 ;12;8 disp_run_crouch = 4 ;6 ;4 disp_stand_stand = 3 ;4 disp_stand_crouch = 2 ; 2 disp_stand_stand_zoom = 1 ;1.5 ;1 disp_stand_crouch_zoom = 1 ;1.25;1
;---FIRE QUEUE PARAMETERS fire_queue_section = fire_queue_params
;---CRITICAL WOUND------------------------------------------------------------------ critical_wound_threshold = 0.4 critical_wound_decrease_quant = 0.2 body_parts_section_id = critical_wound_body_parts_section critical_wound_weights = 100,50,10
;---HIT INFO--------------------------------------------------------- hit_power = 10 hit_type = strike power_fx_factor = 50.0
;---PHYSICS----------------------------------------------------------- ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.35, 0.9, 0.35 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 = 80
;--------------------------------------------------------------------- ph_character_have_wounded_state = true; имеет ли персонаж состояние раненый ;--------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------- ;-- АНИМАЦИИ ДЛЯ СМЕРТИ ;-------------------------------------------------------------------------------------------------------------------- ;cлучайные ;random_death_animations = ragdoll_burst_front_0,ragdoll_burst_front_1,ragdoll_burst_back_0,ragdoll_burst_left_0,ragdoll_burst_right_0 ;norm_2_reg_doll_0,norm_2_reg_doll_1,norm_2_reg_doll_2,norm_2_reg_doll_3,norm_2_reg_doll_4,norm_2_reg_doll_5
;по типам от 0 до 7 ;порядок по направлениям - front/back/left/right ; В голову, когда персонаж бежит на нас. kill_enertion = ragdoll_inertion_front_0/ragdoll_inertion_front_3/ragdoll_inertion_front_2/ragdoll_inertion_front_1
; Смерть от автоматной очереди ;kill_burst = ragdoll_burst_front_0,ragdoll_burst_front_1/ragdoll_burst_back_0/ragdoll_burst_left_0/ragdoll_burst_right_0
; Смерть от выстрела из дробовика kill_shortgun = ragdoll_shortgun_front_0,ragdoll_shortgun_front_1,ragdoll_shortgun_front_2,ragdoll_shortgun_front_3,ragdoll_shortgun_front_4,ragdoll_shortgun_front_5,ragdoll_shortgun_front_6,ragdoll_shortgun_front_7,ragdoll_shortgun_front_8/ragdoll_shortgun_back_0,ragdoll_shortgun_back_1,ragdoll_shortgun_back_2,ragdoll_shortgun_back_3,ragdoll_shortgun_back_4,ragdoll_shortgun_back_5,ragdoll_shortgun_back_6/ragdoll_shortgun_left_0,ragdoll_shortgun_left_1,ragdoll_shortgun_left_2/ragdoll_shortgun_right_0,ragdoll_shortgun_right_1
; Смерть хедшотом kill_headshot = ragdoll_headshot_front_0,ragdoll_headshot_front_1,ragdoll_headshot_front_2,ragdoll_headshot_front_3,ragdoll_headshot_front_4,ragdoll_headshot_front_5,ragdoll_headshot_front_6,ragdoll_headshot_front_7,ragdoll_headshot_front_8,ragdoll_headshot_front_9,ragdoll_headshot_front_10/ragdoll_headshot_back_0,ragdoll_headshot_back_1,ragdoll_headshot_back_2,ragdoll_headshot_back_3,ragdoll_headshot_back_4,ragdoll_headshot_back_5/ragdoll_headshot_left_0,ragdoll_headshot_left_1,ragdoll_headshot_left_2,ragdoll_headshot_left_3,ragdoll_headshot_left_4,ragdoll_headshot_left_5,ragdoll_headshot_left_6,ragdoll_headshot_left_7/ragdoll_headshot_right_0,ragdoll_headshot_right_1,ragdoll_headshot_right_2,ragdoll_headshot_right_3,ragdoll_headshot_right_4,ragdoll_headshot_right_5,ragdoll_headshot_right_6
; Смерть хедшотом из снайперки kill_sniper_headshot = ragdoll_sniper_headshot_front_0,ragdoll_sniper_headshot_front_1,ragdoll_sniper_headshot_front_2/ragdoll_sniper_headshot_back_0/ragdoll_sniper_headshot_left_0/ragdoll_sniper_headshot_right_0
; Смерть от снайперки в тело kill_sniper_body = ragdoll_sniper_body_front_0,ragdoll_sniper_body_front_1,ragdoll_sniper_body_front_2/ragdoll_sniper_body_back_0,ragdoll_sniper_body_back_1,ragdoll_sniper_body_back_2,ragdoll_sniper_body_back_3/ragdoll_sniper_body_left_0/ragdoll_sniper_body_right_0
; Смерть от взрывной волны гранаты kill_grenade = ragdoll_grenade_front_0/ragdoll_grenade_back_0/ragdoll_grenade_left_0/ragdoll_grenade_right_0
;front-norm_2_rag_doll_front_0,norm_2_rag_doll_front_1,norm_2_rag_doll_front_2/back-norm_2_rag_doll_back_0,norm_2_rag_doll_back_1,norm_2_rag_doll_back_2/right-norm_2_rag_doll_right_0/left-norm_2_rag_doll_left_0
;--------------------------------------------------------------------------------------------------------------------
[stalker_trader]:stalker $spawn = "stalkers\stalker_trader" ; option for Level Editor use_single_item_rule = off can_select_items = off
[stalker_sakharov]:stalker_trader $spawn = "stalkers\stalker_sakharov" immunities_sect = stalker_immunities_sakharov
[stalker_immunities_sakharov] burn_immunity = 0.0 ;коэффициенты иммунитета strike_immunity = 0.0 shock_immunity = 0.0 wound_immunity = 0.0 radiation_immunity = 0.0 telepatic_immunity = 0.0 chemical_burn_immunity = 0.0 explosion_immunity = 0.0 fire_wound_immunity = 0.0 wound_2_immunity = 0.0
[stalker_strelok]:stalker $spawn = "stalkers\stalker_strelok" immunities_sect = stalker_immunities_strelok condition_sect = strelok_condition
[strelok_condition] satiety_v = 0.00001 ;скорость уменьшения сытости со временем radiation_v = 0.0001 ;скорость уменьшения радиации satiety_power_v = 0.0005 ;увеличение силы при уменьшении сытости satiety_health_v = 0.1 ;0.0001 ;увеличение здоровья при уменьшении сытости satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться radiation_health_v = 0.001 ;уменьшение здоровья при воздействии радиации morale_v = 0.0001 ;скорость восстановления морали health_hit_part = 1.0 ;процент хита, уходящий на отнимание здоровья power_hit_part = 0.0 ;процент хита, уходящий на отнимание силы psy_health_v = 0.0 ; скорость восстановления psy-здоровья
sleep_health = 1.0 ;коэффициенты скоростей изменения параметров во время сна sleep_power = 1.0 sleep_satiety = 1.0 sleep_radiation = 1.0 sleep_psy_health = 1.0
;---LIMPING STATE----------------------------------------------------- use_limping_state = off limping_threshold = 0.5
;открытые раны bleeding_v = 0.0 ;потеря крови при номинальной ране в секунду wound_incarnation_v = 0.001 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду) min_wound_size = 0.01
[stalker_immunities_strelok] burn_immunity = 0.0 ;коэффициенты иммунитета strike_immunity = 0.0 shock_immunity = 0.0 wound_immunity = 0.0 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 0.0 explosion_immunity = 0.0 fire_wound_immunity = 0.0 wound_2_immunity = 0.0
[stalker_die_hard]:stalker $spawn = "stalkers\stalker_die_hard" immunities_sect = stalker_immunities_die_hard
[stalker_immunities_die_hard] burn_immunity = 0.0 ;коэффициенты иммунитета strike_immunity = 0.0 shock_immunity = 0.0 wound_immunity = 0.0 radiation_immunity = 0.0 telepatic_immunity = 0.0 chemical_burn_immunity = 0.0 explosion_immunity = 0.0 fire_wound_immunity = 0.0 wound_2_immunity = 0.0
;---RAGDOLL TEST STALKER-----------------------------------------------------
[stalker_ragdoll]:stalker $spawn = "stalkers\stalker_ragdoll" ; option for Level Editor immunities_sect = stalker_immunities_ragdoll damage = stalker_damage_ragdoll
[stalker_immunities_ragdoll] burn_immunity = 10000.0 ;коэффициенты иммунитета strike_immunity = 10000.0 shock_immunity = 10000.0 wound_immunity = 10000.0 radiation_immunity = 10000.0 telepatic_immunity = 10000.0 chemical_burn_immunity = 10000.0 explosion_immunity = 10000.0 fire_wound_immunity = 10000.0 wound_2_immunity = 10000.0
[stalker_damage_ragdoll] default = 10000.0, -1, 1.0
bip01_pelvis = 10000.0, 1000, 0.3 bip01_spine = 10000.0, 1000, 0.8 bip01_spine1 = 10000.0, 1000, 0.8 bip01_spine2 = 10000.0, 1000, 0.8 bip01_neck = 10000.0, 1000, 1.0 bip01_head = 10000.0, 1000, 1.0 eyelid_1 = 10000.0, 1000, 1.0 eye_left = 10000.0, 1000, 1.0 eye_right = 10000.0, 1000, 1.0 jaw_1 = 10000.0, 1000, 1.0
bip01_l_clavicle = 10000.0, 1000, 0.7 bip01_l_upperarm = 10000.0, 1000, 0.6 bip01_l_forearm = 10000.0, 1000, 0.5 bip01_l_hand = 10000.0, 1000, 0.2 bip01_l_finger0 = 10000.0, 1000, 0.1 bip01_l_finger01 = 10000.0, 1000, 0.1 bip01_l_finger02 = 10000.0, 1000, 0.1 bip01_l_finger1 = 10000.0, 1000, 0.1 bip01_l_finger11 = 10000.0, 1000, 0.1 bip01_l_finger12 = 10000.0, 1000, 0.1 bip01_l_finger2 = 10000.0, 1000, 0.1 bip01_l_finger21 = 10000.0, 1000, 0.1 bip01_l_finger22 = 10000.0, 1000, 0.1
bip01_r_clavicle = 10000.0, 1000, 0.7 bip01_r_upperarm = 10000.0, 1000, 0.6 bip01_r_forearm = 10000.0, 1000, 0.5 bip01_r_hand = 10000.0, 1000, 0.2 bip01_r_finger0 = 10000.0, 1000, 0.1 bip01_r_finger01 = 10000.0, 1000, 0.1 bip01_r_finger02 = 10000.0, 1000, 0.1 bip01_r_finger1 = 10000.0, 1000, 0.1 bip01_r_finger11 = 10000.0, 1000, 0.1 bip01_r_finger12 = 10000.0, 1000, 0.1 bip01_r_finger2 = 10000.0, 1000, 0.1 bip01_r_finger21 = 10000.0, 1000, 0.1 bip01_r_finger22 = 10000.0, 1000, 0.1
bip01_l_thigh = 10000.0, 1000, 0.5 bip01_l_calf = 10000.0, 1000, 0.4 bip01_l_foot = 10000.0, 1000, 0.3 bip01_l_toe0 = 10000.0, 1000, 0.2 bip01_r_thigh = 10000.0, 1000, 0.5 bip01_r_calf = 10000.0, 1000, 0.4 bip01_r_foot = 10000.0, 1000, 0.3 bip01_r_toe0 = 10000.0, 1000, 0.2
[fire_queue_params] ; min < 15 < medium < 30 < max pstl_min_queue_size_far = 1 pstl_max_queue_size_far = 1 pstl_min_queue_interval_far = 3000 pstl_max_queue_interval_far = 5000
pstl_min_queue_size_medium = 1 pstl_max_queue_size_medium = 1 pstl_min_queue_interval_medium = 1000 pstl_max_queue_interval_medium = 3000
pstl_min_queue_size_close = 1 pstl_max_queue_size_close = 1 pstl_min_queue_interval_close = 500 pstl_max_queue_interval_close = 1000
shtg_min_queue_size_far = 1 shtg_max_queue_size_far = 1 shtg_min_queue_interval_far = 1500 shtg_max_queue_interval_far = 2000
shtg_min_queue_size_medium = 1 shtg_max_queue_size_medium = 1 shtg_min_queue_interval_medium = 1000 shtg_max_queue_interval_medium = 1500
shtg_min_queue_size_close = 2 shtg_max_queue_size_close = 2 shtg_min_queue_interval_close = 500 shtg_max_queue_interval_close = 1000
snp_min_queue_size_far = 1 snp_max_queue_size_far = 1 snp_min_queue_interval_far = 2000 snp_max_queue_interval_far = 3000
snp_min_queue_size_medium = 1 snp_max_queue_size_medium = 1 snp_min_queue_interval_medium = 1500 snp_max_queue_interval_medium = 2000
snp_min_queue_size_close = 1 snp_max_queue_size_close = 1 snp_min_queue_interval_close = 1000 snp_max_queue_interval_close = 1500
auto_min_queue_size_far = 1 auto_max_queue_size_far = 2 auto_min_queue_interval_far = 1500 auto_max_queue_interval_far = 2000
auto_min_queue_size_medium = 2 auto_max_queue_size_medium = 3 auto_min_queue_interval_medium = 1000 auto_max_queue_interval_medium = 1500
auto_min_queue_size_close = 3 auto_max_queue_size_close = 5 auto_min_queue_interval_close = 500 auto_max_queue_interval_close = 1000
mchg_min_queue_size_far = 10 mchg_max_queue_size_far = 15 mchg_min_queue_interval_far = 3000 mchg_max_queue_interval_far = 4000
mchg_min_queue_size_medium = 10 mchg_max_queue_size_medium = 15 mchg_min_queue_interval_medium = 2000 mchg_max_queue_interval_medium = 3000
mchg_min_queue_size_close = 10 mchg_max_queue_size_close = 15 mchg_min_queue_interval_close = 1000 mchg_max_queue_interval_close = 2000 [/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 16.06.2016, 15:15 | Сообщение # 1310 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| men_stalker, Не в той секции!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Чт, 16.06.2016, 15:23 | Сообщение # 1311 |
Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, в каком смысле не в той секции?
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.06.2016, 15:45 | Сообщение # 1312 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата men_stalker ( ) в каком смысле не в той секции?
В смысле секция [stalker_foot_bones] и секция [stalker] - это разные секции. Главная для всех сталкеров - "родительская" секция это секция [stalker]. В ней и должен быть параметр
terrain = чему то там
Просмотри весь файл m_stalker на terrain = ***. Где то он должен быть прописан. Если не найдешь его в этом файле, то проверь Тотал Коммандером всю папку configs. В каком то файле этот самый terrain прописан. Его и надо скопировать Сидоровичу, чтобы игра не вылетала.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
men_stalker | Дата: Чт, 16.06.2016, 16:36 | Сообщение # 1313 |
Инженер «Свободы»
Свобода
Сообщений: 184
| sergej5500, вот именно я так и делал: [cut=[m_trader]]... ;;; walk danger_stand_walk_forward = 1.2 danger_stand_walk_backward = 1.2 danger_stand_walk_left = 1.2 danger_stand_walk_right = 1.2 ;;; run danger_stand_run_forward = 5.0 danger_stand_run_backward = 1.5 danger_stand_run_left = 5.0 danger_stand_run_right = 5.0 ; free ;; stand ;;; forward free_stand_walk_forward = 0.85 free_stand_run_forward = 2.5 ; panic ;; stand ;;; run ;;;; forward panic_stand_run_forward = 6.5 terrain = 255,255,255,255,0,1[/cut]
[cut=m_stalker][stalker]:common_ph_friction_params_on_npc_death class = AI_STL_S ; Class identifier
can_select_items = on
...
;---ONLINE-OFFLINE ALIFE----------------------------------------------------------- terrain = 255,255,255,255,0,1 ;terrain = stalker_terrain[/cut]
<terrain_sect>stalker_terrain</terrain_sect>
Сообщение отредактировал men_stalker - Чт, 16.06.2016, 16:38 |
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.06.2016, 17:15 | Сообщение # 1314 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| men_stalker,
denis2000 указал, что параметр terrain не в той секции. А я не обратил на это внимание. Виноват.
Ваш файл
[m_trader] GroupControlSection = spawn_group $spawn = "monsters\trader" ; option for Level Editor $prefetch = 5 cform = skeleton class = AI_TRADE_S class = AI_TRD_S visual = actors\stalker_trader\stalker_trader_1.ogf ......
Параметр
terrain = 255,255,255,255,0,1
у тебя стоит под
[barman_movement_speeds]
Это другая секция. Соответственно, в секции m_trader его нет. В результате вылет. Перемести эту строку выше. Под строку visual = actors\stalker_trader\stalker_trader_1.ogf, например.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
men_stalker | Дата: Сб, 18.06.2016, 16:34 | Сообщение # 1315 |
Инженер «Свободы»
Свобода
Сообщений: 184
| Доброго времени суток, после добавления ещё нескольких переменных в [m_trader] при запуске получил вылет:
[cut=лог] ..... * Creating new game... * Loading spawn registry... stack trace:
0023:6791514C MSVCR80.dll, memcpy() 0023:00A14DDC xrCore.dll, NET_Packet::r() 0023:0AB83532 xrGame.dll, CDialogHolder::CDialogHolder()[/cut] Даже не знаю в каком направлении рыть, все диалоги исправны. Остальные файлы тоже проверил, вроде всё нормально. P.s ошибка только при спавне m_trader'а.
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 18.06.2016, 20:10 | Сообщение # 1316 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата men_stalker ( ) после добавления ещё нескольких переменных в [m_trader] при запуске получил вылет:
Значит, причина в этих переменных. Можно посоветовать только одно. Добавлять их по одной. Смотреть, после какой появится вылет.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 18.06.2016, 20:28 | Сообщение # 1317 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker ( ) всё нормально
Цитата men_stalker ( ) при запуске получил вылет Вы конечно в курсе, что это противоречивые заявления? Выкладывайте правки будем анализировать.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Вс, 19.06.2016, 12:44 | Сообщение # 1318 |
Инженер «Свободы»
Свобода
Сообщений: 184
| sergej5500, вылет происходит после добавления переменной eye_range и равна она100. Если добавлять по одиночке просто жалуется на нехватку этих переменных.
denis2000, creatures: [cut=m_sidor] ;----------------------------------------------------------------------------------- ;Trader ;----------------------------------------------------------------------------------- [m_trader] GroupControlSection = spawn_group $spawn = "monsters\trader" ; option for Level Editor $prefetch = 5 cform = skeleton class = AI_TRADE_S class = AI_TRD_S visual = actors\stalker_trader\stalker_trader_1.ogf terrain = 255,255,255,255,0,1 ; ДОБАВЛЕННЫЕ ПЕРЕМЕННЫЕ eye_range = 100 ; ДОБАВЛЕННЫЕ ПЕРЕМЕННЫЕ rank = 1 script_binding = bind_trader.bind ;format section{,section},count,min_factor,max_factor, ... ;supplies = m_bread,50,0.5,1.5, CANNED,30,0.5,1.5, MEDI_KIT,7,0,0.7, DETECTOR_SIMPLE,3,0,0.6, WPN_BINOC,1,0,0.70, WPN_FORT,WPN_PM,3,0.3,0.8, WPN_LR300,WPN_AK47,2,0.3,0.65, WPN_SVD,1,0,0.53, WPN_RPG7,1,0,0.53, grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62х54_fmj,10,0,1.0, ammo_og-7b,10,0,1.0 supplies = grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62x54_ap,10,0,1.0, ammo_og-7b,10,0,1.0 max_item_mass = 10000.0 ;---EVALUATION FUNCTIONS---------------------------------------------- ef_creature_type = 1 ; option for evaluation functions ef_weapon_type = 1
scheduled = on ; option for ALife Simulator Human = off ; option for ALife Simulator Health = 40 ; option for ALife Simulator MinSpeed = 1.0 ; option for ALife Simulator MaxSpeed = 1.5 ; option for ALife Simulator going_speed = 1.0 ; option for ALife Simulator MaxHealthValue = 100 ; option for ALife Simulator ; ДОБАВЛЕННЫЕ ПЕРЕМЕННЫЕ smart_terrain_choose_interval = 00:15:00 ph_box0_center = 0.0, 0.9, 0.0 ph_box0_size = 0.35, 0.9, 0.35 ph_box1_center = 0.0, 0.6, 0.0 ph_box1_size = 0.40, 0.6, 0.40 ph_crash_speed_min = 8;16 ph_crash_speed_max = 16;30 ph_mass = 170. cost = 1
Health = 100.0 money = 1000000 immunities_sect = trader_immunities condition_sect = trader_condition
;attach params attachable_items =
;species of monster species = human
[trader_foot_bones] front_left = bip01_l_foot front_right = bip01_r_foot
[trader_step_manager] ;order: left, right ;-------------------------------------------------------------------------- ;animation Cycles | time1 | power1 | time2 | power2 | ;-------------------------------------------------------------------------- [barman_movement_speeds] ;barman can't crouch or run ; danger ;; crouch ;;; walk danger_crouch_walk_forward = 0.8 danger_crouch_walk_backward = 0.575 danger_crouch_walk_left = 0.8 danger_crouch_walk_right = 0.8 ;;; run danger_crouch_run_forward = 2.0 danger_crouch_run_backward = 1.1 danger_crouch_run_left = 2.0 danger_crouch_run_right = 2.0 ;; stand ;;; walk danger_stand_walk_forward = 1.2 danger_stand_walk_backward = 1.2 danger_stand_walk_left = 1.2 danger_stand_walk_right = 1.2 ;;; run danger_stand_run_forward = 5.0 danger_stand_run_backward = 1.5 danger_stand_run_left = 5.0 danger_stand_run_right = 5.0 ; free ;; stand ;;; forward free_stand_walk_forward = 0.85 free_stand_run_forward = 2.5 ; panic ;; stand ;;; run ;;;; forward panic_stand_run_forward = 6.5 [/cut]
[cut=stalkers]#include "m_stalker.ltx" #include "immunities.ltx" #include "damages.ltx" #include "m_stalker_zombied.ltx" #include "m_stalker_monolith.ltx" #include "m_sidor.ltx" [/cut]
Логика:
[cut=esc_space_restrictor_wait_trader][logic] active = sr_idle
[sr_idle] on_actor_inside = sr_idle@minus %+esc_actor_come_first%
[sr_idle@minus] on_info = {+esc_trader_hello_first_played} sr_idle@last
[sr_idle@last] on_actor_in_zone = esc_space_restrictor_wait_trader | {-esc_player_sleeps} sr_idle@timer
[sr_idle@timer] on_game_timer = 150 | sr_idle@check on_actor_not_in_zone = esc_space_restrictor_wait_trader | sr_idle@last on_info = {+esc_skip_angry} sr_idle@last %-esc_skip_angry -esc_player_sleeps%
[sr_idle@check] on_actor_in_zone = esc_space_restrictor_wait_trader | sr_idle@last %+esc_player_sleeps% [/cut]
[cut=esc_trader][logic] active = mob_trader@new_idle1 trade = misc\trade\trade_barmen_all.ltx level_spot = trader
;-------------------------- ;---First Meet------------- ;-------------------------- [mob_trader@hello_first] anim_global = hello anim_head = normal sound_phrase = trader_greet_first on_signal = animation_end | mob_trader@new_idle2
;------------------------------ ;---------Wait player---------- ;------------------------------
[mob_trader@angry_1] anim_global = desk_idle anim_head = normal sound_phrase = trader_wait on_signal = sound_phrase_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1
[mob_trader@angry_2] anim_global = diagonal_idle anim_head = normal sound_phrase = trader_wait on_signal = sound_phrase_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2
[mob_trader@angry_3] anim_global = chair_hack_idle anim_head = normal sound_phrase = trader_wait on_signal = sound_phrase_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3
[mob_trader@angry_4] anim_global = compute_idle anim_head = normal sound_phrase = trader_wait on_signal = sound_phrase_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4 ;---------------------------------- ;------------- Idle --------------- ;----------------------------------
;Основной idle (1) - за столом [mob_trader@new_idle1] anim_global = desk_idle on_signal = animation_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1 on_info = {=talking} mob_trader@new_idle1_to_idle3 %+esc_skip_angry% on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_1 %-esc_player_sleeps% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Idle (2) - по диагонали [mob_trader@new_idle2] anim_global = diagonal_idle on_signal = animation_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2 on_info = {=talking} mob_trader@new_idle2_to_idle3 %+esc_skip_angry% on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Idle (3) - откинувшись на спинку [mob_trader@new_idle3] anim_global = chair_hack_idle on_signal = animation_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3 on_info = {=talking} mob_trader@new_talking %+esc_skip_angry% on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_3 %-esc_player_sleeps% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Idle (4) - за компьютером [mob_trader@new_idle4] anim_global = compute_idle on_signal = animation_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4 on_info = {=talking} mob_trader@new_idle4_to_idle2 %+esc_skip_angry% on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_4 %-esc_player_sleeps% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Idle (5) - читает [mob_trader@new_idle5] anim_global = listen_idle on_signal = animation_end | {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5 on_info = {=talking} mob_trader@new_idle5_to_idle1 %+esc_skip_angry% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
;---------------------------------- ;-------- Автопереходы -------- ;----------------------------------
; Стол - стол (промежуточная) [mob_trader@new_idle1_to_idle1] anim_global = desk_idle on_signal = animation_end| mob_trader@new_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Диагональ - диагональ (промежуточная) [mob_trader@new_idle2_to_idle2] anim_global = diagonal_idle on_signal = animation_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Спинка - спинка (промежуточная) [mob_trader@new_idle3_to_idle3] anim_global = chair_hack_idle on_signal = animation_end | mob_trader@new_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Компьютер - компьютер (промежуточная) [mob_trader@new_idle4_to_idle4] anim_global = compute_idle on_signal = animation_end | mob_trader@new_idle4 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Читает - читает (промежуточная) [mob_trader@new_idle5_to_idle5] anim_global = listen_idle on_signal = animation_end | mob_trader@new_idle5 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
;---------------------------------- ;----- Переходы между idle-ми ---- ;----------------------------------
; Диагональ - компьютер [mob_trader@new_idle2_to_idle4] anim_global = diagonal_to_compute on_signal = animation_end | mob_trader@new_idle4 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Компьютер - диагональ [mob_trader@new_idle4_to_idle2] anim_global = compute_idle_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ;on_info = {+esc_player_sleeps} mob_trader@angry %-esc_player_sleeps% on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Диагональ - спинка [mob_trader@new_idle2_to_idle3] anim_global = diagonal_to_chair_hack on_signal = animation_end| {=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Спинка - диагональ [mob_trader@new_idle3_to_idle2] anim_global = chair_hack_to_diagonal on_signal = animation_end| mob_trader@new_idle2 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Стол - спинка [mob_trader@new_idle1_to_idle3] anim_global = desk_to_chair_hack on_signal = animation_end|{=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Спинка - стол [mob_trader@new_idle3_to_idle1] anim_global = chair_hack_to_desk on_signal = animation_end| mob_trader@new_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Стол - диагональ [mob_trader@new_idle1_to_idle2] anim_global = desk_to_diagonal on_signal = animation_end| mob_trader@new_idle2 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Диагональ - стол [mob_trader@new_idle2_to_idle1] anim_global = diagonal_to_desk on_signal = animation_end| mob_trader@new_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Стол - читает [mob_trader@new_idle1_to_idle5] anim_global = desk_to_listen on_signal = animation_end| mob_trader@new_idle5 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
; Читает - стол [mob_trader@new_idle5_to_idle1] anim_global = listen_to_desk on_signal = animation_end| mob_trader@new_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait
;-------------------------------------- ;------------- Разговор --------------- ;--------------------------------------
[mob_trader@new_talking] anim_global = chair_hack_talk anim_head = normal on_info = {!talking} mob_trader@new_idle3 %+esc_skip_angry%
;-------------------------------------- ;------------ Торговля ---------------- ;--------------------------------------
[mob_trade@new] anim_global = chair_hack_idle on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad
[mob_trader@new_trade_bad] anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = angry ;sound_phrase = trader_bad_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 11 | mob_trader@new_wait
[mob_trader@new_trade_exchanged] anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = normal ;sound_phrase = trader_exchanged on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 11 | mob_trader@new_wait
[mob_trader@new_trade_good] anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = good ;sound_phrase = trader_good_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 11 | mob_trader@new_wait
;------------------------------------- ;---------- Приветствия -------------- ;-------------------------------------
[mob_trader@new_hello] anim_global = hello anim_head = normal sound_phrase = trader_hello_what_have_you_got on_signal = animation_end | mob_trader@new_idle2
[mob_trader@hello_search] anim_global = hello anim_head = normal sound_phrase = trader_wait_habar_greet on_signal = animation_end | mob_trader@new_idle2
[mob_trader@hello_return] anim_global = hello anim_head = normal sound_phrase = trader_greet_habar on_signal = animation_end | mob_trader@new_idle2
[mob_trader@new_bye] on_actor_dist_ge_nvis = 11| mob_trader@new_wait anim_global = hello anim_head = normal ;sound_phrase = trader_bye on_signal = animation_end | mob_trader@new_idle2
[mob_trader@bye_search] on_actor_dist_ge_nvis = 11 | mob_trader@new_idle2 anim_global = hello anim_head = normal sound_phrase = trader_wait_habar_bye on_signal = animation_end | mob_trader@new_idle1
[mob_trader@bye_garbage] on_actor_dist_ge_nvis = 11 | mob_trader@new_wait anim_global = hello anim_head = normal sound_phrase = trader_bye_garbage on_signal = animation_end | mob_trader@new_idle2
[mob_trader@new_wait] anim_global = diagonal_idle_short on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_first_played +esc_actor_come_first} mob_trader@hello_first %+esc_trader_hello_first_played +esc_trader_hello_played%, {-esc_trader_hello_search_played +esc_actor_inside_traders_dung +esc_trader_hello_first_played -esc_take_habar_complete} mob_trader@hello_search %+esc_trader_hello_search_played%, {-esc_trader_hello_return_played +esc_take_habar_complete} mob_trader@hello_return %+esc_trader_hello_return_played% on_actor_dist_ge_nvis = 7 | {-esc_trader_bye_played +esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played +esc_trader_hello_first_played +esc_actor_inside_traders_dung -esc_bring_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played% on_actor_dist_ge_nvis2 = 11 | %-esc_trader_hello_played -esc_trader_bye_played -esc_trader_hello_search_played -esc_trader_bye_search_played% [/cut]Добавлено (19.06.2016, 12:44) --------------------------------------------- all.spawn:
[cut=alife_escape][215]
; cse_abstract properties section_name = m_trader name = esc_m_trader position = -246.400009155273, -24.7744331359863, -134.399993896484 direction = -0.0576599985361099, 1.72324705123901, 0.00393099989742041 id = 65535 version = 124 script_version = 8 spawn_id = 395
; cse_alife_object properties game_vertex_id = 3 level_vertex_id = 14374 object_flags = 0xffffff3f custom_data = <<END [logic] cfg = scripts\escape\esc_trader.ltx END story_id = 410
; cse_visual properties visual_name = actors\stalker_trader\stalker_trader_1
; cse_alife_trader_abstract properties money = 1000000 trader_flags = 0 character_profile = esc_sidor_trader
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[308]
; cse_abstract properties section_name = space_restrictor name = esc_space_restrictor_wait_trader position position = -246.880004882813, -24.8099994659424, -134.589996337891 direction = -0.0034178423229605, 5.05854368384462e-005, 0.0147993508726358 id = 65535 version = 128 script_version = 12 spawn_id = 307
; cse_alife_object properties game_vertex_id = 0 level_vertex_id = 97812 object_flags = 0xffffff3e custom_data = <<END [story_object] story_id = esc_space_restrictor_wait_trader [logic] cfg = scripts\escape\esc_space_restrictor_wait_trader.ltx END
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 1
; cse_alife_space_restrictor properties restrictor_type = 3[/cut]
gameplay:
[cut=character_desc_escape]<specific_character id="esc_sidor_trader" team_default = "1"> <name>esc_c2_wolf</name> <icon>ui_inGame2_wolf</icon> <map_icon x="1" y="0"></map_icon> <bio>ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.</bio>
<class>esc_sidor_trader</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_03\stalker\</snd_config>
<rank>60</rank> <reputation>300</reputation> <money min="500000" max="500000" infinitive="1" /> <visual>actors\stalker_trader\stalker_trader_1</visual> <supplies>
[spawn] \n </supplies> #include "gameplay\character_criticals_4.xml" <start_dialog>esc_sidor_start_dialog</start_dialog> <actor_dialog>actor_break_dialog</actor_dialog> </specific_character> [/cut]
[cut=npc_profile]<character id="esc_sidor_trader"> <class>esc_sidor_trader</class> <specific_character>esc_sidor_trader</specific_character> </character>[/cut]
[cut=dialogs_escape]<dialog id="esc_sidor_start_dialog"> <phrase_list> <phrase id="0"> <text>esc_sidor_start_dialog</text> </phrase> </phrase_list> </dialog>[/cut]
В info_escape не придумал ничего лучше чем временно перенести этот файл из чн и добавить свои инфопоршни.
scripts: свои правки не вносил, но всё таки
[cut=mob_trader]-- mob_trader global_animations = { desk_idle = {"idle","idle_1","palci","zatylok"}, desk_talk = {"idle"}, desk_to_chair_hack = {"idle_spinka"}, desk_to_listen = {"idle_chitaet"}, desk_to_diagonal = {"perehod_0"}, chair_hack_idle = {"idle_2","idle_2_def_0"}, chair_hack_talk = {"idle_2_talk_0","idle_2_talk_1","idle_2_talk_2","idle_2_talk_3"}, chair_hack_to_diagonal = {"idle_2_to_idle_0"}, chair_hack_to_desk = {"spinka_idle"}, compute_idle = {"idle_1_spec_think_0","idle_1_spec_think_1"}, compute_idle_to_diagonal = {"idle_1_to_idle_0"}, diagonal_idle = {"idle_0_def_0","idle_0_spec_click_0","idle_0_spec_scratch_0"}, diagonal_idle_short = {"idle_0_def_0"}, diagonal_talk = {"idle_0_talk_0","idle_0_talk_1","idle_0_talk_2","idle_0_talk_3"}, diagonal_to_chair_hack = {"idle_0_to_idle_2"}, diagonal_to_compute = {"idle_0_to_idle_1"}, diagonal_to_desk = {"perehod_1"}, first_phrase = {"vstuplenie"}, listen_idle = {"chitaet"}, listen_to_desk = {"chitaet_idle"}, hello = {"hello"}, forester_sit = {"sit"}, forester_beard = {"beard_in","beard","beard_out"}, forester_reaction = {"reaction_in","reaction","reaction_out"}, forester_see = {"see_in","see","see_out"}, forester_talk_1 = {"sit_talk_1_in","sit_talk_1","sit_talk_1_out"}, forester_talk_2 = {"sit_talk_2_in","sit_talk_2","sit_talk_2_out"}, forester_talk_3 = {"sit_talk_3_in","sit_talk_3","sit_talk_3_out"}
} head_animations = { forester_talk_1 = {"sit_talk_1_in","sit_talk_1","sit_talk_1_out"}, forester_talk_2 = {"sit_talk_2_in","sit_talk_2","sit_talk_2_out"}, forester_talk_3 = {"sit_talk_3_in","sit_talk_3","sit_talk_3_out"}, forester_reaction = {"reaction_in","reaction","reaction_out"}, normal = {"talk_0","talk_1","talk_4"}, angry = {"talk_3","talk_2","talk_1"}, good = {"talk_glad_0"}, first_phrase = {"vstuplenie_head"} } function on_start_tutorial_item_1() if db.trader == nil then return end db.trader:external_sound_start("characters_voice\\scenario\\trader\\trader_tutorial_pda_12") end function on_stop_tutorial_item() if db.trader == nil then return end db.trader:external_sound_stop() end class "mob_trader" function mob_trader:__init(obj, storage) self.object = obj self.st = storage end function mob_trader:reset_scheme() trader_obj = self.object self.st.signals = {} self.object:set_callback(callback.trader_global_anim_request, self.on_global_anim_request, self ) self.object:set_callback(callback.trader_head_anim_request, self.on_head_anim_request, self ) self.object:set_callback(callback.trader_sound_end, self.on_sound_end, self ) self.object:set_callback(callback.use_object, self.use_callback, self) -- start global animation self.object:set_trader_global_anim(self:select_global_animation()) -- start sound and head animation if (self.st.sound_phrase) then local snd = mob_sound.pick_sound_from_set(self.object, self.st.sound_phrase, {}) self.object:set_trader_sound(snd, self:select_head_animation()); end if self.st.anim_head == nil then self.st.anim_head = "normal" end db.trader = self.object end function mob_trader:use_callback() -- dialog_manager.restore_npc_disabled_phrases(self.object:id()) end function mob_trader:update(delta) if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then return end end function mob_trader:select_global_animation() local anim_set = global_animations[self.st.anim_global] local r = math.random(1, #anim_set) return anim_set[r] end function mob_trader:select_head_animation() -- random select local anim_set = head_animations[self.st.anim_head] local r = math.random(1, #anim_set) return anim_set[r] end function mob_trader:on_global_anim_request() self.st.signals["animation_end"] = true if (not self.st.play_once) then self.object:set_trader_global_anim(self:select_global_animation()) end end function mob_trader:on_head_anim_request() if self.st.anim_head == nil then return end self.object:set_trader_head_anim(self:select_head_animation()); end function mob_trader:on_sound_end() self.st.signals["sound_phrase_end"] = true end function mob_trader:deactivate() self.object:set_callback(callback.trader_global_anim_request, nil ) self.object:set_callback(callback.trader_head_anim_request, nil ) self.object:set_callback(callback.trader_sound_end, nil ) self.object:set_callback(callback.use_object, nil ) self.st.signals = {} db.trader = nil end function add_to_binder(npc, ini, scheme, section, storage) printf("DEBUG: add_to_binder: npc:name()='%s', scheme='%s', section='%s'", npc:name(), scheme, section) local new_action = mob_trader(npc, storage) -- Зарегистрировать все actions, в которых должен быть вызван метод reset_scheme при изменении настроек схемы: xr_logic.subscribe_action_for_events(npc, storage, new_action) end function set_scheme(npc, ini, scheme, section, gulag_name) local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section) st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc) st.anim_global = utils.cfg_get_string(ini, section, "anim_global", npc, true, "") st.can_talk = utils.cfg_get_bool(ini, section, "can_talk", npc, false, true) st.tip_text = utils.cfg_get_string(ini, section, "tip_text", npc, false, "", "character_use") if st.tip_text == nil then st.tip_text = "" end npc:set_tip_text(st.tip_text) if (ini:line_exist( section, "sound_phrase")) then st.anim_head = utils.cfg_get_string(ini, section, "anim_head", npc, false, "") st.sound_phrase = utils.cfg_get_string(ini, section, "sound_phrase", npc, false, "") else st.anim_head = nil st.sound_phrase = nil end
--' check if play once animation st.play_once = false if (ini:line_exist( section, "on_signal")) then local str = utils.cfg_get_string(ini, section, "on_signal", npc, false, "") local par = utils.parse_params(str) if par[1] == "animation_end" then st.play_once = true end end if st.can_talk == true then npc:enable_talk() else npc:disable_talk() end end[/cut]
[cut=bind_trader]-- Sidor etc binding function bind(obj) local new_binder = trader_object_binder(obj) obj:bind_object(new_binder) end class "trader_object_binder" (object_binder) function trader_object_binder:__init(obj) super(obj) self.loaded = false end
function trader_object_binder:reload(section) object_binder.reload(self, section) end function trader_object_binder:reinit() object_binder.reinit(self) db.storage[self.object:id()] = { } self.st = db.storage[self.object:id()] end function trader_object_binder:update(delta) object_binder.update(self, delta) -- јпдейт торговли if self.object:clsid() == clsid.script_trader then trade_manager.update(self.object) end local st = db.storage[self.object:id()] if st ~= nil and st.active_scheme ~= nil then xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor) end if self.st.active_section ~= nil then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta) end end function trader_object_binder:net_spawn(sobject) if not object_binder.net_spawn(self, sobject) then return false end local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist if on_offline_condlist ~= nil then xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist) end if not self.object:alive() then return true end if alife():object(self.object:id()) == nil then return false end db.add_obj(self.object) if self.object:clsid() == clsid.script_trader then self.object:set_trader_global_anim("idle_spinka") smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded) end return true end function trader_object_binder:net_destroy() xr_sound.stop_sounds_by_id(self.object:id()) local st = db.storage[self.object:id()] if st and st.active_scheme then xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy") end if db.offline_objects[self.object:id()] then db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id() db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section end db.del_obj(self.object) db.storage[self.object:id()] = nil object_binder.net_destroy(self) end function trader_object_binder:net_save_relevant() return true end function trader_object_binder:save(packet) set_save_marker(packet, "save", false, "trader_object_binder") object_binder.save(self, packet) xr_logic.save_obj(self.object, packet) if self.object:clsid() == clsid.script_trader then trade_manager.save(self.object, packet) end set_save_marker(packet, "save", true, "trader_object_binder") end function trader_object_binder:load(reader) self.loaded = true set_save_marker(reader, "load", false, "trader_object_binder") object_binder.load(self, reader) xr_logic.load_obj(self.object, reader) if self.object:clsid() == clsid.script_trader then trade_manager.load(self.object, reader) end set_save_marker(reader, "load", true, "trader_object_binder") end[/cut]
Сообщение отредактировал men_stalker - Вс, 19.06.2016, 12:44 |
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 19.06.2016, 19:39 | Сообщение # 1319 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Поясните вот эту странную конструкцию:
Цитата men_stalker ( ) $prefetch = 5 cform = skeleton class = AI_TRADE_S class = AI_TRD_S Переменные не идут каждая в своей строке?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Пн, 20.06.2016, 11:06 | Сообщение # 1320 |
Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, спасибо за помощь сам не заметил. Всё встало на круги своя, снова жалуется на переменные:D Добавлено (20.06.2016, 11:06) --------------------------------------------- Здравствуйте, у меня возникла проблема уже поднимаемая на этом форуме, но решения я не нашёл. Сидорович просто напросто ужасно перекручен и смещён по моим предположениям к блежайшей границе ai-сетки. Могут ли на это анимации влиять? Нужно ли их как-то переносить в зп (или они, как и модель, есть в оригинале?). И похоже он не видит логику(нету метки торговца и при торговле ничего нету, при попытке что либо продать - вылет)
Сообщение отредактировал men_stalker - Пн, 20.06.2016, 08:25 |
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
|