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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Пт, 09.03.2012, 19:05 | Сообщение # 91
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Тамерлан, для промотки времени в xr_effects также имеется функция, forward_game_time.

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

Всем Добрый День!
Хочется немного изменить координаты механика и торговца на Кордоне в СГМ 2.2. Когда подходишь торговать, то сталкер, который все время ходит по территории, регулярно толкает Деггтярева и окно торговли закрывается. А в комнате, где стоит Ермак, находится еще один сталкер и они все время толкаются друг с другом. Координаты торговца нашел в файле sgm_spawner, изменил на более подходящие, начал новую игру, но Кривоухов все равно находится на старом месте.
Координат Ермака не нашел. Какие файлы нужно править? Буду благодарен за любые подсказки!

Каким углом к читер-клубу??? XOBAH
 
denis2000Дата: Пт, 09.03.2012, 19:05 | Сообщение # 93
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Править нужнов логике НПС, например для торговца файл scripts\SGM\escape\esc_stalker_trader.ltx в нем в секции [move@trader] параметры move_dest_number, move_look_vertex соответственно левелвертекс где стоит и куда смотрит.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Пн, 12.03.2012, 16:28 | Сообщение # 94
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Люди, кто объяснит мне, что это за вылет?
[cut=Лог]* Texture memory: 816 M
* DDI-level: 9.0
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: recognized, 24
* NVidia MGPU: Logical(1), Physical(1)
* Starting rendering as 2-GPU.
* DVB created: 1536K
* DIB created: 512K
* distortion: used, dev(30),need(14)
* color_mapping: used, dev(30),need(14)
* SSample: 1024x768
* SSample: enabled
- r__tf_aniso 1
- r1_tf_mipbias 0.
Starting engine...
! Player name in registry is empty! (InstallUserName)
Loading DLL: xrGameSpy.dll
! Missing ogg-comment, file: d:\Игорь\s.t.a.l.k.e.r\s.t.a.l.k.e.r. - Зов Припяти\gamedata\sounds\video\ati_radeon_1920x1080.ogg
! Missing ogg-comment, file: d:\Игорь\s.t.a.l.k.e.r\s.t.a.l.k.e.r. - Зов Припяти\gamedata\sounds\video\amd_fusion_final_720.ogg
intro_start intro_logo
intro_delete ::update_logo_intro
stack trace:

001B:034A06FC xrGame.dll, CDialogHolder::CleanInternals()[/cut]

P.S. Вылечил. Удалил Повелитель Зоны, так побегаю...
P.P.S. Возник другой вопрос: Когда спавню ниву через all.spawn почему она идентифицируется не как физический объект? Прохожу сквозь неё, соответственно сесть тож не могу, фары однако, горят. wacko saddam

Neulovimii, Gamedata\configs\text\rus\st_items_weapons.xml

Как спавните, в модели есть бонешейпы, движек в курсе что у него есть автомобили. denis2000


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Пн, 12.03.2012, 17:03
 
LazurДата: Вт, 13.03.2012, 10:06 | Сообщение # 95
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Quote (denis2000)
как спавните, в модели есть бонешейпы, движек в курсе что у него есть автомобили.

Вот, вот так записываю в
[cut=all.spawn][1866]
; cse_abstract properties
section_name = m_car
name = veh_niva
position = -161,7,152
direction = 0.581841766834259,-1.45571649074554,-0.267672836780548

; cse_alife_object properties
game_vertex_id = 0
distance = 0
level_vertex_id = 594270
object_flags = 0xffffffba

; cse_visual properties
visual_name = dynamics\vehicles\niva\veh_niva_u_02

; cse_alife_object_breakable properties
health = 1 [/cut]
Вроде, как надо...


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
NiafaДата: Вт, 13.03.2012, 10:54 | Сообщение # 96
Отмычка
Вольные сталкеры
Сообщений: 42
Награды: 8
Репутация: [ 123 ]

Lazur, спавн модели можно организовать через скрипт. Для этого создаём лтх файл в директории gamedata\config и регистрируем его в system.ltx. В него прописываем примерно вот такую секцию спавна.
[cut noguest=лтх]
[hammer]:identity_immunities ; имя секции
GroupControlSection = spawn_group
$spawn = "vehicles\jeep"
$prefetch = 1
cform = skeleton
class = SCRPTCAR ; класс автомобилей "на ходу"
visual = physics\vehicles\zil131\zil131.ogf ;визуал
ef_equipment_type = 3
ph_mass = 30000
script_binding = bind_physic_object.init[/cut]

Далее, скриптом спавним авто. (Кнопка или диалог.) Но вот чтобы машинка ездила, нужно будет как минимум прописать ей примерно такой конфиг (тоже лтх файл)
[cut=лтх нивы из Прибой стори2][disable]
linear_factor = 0.3
angular_factor = 0.3

;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------

[car_definition]

camera_pos = -0.4, 1.53, 0.2 ;-0.4, 1.45, 0.2

driving_wheels = back_left_wheel,back_right_wheel,front_left_wheel,front_right_wheel ; ведущие колёса
steering_wheels = front_left_wheel,front_right_wheel ; рулевые колёса
breaking_wheels = front_left_wheel,front_right_wheel,back_left_wheel,back_right_wheel ; тормозящие колёса
doors = left_door,right_door ; двери
steer = stearing_wheel ; руль
driver_place = seat_left ; место водителя
exhausts = exhausts ; выхлопная труба
exhaust_particles = vehiclefx\exhaust_1

;-------------------------------------------------------------------------------
;------ Factory parameters of Engine -------------------------------------------

fuel_tank = 80 ; L
fuel_consumption = 1;1 ; L / (100k R); liters per 100 000 rotations
engine_power = 12 ; horse_power (kW=hp*0.808) max power
max_power_rpm = 4000 ; (nominal rpm ) on this rpm value engine power reaches maximum
max_torque_rpm = 3000 ; on this rpm engine torque reaches maximum
ph_mass = 25000

power_increment_factor = 0.02
power_decrement_factor = 0.1
rpm_increment_factor = 0.1
rpm_decrement_factor = 0.4
m_power_neutral_factor = 0.25

; additional engine parameters

max_engine_rpm = 5000 ; rpm (5000) rpm will never be more
idling_engine_rpm = 650 ; rpm (750) min rpm - starts from this rpm value

;-------------------------------------------------------------------------------
;------ Adjustment a wheel -----------------------------------------------------

reference_radius = 0.38 ; Радиус колеса, используемый при просчёте двигателя
axle_friction = 0.1 ; Ослабление скорости в неетральной позиции. (N*m)
steering_speed = 1.0 ; Время поворота рулевого колеса, в максимум. rps (1)
steering_torque = 800 ; Сила гидроусилителя руля. (N*m)
break_torque = 0.012 ; Сила тормозных колодок. (N*m)
break_time = 1.0 ; время нарастания силы торможения до максимума, при подтормаживании (стрелка назад)
hand_break_torque = 0.012 ; сила торможения пробелом (по умолчанию = break_torque)

;-------------------------------------------------------------------------------
;------ Gearbox ----------------------------------------------------------------

main_gear_ratio = 7.63 ; Передаточное отношение
auto_transmission = on ; Автоматическая коробка (on/off)

[transmission_gear_ratio]
; shift down/ shift up. (rpm, необходимое для переключения)
R = 3.73, 2500,4250
N1 = 3.73, 2500,4250
N2 = 2.29, 2500,4250
N3 = 1.39, 2500,4250
N4 = 0.96, 2500,4250

;-------------------------------------------------------------------------------
;------ Rest Adjustment --------------------------------------------------------

[lights]
headlights = f1,f2

[f1]
bone = left_light
color = 1.0,1.0,1.0,1.0
range = 25
cone_angle = 60
spot_texture = lights\lights_blamplight
glow_texture = glow\glow_Yellow
glow_radius = 1.5

[f2]
bone = right_light
color = 1.0,1.0,1.0,1.0
range = 25
cone_angle = 60
spot_texture = lights\lights_blamplight
glow_texture = glow\glow_Yellow
glow_radius = 1.5

[car_sound]
snd_volume = 1.0
snd_name = car\niva_run
engine_sound_start_dellay = 0.5
engine_start = car\test_car_start
engine_stop = car\test_car_stop
transmission_switch = car\car_gearchange
explosion_sound = weapons\heli_explosion
relative_pos = 0.0,0.5,1.5.

;-------------------------------------------------------------------------------
;------ animations params ------------------------------------------------------

[doors]
open_torque_factor = 4. ;множитель момента сил для открывания двери (default = 2)

[animations]
driver_animation_type = 0 ;тип анимаций актера для данной машины.

;-------------------------------------------------------------------------------
;------ damage params ----------------------------------------------------------

[damage_particles]

explosion_particles = explosions\expl_vehichels ;expl_car
car_damage_particles1 = explosions\expl_car_smoke_small
car_damage_particles2 = explosions\expl_car_smoke_big
wheels_damage_particles1 = vehiclefx\exhaust_1
wheels_damage_particles2 = vehiclefx\exhaust_1

particle_bones1 = front_bamper
particle_bones2 = root

;-------------------------------------------------------------------------------
;------ particle bones ---------------------------------------------------------

[particle_bones]
root = 0,-0.5,1
front_bamper = 0,0,0

;-------------------------------------------------------------------------------
;------ damage items -----------------------------------------------------------

[damage_items]
back_left_wheel = 5000
back_right_wheel = 5000
front_left_wheel = 5000
front_right_wheel = 5000
left_door = 2000
right_door = 2000
;back_door = 2000

;-------------------------------------------------------------------------------
;------ collisiondamage --------------------------------------------------------

[collision_damage]
root = 0.0001
front_bamper = 0.0001
kabina = 0.0001
left_door = 0.0001
right_door = 0.0001
back_door = 0.0001
back_left_wheel = 0
back_right_wheel = 0
front_left_wheel = 0
front_right_wheel = 0

;-------------------------------------------------------------------------------
;------ damage bones -----------------------------------------------------------

[damage_bones] ;аналогично секции в актере, но без анимаций
;bone_name = <hit_scale>,<-1>,<wound_scale>
;<hit_scale> - коэфф. изменения хита (уменьшения здоровья)
;<wound_scale> - коэфф. изменения величины открытой раны - незадействован

default = -1, -1, -1

[immunities]
burn_immunity = 0.004 ;коэффициенты иммунитета
strike_immunity = 0.005
shock_immunity = 0.0
wound_immunity = 0.002
radiation_immunity = 0.0
telepatic_immunity = 0.0
chemical_burn_immunity = 0.0
explosion_immunity = 0.01
fire_wound_immunity = 0.003 ;0.0008
wound_2_immunity = 0.0

;-------------------------------------------------------------------------------
;----------------explosion params-----------------------------------------------

[explosion]
blast = 1
blast_r = 15
blast_impulse = 350
frags = 15
frags_r = 30
frag_hit = 0.5
frag_hit_impulse = 350
hit_type_blast = explosion
hit_type_frag = fire_wound
up_throw_factor = 0.25
wm_size = 0.1
explode_particles = explosions\expl_car
light_color = 0.6,0.5,0.3
light_range = 15.0
light_time = 0.5

;трассы от осколков
fragment_speed = 76
fragment_tracer_max_length = 3
explode_duration = 50 ;подолжительность взрыва (с)

;звуки
snd_explode = weapons\heli_explosion
;wallmarks
wallmark_section = explosion_marks

[explode_effector]
effect_sect_name= effector_explode_hit

;-------------------------------------------------------------------------------
;------ Others params ----------------------------------------------------------

[air_resistance]
linear_factor = 500.f ;
angular_factor = 500.f ;

[wheels_params]
damping_factor = 10 ;
spring_factor = 1 ;
friction_factor = 1.0 ;

[front_left_wheel]
break_torque = 0.015 ; Сила тормозных колодок. (N*m
hand_break_torque = 0.015 ; сила торможения пробелом (по умолчанию = break_torque)
damping_factor = 10 ;
spring_factor = 1 ;
friction_factor = 0.9 ;

[front_right_wheel]
break_torque = 0.015 ; Сила тормозных колодок. (N*m
hand_break_torque = 0.015 ; сила торможения пробелом (по умолчанию = break_torque)
damping_factor = 10 ;
spring_factor = 1 ;
friction_factor = 0.9 ;

[back_left_wheel]
break_torque = 0.01 ; Сила тормозных колодок. (N*m
hand_break_torque = 0.01 ; сила торможения пробелом (по умолчанию = break_torque)
damping_factor = 10 ;
spring_factor = 1 ;
friction_factor = 1.0 ;

[back_right_wheel]
break_torque = 0.01 ; Сила тормозных колодок. (N*m
hand_break_torque = 0.01 ; сила торможения пробелом (по умолчанию = break_torque)
damping_factor = 10 ;
spring_factor = 1 ;
friction_factor = 1.0 ;

[collide]
not_collide_parts = 1

;-------------------------------------------------------------------------------
;------ destroyed part ---------------------------------------------------------

[destroyed]
physics\vehicles\Zaz\part\veh_zaz_u_01_part1
physics\vehicles\Zaz\part\veh_zaz_u_01_part2
physics\vehicles\Zaz\part\veh_zaz_u_01_part3
physics\vehicles\Zaz\part\veh_zaz_u_01_part4
physics\vehicles\Zaz\part\veh_zaz_u_01_part5
physics\vehicles\Zaz\part\veh_zaz_u_01_part6

[autoremove_parts]
time = 30
;-------------------------------------------------------------------------------
;--- part impulse_transition ---------------------------------------------------

[impulse_transition_to_parts]
random_min = 10.0 ; величина случайно направленного импульса пропорционально массе нового объекта
random_hit_imp = 1.0 ; величина случайно направленного импульса пропорционально разрушающему хиту
;ref_bone = ; кость из по которой определяется скорость для частей у который связь не задана, по умолчанию рут
imp_transition_factor = 0.8 ; фактор с которым прикладывается хит по исходному объекту ко всем частям
lv_transition_factor = 0.5 ; коэффициент передачи линейной скорости
av_transition_factor = 0.5 ; коэффициент передачи угловой скорости

;-------------------------------------------------------------------------------
;------ End params -------------------------------------------------------------
[/cut]

Чтобы узнать, какоой файл конфигов прописан модельке, можно глянуть в сдк. Ну а дальше тесты и только они. Удачи=)




Сообщение отредактировал Niafa - Вт, 13.03.2012, 10:55
 
LazurДата: Вт, 13.03.2012, 11:15 | Сообщение # 97
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Niafa, не, спасибо, конечно, ниву я отладил давно, я её заспавнить не могу, чтоб она у меня со старта новой игры была в месте, где отмечал. Она не идентифицируется как авто, в этом вся проблема. sad

На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
denis2000Дата: Вт, 13.03.2012, 12:59 | Сообщение # 98
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (Lazur)
Вроде, как надо...

Quote (Lazur)
Она не идентифицируется как авто, в этом вся проблема.

А все потому, что спавн в корне не верный!
1. Скриптом можно спавнить и в начале игры (перечитай первые уроки в КМБ)
2. Для спавна через all.spawn нужо не section_name = m_car, а например section_name = m_car_btr (Это я сделал для БТР-а)
2.1. Добавить в acdccop.pl параметр m_car_btr => 'cse_alife_car'
2.2. Добавить секцию спавна [m_car_btr] например такого содержания:
Code
class  = C_NIVA
cform           = skeleton
visual  = dynamics\vehicles\btr\veh_btr_u_01.ogf
или такого как рекомендовал уважаеый Niafa.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NiafaДата: Вт, 13.03.2012, 13:04 | Сообщение # 99
Отмычка
Вольные сталкеры
Сообщений: 42
Награды: 8
Репутация: [ 123 ]

Lazur, спавн через скрипт поможет определить, что именно не так- модель не работает или неправильно заспавнен автомобиль.
Можно подробнее, что значит не идетифицируется? Вылет? Или она просто не появляется?\

Не успел=)




Сообщение отредактировал Niafa - Вт, 13.03.2012, 13:04
 
LazurДата: Вт, 13.03.2012, 15:54 | Сообщение # 100
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Niafa, Нет, вылета нет, и она появляется, но только визуал, сквозь неё можно пройти без проблем, но сесть в неё нельзя, но отчасти вункционирует, фары у неё горят.
denis2000, "acdccop.pl" это что?


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
XOBAHДата: Вт, 13.03.2012, 16:07 | Сообщение # 101
Техник Вольных
Вольные сталкеры
Сообщений: 912
Награды: 21
Репутация: [ 991 ]

Lazur, acdccop.pl - Это ACDC для SCOP; Нужен для работы с all.spawn
Quote (Lazur)
только визуал, сквозь неё можно пройти без проблем

Придется править модель в SDK, в частности, размеры шейпов у костей
Ну и движок пропатчен?


 
denis2000Дата: Вт, 13.03.2012, 17:17 | Сообщение # 102
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (Lazur)
"acdccop.pl" это что?

Короче, новое имя секции нужно зарегистрироватьв ACDC у меня таблица находиться в этом файле, у тебя может в другом.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Вт, 13.03.2012, 17:51 | Сообщение # 103
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

XOBAH, Я на ниве уже рассекаю Зону, она нармальная, рабочая так сказать. Но при спавне (а я его неправильно делал, по словам deniss2000) она "ломается" тоесть теряет свойства авто как такового. В чём именно, описывал выше.
Двигатель пропатчен до 1.6.0.1 на 0.2 в авто сесть нельзя, возможность вырезали из xGame.dll sad .


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

Lazur, Заспавнить нормально удалось? Речь не о версии движка, длл нужно пропатчить для того чтобы в авто можно было сесть, а это вырезано во всех версрях.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Ср, 14.03.2012, 11:47 | Сообщение # 105
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

denis2000, да, заспавнил, работает. Поклон вам низкий, denis2000, Niafa, XOBAH! Узнать бы ещё как репу повышать... wink
P.S. а как прописать чтоб в начале игры спавнилось, а не как в КМБ по квесту Бороды?

Ежели спавнишь скриптом то смотри Урок3 КМБ, или через all.spawn только указывай секцию не стандартную а уникальную. denis2000


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
Поиск: