Ця стаття присвячена створенню повноцінних аномальних зон у ЗП. Розрахована на недосвідчених модоробів.
Отже почнемо, для роботи нам знадобляться: розпакований all.spawn, часточка фантазії та не дуже криві руки.
Розпакування all.spawn:
Інтерпретатор, необхідний роботи ACDC
ACDC від bardak'а
скрипт від bardak'а для виведення на екран інформації про позицію гравця.
1) Встановлюємо ActivePerl
2) Закидаємо ACDC у будь-яку папку
3) Створюємо файл decompile.txt і вставляємо в нього текст:
perl acdccop.pl -d all.spawn pause
4) Створюємо файл compile.txt і вставляємо в нього текст:
perl acdccop.pl -c all.ltx pause
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) Заходимо в (STALKER - Поклик Прип'яті\users\screenshots) і бачимо там 5 скринів. Ну з приготуванням впоралися =)
НЕ ДУЖЕ КРИВІ РУКИ:
1) Відкриваємо alife_zaton.ltx і в самому кінці вставляємо 4 такі секції. (Не забудьте видалити коментарі)
[9999] ;Уникальный номер секции, для удобства можно именовать последовательно (если последняя секция [1358] то наша должна быть [1359]) ; cse_abstract properties section_name = zone_mine_electric_weak ;Имя секции (Типа чё ставим) Аномалии описаны в gamedata\configs\zones name = test_anomaly ;Уникальное имя секции (УНИКАЛЬНОЕ!!!)Не должно повторяться) position = 0,0,0 ;Позиция на локации по X,Y,Z Допустимые варианты заполнения 364.154896,-14.153879,259.145987 или 364,-14,259 direction = 0,0,0 ;Направление объекта (Для аномалий можно не трогать) ; cse_alife_object properties game_vertex_id = 0 ;игровой вертекс distance = 32.0 ;расстояние до ближайшего гв level_vertex_id = 0 ;уровневый вертекс object_flags = 0xffffff3e ;флаг объекта, не трогать ; cse_shape properties shapes = shape0 shape0:type = sphere ;Тип shape'а аномалии (в данном случае сфера) shape0:offset = 0,0,0 shape0:radius = 1 ;Радиус сферы ; 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 ;Чё та про спавн артефактов(Х.З. Чё значит)
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) Якщо все зроблено правильно то в грі на вас чекатиме нова аномалія =)
Перелік назв-типів аномалій
Нижче наведено список аномалій та їх позначення для all.spawn:
- zone_field_radioactive_average - осередок радіоактивності
- zone_mine_electric_weak - електро
- zone_mine_gravitational_average - вирва