Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Форум » Моды для игр » Модостроение » Модостроение. Спавн и логика
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Чт, 16.06.2016, 09:31 | Сообщение # 1306
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

men_stalker,

Посмотри, как прописана эта переменная terrain у обычных сталкеров. И сделай так же.
 
men_stalkerДата: Чт, 16.06.2016, 11:15 | Сообщение # 1307
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

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
Тот же эфект
 
sergej5500Дата: Чт, 16.06.2016, 11:21 | Сообщение # 1308
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

men_stalker,

Переменная, которой нет, называется terrain. Она должна быть прописана в секции stalker в файле m_stalker в configs\creatures. Прочие секции сталкеров берут её оттуда. Посмотри, чему она равна и добавь Сидоровичу.
 
men_stalkerДата: Чт, 16.06.2016, 15:02 | Сообщение # 1309
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

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]
 
denis2000Дата: Чт, 16.06.2016, 15:15 | Сообщение # 1310
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

men_stalker, Не в той секции!

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Чт, 16.06.2016, 15:23 | Сообщение # 1311
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

denis2000, в каком смысле не в той секции?
 
sergej5500Дата: Чт, 16.06.2016, 15:45 | Сообщение # 1312
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата men_stalker ()
в каком смысле не в той секции?


В смысле секция [stalker_foot_bones] и секция [stalker] - это разные секции. Главная для всех сталкеров - "родительская" секция это секция [stalker]. В ней и должен быть параметр

terrain = чему то там

Просмотри весь файл m_stalker на terrain = ***. Где то он должен быть прописан. Если не найдешь его в этом файле, то проверь Тотал Коммандером всю папку configs. В каком то файле этот самый terrain прописан. Его и надо скопировать Сидоровичу, чтобы игра не вылетала.
 
men_stalkerДата: Чт, 16.06.2016, 16:36 | Сообщение # 1313
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

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
 
sergej5500Дата: Чт, 16.06.2016, 17:15 | Сообщение # 1314
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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, например.
 
men_stalkerДата: Сб, 18.06.2016, 16:34 | Сообщение # 1315
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Доброго времени суток, после добавления ещё нескольких переменных в [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'а.
 
sergej5500Дата: Сб, 18.06.2016, 20:10 | Сообщение # 1316
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата men_stalker ()
после добавления ещё нескольких переменных в [m_trader] при запуске получил вылет:


Значит, причина в этих переменных. Можно посоветовать только одно. Добавлять их по одной. Смотреть, после какой появится вылет.
 
denis2000Дата: Сб, 18.06.2016, 20:28 | Сообщение # 1317
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
всё нормально

Цитата men_stalker ()
при запуске получил вылет

Вы конечно в курсе, что это противоречивые заявления?
Выкладывайте правки будем анализировать.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Вс, 19.06.2016, 12:44 | Сообщение # 1318
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

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
 
denis2000Дата: Вс, 19.06.2016, 19:39 | Сообщение # 1319
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Поясните вот эту странную конструкцию:
Цитата men_stalker ()
$prefetch = 5 cform = skeleton class = AI_TRADE_S
class = AI_TRD_S

Переменные не идут каждая в своей строке?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Пн, 20.06.2016, 11:06 | Сообщение # 1320
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

denis2000, спасибо за помощь сам не заметил. Всё встало на круги своя, снова жалуется на переменные:D

Добавлено (20.06.2016, 11:06)
---------------------------------------------
Здравствуйте, у меня возникла проблема уже поднимаемая на этом форуме, но решения я не нашёл.
Сидорович просто напросто ужасно перекручен и смещён по моим предположениям к блежайшей границе ai-сетки. Могут ли на это анимации влиять? Нужно ли их как-то переносить в зп (или они, как и модель, есть в оригинале?). И похоже он не видит логику(нету метки торговца и при торговле ничего нету, при попытке что либо продать - вылет)

Сообщение отредактировал men_stalker - Пн, 20.06.2016, 08:25
 
Форум » Моды для игр » Модостроение » Модостроение. Спавн и логика
Поиск: