CoP. Создание полноценных аномальных зон Данная статья посвещена созданию полноценных аномальных зон в ЗП. Расчитана на неопытных мододелов.
Итак начнем, для работы нам понадобятся: распакованный all.spawn, долька фантазии и не очень кривые руки.
РАСПАКОВКА all.spawn:
[1] интерпретатор, нужный для работы ACDC
[2] ACDC от bardak'а
[3] скрипт от bardak'а для вывода на экран информации о позиции игрока.
1) Ставим ActivePerl
2) Закидываем ACDC в C:Perl\Bin
3) Создаём в C:Perl\Bin файл Распаковка.txt и вставляем в него текст:
perl.exe acdccop.pl -d all.spawn
pause
4) Создаём в C:Perl\Bin файл Запаковка.txt и вставляем в него текст:
perl.exe acdccop.pl -c all.ltx
pause done
5) Меняем расширение обоих .txt на .bat
6) Кидаем сюда же all.spawn и жмем на распаковку. И видим кучу файлов типа alife_локация.ltx, way_локация.ltx, section2.bin, section4.bin и all.ltx
7) Всё all.spawn распакован оставим его пока что.
ДОЛЬКА ФАНТАЗИИ:
1) Закидываем скрипт bardak'а в gamedata'у соглашаясь на замену и запускаем игру. На экране должна отобразится информация о позиции игрока на локации.
2) Находим место для нашей аномальной зоны(естественно она состоит из нескольких аномалий). Для примера находим какое нибудь деревце на затоне и делаем 4 скрина (кнопочка F12) с разных сторон (крестом) на расстоянии 5 метров от деревца. Далее 1 скрин возле самого деревца. Выходим из игры.
3) Заходим в (S.T.A.L.K.E.R. - Зов Припяти\users\screenshots) и видим там 5 скринов. Ну с приготовлениями справились =)
НЕ ОЧЕНЬ КРИВЫЕ РУКИ:
1) Открываем alife_zaton.ltx и в самом конце вставляем 4 вот таких секции. (Не забудьте удалить коменты)
[?7?7?7?] ;Уникальный номер секции, должен идти последовательно (если последняя секция [1358] то наша должна быть [1359])
; cse_abstract properties
section_name = ?7?7?7? ;Имя секции (Типа чё ставим) Аномалии описаны в gamedata\configs\zones Пример(zone_mine_electric_weak)
name = ?7?7?7? ;Уникальное имя секции (УНИКАЛЬНОЕ!!!)Не должно повторяться)
position = ?7?7?7? ;Позиция на локации по X,Y,Z Допустимые варианты заполнения 364.154896,-14.153879,259.145987 или 364,-14,259
direction = 0,0,0 ;Направление объекта (Для аномалий можно не трогать)
; cse_alife_object properties
game_vertex_id = ?7?7?7? ;Вертикс
distance = 32.2000007629395 ;Дистанция (Для аномалий можно не трогать)
level_vertex_id = ?7?7?7? ;Вертикс
object_flags = 0xffffff3e ;Метка (Х.З. Чё значит)
; cse_shape properties
shapes = shape0
shape0:type = sphere ;Тип аномалии (в данном случае сфера)
shape0:offset = 0,0,0
shape0:radius = ?7?7?7? ;Радиус сферы
; cse_alife_space_restrictor properties
restrictor_type = 3 ;Тип рестриктора (Х.З. Чё значит)
; cse_alife_custom_zone properties
max_power = 0 ;Сила аномалии (при 0 используется стандартное из конфига, если меняем то вписываем по образцу 1.0 и т.д.)
enabled_time = ?7?7?7? ;Включенное состояние(указывать в секундах, если постоянно то 0 или удалить строку)
disabled_time = ?7?7?7? ;Выключенное состояние(указывать в секундах, если постоянно то 0 или удалить строку)
start_time_shift = ?7?7?7? ;Задержка включения(без задержки 0, если использованны предъидущие строки то эта строка обязательна!!!)
; cse_alife_anomalous_zone properties
offline_interactive_radius = 30 ;(Х.З. Чё значит)
artefact_spawn_count = 32 ;Чё та про спавн артефактов(Х.З. Чё значит)
artefact_position_offset = 0x460 ;Чё та про спавн артефактов(Х.З. Чё значит)
; se_zone_anom properties
2) Заполняем ВСЕ (?7?7?7?). Откуда спросите вы =) позиции и вертиксы со скринов. section_name в данном случае из gamedata\configs\zones. Радиус и временные параметры из головы. Получится что то типа:
[2180]
; cse_abstract properties
section_name = zone_mine_electric_weak
name = zaton_testing_anomaly_01
position = -73,-7,575
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 48
distance = 32.2000007629395
level_vertex_id = 795179
object_flags = 0xffffff3e
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 3.0
; cse_alife_space_restrictor properties
restrictor_type = 3
; cse_alife_custom_zone properties
max_power = 10
enabled_time = 10
disabled_time = 5
start_time_shift = 0
; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 32
artefact_position_offset = 0x460
; se_zone_anom properties
3) Ну естественно у вас должно получится с другими координатами =)
4) И так заполняем все 4 секции каждую с разных позиций вокруг дерева главное не перестараться с радиусом =)
5) В итоге у нас есть 4 электры вокруг дерева. Согласитесь этого мало для полноценной аномалии. А что еще нужно? А нужно нам что бы в аномальной зоне появлялись артефакты, что бы они постепенно перемещались внутри аномальной зоны, да еще и саму зону на карте отметить.
НУ ПРИСТУПИМ К ОЖИВЛЕНИЮ:
1) Создадим секцию
[2204]
; cse_abstract properties
section_name = anomal_zone
name = zaton_test_anomal_zone
position = 257.686218261719,19.0880222320557,541.813903808594
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 292
distance = 0
level_vertex_id = 1407607
object_flags = 0xffffff3e
custom_data = <<END
[anomal_zone]
cfg = scripts\zaton\anomaly\zaton_test_anomal_zone.ltx
END
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2
; cse_alife_space_restrictor properties
restrictor_type = 3
Здесь координаты и вертиксы берем со скрина возле дерева.
2) Создаём в папке gamedata\configs\scripts\zaton\anomaly файл zaton_test_anomal_zone.ltx и вставляем в него:
[anomal_zone]
layers_count = 1
respawn_tries = 2
max_artefacts = 5
;applying_force_xz = 200
applying_force_y = 200
artefacts = af_electra_sparkler, af_electra_flash, af_electra_moonlight, af_dummy_battery, af_dummy_dummy, af_ice
start_artefact = af_electra_moonlight
coeff = 3, 3, 2, 2, 1, 1
artefact_ways = zaton_testing_af_way
3) Открываем way_zaton.ltx и в низу вставляем секцию:
[zaton_testing_af_way]
points = p0,p1,p2,p3
p0:name = wp00
p0:position = ?7?7?7?
p0:game_vertex_id = ?7?7?7?
p0:level_vertex_id = ?7?7?7?
p0:links = p1(1)
p1:name = wp01
p1:position = ?7?7?7?
p1:game_vertex_id = ?7?7?7?
p1:level_vertex_id = ?7?7?7?
p1:links = p2(1)
p2:name = wp02
p2:position = ?7?7?7?
p2:game_vertex_id = ?7?7?7?
p2:level_vertex_id = ?7?7?7?
p2:links = p3(1)
p2:name = wp02
p2:position = ?7?7?7?
p2:game_vertex_id = ?7?7?7?
p2:level_vertex_id = ?7?7?7?
p2:links = p0(1)
Здесь позиции и вертиксы ставим из первых 4х скринов(тоесть центры аномалий)
4) Опять открываем alife_zaton.ltx вставляем:
[2205]
; cse_abstract properties
section_name = space_restrictor
name = zaton_test_anomaly_spot
position = 257.686218261719,19.0880222320557,541.813903808594
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 292
distance = 0
level_vertex_id = 1407607
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = zaton_test_anomaly_spot
END
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1
; cse_alife_space_restrictor properties
restrictor_type = 3
С координатами возле деревца.
5)Запаковываем all.spawn запустив Запаковка.bat
6)Полученный all.spawn.new кидаем на место оригинального и переименовываем в all.spawn
7)Идем в gamedata\scripts открываем pda.script и находим строку:
local primary_objects_tbl =
Добавляем по анологии строку:
{target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},
Получится что то типа
{target="zat_b12_spot", hint="st_zat_b12_name"},
{target="zat_b28_spot", hint="st_zat_b28_name"},
{target="zat_b103_spot", hint="st _zat_b103_name"},
{target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},
8)Идем в gamedata\configs\text\rus и открываем блокнотиком st_land_names.xml И добавляем новую секцию с string id="zaton_test_anomaly_spot_name" по анологии.
9)Если всё сделано правильно то в игре вас будет ждать новая аномалия =)