Спаун через xrSpawner 1. Предварительные телодвижения
1.1 Итак, прежде чем мы приступим к созданию собственных модов, не помешает проветрить, все ли необходимое у нас есть. a) Собственно, сама игра, установленная на компьютер. b) Распаковщик архивов игры STALKER_Data_Unpacker c)
Текстовый редактор, подойдет практически любой, даже Блокнот. Если у
вас есть редактор с подсветкой синтаксиса, это будет плюсом. d)
Редактор файла all.spawn. Если вы корифей в HEX-редакторах, берите тот,
который нравится. Тем же, кто даже толком не представляет, что такое
НЕХ-редактор, крайне рекомендую xrSpawner 0.13.0 Beta от небезызвестного
в сталкеровском комьюнити Zeed’а. Удивительно удобная штука, тем более
что в дальнейшем речь пойдет именно о xrSpawner. e) Ровные руки и мыслящая голова. Если
все это у вас есть, продолжим. В том случае, если вы уже распаковали
архивы игры, переходите сразу ко второму пункту. Если же нет, то…
1.2
Допустим, игра у вас установлена в папку D:\Games\S.T.A.L.KE.R. Тогда
при помощи Unpacker-а извлеките все содержимое файлов gamedata.dbX (где Х
– буква или число) из корневого каталога игры в отдельную папку,
например D:\Source\gamedata.
1.3 Теперь в папке
D:\Source\gamedata\spawns найдите файл all.spawn и скопируйте его в
папку D:\Games\S.T.A.L.KE.R. \gamedata\spawns. Если такой папки нет –
создайте ее, в дальнейшем, если необходимо будет перенести какой-либо
файл в каталог, которого нет – создавайте, учитывая все промежуточные
папки. 1.4 Запускаем xrSpawner 0.13.0 Beta , нажимаем «Файл -
Открыть файл all.spawn» и указываем ему файл из папки
D:\Games\S.T.A.L.KE.R.\gamedata\spawns. Окошки редактора заполнились
цифрами и буквами. Теперь у нас все готово, начинаем.
2. Добавление транспорта.
2.1
Начнем, пожалуй, с самого легкого и в достаточной степени необходимого –
с добавления транспорта. В правой части окна редактора раскрываем
список «Добавить объект» и выбираем пункт Transport. В окне внизу
выбираем вид транспорта, который вам необходим, пусть это будет, к
примеру, Niva_Green (Нива армейского образца) и жмем кнопку «Добавить». 2.2
В левой части редактора мы видим окно со списком всех объектов,
спаунящихся в игре. В самом конце этого списка появился объект m_car, на
который указывает синий маркер. Это и есть наша Нива. Давайте обратим
теперь внимание на центральную часть редактора и немного разберемся, что
есть что. Итак, m_car – тип объекта (Entity), ven_niva_00 – название
объекта (можете назвать его по-другому, например Moya_Niva), корд X/Y/Z и
вектор X/Y/Z – координаты объекта и углы поворота относительно осей
координат. Обратите внимание, что за вертикальную ось отвечает не
привычная нам ось Z, а ось Y. Это не ошибка, Zeed сознательно ввел такое
обозначение осей, что бы те, кто работает с SDK для мультиплеера, не
путались – там координаты поименованы подобным образом. Level_ID
указывает, к какой локации относится тот или иной объект, окно Story_ID
рекомендую не трогать, по умолчанию новому объекту добавляется значение
-1. Если к объекту привязан какой-либо управляющий скрипт, его текст
отражается в окне внизу. Таким образом, наша Нива должна
респауниться на локации l01_escape (то есть , на Кордоне), в точке с
координатами -239,8912/ -19,43/ -123,0998, с углом поворота относительно
вертикальной оси -15 градусов. Это значения «по умолчанию» и они вполне
корректны, то есть, оставив все как есть, вы не рискуете обнаружить
потом свою машину, висящую где-нибудь на дереве или застрявшей в заборе.
Не удивляйтесь отрицательному значению высоты, поскольку центр
координат локации Кордон расположен на дороге, неподалеку от автобусной
остановки, лагерь же новичков относительно этого места лежит в низине.
При желании можете немного поэкспериментировать с числами в окнах «Корд.
X/Y/Z», не забудьте подтвердить изменения (нажав «Принять изменения»,
сохраните строчку, иначе данные пропадут, если вы уберете маркер с
редактируемого объекта). После этого сохраняете свой файл all.spawn
(Файл - Сохранить), все, можно запускать S.T.A.L.K.E.R. и начинать новую
игру. На выходе из бункера Сидоровича вас будет встречать автомобиль,
заспауненный лично вами. Поздравляю 2.3 Известно, что «по
умолчанию» новоявленные автомобили чрезвычайно хрупки и взрываются
буквально от первого же столкновения с забором. Устраняется эта проблема
моментально. В папке Source ищем файл veh_niva_u_01 и копируем его в
папку D:\Games\S.T.A.L.KE.R.\gamedata\config\models\vehicles. Это файл
конфигурации автомобиля. Открываем его блокнотом и ищем раздел
[immunities], после чего выставляем все параметры (burn_immunity,
strike_immunity и т.д.) равными нулю. Сохраняем и закрываем файл. Теперь
ваша Нива неуничтожима в принципе. Небольшая ремарка, повреждения для
дверей и крышки багажника считаются отдельно и после парочки
столкновений можно лишиться нескольких деталей корпуса, но, думаю, без
дверей вы уж как-нибудь покатаетесь. Рекомендую сразу же в ту же папку
перенести файлы остальных машин и проделать с ними те же операции. Все.
3 Поиск координат и расстановка объектов на других локациях.
Накатавшись
вволю по Кордону, вы, несомненно, захотите попутешествовать по
остальным локациям уже на своих четырех. Вот тут вы и столкнетесь с
проблемой, поскольку точка перехода Кордон-Свалка находится в здании за
шлагбаумом, куда машина, по понятным причинам, не пролазит. Это значит,
что вам понадобится новый автомобиль, который встречал бы вас на Свалке.
В общем случае речь может идти не только о машинах, но и о монстрах,
артефактах, сталкерах, предметах и прочих объектах. Для спауна любого
предмета необходимо, как мы уже убедились, задать координаты той точки,
где он появится. Алгоритм следующий: спаунимся на локацию, куда вы
хотите добавить объект, визуально выбираем наиболее подходящую для этого
точку и фиксируем ее координаты, выходим из игры, создаем интересующий
нас объект с заранее полученными координатами, вновь спаунимся и
проверяем корректность добавления объекта. Теперь опишем все это более
подробно на примере автомобиля. 3.1 Допустим, вы хотите
поместить белую Ниву неподалеку от перехода Армейские склады – Бар. В
окне списка объектов поставьте маркер на первый объект. В окне «Поиск»
наберите level_changer. Уже в процессе набора маркер переместиться на
объект номер 284, который и будет нашим первым левел-ченджером.
Level_cahnger, это точка, в которой расположен триггер, который выдает
на экран окошко «Вы хотите перейти на другую локацию?». Объект за
номером 284 с именем exit_to_garbage_01 отвечает за переход
Кордон-Свалка и нам он не нужен. Нажимайте кнопку «Следующий» до тех
пор, пока маркер на остановится на нужной нам точке перехода.
Определить, какой level_changer за что отвечает, достаточно просто,
смотрите на имя объекта, он подскажет в какую локацию переносит вас
триггер. Триггеры одной карты обычно группируются вместе. Объекты 5286
(exit_to_bar_01) и 5287 (exit_to_radar_01) явно принадлежат к одной
локации, по совокупности того, куда ведут выходы, можно определить, что
триггеры принадлежат Армейским складам, только с нее есть выходы на Бар и
Радар. Отлично, значит нас интересует номер 5286 exit_to_bar_01 с
координатами (-372,6236/ -21,69933/ -4,806515). Запомните эти числа,
затем открывайте строчку 63 actor (это вы), меняйте в поле Level_ID
l01_escape на l07_military, измените ваши текущие координаты на
координаты точки перехода (-372,6236/ -21,69933/ -4,806515), сохраняйте
строчку («принять изменения») и файл («Файл - Сохранить»). Обратите
внимание, сразу после загрузки вы попадете в триггер выхода. Это не
страшно, достаточно нажать «нет» и вы появитесь на локации Армейские
склады. Если же это обстоятельство вам неприятно, попросту измените
горизонтальные координаты на 1-2 метра. 3.2 Начинаем новую
игру. После загрузки и отказа переходить на другую локацию, нам
необходимо найти подходящее место для расположения автомобиля и
определить его координаты. Делается это одним из следующих способов. a)
В консоли прописываем команду «rs_stats on» без кавычек и слева на
экране появится статистическая информация. Нас интересует последняя
строчка Camera position, которая отражает текущие координаты камеры.
Почему я заостряю на этом внимание. Камера поднята над поверхностью на
1,5 метра, поэтому, когда будете вписывать данные для спауна, вычитайте
из вертикальной координаты полтора метра. Топаем ножками на
понравившуюся площадку и записываем на листочке цифры с экрана. b) Точно так же топаем ножками на понравившееся место и там сохраняемся с помощью quiksave(F6). c)
Принимая во внимание, что вы появляетесь на карте с болтами и биноклем в
карманах, ваша персона может сильно заинтересовать недружественных
товарищей и мутантов. Дабы обезопасить себя во время проведения
топографических съемок, набирайте в консоли команду «demo_record 1»,
которая освобождает камеру, давая возможность «полетать» по уровню.
Управлять камерой просто, нажимаете «огонь» и летите вперед («прицел» -
назад), стрелки отвечают за поворот вокруг осей. Далее аналогично –
прилетаем на место, запускаем «rs_stats on» и записываем текущие
координаты. 3.3 Выходим из игры. Если вы сохранялись при
помощи быстрого сохранения, ставьте маркер на объект 63 actor и
нажимайте кнопку «Получить координаты из файла сохранения». В окошках
должны появится те же самые данные, что вы получили при помощи «rs_stats
on». Единственное дополнительное преимущество состоит в том, что при
загрузке данных с сейва вы получаете также данные об угле поворота
вашего персонажа. Это вам поможет в том случае, если вы хотите
определенным образом сориентировать вашу машину относительно, скажем,
дороги или другой техники.
3.4 Добавить объект -
Транспорт - Niva_White. В поле Level_ID выбираем l07_military (если оно
уже не стоит там по умолчанию), в поля координат заносим данные,
полученные в п.3.2 Сохраняем строчку и файл. Снова запускаем новую игру.
Если вы ничего не изменяли в actor, то вы появитесь в том же месте, что
и в прошлый раз, на дороге по пути к Бару, а пробежавшись немного
вперед, обнаружите свежепоявившуюся Ниву белого цвета. Если
кому-то интересно, автомобиль на скриншоте заспаунен в координаты
(-305,38/-22,53/61,93), углы поворотов относительно осей (0/0/0). Это
важно – когда будите вписывать числовые значения координат, дробная
часть отделяется от целой с помощью запятой. Если вы поставите точку,
при сохранении редактор выдаст ошибку. Вот таким образом вы
можете получать и присваивать нужные координаты любым объектам, начиная
от табуретки и заканчивая вертолетами. Внимание, при создании объектов
на других локациях всегда сохраняйте изменения и обращайте внимание на
то, какое значение Level_ID у вас сохранено. Нередки случаи, когда
вместо того, что бы расквартироваться по всей Зоне, монстры
сосредоточились на Кордоне, из-за того, что моде (известный вам
Бастард), забыл сменить левел _айди у части монстров.
4 Добавление новых монстров
С
чисто технической точки зрения заспаунить, скажем, бюрера, никаких
трудностей не представляет. Выполняйте все те же операции, что и для
автомобиля. То есть, выбираем Добавить объект а Mutants а Burer,
корректируем координаты и локацию, если есть необходимость, сохраняемся,
заходим и любуемся. НО !!! Каждый житель Зоны, от тушкана до сталкера,
должен быть зафиксирован в куче файлов: статистика, описание, инвентарь
(то, что вы видите, нажав «обыскать труп») и прочее. Давать описание
того, что нужно сделать в каждом фале, это слишком долго и муторно,
получится гора сухой писанины, причем, не факт ни я (при наборе) ни вы
(при переписывании) не допустим какую-нибудь ошибку. А отсутствие
простой запятой в одном файле может привести к крашу игры. Поэтому
лучшим выходом из ситуации будет, если вы найдете любой мод, добавляющий
монстров и найдете там необходимые файлы, которые нужно
добавить/заменить в игре.
Обратите внимание,
что у вас есть возможность добавлять не только новых монстров и машины,
но и спаунить оружие, предметы, артефакты, старых монстров, сталкеров и
проч. Если хотите, выложу и про это...
1: Спавн ГГ Тут
ничего сложного нету, открываеш all.spawn, в поиске ищеш actor (только в
Entity) и меняеш его координаты (не забудь выставить Level_ID) вот
собственно и всё 2: Спавн предметов в рюкзаке у ГГ В этом же параметре actor есть скрип в котом прописаны все предметы он выглядит так: ][spawn] wpn_binoc detector_simple novice_outfit device_torch
далее
берём и вписываем названия предметов, оружия, патронов после
device_torch, количество указываетсо = xxx (где х - число), тоже всё 3: Спавн НПС Тут
тоже ничего сложного, ищем в поиске к примеру контролёра, вводим
m_controller и видим в табле ниже m_controller_normal(normal - сила
контролёра), далее добавляем его в базу, потом выбираем этого контролёра
в базе, выбераем Level_ID и добавляем столько сколько нужно ,
прописываем координаты и фсё запускаем и мочим 4: Спавн аномалии Насечот
аномалий не знаю (никогда не пробовал спавнить) но всётки помоему тут
всё просто. Ищем в поиске zone_xxx (х - название аномалии) к прмеру
zone_gravi, в табле ниже м ыувидим zone_gravi_zone_weak, добавляем в
базу и спавним [dont_spawn_character_supplies]
[spawn] dialogs.relocate_item_section(trader, "wpn_binoc", "in") dialogs.relocate_item_section(trader, "wpn_knife", "in") dialogs.relocate_item_section(trader, "detector_elite", "in") dialogs.relocate_item_section(trader, "exo_outfit", "in") dialogs.relocate_item_section(trader, "dolg_scientific_outfit", "in") dialogs.relocate_item_section(trader, "protection_outfit", "in") dialogs.relocate_item_section(trader, "device_torch", "in") dialogs.relocate_item_section(trader, "af_medusa", "in") dialogs.relocate_item_section(trader, "af_cristall_flower", "in") dialogs.relocate_item_section(trader, "af_night_star", "in") dialogs.relocate_item_section(trader, "af_vyvert", "in") dialogs.relocate_item_section(trader, "af_gravi", "in") dialogs.relocate_item_section(trader, "af_gold_fish", "in") dialogs.relocate_item_section(trader, "af_blood", "in") dialogs.relocate_item_section(trader, "af_mincer_meat", "in") dialogs.relocate_item_section(trader, "af_soul", "in") dialogs.relocate_item_section(trader, "af_electra_sparkler", "in") dialogs.relocate_item_section(trader, "af_electra_flash", "in") dialogs.relocate_item_section(trader, "af_electra_moonlight", "in") dialogs.relocate_item_section(trader, "af_rusty_thorn", "in") dialogs.relocate_item_section(trader, "af_rusty_kristall", "in") dialogs.relocate_item_section(trader, "af_rusty_sea-urchin", "in") dialogs.relocate_item_section(trader, "af_ameba_slime", "in") dialogs.relocate_item_section(trader, "af_ameba_slug", "in") dialogs.relocate_item_section(trader, "af_ameba_mica", "in") dialogs.relocate_item_section(trader, "af_drops", "in") dialogs.relocate_item_section(trader, "af_fireball", "in") dialogs.relocate_item_section(trader, "af_cristall", "in") dialogs.relocate_item_section(trader, "af_dummy_glassbeads", "in") dialogs.relocate_item_section(trader, "af_dummy_pellicle", "in") dialogs.relocate_item_section(trader, "af_dummy_battery", "in") dialogs.relocate_item_section(trader, "af_dummy_dummy", "in") dialogs.relocate_item_section(trader, "af_dummy_spring", "in") dialogs.relocate_item_section(trader, "af_fuzz_kolobok", "in") dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in") dialogs.relocate_item_section(trader, "ammo_9x18_pmm", "in") dialogs.relocate_item_section(trader, "ammo_9x19_pbp", "in") dialogs.relocate_item_section(trader, "ammo_9x19_fmj", "in") dialogs.relocate_item_section(trader, "ammo_11.43x23_hydro", "in") dialogs.relocate_item_section(trader, "ammo_11.43x23_fmj", "in") dialogs.relocate_item_section(trader, "ammo_12x70_buck", "in") dialogs.relocate_item_section(trader, "ammo_12x76_dart", "in") dialogs.relocate_item_section(trader, "ammo_12x76_zhekan", "in") dialogs.relocate_item_section(trader, "ammo_5.45x39_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.45x39_fmj", "in") dialogs.relocate_item_section(trader, "ammo_9x39_sp5", "in") dialogs.relocate_item_section(trader, "ammo_9x39_ap", "in") dialogs.relocate_item_section(trader, "ammo_9x39_pab9", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ss190", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_7.62x54_7h14", "in") dialogs.relocate_item_section(trader, "ammo_7.62x54_7h1", "in") dialogs.relocate_item_section(trader, "ammo_7.62x54_ap", "in") dialogs.relocate_item_section(trader, "ammo_og-7b", "in") dialogs.relocate_item_section(trader, "ammo_vog-25p", "in") dialogs.relocate_item_section(trader, "ammo_vog-25", "in") dialogs.relocate_item_section(trader, "grenade_f1", "in") dialogs.relocate_item_section(trader, "ammo_m209", "in") dialogs.relocate_item_section(trader, "ammo_gauss", "in") dialogs.relocate_item_section(trader, "wpn_colt1911", "in") dialogs.relocate_item_section(trader, "wpn_desert_eagle", "in") dialogs.relocate_item_section(trader, "wpn_toz34", "in") dialogs.relocate_item_section(trader, "wpn_vintorez", "in") dialogs.relocate_item_section(trader, "wpn_rg-6", "in") dialogs.relocate_item_section(trader, "wpn_rpg7", "in") dialogs.relocate_item_section(trader, "wpn_fn2000", "in") dialogs.relocate_item_section(trader, "wpn_gauss", "in") dialogs.relocate_item_section(trader, "wpn_addon_scope", "in") dialogs.relocate_item_section(trader, "wpn_addon_scope_susat", "in") dialogs.relocate_item_section(trader, "wpn_addon_silencer", "in") dialogs.relocate_item_section(trader, "wpn_addon_grenade_launcher", "in") dialogs.relocate_item_section(trader, "wpn_addon_grenade_launcher_m203", "in") dialogs.relocate_item_section(trader, "bandage", "in") dialogs.relocate_item_section(trader, "medkit", "in") dialogs.relocate_item_section(trader, "medkit_scientic", "in") dialogs.relocate_item_section(trader, "medkit_army", "in") dialogs.relocate_item_section(trader, "antirad", "in") dialogs.relocate_item_section(trader, "bread", "in") dialogs.relocate_item_section(trader, "kolbasa", "in") dialogs.relocate_item_section(trader, "conserva", "in") dialogs.relocate_item_section(trader, "vodka", "in") dialogs.relocate_item_section(trader, "energy_drink", "in") dialogs.relocate_item_section(trader, "wpn_ak74_m1", "in") dialogs.relocate_item_section(trader, "wpn_abakan_m1", "in") dialogs.relocate_item_section(trader, "wpn_fort_m1", "in") dialogs.relocate_item_section(trader, "wpn_ak74u_m1", "in") dialogs.relocate_item_section(trader, "wpn_mp5_m1", "in") dialogs.relocate_item_section(trader, "wpn_groza_m1", "in") dialogs.relocate_item_section(trader, "wpn_spas12_m1", "in") dialogs.relocate_item_section(trader, "wpn_winchester_m1", "in") dialogs.relocate_item_section(trader, "wpn_l85_m1", "in") dialogs.relocate_item_section(trader, "wpn_lr300_m1", "in") dialogs.relocate_item_section(trader, "wpn_svd_m1", "in") dialogs.relocate_item_section(trader, "wpn_sig_m1", "in") dialogs.relocate_item_section(trader, "wpn_eagle_m1", "in") dialogs.relocate_item_section(trader, "wpn_val_m1", "in") dialogs.relocate_item_section(trader, "wpn_mp5_m2", "in") dialogs.relocate_item_section(trader, "wpn_abakan_m2", "in") dialogs.relocate_item_section(trader, "wpn_l85_m2", "in") dialogs.relocate_item_section(trader, "wpn_sig_m2", "in") dialogs.relocate_item_section(trader, "wpn_rg6_m1", "in") dialogs.relocate_item_section(trader, "wpn_walther_m1", "in")
Вот
тебе все добро при спауне у тебя в инвентаре. все уникальное, плюс три
комбеза (зеленый ученый, экзоскелет и Скат, вроде бы ).
вот
только обрати внимание, что все это добро разом весит почти тонну
двести кэгэ. поднимай грузоподъемность или не жадничай. А вот если
появится желание скинуть это все и распихать по нычкам - не советую.
Достаточно выкинуть пару сотен патронов и игра начинает подтормаживать.
http://depositfiles.com/files/8157910 - yantar_gitarist
okolо
выжигателиа СВДшник, там в дсыру в заборе и через лес. Доходим до
вертолета, и на север. Там две скалы каменные и междуними щел. Кидаем в
них ствол и идем. Выходим, начинаетса загрузка и мы в Саркофаге уже в
нутри. баг?
|