CoP. Создание полноценных аномальных зон — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CoP. Создание полноценных аномальных зон — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(категория)
 
(не показаны 11 промежуточные версии 4 участников)
Строка 7: Строка 7:
  
  
http://www.activestate.com/activeperl/  интерпретатор, нужный для работы ACDC
+
[http://www.activestate.com/activeperl/]   интерпретатор, нужный для работы ACDC
  
http://stalkerin.gameru.net/downloads/stutils/acdccop-20091002.7z  ACDC от bardak'а
+
[http://stalkerin.gameru.net/downloads/stutils/acdccop-20091002.7z]   ACDC от bardak'а
  
http://narod.ru/disk/16768045000/script_position_cop.rar.html  скрипт от bardak'а для вывода на экран информации о позиции игрока.
+
[http://narod.ru/disk/16768045000/script_position_cop.rar.html]   скрипт от bardak'а для вывода на экран информации о позиции игрока.
  
1) Ставим ActivePerl
+
1) Устанавливаем ActivePerl
  
2) Закидываем ACDC в C:Perl\Bin
+
2) Закидываем ACDC в любую папку
  
3) Создаём в C:Perl\Bin файл Распаковка.txt и вставляем в него текст:
+
3) Создаём в файл decompile.txt и вставляем в него текст:
  
perl.exe acdccop.pl -d all.spawn
+
<dos>
pause
+
perl acdccop.pl -d all.spawn
 +
pause
 +
</dos>
  
4) Создаём в C:Perl\Bin файл Запаковка.txt и вставляем в него текст:
+
4) Создаём в файл compile.txt и вставляем в него текст:
  
perl.exe acdccop.pl -c all.ltx
+
<dos>
pause done
+
perl acdccop.pl -c all.ltx
 +
pause
 +
</dos>
  
 
5) Меняем расширение обоих .txt на .bat
 
5) Меняем расширение обоих .txt на .bat
Строка 49: Строка 53:
 
1) Открываем alife_zaton.ltx и в самом конце вставляем 4 вот таких секции. (Не забудьте удалить коменты)
 
1) Открываем alife_zaton.ltx и в самом конце вставляем 4 вот таких секции. (Не забудьте удалить коменты)
  
[?7?7?7?] ;Уникальный номер секции, должен идти последовательно (если последняя секция [1358] то наша должна быть [1359])
+
<ini>
 +
[9999] ;Уникальный номер секции, для удобства можно именовать последовательно (если последняя секция [1358] то наша должна быть [1359])
 
  ; cse_abstract properties
 
  ; cse_abstract properties
  section_name = ?7?7?7? ;Имя секции (Типа чё ставим) Аномалии описаны в gamedata\configs\zones Пример(zone_mine_electric_weak)
+
  section_name = zone_mine_electric_weak ;Имя секции (Типа чё ставим) Аномалии описаны в gamedata\configs\zones  
  name = ?7?7?7? ;Уникальное имя секции (УНИКАЛЬНОЕ!!!)Не должно повторяться)
+
  name = test_anomaly ;Уникальное имя секции (УНИКАЛЬНОЕ!!!)Не должно повторяться)
  position = ?7?7?7? ;Позиция на локации по X,Y,Z Допустимые варианты заполнения 364.154896,-14.153879,259.145987 или 364,-14,259
+
  position = 0,0,0 ;Позиция на локации по X,Y,Z Допустимые варианты заполнения 364.154896,-14.153879,259.145987 или 364,-14,259
 
  direction = 0,0,0 ;Направление объекта (Для аномалий можно не трогать)
 
  direction = 0,0,0 ;Направление объекта (Для аномалий можно не трогать)
 
   
 
   
 
  ; cse_alife_object properties
 
  ; cse_alife_object properties
  game_vertex_id = ?7?7?7? ;Вертикс
+
  game_vertex_id = 0 ;игровой вертекс
  distance = 32.2000007629395 ;Дистанция (Для аномалий можно не трогать)
+
  distance = 32.0 ;расстояние до ближайшего гв
  level_vertex_id = ?7?7?7? ;Вертикс
+
  level_vertex_id = 0 ;уровневый вертекс
  object_flags = 0xffffff3e ;Метка (Х.З. Чё значит)
+
  object_flags = 0xffffff3e ;флаг объекта, не трогать
 
   
 
   
 
  ; cse_shape properties
 
  ; cse_shape properties
 
  shapes = shape0
 
  shapes = shape0
  shape0:type = sphere ;Тип аномалии (в данном случае сфера)
+
  shape0:type = sphere ;Тип shape'а аномалии (в данном случае сфера)
 
  shape0:offset = 0,0,0
 
  shape0:offset = 0,0,0
  shape0:radius = ?7?7?7? ;Радиус сферы
+
  shape0:radius = 1 ;Радиус сферы
 
   
 
   
 
  ; cse_alife_space_restrictor properties
 
  ; cse_alife_space_restrictor properties
  restrictor_type = 3 ;Тип рестриктора (Х.З. Чё значит)
+
  restrictor_type = 3 ;Тип рестриктора
 
   
 
   
 
  ; cse_alife_custom_zone properties
 
  ; cse_alife_custom_zone properties
Строка 82: Строка 87:
 
  artefact_position_offset = 0x460 ;Чё та про спавн артефактов(Х.З. Чё значит)
 
  artefact_position_offset = 0x460 ;Чё та про спавн артефактов(Х.З. Чё значит)
 
   
 
   
  ; se_zone_anom properties
+
  ; se_zone_anom properties</ini>
  
 
2) Заполняем ВСЕ (?7?7?7?). Откуда спросите вы =) позиции и вертиксы со скринов. section_name в данном случае из gamedata\configs\zones. Радиус и временные параметры из головы. Получится что то типа:
 
2) Заполняем ВСЕ (?7?7?7?). Откуда спросите вы =) позиции и вертиксы со скринов. section_name в данном случае из gamedata\configs\zones. Радиус и временные параметры из головы. Получится что то типа:
  
[2180]
+
<ini>[2180]
 
  ; cse_abstract properties
 
  ; cse_abstract properties
 
  section_name = zone_mine_electric_weak
 
  section_name = zone_mine_electric_weak
Строка 119: Строка 124:
 
  artefact_position_offset = 0x460
 
  artefact_position_offset = 0x460
 
   
 
   
  ; se_zone_anom properties
+
  ; se_zone_anom properties</ini>
  
 
3) Ну естественно у вас должно получится с другими координатами =)
 
3) Ну естественно у вас должно получится с другими координатами =)
Строка 133: Строка 138:
 
1) Создадим секцию
 
1) Создадим секцию
  
[2204]
+
<ini>[2204]
 
  ; cse_abstract properties
 
  ; cse_abstract properties
 
  section_name = anomal_zone
 
  section_name = anomal_zone
Строка 157: Строка 162:
 
   
 
   
 
  ; cse_alife_space_restrictor properties
 
  ; cse_alife_space_restrictor properties
  restrictor_type = 3
+
  restrictor_type = 3</ini>
  
 
Здесь координаты и вертиксы берем со скрина возле дерева.
 
Здесь координаты и вертиксы берем со скрина возле дерева.
Строка 163: Строка 168:
 
2) Создаём в папке gamedata\configs\scripts\zaton\anomaly файл zaton_test_anomal_zone.ltx и вставляем в него:
 
2) Создаём в папке gamedata\configs\scripts\zaton\anomaly файл zaton_test_anomal_zone.ltx и вставляем в него:
  
[anomal_zone]
+
<ini>[anomal_zone]
 
  layers_count = 1
 
  layers_count = 1
 
  respawn_tries = 2
 
  respawn_tries = 2
Строка 172: Строка 177:
 
  start_artefact = af_electra_moonlight
 
  start_artefact = af_electra_moonlight
 
  coeff = 3, 3, 2, 2, 1, 1
 
  coeff = 3, 3, 2, 2, 1, 1
  artefact_ways = zaton_testing_af_way
+
  artefact_ways = zaton_testing_af_way</ini>
  
 
3) Открываем way_zaton.ltx и в низу вставляем секцию:
 
3) Открываем way_zaton.ltx и в низу вставляем секцию:
  
[zaton_testing_af_way]
+
<ini>[zaton_testing_af_way]
 
  points = p0,p1,p2,p3
 
  points = p0,p1,p2,p3
 
  p0:name = wp00
 
  p0:name = wp00
Строка 200: Строка 205:
 
  p2:game_vertex_id = ?7?7?7?
 
  p2:game_vertex_id = ?7?7?7?
 
  p2:level_vertex_id = ?7?7?7?
 
  p2:level_vertex_id = ?7?7?7?
  p2:links = p0(1)
+
  p2:links = p0(1)</ini>
  
 
Здесь позиции и вертиксы ставим из первых 4х скринов(тоесть центры аномалий)
 
Здесь позиции и вертиксы ставим из первых 4х скринов(тоесть центры аномалий)
Строка 206: Строка 211:
 
4) Опять открываем alife_zaton.ltx вставляем:
 
4) Опять открываем alife_zaton.ltx вставляем:
  
[2205]
+
<ini>[2205]
 
  ; cse_abstract properties
 
  ; cse_abstract properties
 
  section_name = space_restrictor
 
  section_name = space_restrictor
Строка 230: Строка 235:
 
   
 
   
 
  ; cse_alife_space_restrictor properties
 
  ; cse_alife_space_restrictor properties
  restrictor_type = 3
+
  restrictor_type = 3</ini>
  
 
С координатами возле деревца.
 
С координатами возле деревца.
Строка 240: Строка 245:
 
7)Идем в gamedata\scripts открываем pda.script и находим строку:
 
7)Идем в gamedata\scripts открываем pda.script и находим строку:
  
local primary_objects_tbl =
+
<lua>local primary_objects_tbl = </lua>
  
 
Добавляем по анологии строку:
 
Добавляем по анологии строку:
  
{target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},
+
<lua>{target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},</lua>
  
 
Получится что то типа
 
Получится что то типа
  
{target="zat_b12_spot", hint="st_zat_b12_name"},
+
<lua>{target="zat_b12_spot", hint="st_zat_b12_name"},
 
  {target="zat_b28_spot", hint="st_zat_b28_name"},
 
  {target="zat_b28_spot", hint="st_zat_b28_name"},
 
  {target="zat_b103_spot", hint="st_zat_b103_name"},
 
  {target="zat_b103_spot", hint="st_zat_b103_name"},
  {target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},
+
  {target="zaton_test_anomaly_spot", hint="zaton_test_anomaly_spot_name"},</lua>
  
8)Идем в gamedata\configs\text\rus и открываем блокнотиком st_land_names.xml И добавляем новую секцию с string id="zaton_test_anomaly_spot_name" по анологии.
+
8)Идем в gamedata\configs\text\rus и открываем блокнотиком st_land_names.xml И добавляем новую секцию с <xml>string id = "zaton_test_anomaly_spot_name"</xml> по анологии.
  
 
9)Если всё сделано правильно то в игре вас будет ждать новая аномалия =)
 
9)Если всё сделано правильно то в игре вас будет ждать новая аномалия =)
  
 +
== Перечень названий-типов аномалий ==
 +
 +
Ниже приведён список аномалий и их обазначение для all.spawn:
 +
* zone_field_radioactive_average - очаг радиоактивности
 +
* zone_mine_electric_weak - электра
 +
* zone_mine_gravitational_average - воронка
 +
 +
== Авторы ==
  
Автор: WincentDark69
+
Автор: [[Участник:WincentDark69|WincentDark69]]
  
 
[[Категория:Конфигурационные_файлы]]
 
[[Категория:Конфигурационные_файлы]]

Текущая версия на 13:53, 14 сентября 2016

Данная статья посвещена созданию полноценных аномальных зон в ЗП. Расчитана на неопытных мододелов.

Итак начнем, для работы нам понадобятся: распакованный all.spawn, долька фантазии и не очень кривые руки.


РАСПАКОВКА all.spawn:


[1] интерпретатор, нужный для работы ACDC

[2] ACDC от bardak'а

[3] скрипт от 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) Заходим в (S.T.A.L.K.E.R. - Зов Припяти\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 ;Чё та про спавн артефактов(Х.З. Чё значит)
 
 ; 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)Если всё сделано правильно то в игре вас будет ждать новая аномалия =)

Перечень названий-типов аномалий

Ниже приведён список аномалий и их обазначение для all.spawn:

  • zone_field_radioactive_average - очаг радиоактивности
  • zone_mine_electric_weak - электра
  • zone_mine_gravitational_average - воронка

Авторы

Автор: WincentDark69

Другие места
LANGUAGE