Сповіщення
Очистити все

Створення аномальних зон


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Ця стаття присвячена створенню повноцінних аномальних зон у ЗП. Розрахована на недосвідчених модоробів.

Отже почнемо, для роботи нам знадобляться: розпакований 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 - вирва

   
Цитата