Подключение локаций к ЧН и ЗП с помощью программы от AMK Team — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Подключение локаций к ЧН и ЗП с помощью программы от AMK Team — различия между версиями

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

Перейти к: навигация, поиск
(Основная работа.)
(Важное дополнение)
 
(не показаны 19 промежуточные версии 10 участников)
Строка 1: Строка 1:
На днях пообщался с одним человеком, узнал как подключать локации к ЗП\ЧН через программу от AMK Team.В данном уроке мы полностью подключим локацию к игре.
+
=ВНИМАНИЕ!=
 +
Данная статья в значительной степени устарела.
  
== Инструменты. ==
+
==КАТЕГОРИЧЕСКИ предупреждаем==
 +
Использование устаревшей и забагованной утилиты '''ggEditor''' - '''СТРОГО ВОСПРЕЩАЕТСЯ!'''
  
'''Чем будем ковырять:'''
+
Используйте только официальный софт от разработчиков игры, а именно "X-Ray SDK"
  
Собственно, сама [http://www.st-khb27.ru/ggtool.rar программа] для редактирования файла game.graph.
+
За более подробной информацией обратитесь на [http://www.amk-team.ru/forum/ AMK форум]
  
[http://narod.ru/disk/17377026000/ACDC%20Cop.rar.html ACDC(Для ЗП)]
 
  
[http://narod.ru/disk/17377059000/ACDC%20Cs.rar.html ACDC(Для ЧН)]
+
<hr>
  
[http://stalkerin.gameru.net/developer/mods/acdc11oct.rar ACDC(Для ТЧ)]
 
  
Распакованные ТЧ или мод из которого взят уровень.(Если вы берете уровень из мода, то вам не подойдет простой ACDC от ТЧ.)
+
В данном уроке мы полностью подключим локацию к игре.
 +
 
 +
 
 +
== Инструменты и ресурсы ==
 +
 
 +
Интерпретатор Perl:<br />
 +
[http://www.activestate.com/activeperl/downloads ActivePerl]<br />
 +
Скрипты для редактирования all.spawn:<br />
 +
[http://stalkerin.gameru.net/downloads/stutils/acdc_40109.rar ACDC for SoC v.1.0004]<br />
 +
[http://stalkerin.gameru.net/downloads/stutils/acdc_for_clear_sky_4.rar ACDC for CS v.1.5.04]<br />
 +
[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=363 ACDC for CoP]<br />
 +
или<br />
 +
[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=455 универсальный ACDC]<br />
 +
Скрипты для редактирования графов:<br />
 +
[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=453 ggTool]<br />
 +
[http://stalkerin.gameru.net/downloads/stutils/soc-cop-maps_soft.7z ggEditor v.0.1]<br />
 +
 
 +
Распакованные ресурсы ТЧ или мода, из которого взят уровень (если вы берете уровень из мода, то вам наверняка не подойдет простой ACDC).
  
Active perl(Необходим для работы ACDC, входит в два первых архива с ACDC).
 
  
 
== Подготовка. ==
 
== Подготовка. ==
Устанавливаем active perl.
 
  
Заходим в папку с программой ggEditor_01.Создаем там папки Cs или Cop(Смотря на какую игру делаете) и папку Soc.В папке Soc создаем папку gamedata и кидаем в нее файл game.graph(Важно чтобы game.graph лежал там, иначе программа не прочитает.) из мода, или от ТЧ.В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку Soc и туда кидаем папку с ACDC для ТЧ, туда же кладём all.spawn.Запускаем соответствующий батник для распаковки all.spawn`а.
+
Устанавливаем интерпретатор '''ActivePerl'''.
 +
 
 +
Заходим в папку с программой ggEditor. Создаем там папки ''CS'' или ''CoP'' (смотря на какую игру делаете) и папку ''SoC''.В папке ''SoC'' создаем папку ''gamedata'' и кидаем в нее файл '''game.graph''' (важно, чтобы '''game.graph''' лежал там, иначе программа не прочитает!) из мода, или от ТЧ. В папке ''gamedata'' создаем папку ''levels'' и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку ''SoC'' и туда кидаем папку с ACDC для ТЧ, туда же кладём '''all.spawn'''.Запускаем соответствующий батник для распаковки '''all.spawn'''`а.
  
Далее в папку ggEditor_01\Cs или Cop, кидаем папку с соответствующим ACDC, опять-же кладем туда all.spawn, распаковываем.
+
Далее в папку ''ggEditor_01\CoP'' или ''ggEditor_01\CS'', кидаем папку с соответствующим ACDC, опять-же кладем туда '''all.spawn''', распаковываем.
  
В итоге у нас должно получиться 2 распакованных all.spawn`а, game.graph от ТЧ и папка с переносимым уровнем.
+
В итоге у нас должно получиться 2 распакованных '''all.spawn'''`а, '''game.graph''' от ТЧ и папка с переносимым уровнем.
  
 
С приготовлениями всё.
 
С приготовлениями всё.
  
 
== Основная работа. ==
 
== Основная работа. ==
Запускаем программу ggEditor.Видим там два окошка. В левом открываем game.graph от ТЧ, а в правом — от ЗП или ЧН(В ЗП и ЧН граф вшит в all.spawn, ищите его там.)(Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл section4.bin).
 
В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить».После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЧН\ЗП и удаляем старые файлы section4.bin или graph.bin.Затем переименовываем файлы graph.bin.new или section4.bin.new в graph.bin или section4.bin соответственно.
 
  
Далее идем в папку с ACDC от ТЧ, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЧН\ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна(Лучше всего если это будет какой-нибудь объект), сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией(в ЧН это скорее всего будет 1620, а в ЗП 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool.Затем обращаем свой взор на строку «level_vertex_id».К исходному значению строки прибавляем число, которое мы записали в строку «game_vertex_id», полученное число записываем. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.
+
Запускаем программу ggEditor. Видим там два окошка. В левом открываем game.graph от ТЧ, а в правом — от ЗП или ЧН (в ЗП и ЧН граф вшит в '''all.spawn''', ищите его там. Нужно выбрать тип файлов для ЧН — '''graph.bin''', а для ЗП — все файлы и открыть в папке с ACDC файл '''section4.bin'''). В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить». После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЧН/ЗП и удаляем старые файлы '''section4.bin''' или '''graph.bin'''. Затем переименовываем файлы '''graph.bin.new''' или '''section4.bin.new''' в '''graph.bin''' и соответственно '''section4.bin'''.
  
Затем открываем файл all.ltx.Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее число локации строку level_count.
+
Далее идем в папку с ACDC от ТЧ, находим там файл '''alife_наша_локация''' и копируем его. Затем шуруем в папку с ACDC от ЧН/ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна (лучше всего, если это будет какой-нибудь объект), присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем '''ggTool.bat''', ждем некоторое время, после чего в '''parse_lvids.ltx''' появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЧН это скорее всего будет 1620, а в ЗП 934). Далее разворачиваем '''alife_''' файл с нашей локацией, ищем там строку ''game_vertex_id'' и пишем там число, которое появилось рядом с нашей локацией при запуске батника ggTool. <span style="color: gray">А вот строку ''level_vertex_id'' трогать не следует, т.к. вершины уровня в нашем случае остаются неизменными. [[Участник:RedPython|RedPython]] 10:04, 21 ноября 2010 (UTC) </span> Мы подогнали вертексы.
  
После этого открываем файл alife_zaton(для ЗП) или alife_marsh(для ЧН)и ищем там гг по строке «section_name = actor».Нашли?Отлично. Теперь присваиваем этой секции спавна позицию(новую позицию прописываем также в строке "upd:position = ") и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_лока.
+
Затем открываем файл '''all.ltx'''. Вписываем туда свой '''alife_''' файл локации, '''way_''' файлы не трогаем. Меняем на соответствующее количество локаций строку '''level_count'''.
  
Мы почти закончили с пробной сборкой новой локации(пока без перехода).
+
После этого открываем файл '''alife_zaton''' (для ЗП) или '''alife_marsh''' (для ЧН) и ищем там ГГ по строке ''section_name = actor''. Нашли? Отлично. Теперь присваиваем этой секции спавна позицию (новую позицию прописываем также в строке ''upd:position = '') и вертексы как у единственного предмета в файле '''alife_новая_локация'''. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле '''alife_новая_локация'''.
  
Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl(для ЗП)либо в файле ACDC Cs\stkutils\level.pm.
+
Мы почти закончили с пробной сборкой новой локации (пока без переходов на другие уровни).
  
В этих файлах ищем такие строки(для ЗП):
+
Осталось только прописать наш новый уровень в файл ''ACDC_CoP\acdccop.pl'' (для ЗП), либо в файле ''ACDC_CS\stkutils\level.pm''.
  
<code>
+
В этих файлах ищем такие строки (для ЗП):
  
 +
<perl>
 
use constant levels_info => (
 
use constant levels_info => (
{ gvid0 => 934,   },
+
{ gvid0 => 934, },
{ gvid0 => 883, name => 'jupiter_underground' },
+
{ gvid0 => 883, name => 'jupiter_underground' },
{ gvid0 => 857, name => 'labx8' },
+
{ gvid0 => 857, name => 'labx8' },
{ gvid0 => 666, name => 'pripyat' },
+
{ gvid0 => 666, name => 'pripyat' },
{ gvid0 => 317, name => 'jupiter' },
+
{ gvid0 => 317, name => 'jupiter' },
{ gvid0 => 0, name => 'zaton' },
+
{ gvid0 => 0,   name => 'zaton' },
 +
</perl>
  
</code>
+
И если у вас число, когда мы запускали батник '''ggTool''', тоже 934, то прописываем так:
 
+
И если у вас число когда мы запускали батник ggtool тоже 934 то прописываем так:
+
 
+
<code>
+
  
 +
<perl>
 
use constant levels_info => (
 
use constant levels_info => (
{ gvid0 => 934,         name => 'ваша_локация' },
+
{ gvid0 => 934, name => 'ваша_локация' },
{ gvid0 => 883, name => 'jupiter_underground' },
+
{ gvid0 => 883, name => 'jupiter_underground' },
{ gvid0 => 857, name => 'labx8' },
+
{ gvid0 => 857, name => 'labx8' },
{ gvid0 => 666, name => 'pripyat' },
+
{ gvid0 => 666, name => 'pripyat' },
{ gvid0 => 317, name => 'jupiter' },
+
{ gvid0 => 317, name => 'jupiter' },
{ gvid0 => 0, name => 'zaton' },
+
{ gvid0 => 0,   name => 'zaton' },
 +
</perl>
  
</code>
+
А в файле '''level.pm''' от ACDC ЧН вы увидите такой текст:
 
+
А в файле level.pm от ACDC ЧН вы увидите такой текст:
+
 
+
<code>
+
  
 +
<perl>
 
use constant levels_info => (
 
use constant levels_info => (
{ gvid0 => 1620,   },
+
{ gvid0 => 1620, },
{ gvid0 => 1573, name => 'l12_hospital' },
+
{ gvid0 => 1573, name => 'l12_hospital' },
{ gvid0 => 1565, name => 'l11_stancia2' },
+
{ gvid0 => 1565, name => 'l11_stancia2' },
{ gvid0 => 1524, name => 'l10_limansk' },
+
{ gvid0 => 1524, name => 'l10_limansk' },
{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
+
{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
{ gvid0 => 1313, name => 'l08_military' },
+
{ gvid0 => 1313, name => 'l08_military' },
{ gvid0 => 1212, name => 'l07_yantar' },
+
{ gvid0 => 1212, name => 'l07_yantar' },
{ gvid0 => 1057, name => 'l06_agroprom' },
+
{ gvid0 => 1057, name => 'l06_agroprom' },
{ gvid0 => 961, name => 'l05_red_forest' },
+
{ gvid0 => 961, name => 'l05_red_forest' },
{ gvid0 => 743, name => 'l04_darkvalley' },
+
{ gvid0 => 743, name => 'l04_darkvalley' },
{ gvid0 => 472, name => 'l03_escape' },
+
{ gvid0 => 472, name => 'l03_escape' },
{ gvid0 => 245, name => 'l02_garbage' },
+
{ gvid0 => 245, name => 'l02_garbage' },
{ gvid0 => 0, name => 'l01_marsh' },
+
{ gvid0 => 0,   name => 'l01_marsh' },
 
+
</perl>
</code>
+
  
 
Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП:
 
Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП:
  
<code>
+
<perl>
 
+
 
use constant levels_info => (
 
use constant levels_info => (
{ gvid0 => 1620,       name => 'ваша_локация' },
+
{ gvid0 => 1620, name => 'ваша_локация' },
{ gvid0 => 1573, name => 'l12_hospital' },
+
{ gvid0 => 1573, name => 'l12_hospital' },
{ gvid0 => 1565, name => 'l11_stancia2' },
+
{ gvid0 => 1565, name => 'l11_stancia2' },
{ gvid0 => 1524, name => 'l10_limansk' },
+
{ gvid0 => 1524, name => 'l10_limansk' },
{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
+
{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
{ gvid0 => 1313, name => 'l08_military' },
+
{ gvid0 => 1313, name => 'l08_military' },
{ gvid0 => 1212, name => 'l07_yantar' },
+
{ gvid0 => 1212, name => 'l07_yantar' },
{ gvid0 => 1057, name => 'l06_agroprom' },
+
{ gvid0 => 1057, name => 'l06_agroprom' },
{ gvid0 => 961, name => 'l05_red_forest' },
+
{ gvid0 => 961, name => 'l05_red_forest' },
{ gvid0 => 743, name => 'l04_darkvalley' },
+
{ gvid0 => 743, name => 'l04_darkvalley' },
{ gvid0 => 472, name => 'l03_escape' },
+
{ gvid0 => 472, name => 'l03_escape' },
{ gvid0 => 245, name => 'l02_garbage' },
+
{ gvid0 => 245, name => 'l02_garbage' },
{ gvid0 => 0, name => 'l01_marsh' },
+
{ gvid0 => 0,   name => 'l01_marsh' },
 +
</perl>
  
</code>
+
<span style="color: gray">По идее, в levels_info следует прописать также верхнюю вершину последнего уровня. [[Участник:RedPython|RedPython]] 10:04, 21 ноября 2010 (UTC) </span>
 +
 
 +
Всё. Собираем '''all.spawn'''.
  
Всё.Собираем all.spawn.
 
  
 
== Сборка геймдаты. ==
 
== Сборка геймдаты. ==
Осталось собрать gamedat`у для игры и смотреть что получилось.
 
Итак, приступим:
 
  
В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns.В папку spawns ложим получившийся при сборке all.spawn.new(или new.spawn), не забывая переименовать его в all.spawn.В папку levels ложим уровень из ggEditor_01\Soc\gamedata\levels\ваша_локация.Затем заходим в папку с уровнем, удаляем файл level.ai и переименовываем файл level.ai10 в level.ai.
+
Осталось собрать gamedata`у для игры и посмотреть, что получилось.
 +
Итак, приступим.
  
Теперь осталось только прописать уровень в конфигах.Из распакованной геймдаты игры берем файлы configs\game_graphs.ltx, game_levels.ltx, game_maps_single.ltx.
+
В папке с игрой создаем папку ''gamedata'', а в ней папки ''configs'', ''levels'', ''spawns''. В папку ''spawns'' кладем получившийся при сборке '''all.spawn.new''' (или '''new.spawn'''), не забывая переименовать его в '''all.spawn'''. В папку ''levels'' кладем уровень из ''ggEditor_01\SoC\gamedata\levels\ваша_локация\''. Затем заходим в папку с уровнем, удаляем старый файл '''level.ai''' и переименовываем файл '''level.ai10''' в '''level.ai'''.
  
game_graphs.ltx для ЧН должен выглядеть так:
+
Теперь осталось только прописать уровень в конфигах. Из распакованной геймдаты игры берем файлы '''configs\game_graphs.ltx''', '''\game_levels.ltx''', '''\game_maps_single.ltx'''.
  
<code>
+
'''game_graphs.ltx''' для ЧН должен выглядеть так:
  
 +
<ini>
 
[location_0]
 
[location_0]
   000         = "..."
+
   000 = "..."
   001         = "эскейп"
+
   001 = "эскейп"
   002         = "свалка"
+
   002 = "свалка"
   003         = "агропром"
+
   003 = "агропром"
   004         = "агропром-подземка"
+
   004 = "агропром-подземка"
   005         = "темная долина"
+
   005 = "темная долина"
   006         = "лаборатория X-18"
+
   006 = "лаборатория X-18"
   007         = "даркскейп"
+
   007 = "даркскейп"
   008         = "Бар"
+
   008 = "Бар"
   009         = "Росток"
+
   009 = "Росток"
   010   = "Янтарь"
+
   010 = "Янтарь"
   011   = "лаборатория X-16"
+
   011 = "лаборатория X-16"
   012   = "Милитари"
+
   012 = "Милитари"
   013   = "Мертвый город"
+
   013 = "Мертвый город"
   014   = "Радар"
+
   014 = "Радар"
   015   = "Радар бункер"
+
   015 = "Радар бункер"
   016   = "Припять"
+
   016 = "Припять"
   017   = "станция АЭС"
+
   017 = "станция АЭС"
   018         = "ваша_локация"
+
   018 = "ваша_локация"
 
+
  
 
[location_1]
 
[location_1]
   000         = "..."
+
   000 = "..."
   001         = "ограниченный доступ"
+
   001 = "ограниченный доступ"
   002   = "запрещенный доступ"
+
   002 = "запрещенный доступ"
 
    
 
    
 
[location_2]
 
[location_2]
   000         = "..."
+
   000 = "..."
   001   = "не для игрока"
+
   001 = "не для игрока"
  
 
[location_3]
 
[location_3]
   000         = "..."
+
   000 = "..."
   001         = "ваша_локация"
+
   001 = "ваша_локация"
 +
</ini>
  
</code>
+
'''game_graphs.ltx''' для ЗП должен выглядеть так:
 
+
game_graphs для ЗП должен выглядеть так:
+
 
+
<code>
+
  
 +
<ini>
 
[location_0]
 
[location_0]
   000         = "..."
+
   000 = "..."
   001         = "ваша_локация"
+
   001 = "ваша_локация"
   002         = "sim_smart_2"
+
   002 = "sim_smart_2"
   003         = "sim_smart_3"
+
   003 = "sim_smart_3"
   004         = "sim_smart_4"
+
   004 = "sim_smart_4"
   005         = "sim_smart_5"
+
   005 = "sim_smart_5"
   006         = "sim_smart_6"
+
   006 = "sim_smart_6"
   007         = "sim_smart_7"
+
   007 = "sim_smart_7"
   008         = "sim_smart_8"
+
   008 = "sim_smart_8"
   009         = "sim_smart_base"
+
   009 = "sim_smart_base"
 
    
 
    
 
 
 
 
[location_1]
 
[location_1]
   000         = "..."
+
   000 = "..."
   001         = "ограниченный доступ"
+
   001 = "ограниченный доступ"
   002   = "запрещенный доступ"
+
   002 = "запрещенный доступ"
 
    
 
    
 
[location_2]
 
[location_2]
   000         = "..."
+
   000 = "..."
   001   = "не для игрока"
+
   001 = "не для игрока"
  
 
[location_3]
 
[location_3]
   000         = "..."
+
   000 = "..."
   ...          . .......................
+
   ....
   112         = "pri_a22_smart_terrain"
+
  ....
   113         = "pri_a25_smart_terrain"
+
  ....
   114         = "pri_a28_arch"
+
   112 = "pri_a22_smart_terrain"
   115         = "pri_a28_base"
+
   113 = "pri_a25_smart_terrain"
   116         = "pri_b28_evac"
+
   114 = "pri_a28_arch"
   117         = "pri_a28_heli"
+
   115 = "pri_a28_base"
   118         = "pri_a28_school"
+
   116 = "pri_b28_evac"
   119         = "pri_a28_shop"
+
   117 = "pri_a28_heli"
   120         = "pri_b301"
+
   118 = "pri_a28_school"
   121         = "pri_b302"
+
   119 = "pri_a28_shop"
   122         = "pri_b303"
+
   120 = "pri_b301"
   123         = "pri_b304_monsters_smart_terrain"
+
   121 = "pri_b302"
   124         = "pri_b305_dogs"
+
   122 = "pri_b303"
   125         = "pri_b306"
+
   123 = "pri_b304_monsters_smart_terrain"
   126         = "pri_b307"
+
   124 = "pri_b305_dogs"
   127         = "pri_b35_mercs"
+
   125 = "pri_b306"
   128         = "pri_b35_military"
+
   126 = "pri_b307"
   129         = "pri_b36_smart_terrain"
+
   127 = "pri_b35_mercs"
   130         = "pri_sim_1"
+
   128 = "pri_b35_military"
   131         = "pri_sim_2"
+
   129 = "pri_b36_smart_terrain"
   132         = "pri_sim_3"
+
   130 = "pri_sim_1"
   133         = "pri_sim_4"
+
   131 = "pri_sim_2"
   134         = "pri_sim_5"
+
   132 = "pri_sim_3"
   135         = "pri_sim_6"
+
   133 = "pri_sim_4"
   136         = "pri_sim_7"
+
   134 = "pri_sim_5"
   137         = "pri_sim_8"
+
   135 = "pri_sim_6"
   138         = "pri_sim_9"
+
   136 = "pri_sim_7"
   139         = "pri_sim_10"
+
   137 = "pri_sim_8"
   140         = "pri_sim_11"
+
   138 = "pri_sim_9"
   141         = "pri_sim_12"
+
   139 = "pri_sim_10"
   142         = "ваша_локация"
+
   140 = "pri_sim_11"
 +
   141 = "pri_sim_12"
 +
   142 = "ваша_локация"
  
     
 
 
[graph_points_draw_color_palette]
 
[graph_points_draw_color_palette]
default = 0x6000ffff  
+
  default = 0x6000ffff  
000_000_000_000 = 0x60ff00ff
+
  000_000_000_000 = 0x60ff00ff
 +
</ini>
  
 
+
Далее лезем в '''game_levels.ltx'''.
</code>
+
Там в самом начале, где список уровней, вписываем ''level183'' (число не менее 183.)
 
+
Далее лезем в game_levels.ltx.
+
Там в самом начале, где список уровней, вписываем "level183"(число не менее 183.)
+
 
Листаем файл до самого конца и в конце пишем следующее:
 
Листаем файл до самого конца и в конце пишем следующее:
  
<code>
+
<ini>
 
+
 
[level183]
 
[level183]
 
name  = ваша_локация
 
name  = ваша_локация
Строка 245: Строка 250:
 
weathers = [default]
 
weathers = [default]
 
id  = 183
 
id  = 183
 +
</ini>
  
</code>
+
Затем открываем файл '''game_maps_single.ltx''' и прописываем свой уровень в секции ''[level_maps_single]''.
 
+
Затем создаем примерно такую секцию для нашего уровня:
Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции "[level_maps_single]", а затем создаем примерно такую секцию для нашего уровня:
+
 
+
<code>
+
  
 +
<ini>
 
[ваша_локация]
 
[ваша_локация]
        global_rect                     = 307.0, 90.0, 717.0, 500.000000
+
  global_rect = 307.0, 90.0, 717.0, 500.000000
        weathers                         = dynamic_default
+
  weathers   = dynamic_default
 +
</ini>
  
</code>
+
Всё. Запускайте игру и пробуйте, что получилось.
  
----
 
  
Всё.Запускайте игру и пробуйте, что получилось.
+
== Соединение с остальными уровнями. ==
  
 
+
Предлагаю вам не терять зря времени, просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях: на подключенной и на той, на которую вы хотите сделать переход соответственно. На каждой локации нам нужно снять по две координаты (координата самого перехода и координата места, в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим). Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду.
== Соединение с остальными уровнями. ==
+
Предлагаю вам не терять зря времени просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях:на подключенной и на той на которую вы хотите сделать переход соответственно.На каждой локации нам нужно снять по две координаты(координата самого перехода и координата места в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим.).Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду.
+
  
 
Мы отмерили все необходимые нам координаты.
 
Мы отмерили все необходимые нам координаты.
  
Затем распаковываем сделанный нами ранее all.spawn.Теперь в нужных нам локациях, в alife_ файлах добавляем следующую секцию спавна:
+
Затем распаковываем сделанный нами ранее '''all.spawn'''. Теперь в нужных нам локациях, в '''alife_''' файлах добавляем следующую секцию спавна:
  
<code>
+
<ini>
 +
[40000] ;свободный номер секции
 +
; cse_abstract properties
 +
section_name = level_changer
 +
name = escgar_level_changer ;уникальное имя для секции перехода
 +
position = 28.060224533081,16.556184768677,685.80151367188 ;координаты перехода
 +
direction = 0,0,0
 +
cse_abstract__unk1_h16 = 0x1
  
[1]
+
; cse_alife_object properties
; cse_abstract properties
+
game_vertex_id = 1142 ;геймвертексы
section_name = level_changer
+
name = escgar_level_changer - уникальное имя
+
position = 28.060224533081,16.556184768677,685.80151367188 - координаты перехода
+
direction = 0,0,0
+
cse_abstract__unk1_h16 = 0x1
+
; cse_alife_object properties  
+
game_vertex_id = 1142 - геймвертексы
+
 
distance = 0
 
distance = 0
level_vertex_id = 308110 - геймвертексы
+
level_vertex_id = 308110 ;левелвертексы
 
object_flags = 0xffffff3e
 
object_flags = 0xffffff3e
 +
 
; cse_shape properties  
 
; cse_shape properties  
 
shapes = shape0  
 
shapes = shape0  
Строка 291: Строка 294:
 
shape0:axis_z = 0,0,1.25219917297363  
 
shape0:axis_z = 0,0,1.25219917297363  
 
shape0:offset = 0,0,0  
 
shape0:offset = 0,0,0  
 +
 
; cse_alife_space_restrictor properties  
 
; cse_alife_space_restrictor properties  
 
restrictor_type = 3  
 
restrictor_type = 3  
 +
 
; cse_alife_level_changer properties  
 
; cse_alife_level_changer properties  
dest_game_vertex_id = 1187 - вертексы локи на которую ведет переход
+
dest_game_vertex_id = 1187 ;вертексы локи, на которую ведет переход
dest_level_vertex_id = 212769 - вертексы локи на которую ведет переход
+
dest_level_vertex_id = 212769 ;вертексы локи, на которую ведет переход
dest_position = 39.396331787109,0.48722490668297,-299.7674505469 - позиция куда кидает
+
dest_position = 39.396331787109,0.48722490668297,-299.7674505469 ;позиция, куда кидает
dest_direction = 0,0,0 - поворот гг
+
dest_direction = 0,0,0 ;направление взгляда игрока при появлении
dest_level_name = l02_garbage - на какую локу кидает
+
dest_level_name = l02_garbage ;имя локации, на которую ведет переход
 
dest_graph_point = start_actor_01
 
dest_graph_point = start_actor_01
silent_mode = 1  
+
silent_mode = 1 ;режим "тихого" перехода
 +
 
 
; se_level_changer properties
 
; se_level_changer properties
 +
</ini>
  
</code>
+
<span style="color: gray"> Пояснения после знаков ; '''''желательно''''' удалить. [[Участник:RedPython|RedPython]] 10:04, 21 ноября 2010 (UTC) </span>
 +
<br />
 +
Всё готово. Собираем '''all.spawn''' и запихиваем в игру.
 +
 
 +
 
 +
==Метод исправления лайтмапов==
 +
 
 +
После переноса лок из ТЧ в ЧН/ЗП освещение локации вело себя странным образом, тени были жутко черные, тени от деревьев на зданиях имели странную форму, некоторые объекты вообще светились в темноте. А все дело заключалось в картах освещения, принцип их построения в ТЧ отличается от ЧН/ЗП, поэтому для получения более качественной картинки нужно произвести некоторые манипуляции с ними. Карты освещения хранятся в файлах
 +
* lmap#1_1.dds
 +
* lmap#1_2.dds
 +
* lmap#2_1.dds
 +
* lmap#2_2.dds
 +
* lmap#3_1.dds
 +
* lmap#3_2.dds
 +
* ...
 +
в папке с локацией. Мапы с именем заканчивающимся на ''_1'' менять не нужно а вот заканчивающимся на ''_2'' нужно изменить. Значит так, открываем в фотошопе (ну, или в другом редакторе, не суть важно) карты:
 +
* lmap#1_2.dds
 +
* lmap#2_2.dds
 +
* lmap#3_2.dds
 +
...
 +
и меняем местами альфа канал и RGB. Сохраняем. Теперь косяков с освещением не будет. Но в некоторых картах в файлах '''lmap#*.dds''' нет альфа канала, поэтому нужно в '''lmap#*_1.dds''' добавить черный альфа канал, а в '''lmap#*_2.dds''' канал rgb перенести в альфу, и залить rgb черным цветом.
  
Изменяем только те места, которые я прокомментировал, комментарии соответственно, удаляем.
 
Всё готово.Собираем all.spawn и запихиваем в игру.
 
  
 
----
 
----
'''Убедительная просьба к начинающим модмейкерам.Пожалуйста, если вы только начали заниматься модами, то я вам настоятельно не советую заниматься подключением локаций.Наберитесь опыта, подучитесь элементарному.Я вас учить этому не подписывался.'''
+
'''Убедительная просьба к начинающим модмейкерам. Пожалуйста, если вы только начали заниматься модами, то я вам настоятельно не советую заниматься подключением локаций. Наберитесь опыта, подучитесь элементарному. Никто вас учить этому не подписывался.'''
  
Да и еще.Если будете переносить секции спавна, то для массовой замены гейм вертексов и левел вертексов можно использовать блокнот: открываем наш файл в блокноте=> правка=> заменить, и пишем что на что заменять.
+
Да, и еще. Если будете переносить секции спавна, то для массовой замены геймвертексов и левелвертексов можно использовать блокнот: открываем наш файл в блокноте=>правка=>заменить, и пишем, что на что заменять. Также можно использовать '''Vertex Parser''' или '''Spawn Parser 2.0 beta'''.
 
----
 
----
 
'''Автор программы для подключения - Kolmogor'''
 
  
 
'''Автор статьи: БАТЯ-STALKER'''
 
'''Автор статьи: БАТЯ-STALKER'''
Строка 320: Строка 343:
 
'''О способе подключения поведал: джЭдай (ака Panisher)'''
 
'''О способе подключения поведал: джЭдай (ака Panisher)'''
  
Если у вас что-то не получается или появились вопросы, есть [http://www.gameru.net/forum/index.php?showtopic=32654 тема] на форуме.
+
'''Метод исправления лайтмапов открыт Push85'''
  
 +
Если у вас что-то не получается или появились вопросы, есть [http://www.gameru.net/forum/index.php?showtopic=32654 тема] на форуме.
  
[[Категория:SDK]]
+
[[Категория:Программы]]

Текущая версия на 12:36, 27 мая 2017

ВНИМАНИЕ!

Данная статья в значительной степени устарела.

КАТЕГОРИЧЕСКИ предупреждаем

Использование устаревшей и забагованной утилиты ggEditor - СТРОГО ВОСПРЕЩАЕТСЯ!

Используйте только официальный софт от разработчиков игры, а именно "X-Ray SDK"

За более подробной информацией обратитесь на AMK форум




В данном уроке мы полностью подключим локацию к игре.


Инструменты и ресурсы

Интерпретатор Perl:
ActivePerl
Скрипты для редактирования all.spawn:
ACDC for SoC v.1.0004
ACDC for CS v.1.5.04
ACDC for CoP
или
универсальный ACDC
Скрипты для редактирования графов:
ggTool
ggEditor v.0.1

Распакованные ресурсы ТЧ или мода, из которого взят уровень (если вы берете уровень из мода, то вам наверняка не подойдет простой ACDC).


Подготовка.

Устанавливаем интерпретатор ActivePerl.

Заходим в папку с программой ggEditor. Создаем там папки CS или CoP (смотря на какую игру делаете) и папку SoC.В папке SoC создаем папку gamedata и кидаем в нее файл game.graph (важно, чтобы game.graph лежал там, иначе программа не прочитает!) из мода, или от ТЧ. В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку SoC и туда кидаем папку с ACDC для ТЧ, туда же кладём all.spawn.Запускаем соответствующий батник для распаковки all.spawn`а.

Далее в папку ggEditor_01\CoP или ggEditor_01\CS, кидаем папку с соответствующим ACDC, опять-же кладем туда all.spawn, распаковываем.

В итоге у нас должно получиться 2 распакованных all.spawn`а, game.graph от ТЧ и папка с переносимым уровнем.

С приготовлениями всё.

Основная работа.

Запускаем программу ggEditor. Видим там два окошка. В левом открываем game.graph от ТЧ, а в правом — от ЗП или ЧН (в ЗП и ЧН граф вшит в all.spawn, ищите его там. Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл section4.bin). В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить». После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЧН/ЗП и удаляем старые файлы section4.bin или graph.bin. Затем переименовываем файлы graph.bin.new или section4.bin.new в graph.bin и соответственно section4.bin.

Далее идем в папку с ACDC от ТЧ, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЧН/ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна (лучше всего, если это будет какой-нибудь объект), присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем ggTool.bat, ждем некоторое время, после чего в parse_lvids.ltx появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЧН это скорее всего будет 1620, а в ЗП 934). Далее разворачиваем alife_ файл с нашей локацией, ищем там строку game_vertex_id и пишем там число, которое появилось рядом с нашей локацией при запуске батника ggTool. А вот строку level_vertex_id трогать не следует, т.к. вершины уровня в нашем случае остаются неизменными. RedPython 10:04, 21 ноября 2010 (UTC) Мы подогнали вертексы.

Затем открываем файл all.ltx. Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее количество локаций строку level_count.

После этого открываем файл alife_zaton (для ЗП) или alife_marsh (для ЧН) и ищем там ГГ по строке section_name = actor. Нашли? Отлично. Теперь присваиваем этой секции спавна позицию (новую позицию прописываем также в строке upd:position = ) и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_локация.

Мы почти закончили с пробной сборкой новой локации (пока без переходов на другие уровни).

Осталось только прописать наш новый уровень в файл ACDC_CoP\acdccop.pl (для ЗП), либо в файле ACDC_CS\stkutils\level.pm.

В этих файлах ищем такие строки (для ЗП):

 
use constant levels_info => (
	{ gvid0 => 934, },
	{ gvid0 => 883, name => 'jupiter_underground' },
	{ gvid0 => 857, name => 'labx8' },
	{ gvid0 => 666, name => 'pripyat' },
	{ gvid0 => 317, name => 'jupiter' },
	{ gvid0 => 0,   name => 'zaton' },
 

И если у вас число, когда мы запускали батник ggTool, тоже 934, то прописываем так:

 
use constant levels_info => (
	{ gvid0 => 934, name => 'ваша_локация' },
	{ gvid0 => 883, name => 'jupiter_underground' },
	{ gvid0 => 857, name => 'labx8' },
	{ gvid0 => 666, name => 'pripyat' },
	{ gvid0 => 317, name => 'jupiter' },
	{ gvid0 => 0,   name => 'zaton' },
 

А в файле level.pm от ACDC ЧН вы увидите такой текст:

 
use constant levels_info => (
	{ gvid0 => 1620, },
	{ gvid0 => 1573, name => 'l12_hospital' },
	{ gvid0 => 1565, name => 'l11_stancia2' },
	{ gvid0 => 1524, name => 'l10_limansk' },
	{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
	{ gvid0 => 1313, name => 'l08_military' },
	{ gvid0 => 1212, name => 'l07_yantar' },
	{ gvid0 => 1057, name => 'l06_agroprom' },
	{ gvid0 => 961,  name => 'l05_red_forest' },
	{ gvid0 => 743,  name => 'l04_darkvalley' },
	{ gvid0 => 472,  name => 'l03_escape' },
	{ gvid0 => 245,  name => 'l02_garbage' },
	{ gvid0 => 0,    name => 'l01_marsh' },
 

Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП:

 
use constant levels_info => (
	{ gvid0 => 1620, name => 'ваша_локация' },
	{ gvid0 => 1573, name => 'l12_hospital' },
	{ gvid0 => 1565, name => 'l11_stancia2' },
	{ gvid0 => 1524, name => 'l10_limansk' },
	{ gvid0 => 1511, name => 'l09_agroprom_undeground' },
	{ gvid0 => 1313, name => 'l08_military' },
	{ gvid0 => 1212, name => 'l07_yantar' },
	{ gvid0 => 1057, name => 'l06_agroprom' },
	{ gvid0 => 961,  name => 'l05_red_forest' },
	{ gvid0 => 743,  name => 'l04_darkvalley' },
	{ gvid0 => 472,  name => 'l03_escape' },
	{ gvid0 => 245,  name => 'l02_garbage' },
	{ gvid0 => 0,    name => 'l01_marsh' },
 

По идее, в levels_info следует прописать также верхнюю вершину последнего уровня. RedPython 10:04, 21 ноября 2010 (UTC)

Всё. Собираем all.spawn.


Сборка геймдаты.

Осталось собрать gamedata`у для игры и посмотреть, что получилось. Итак, приступим.

В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns. В папку spawns кладем получившийся при сборке all.spawn.new (или new.spawn), не забывая переименовать его в all.spawn. В папку levels кладем уровень из ggEditor_01\SoC\gamedata\levels\ваша_локация\. Затем заходим в папку с уровнем, удаляем старый файл level.ai и переименовываем файл level.ai10 в level.ai.

Теперь осталось только прописать уровень в конфигах. Из распакованной геймдаты игры берем файлы configs\game_graphs.ltx, \game_levels.ltx, \game_maps_single.ltx.

game_graphs.ltx для ЧН должен выглядеть так:

 
[location_0]
  000 = "..."
  001 = "эскейп"
  002 = "свалка"
  003 = "агропром"
  004 = "агропром-подземка"
  005 = "темная долина"
  006 = "лаборатория X-18"
  007 = "даркскейп"
  008 = "Бар"
  009 = "Росток"
  010 = "Янтарь"
  011 = "лаборатория X-16"
  012 = "Милитари"
  013 = "Мертвый город"
  014 = "Радар"
  015 = "Радар бункер"
  016 = "Припять"
  017 = "станция АЭС"
  018 = "ваша_локация"
 
[location_1]
  000 = "..."
  001 = "ограниченный доступ"
  002 = "запрещенный доступ"
 
[location_2]
  000 = "..."
  001 = "не для игрока"
 
[location_3]
  000 = "..."
  001 = "ваша_локация"
 

game_graphs.ltx для ЗП должен выглядеть так:

 
[location_0]
  000 = "..."
  001 = "ваша_локация"
  002 = "sim_smart_2"
  003 = "sim_smart_3"
  004 = "sim_smart_4"
  005 = "sim_smart_5"
  006 = "sim_smart_6"
  007 = "sim_smart_7"
  008 = "sim_smart_8"
  009 = "sim_smart_base"
 
[location_1]
  000 = "..."
  001 = "ограниченный доступ"
  002 = "запрещенный доступ"
 
[location_2]
  000 = "..."
  001 = "не для игрока"
 
[location_3]
  000 = "..."
  ....
  ....
  ....
  112 = "pri_a22_smart_terrain"
  113 = "pri_a25_smart_terrain"
  114 = "pri_a28_arch"
  115 = "pri_a28_base"
  116 = "pri_b28_evac"
  117 = "pri_a28_heli"
  118 = "pri_a28_school"
  119 = "pri_a28_shop"
  120 = "pri_b301"
  121 = "pri_b302"
  122 = "pri_b303"
  123 = "pri_b304_monsters_smart_terrain"
  124 = "pri_b305_dogs"
  125 = "pri_b306"
  126 = "pri_b307"
  127 = "pri_b35_mercs"
  128 = "pri_b35_military"
  129 = "pri_b36_smart_terrain"
  130 = "pri_sim_1"
  131 = "pri_sim_2"
  132 = "pri_sim_3"
  133 = "pri_sim_4"
  134 = "pri_sim_5"
  135 = "pri_sim_6"
  136 = "pri_sim_7"
  137 = "pri_sim_8"
  138 = "pri_sim_9"
  139 = "pri_sim_10"
  140 = "pri_sim_11"
  141 = "pri_sim_12"
  142 = "ваша_локация"
 
[graph_points_draw_color_palette]
  default				= 0x6000ffff 
  000_000_000_000		= 0x60ff00ff
 

Далее лезем в game_levels.ltx. Там в самом начале, где список уровней, вписываем level183 (число не менее 183.) Листаем файл до самого конца и в конце пишем следующее:

 
[level183]
name   = ваша_локация
caption = "ваша_локация"
offset  = 700.0,     1000.0,    -840.0
weathers = [default]
id  = 183
 

Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции [level_maps_single]. Затем создаем примерно такую секцию для нашего уровня:

 
[ваша_локация]
  global_rect = 307.0, 90.0, 717.0, 500.000000
  weathers    = dynamic_default
 

Всё. Запускайте игру и пробуйте, что получилось.


Соединение с остальными уровнями.

Предлагаю вам не терять зря времени, просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях: на подключенной и на той, на которую вы хотите сделать переход соответственно. На каждой локации нам нужно снять по две координаты (координата самого перехода и координата места, в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим). Как снять координаты, я думаю все знают, поэтому объяснять здесь не буду.

Мы отмерили все необходимые нам координаты.

Затем распаковываем сделанный нами ранее all.spawn. Теперь в нужных нам локациях, в alife_ файлах добавляем следующую секцию спавна:

 
[40000] ;свободный номер секции
; cse_abstract properties
section_name = level_changer
name = escgar_level_changer ;уникальное имя для секции перехода
position = 28.060224533081,16.556184768677,685.80151367188 ;координаты перехода
direction = 0,0,0 
cse_abstract__unk1_h16 = 0x1
 
; cse_alife_object properties
game_vertex_id = 1142 ;геймвертексы
distance = 0
level_vertex_id = 308110 ;левелвертексы
object_flags = 0xffffff3e
 
; cse_shape properties 
shapes = shape0 
shape0:type = box 
shape0:axis_x = 1.25219917297363,0,0 
shape0:axis_y = 0,3.09340000152588,0 
shape0:axis_z = 0,0,1.25219917297363 
shape0:offset = 0,0,0 
 
; cse_alife_space_restrictor properties 
restrictor_type = 3 
 
; cse_alife_level_changer properties 
dest_game_vertex_id = 1187 ;вертексы локи, на которую ведет переход
dest_level_vertex_id = 212769 ;вертексы локи, на которую ведет переход
dest_position = 39.396331787109,0.48722490668297,-299.7674505469 ;позиция, куда кидает
dest_direction = 0,0,0 ;направление взгляда игрока при появлении
dest_level_name = l02_garbage ;имя локации, на которую ведет переход
dest_graph_point = start_actor_01
silent_mode = 1 ;режим "тихого" перехода
 
; se_level_changer properties
 

Пояснения после знаков ; желательно удалить. RedPython 10:04, 21 ноября 2010 (UTC)
Всё готово. Собираем all.spawn и запихиваем в игру.


Метод исправления лайтмапов

После переноса лок из ТЧ в ЧН/ЗП освещение локации вело себя странным образом, тени были жутко черные, тени от деревьев на зданиях имели странную форму, некоторые объекты вообще светились в темноте. А все дело заключалось в картах освещения, принцип их построения в ТЧ отличается от ЧН/ЗП, поэтому для получения более качественной картинки нужно произвести некоторые манипуляции с ними. Карты освещения хранятся в файлах

  • lmap#1_1.dds
  • lmap#1_2.dds
  • lmap#2_1.dds
  • lmap#2_2.dds
  • lmap#3_1.dds
  • lmap#3_2.dds
  • ...

в папке с локацией. Мапы с именем заканчивающимся на _1 менять не нужно а вот заканчивающимся на _2 нужно изменить. Значит так, открываем в фотошопе (ну, или в другом редакторе, не суть важно) карты:

  • lmap#1_2.dds
  • lmap#2_2.dds
  • lmap#3_2.dds

... и меняем местами альфа канал и RGB. Сохраняем. Теперь косяков с освещением не будет. Но в некоторых картах в файлах lmap#*.dds нет альфа канала, поэтому нужно в lmap#*_1.dds добавить черный альфа канал, а в lmap#*_2.dds канал rgb перенести в альфу, и залить rgb черным цветом.



Убедительная просьба к начинающим модмейкерам. Пожалуйста, если вы только начали заниматься модами, то я вам настоятельно не советую заниматься подключением локаций. Наберитесь опыта, подучитесь элементарному. Никто вас учить этому не подписывался.

Да, и еще. Если будете переносить секции спавна, то для массовой замены геймвертексов и левелвертексов можно использовать блокнот: открываем наш файл в блокноте=>правка=>заменить, и пишем, что на что заменять. Также можно использовать Vertex Parser или Spawn Parser 2.0 beta.


Автор статьи: БАТЯ-STALKER

О способе подключения поведал: джЭдай (ака Panisher)

Метод исправления лайтмапов открыт Push85

Если у вас что-то не получается или появились вопросы, есть тема на форуме.

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