Как спавнить мутантов в сталкере зов припяти
Статью решил сделать как шпаргалку при спавне мутантов. Для спавна понадобится уже готовый смарт террейн и несколько работы для него, к примеру agr_sim_1_walker_1_walk и agr_sim_1_walker_1_look.
;;;;;;;;;;;;;;;;;;;;;;;;Разбор параметров;;;;;;;;;;;;;;;;;;;;;;;;
;В логике смарт террейна необходимо указать секции респавна зверей и выбрать каких зверей респавнить.
[smart_terrain]
squad_id = 2 ;ID смарта, каждый новый смарт с новой цифрой.
max_population = 5 ;Максимальное количество отрядов в смарте.
respawn_params = respawn@agr_sim_2 ; Выход на секцию выбора зверушек.
[respawn@agr_sim_2] ; Вид зверья, можно несколько видов в столбик, но не забываем, что два вида могут заспавниться сразу и будет бойня между ними. Я же беру комбинации отрядов из оригинала.
spawn_boar
spawn_flesh
[spawn_boar] ;Респавниться будет сначала одна секция, а на следующий раз уже другая. К примеру в первый раз респавниться [spawn_boar], а потом [spawn_flesh] (плоти)
spawn_squads = simulation_boar
spawn_num = 2 ; Количество отрядов. В одном отряде могут находиться несколько мутантов.
[spawn_flesh] ;Плоти
spawn_squads = simulation_flesh
spawn_num = 1, 0 ; Респавна не происходит пока не игрок не получит определенный инфопоршень.
;;;;;;;;;;;;;;;;;;;;;;;;Хрюшки - Плоти, плоти+кабаны, кабаны.;;;;;;;;;;;;;;;;;;;;;;;;
[spawn_pigs]
spawn_squads = simulation_flesh, simulation_mix_boar_flesh, simulation_boar
spawn_num = 3
;;;;;;;;;;;;;;;;;;;;;;;;Кровососы;;;;;;;;;;;;;;;;;;;;;;;;
[spawn_bloodsucker]
spawn_squads = simulation_bloodsucker
;;;;;;;;;;;;;;;;;;;;;;;;Пси собаки, которые могут раздваиваться.;;;;;;;;;;;;;;;;;;;;;;;;
[spawn_psy_dog]
spawn_squads = simulation_psy_dog
;;;;;;;;;;;;;;;;;;;;;;;;Собаки - просто псы, псевдособаки, псевдособаки+просто псы;;;;;;;;;;;;;;;;;;;;;;;;
[spawn_dogs]
spawn_squads = simulation_dog, simulation_pseudodog, simulation_mix_dogs
Чит-коды для сталкер зов припяти
Если пользователь ощущает сложности с финансовым положением, то можно использовать команду «ra sv_starttrammoney 9999999». С самого старта можно стать обладателем очень больших денег. Если пользователь участвует в одиночной игре, то пригодится консольная команда «g_money 999999». Числовое значение можно поставить абсолютно любое.
p, blockquote 6,1,0,0,0 -->
p, blockquote 7,0,0,0,0 -->
Чтобы у пользователя появились в распоряжении абсолютно все оружие, которое доступно в игре, нужно использовать параметр «give all». Короткая команда подарит даже самое лучшее оружие. Если хочется установить динамический прицел, то нужно прописать «cl_dynamiccrosshair», «hud_crosshair». Чтобы достать оружие и проверить результат на практике, нужно написать «sv_remove_weapon».
p, blockquote 8,0,0,0,0 -->
Есть команды для консоли разработчиков, которые позволяют посмотреть запись игр. Это очень полезный функционал, который понравится пользователям, предпочитающим играть в гордом одиночестве. Чтобы записать демонстрацию, нужно написать «demo_record 1». Пользователь сможет нарушить все законы физики и начать летать над картой, чтобы сделать самые красивые скриншоты с местными живописными видами. Возможно, кому-то понадобится, то есть возможность моментально убить персонажа с помощью команды «g_kill».
p, blockquote 9,0,0,1,0 -->
Даже самый опытный пользователь может встретиться со сложностями во время прохождения миссий. Зачастую это касается заданий, где фигурируют уроды-мутанты и секретные лаборатории на территории сложных локаций. Чтобы выйти победителем и не тратить нервы, можно включить режим Берсерка, то есть бессмертия. Для этого понадобится команда «G_god 1». Для удобства, можно даже включить индикатор режима бога — «sv_dmgblockindicator».
p, blockquote 10,0,0,0,0 -->
Игра предоставляет и более классические виды консольных команд. Например, если нужно пройти сквозь стены или препятствия, можно использовать команду «noclip». Для дополнительного комфорта, можно также включить полную невидимость благодаря команде «notarget». Вражеские существа просто перестанут реагировать на пользователя.
p, blockquote 11,0,0,0,0 --> p, blockquote 12,0,0,0,1 -->
Каждый пользователь дорожит ресурсами. Чтобы не потерять драгоценные патроны, нужно активировать автоподбор предметов командой «g_autopickup».
Практика (часть 1)
Почему предпочтительнее делать спавн скриптом, а не через тот же xrSpawner? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – редактирует спавн через файл all.spawn, что приводит к:
- Невозможности совместить два мода, такой спавн использующих
- Необходимости каждый раз начинать новую игру
Итак, определимся с квестом.
В консоли введите команду:
Тем самым мы включаем вывод информации на экран. Далее вводим еще одну команду:
И «летим» на фабрику. Нам нужно выбрать место для спавна объектов и данный режим как нельзя лучше подходит для реализации задуманного. Помещаем камеру в точке предполагаемого спавна и записываем координаты - у меня получились 115, -6, -16.
Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).
Другой способ получения тех же сведений - прийти в нужное место и запустить там скрипт, который выдаст все нужные координаты. Я пользуюсь следующим скриптом (вызываю общеизвестным способом, через main_menu):
В результате не нужно экспериментировать, мы сразу получаем все, в том числе и level_vertex и game_vertex. Imp 22:38, 23 июля 2007 (EEST)
Выходим из игры, идем в папку с установленной игрой и создаем каталог gamedata (предполагается, что «лепим» свой «мод» на «чистую» игру, без установленных модов, и имеем распакованные ресурсы игры в папке, скажем, gamedata source).
В папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование.
В файлах игры присутствуют 5 моделей гражданских зомби: файлы zombi_1.ogf, zombi_1_ghost.ogf, zombi_2.ogf, zombi_trup.ogf, zombi_trup_2.ogf.
Уже имеются секции:
Два последних типа используют одну и ту же модель zombi_trup.ogf, хм. непорядок, исправляем. Последняя секция выглядит теперь так:
Добавим пятую модель.
Для этого в конце файла создадим секцию:
Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.
Все. Сохраняем изменения и закрываем файл.
2. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script.
Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:
Далее пишем функцию:
Все. Сохраняем и закрываем файл.
Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки ресурсов игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование.
Добавим в local killCountProps к монстрам строчку:
В local sect_alias после строки:
Допишем эти строки:
А ниже в monster_classes строчку:
В функцию getNpcType(npc) добавляем конструкцию:
Сохраняем изменения и закрываем файл.
Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.
Все верно – игра не знает, какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:
Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр
Все. Вылетов не будет.
3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример статью по созданию диалогов от BAC9-FLCL.
Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:
И также связанный с ним файл stable_dialogs_escape.xml. В самом начале файла пишем следующее:
Практика (часть 2)
5. Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:
в файле esc_zombie.script изменяем массив в первой строке:
В функции spawn_zombies изменяем строку спавна:
В функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):
Всё. Сохраняем и закрываем.
6. Копируем в папку gamedata\config\gameplay\ файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:
И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:
Копируем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:
Сохраняем и закрываем.
7. И последнее – добавим иконки. Скажу сразу, воспользовался готовым файлом, уже содержащим иконки зомби и других «восстановленных монстров» (спасибо Fr3nzy). Поэтому просто скопируйте файл ui_npc_monster.dds из архива в папку gamedata\textures\ui\, а файл ui_npc_monster.xml – в папку gamedata\config\ui\. Если вы хотите сделать собственные - прочитайте урок по изменению текстур.
Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.
Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку
В секцию [zombie_ghost] добавьте строку:
Сохраняйте изменения. Всё.
Как увеличить спавн монстров в Stalker Зов Припяти?
Я ярый фанат игры stalker, давно давно играл, сейчас решил ещё раз пройти, сложность стоит максимальная (Мастер) и всё ровно монстров мало, хочется по хардкорнее, моды ставить уже не айс потому что играю уже, прогресс терять не охото, да и 2 мода уже есть (Атмосфер и оружейный пак). Можно ли как нибудь увеличить кол-во монстров? К примеру хотелось бы чтобы в той же лесопилке зомби-сталкеры спавнились по новой к примеру каждые 3 дня, можно сделать это как нибудь?
через конфиг игры, но тм придется искать или через моды, которые легко загуглить
Скачай "Повелитель зоны 1.0" и делай монстров скоко влезет
Мне это не нужно, нужно чтобы они сами спавнились рандомно по карте, просто в увеличенном кол-ве
Едик Комар Ученик (99) тогда я не знаю, в нете поищи, может что-то найдешь
Все чит-коды для Сталкер: Зов припяти
Консольные чит-коды — это самый легкий и надежный способ сделать прохождение намного комфортнее. Для этого нужно вводить комбинации команд в соответствующую консоль разработчика.
p, blockquote 1,0,0,0,0 -->
Для того чтобы вызвать консоль разработчика, необходимо нажать на клавишу «
» на английской раскладке. Появится специальное поле со строкой для ввода. Именно сюда и нужно будет ввести команду. Чтобы убрать поле, необходимо нажать на Esc.
p, blockquote 2,0,0,0,0 -->
Основной список консольных команд, можно найти в локальных файлах. Папка носит название «User.itx». Файл можно будет редактировать, ни игру это никак не повлияет. Пользователь может сделать для себя пометки, какая команда за что конкретно отвечает. Если страшно что-то испортить, то всегда можно создать запасную копию и хранить ее где-нибудь на рабочем столе.
Использовать команды достаточно просто, нужно всего лишь ввести параметр и указать нужное число. После этого можно легко использовать новые возможности.
p, blockquote 4,0,0,0,0 -->
Для того чтобы прокрутить поле консоли, нужно использовать кнопки Page Up и Page Down в правой части клавиатуры, над стрелками.
p, blockquote 5,0,0,0,0 -->
Спавн через скрипт
В скриптах есть одна единственная функция, отвечающая за спавн объектов:
Строго говоря, их две: create и create_ammo но различия между ними не существенны. Imp 22:45, 23 июля 2007 (EEST)
Первый параметр - секция в конфигурациях, описывающая объект, например "bolt","medkit" - это простые секции, простых объектов а есть объекты, которые переходят в онлайн/оффлайн, это неписи, монстры и так далее, например mil_killer_respawn_2 - спавнится снайпер группировки киллеров.
С позицией, думаю объяснять не надо, только существует нюанс - высота это Y, а не Z.
Задать позицию можно такой конструкцией: vector():set(x,y,z), где x, y и z - координаты точки на уровне, где спавним объект.
Вертекс в игре Сталкер не тоже самое, что вертекс в трехмерной графике. Vertex - определенная зона малого размера за которой закреплен индивидуальный номер в пределах уровня или целой игры. level_vertex определяет зону на уровне, по которой можно пройти NPC. game_vertex определяют зоны для свободного хождения, т.е. под руководством ИИ, а также между уровнями. Вертексы имеют одно из первостепенных значений. Точность положения указывается уже через точку спавна. Например, можно получить вертекс ближайший к актору - db.actor:level_vertex_id()
game_vertex_id нужен для того, чтобы указать на какой карте спавнить объект.
Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex_id в четвертом параметре. Например:
Итак, чтобы, например, заспавнить болт под ногами актора, пишем:
Почему 1, а не level_vertex_id? Проверено - разницы особой нет, какой level_vertex_id, хотя в некоторых случаях надо прописывать валидный вертекс, а то предмет может просто заспавнится не там, где планировалось. Но по большей части все проходит нормально и с единицей (игнорирование level_vertex_id может приводить к проваливанию произведенных предметов/персонажей под землю). А вот game_vertex решает все - он указывает на каком уровне спавнить предмет, поэтому его надо указывать. Теоретически можно просто найти для каждого уровня по одному game_vertex'у и использовать их в скриптах. На самом деле game_vertex показывает какой фрагмент карты используется (вся карта разбита на кусочки, имеющие сквозную нумерацию по всем уровням, и game_vertex выбирает нужный) соответственно неправильное использование черевато.
Кроме того, есть еще один параметр - ID объекта, если указать ID NPC или актора - то предмет заспавнится у него в инвентаре.
Пример (спавним артефакт Медуза в инвентаре у актора):
Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.
Серверный обьект позволяет свежесозданного NPC или тайник затарить разными рулезами/артефактами. Например, вот так создадим перед входом к Сидоровичу долговца и засунем в него пачку патронов:
Кстати, create_ammo - практически тоже самое, что и create, разница в том, что create_ammo предназначена специально для спавна патронов и позволяет создавать неполные пачки патронов. Возможно есть еще какие-то отличия. Стоит учесть, что сами авторы игры спавнят патроны исключительно через create_ammo. Imp 22:38, 23 июля 2007 (EEST)
Просто минимальный набор - координаты, ID, секция,а из него (серверного объекта) обычно нужен только ID, так как по ID можно получить этот самый серверный объект:
Его можно использовать, чтобы поставить метку, например, но я его лично использую для других целей - спавн сложных объектов, конкретно – NPC.
Например надо решить следующую задачу - надо создать наемника, сменить ему группировку и изменить его инвентарь, ну и в нагрузку - сделать другом для игрока.
В определенный момент заспавненный объект переходит онлайн, в этот момент вызывается callback - net_spawn.
Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!
Если они совпадают, например так:
Важно то, что у серверного объекта ID - это параметр, а у онлайнового объекта ID получается с помощью функции. Это важно, а то можно прогореть.
Итак, мы поймали нашего киллера по ID.
Далее все очень просто - вызываем команды для спавна гаусса и патронов к нему в инвентаре NPC (см. выше), меняем группировку специальной функцией, и делаем его другом.
Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа "NPC", а не с серверными объектами.
Более простая функция спауна в одну строчку:
section -- это секция предмета position -- это его позиция (Через vector()) Брать в игре с помощью консольной команды rs_stats 1 или rs_cam_pos 1 (Тока в ЧН) levelvertex - пусть равно 1 gamevertex - его Game Vertex, определяет уровень где будет спаун. GV можно взять либо скриптом, либо через распакованный all.spawn.
Спавн NPC
Эта часть статьи написана Arhet и создана на примере того, как в SRP Mod были созданы NPC группировки "Грех".
- gamedata\config\gameplay\character_desc_escape.xml
- gamedata\config\gameplay\npc_profile.ltx
- gamedata\config\creatures\spawn_sections.ltx
Начнем с character_desc_escape.xml. Описание, что значит каждая строка, писать не буду, так как все до меня уже сделано.
Тут создадим нового персонажа:
Впишем наш код после какого-нибудь </specific_character>.
Теперь идем в npc_profile.xml и туда вгоняем:
Теперь надо заняться spawn_sections.ltx. Скрипт будет «брать NPC» как раз из этого файла. Пишем туда:
- [esc_dark_stalker_1]:stalker – имя секции для скрипта..
- $spawn = "respawn\esc_dark_stalker_1"
- character_profile = esc_dark_stalker_1 – ссылка на описание нашего NPC
- spec_rank = regular – спец ранг
- community = dark_stalker – группировка.
Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.
Ну, к примеру, создаем свой файл со скриптом спавна, назовем его - spaw_new_npc.script и запишем туда вот такую функцию (взял из статьи):
Вот и весь скрипт! Теперь надо его активировать, ну к примеру через диалог, после диалога вставляем:
Читайте также: