Случайная подборка модов
Мод Змеелов v.2.17 Final
3.8
Путь Человека: Возвращение
4.1
Зимний Снайпер
3.8
Возвращение Шрама
3.9
Под прикрытием смерти. Клондайк 2.0
4.0
Контракт на плохую жизнь: Эффект бабочки
3.7
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Перенос локации из cs в cop (Как перенести локацию с чистого неба в зов припяти)
Перенос локации из cs в cop
Казахстан  Janel
Понедельник, 06.01.2020, 16:01 | Сообщение # 1
Статус:
Гость:
Сообщений: 40
Награды: 0
Регистрация: 09.10.2019

Перенос локации из сталкер CS в сталкер CoP


Введение:

Решил написать статью о том как правильно перенести локацию из сталкер Clear sky (Чистое Небо) в сталкер Call of pripyat (Зов Припяти). Долго времени не займёт, на первый взгляд покажется тяжёлым но это довольно просто. И так перейдём ближе к делу.


Подготовка:


Для начала скачаем программы, которые нам понадобятся при подключении локации.

1. Универсальный распаковщик ресурсов игр Сталкер
2. ActivePerl
3. ggtool
4. ACDC_Cs
5. ACDC_Cop
6. ggEditor_01

При помощи распаковщика распакуем ресурсы ЧН и ЗП (прога имеет интуитивно понятный интерфейс, думаю проблем тут не возникнет)
Устанавливаем active perl.

Создаём папку с программой ggEditor_01. Создаем там папки Cs и Cop.В папке CS создаем папку gamedata. В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку CS и туда кидаем папку с ACDC для CS, туда же кладём all.spawn. Запускаем соответствующий батник для распаковки all.spawn'а.

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

В итоге у нас должно получиться 2 распакованных all.spawn'а и папка с переносимым уровнем.

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

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


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

Далее идем в папку с ACDC от ЧН, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна (Лучше всего если это будет какой-нибудь объект, я например всегда оставляю Campfire, (костёр) присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЗП это скорее всего будет 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.

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

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

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

Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl (для ЗП)

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

Код
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' },


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

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


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

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

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

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


Возможные вылеты:


Код
FATAL ERROR
[error]Expression : cross_table().header().level_guid() == level_graph().header().guid()
[error]Function : CAI_Space::load
[error]File : D:\prog_repository\sources\trunk\xrGame\ai_space.cpp
[error]Line : 113
[error]Description : cross_table doesn't correspond to the AI-map

Данный вылет свидетельствует о том,что вы использовали распаковщик ресурсов игры не из этой темы. У вас при распаковке вашего уровня "съехала АИ-сетка"

Лечение: Использовать распаковщик предложенный выше. Или пересобрать АИ-сетку в SDK Level Editor.

Код
[error]Expression : fs
[error]Function : CResourceManager::_CreateVS
[error]File : D:\prog_repository\sources\trunk\Layers\xrRender\ResourceManager_Resources.cpp
[error]Line : 166
[error]Description : shader file doesnt exist
[error]Arguments : c:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r. - Зов Припяти\gamedata\shaders\r2\deffer_impl_flat.vs


Лечение: В папке gamedata создаёте папки shaders\r2 переносите из ЧН файл deffer_impl_flat_d.vs переименовываете его в deffer_impl_flat.vs

Примечание: На компьютере должен быть обязательно установлен NetFramework версией не ниже 2.0
Это для тех, кто использует старые сборки ХР.
Скачать новейшею версию можно Тут

Готово! Запускайте игру и пробуйте, что получилось. Если есть вопросы отписываемся!
Сообщение отредактировал Janel - Понедельник, 06.01.2020, 16:15
  Злобная реклама
Понедельник, 06.01.2020, 16:01
Статус:
Сообщений: 666
Регистрация: 09.10.2019
Российская Федерация  Аruron
Понедельник, 06.01.2020, 16:24 | Сообщение # 2
Статус:
Гость:
Сообщений: 61
Награды: 4
Регистрация: 08.02.2018

А не проще засунуть локацию в sdk, переделать спавн актора, отредачить источники света,[если потребуется] а после просто скомпилировать спавн не мучая этот ACDC? При этом нам нужна всего одна программа. Зачем костылить всё это? smile Кроме того, даже ai-сетка пойдёт от ЧН версии. wink Да и она все равно будет редачиться уже при редизайне.
Сообщение отредактировал Аruron - Понедельник, 06.01.2020, 16:25
  Злобная реклама
Понедельник, 06.01.2020, 16:24
Статус:
Сообщений: 666
Регистрация: 08.02.2018
Казахстан  Janel
Понедельник, 06.01.2020, 17:11 | Сообщение # 3
Статус:
Гость:
Сообщений: 40
Награды: 0
Регистрация: 09.10.2019

Цитата Аruron ()
А не проще засунуть локацию в sdk, переделать спавн актора, отредачить источники света,[если потребуется] а после просто скомпилировать спавн не мучая этот ACDC? При этом нам нужна всего одна программа. Зачем костылить всё это? smile Кроме того, даже ai-сетка пойдёт от ЧН версии. wink Да и она все равно будет редачиться уже при редизайне.


Это конечно можно сделать но будут постоянные вылеты из-за спейс рестрикторов или различных граф поинтов прописанных на сталкер чистое небо. Есле хочется перенести через сдк то придется удолять лишнии рестрикторы, графы, спавн элементы а это поверь мне займёт больше времени чем просто перенести чистую локацию без всяких выкрутасов. А там уже и редактировать под себя как хочешь. wink
Сообщение отредактировал Janel - Понедельник, 06.01.2020, 17:19
  Злобная реклама
Понедельник, 06.01.2020, 17:11
Статус:
Сообщений: 666
Регистрация: 09.10.2019
Российская Федерация  Аruron
Понедельник, 06.01.2020, 19:22 | Сообщение # 4
Статус:
Гость:
Сообщений: 61
Награды: 4
Регистрация: 08.02.2018

Цитата Janel ()
но будут постоянные вылеты из-за спейс рестрикторов или различных граф поинтов прописанных на сталкер чистое небо


В смысле? Я же не говорю оставлять ЧН-овский спавн на месте, тоже можно легко удалить комбинацией клавиш. Я так себе уже пару локаций перенёс и всё в шоколаде
  Злобная реклама
Понедельник, 06.01.2020, 19:22
Статус:
Сообщений: 666
Регистрация: 08.02.2018
Российская Федерация  Lektorrr
Понедельник, 06.01.2020, 20:00 | Сообщение # 5
Статус:
Новичок:
Сообщений: 266
Награды: 5
Регистрация: 09.01.2013

Вы серьезно? ActivePerl? ggTool? В 2020 году то? Эти утилиты использовались, когда GSC ещё не выложили свой официальный инструментарий. Портировать с их помощью локации сейчас новичку - это самая настоящая пытка и трата времени, ведь можно просто перенести локацию с помощью SDK, причем даже не компилируя её при надобности.
  Злобная реклама
Понедельник, 06.01.2020, 20:00
Статус:
Сообщений: 666
Регистрация: 09.01.2013
Казахстан  Janel
Вторник, 07.01.2020, 12:13 | Сообщение # 6
Статус:
Гость:
Сообщений: 40
Награды: 0
Регистрация: 09.10.2019

Цитата Lektorrr ()
Вы серьезно? ActivePerl? ggTool? В 2020 году то? Эти утилиты использовались, когда GSC ещё не выложили свой официальный инструментарий. Портировать с их помощью локации сейчас новичку - это самая настоящая пытка и трата времени, ведь можно просто перенести локацию с помощью SDK, причем даже не компилируя её при надобности.


Цитата Аruron ()
В смысле? Я же не говорю оставлять ЧН-овский спавн на месте, тоже можно легко удалить комбинацией клавиш. Я так себе уже пару локаций перенёс и всё в шоколаде


Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка. wink
  Злобная реклама
Вторник, 07.01.2020, 12:13
Статус:
Сообщений: 666
Регистрация: 09.10.2019
Казахстан  STRAZH
Пятница, 10.01.2020, 09:00 | Сообщение # 7
Статус:
Зевака:
Сообщений: 21
Награды: 7
Регистрация: 18.07.2014

А это не тот метод, который на Stalker Inside еще в 2010-м публиковали? Если так, то лучше им в наши дни не пользоваться.

Цитата Janel ()
Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка.


Ну да, ведь намного лучше потом методом тыка писать затычки для саунд рендера, сетки bound rect и ловить stack trace на поломанных сейвах.

Если и учиться модострою, то учиться нужно сразу нормально, по актуальной информации, а не использовать архаичные методы, которые сами по себе являлись костылями своих лет. Давай тогда ещё perl-скрипты вспомним, ACDC, правки Колгомора и утилит паки.
Сообщение отредактировал STRAZH - Пятница, 10.01.2020, 09:01
  Злобная реклама
Пятница, 10.01.2020, 09:00
Статус:
Сообщений: 666
Регистрация: 18.07.2014
Казахстан  Janel
Пятница, 10.01.2020, 17:58 | Сообщение # 8
Статус:
Гость:
Сообщений: 40
Награды: 0
Регистрация: 09.10.2019

Цитата STRAZH ()
Если и учиться модострою, то учиться нужно сразу нормально, по актуальной информации, а не использовать архаичные методы, которые сами по себе являлись костылями своих лет. Давай тогда ещё perl-скрипты вспомним, ACDC, правки Колгомора и утилит паки.

Каждый выбирает метод который лучше подходит для тебя, хочешь работать в SDK? Работай, хочешь работать с файлами? Работай.
Каждый ищет удобный и подходящий для себя способ! vinsent
Сообщение отредактировал Janel - Пятница, 10.01.2020, 18:02
  Злобная реклама
Пятница, 10.01.2020, 17:58
Статус:
Сообщений: 666
Регистрация: 09.10.2019
Российская Федерация  Саня_Бандит_TiMidi
Вторник, 03.03.2020, 17:04 | Сообщение # 9
Статус:
Зевака:
Сообщений: 18
Награды: 0
Регистрация: 18.08.2019

Цитата Janel ()
1. Универсальный распаковщик ресурсов игр Сталкер
2. ActivePerl
3. ggtool
4. ACDC_Cs
5. ACDC_Cop
6. ggEditor_01


здравствуй 2009 год)))

брат, уже 2020 на дворе. пора уже наконец освоить сдк. уж спустя 10 лет то)))
  Злобная реклама
Вторник, 03.03.2020, 17:04
Статус:
Сообщений: 666
Регистрация: 18.08.2019
Украина  SirTokaryev
Вторник, 03.03.2020, 18:38 | Сообщение # 10
Статус:
Отмычка:
Сообщений: 153
Награды: 2
Регистрация: 23.10.2015

Цитата Саня_Бандит_TiMidi ()
брат, уже 2020 на дворе. пора уже наконец освоить сдк. уж спустя 10 лет то)))

ИМХО, всегда интересно узнать как оно всё делается(делалось) без использования этих ваших SDK ¯\_(ツ)_/¯
  Злобная реклама
Вторник, 03.03.2020, 18:38
Статус:
Сообщений: 666
Регистрация: 23.10.2015
Украина  AziatkaVictor
Вторник, 03.03.2020, 19:25 | Сообщение # 11
Статус:
Опытный:
Сообщений: 1313
Награды: 4
Регистрация: 30.08.2018

Опять, очередной перенос локации из ЧН в ЗП? Таких уроков уже выше крыши, куда больше? Никогда не понимал таких "изощрённых" методов, по-типу разборки all.spawn для редактирования или переноса Локации. В этих махинациях почти нету смысла, тем более, если для этого есть СДК с необходимым функционалом. Достаточно декомпилировать локацию в СДК для изменения спавна (удалить ненужное и добавление спавна ГГ), кинуть исходники локации из ЧН в ЗП с новым спавном, подключить локацию, еще пару мелочей и все! Готова ваша локация. Зачем скачивать столько программ и вообще тратить столько времени на такие элементарные вещи? Тем более, вы будете на пустой локации бегать? А как же подключение к скриптам?
Цитата Janel ()
Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка.
А рестрикторы, спавн предметов и прочее тоже через all.spawn будете делать, бегая по локации и замеряя точные координаты и прочие параметры? СДК не такая и сложная программа, и уроков по нем тоже предостаточно, так что методом тыка работать никто не будет.
Сообщение отредактировал AziatkaVictor - Вторник, 03.03.2020, 19:25
  Злобная реклама
Вторник, 03.03.2020, 19:25
Статус:
Сообщений: 666
Регистрация: 30.08.2018
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Перенос локации из cs в cop (Как перенести локацию с чистого неба в зов припяти)
  • Страница 1 из 1
  • 1
Поиск: