PAYDAY 2

PAYDAY 2

81 ratings
Как создать своё ограбление
By burnt chicken nugget and 2 collaborators
Этот гайд полностью расскажет, как создать своё собственное ограбление.

Это просто, я обещаю!
   
Award
Favorite
Favorited
Unfavorite
Вступление
Не всем нравятся новые ограбления? Не было бы это хорошо, если бы ты мог создать своё ограбление, полностью с нуля?

Если ты будешь следовать инструкциям в этом гайде - ты сможешь создать наилучшее ограбление в мире!
Подготовка
Прежде чем ты сможешь сделать своё ограбление, тебе нужно будет сделать несколько вещей прежде этого.

ЗАМЕТКА: Система создания была изменена с тех пор как был написан этот гайд. Сейчас вам нужно использовать BeardLib и BeardLib-Editor. Вы можете использовать и старый формат, но я этого вам не советую.

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

Вы можете прочитать про весь процесс извлечения файлов здесь:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=242992110

Дальше вы должны получить файлы ядра, без этого ваше ограбление не будет работать. ViciousWalrus решил взять эти файлы с новым обновлением формата. Если вы хотите использовать старый формат, вы должны скачать ограбление Transfer Frenzy[drive.google.com] и изменить файлы ограбления на те, которые вам захочется.

Я не могу перезалить файлы ядра, потому-что я не имею на это право. Контент будет помечен как “украденный”.

И наконец, убедитесь что вы скачали BLT и BeardLib чтобы загрузить ваше ограбление в игру.

BLT: http://paydaymods.com/download/

BeardLib: http://modworkshop.net/mydownloads.php?action=view_down&did=14924

Когда вы завершили скачивание, подготовились - вы можете начинать!
Объяснение файловой системы
У PayDay 2 свой способ сохранения информации о ограблении. У каждого оно хоть немного, но отличается. Так что, когда вы начнёте работать над ограблением, вы должны будете искать нужные файлы и создавать новые локации.

Все существующие ограбления хранятся в levels/narratives/*. Там вы можете найти всех работодателей, так-же как и отдельные ограбления. Вы можете найти такие папки как “bain”, “dentist” и “vlad”, но также есть “h_firestarter” (это аббревиатура к “hector_firestarter”) и “h_watchdogs”

Когда вы начнёте осматривать файлы, вы в конце концов столкнётесь с папкой, которая сожержит файлы, названные например: world.world, continents.continents и mission.mission

НЕ ОБРАЩАЙТЕ НА НИХ ВНИМАНИЕ

Эти файлы не связаны с моддингом и чисто служат для ссылок к другим файлам, которые очень важны.

Найдите папку: world. Это (почти) всегда единственная директория которая нужна для моддинга.

Когда вы нашли путь в папку world, откройте её, в ней вы найдёте файлы которые вам нужны. Это должны быть 2 файла:
- world.continent
- world.mission

Файл world.continent содержит весь реквизит на карте. Где это находится, какие есть экземпляры. Это всё там.

Файл world.mission содержит данные о миссии. Что когда должно произойти, какие области я должен пройти, что я должен включить/выключить.

Заметка - они полностью зависят друг от друга, и их нельзя разъединить.
Расшифровываем файлы
Мы нашли важнейшие файлы которые нужны нам чтобы создать ограбление, пора их расшифровать. После расшифровки мы сможем открывать их в любом текстовом редакторе (рекомендую Notepad++)

Чтобы расшифровать файлы - запустите PayDay 2, и жмите как написано ниже:

Options(Настройки) -> BeardLib Main Menu -> Scriptdata Converter
Найдите файл который вы готовы расшифровать, и просто нажмите Enter чтобы расшифровать его. Это будет долговато, но вам надо расшифровать всего пару файлов, так-что это не займёт так много времени.

Расшифруйте world.mission и world.continent как показано ниже

world.mission расшифровывается из BINARY в GENERIC_XML
world.continent расшифровывается из BINARY в CUSTOM_XML

Заметка - можно расшифровать continent также в GENERIC_XML, но это не особо удобно и будет занимать больше места в редакторе.

*НО* Обязательно надо расшифровывать mission в GENERIC_XML, или игра будет крашиться!

Когда вы закончили расшифровывать файлы - переместите их в папку /level в заранее скачанные файлы ядра, и (на выбор) вы можете переименовать “world” на более значительный идентификатор. Например, моё ограбление называется “Turret Takedown” ,а его идентификатор “quack_tt_001”. Будьте уверены, что ваше название уникально,и написано на английском языке, иначе ваш мод может не работать/не будет работать с другими модами.

И наконец, откройте Core.lua, следуйте инструкциям как извлечь файлы надлежащим образом. Это не должно быть сложно, так-что я не буду заострять на этом внимание.

Когда у вас будут все файлы в папке /level, вы можете начинать их редактировать!
Заранее
Первый шаг заключается в корректировке континента. Заранее, убедитесь, что все настроено правильно, загрузив игру, зайдя в CrimeNet Offline -> Выбор контракта и купите свой контракт от работодателя, под которым вы его прописали.

Если вы ещё не добавили его, то зайдите в Core.lua и начните редактировать переменные.

После того, как вы купили контракт, вы можете просто перезапустить ограбление, и оно автоматически обновится до последней версии. Обратите внимание, что вы не можете перезапустить, а затем настроить и попробовать. Вы должны перезапустить ограбление после внесения каких-либо изменений.

Готов редактировать? Хорошо.
Объяснение о world.continent
В первую очередь нужно расставить реквизит. С этого момента вы можете изменять события. [events]

Вы должны поместить весь реквизит в файл continent. Местоположения сейфов, денег, весь лут и т.д.. В файле missions вы отключаете некоторые локации в начале миссии, и изменяете их порядок. Так-что запомните: всё должно быть в файле continent, даже то, что вы можете не видеть.

Файл continent очень простой. Там всего-лишь 2 зоны где вы можете работать:
- instances
- generic_props

Instances - это такие вещи, которые автоматически делают всё для тебя. Если это коробка - оно автоматически позволить взаимодействовать, открываться автоматически когда ты взаимодействуешь с ней. Однако, их очень сложно убрать с ограбления. Я рекомендую просто переместить их, допустим, на -1000 по оси Z. Так вы их больше не увидите.

Реквизит [props] - это такие вещи, которые ничего не делают автоматически. Вам нужно указывать всё для реквизита в файле mission, включая открытие, взаимодействие и другое. Однако, их очень легко добавлять и убирать, это всего-лишь 1 строчка кода.

В основном я буду фокусироваться на реквизите, потому-что с ним легче работать Instances я обсужу немного больше чем реквизит, это всё ниже.

Готов? Поехали!

Пропы
Пропы могут быть такими же, как и выглядят в файле continent:

<table>
<unit_data continent="world" hide_on_projection_light="true" name="units/payday2/equipment/gen_equipment_security_camera/gen_equipment_security_camera" name_id="security_camera_001" position="-700 300 4100" rotation="0 0 0 -1" unit_id="100031"/>
</table>

Есть несколько основных параметров:

continent
Это директория файла continent. Вы можете оставить это как есть.
- hide_on_projection_light
Должен этот проп отдавать тень когда на него направлен фонарик?
- disable_on_ai_graph
В большинстве случаев используется для дверей
- mesh_variation
Это определяет последовательность, которая должна выполняться при создании пропа.
Подробнее об этом ниже.
- name
Название пропа.
- name_id
Придумай рандомное слово. И поставь его сюда. Это ничего не делает.
- position
Позиция пропа.
- rotation
Вращение пропа в квантерионе.
- unit_id
Уникальный идентификатор. Должно быть числом. Используется для определения пропа в файле файлах миссии.

Очень легко добавить проп. Просто зайдите в папку units/, и вы сможете легко добавить проп, вместе с его местоположением.

ВНИМАНИЕ: ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ПРОПЫ КОТОРЫЕ ВКЛЮЧЕНЫ В ПАКЕТ (ИЛИ ЖЕ В ОГРАБЛЕНИЕ КОТОРОЕ ВЫ МОДИФИЦИРУЕТЕ) ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ ДРУГИЕ ПРОПЫ, ТО ВЫ ДОЛЖНЫ СНАЧАЛА СКАЧАТЬ ПАКЕТ В КОТОРОМ ЕСТЬ ЭТОТ ПРОП (другими словами, если вы хотите коробку с проводами, то вам нужно скачать пакет из 2 дня поджигателя).

В Core.lua есть пример, как скачать пакет. Не скачивайте и используйте много пакетов в одно время, это может привести к ошибкам в игре, особенно если они большие. Если у вас это случилось, то просто перезапустите игру.

Небольшая информация о пропах:

Позиционирование

Когда вы добавляете новый проп, сначала ставьте его позицию на ту, где на карте уже есть проп. Так вы можете легко увидеть, заспавнился проп или нет. И вы всегда будете знать где он заспавнился. Потом можете изменить местоположение.

При изменении положения, важно обнаружить и отслеживать базовые оси (что направление х-положительное, у-положительное и z-положительное). Просто переместите известный проп в {х + 100, у + 100, z}, и проверьте направление в котором он двинулся. Теперь вы можете поставить своё положение, так как направление z-положительное всегда направляет вверх.

Вот изображение, сделанное в Paint, которое объясняет это немного лучше:
*PROP WAS HERE - ПРОП БЫЛ ЗДЕСЬ*
*PROP IS HERE - ПРОП ЗДЕСЬ*


200 юнитов это примерно 1 метр, и я обнаружил, что большинство коробок около 30 в толщину. Сейфы где-то около 100x100x100. Большинство дверей уже предварительно оборудованы, чтобы прямо встать в стену.

Вращение
Все вращения совершаются в кватернионах, тут нет градусов. К счастью, вы можете найти наиболее часто используемые кватернионы ниже:

{0, 0, 0, -1} = 0 градусов по оси Z
{0, 0, 0.707107, -0.707107} = 90 градусов по оси Z
{0, 0, 1, 0} = 180 градусов по оси Z
{0, 0, 0.707107, 0.707107} = 270 градусов по оси Z

Почти все пропы были разработаны, чтобы вращаться вокруг оси Z. Пропы, которые висят на стене (например, картины), однако, всегда должны быть повёрнуты вокруг оси X или оси Y в первую очередь, прежде чем встанут лицевой стороной вертикально. Когда вы столкнетесь с этой ситуацией, вы должны просто скопировать и вставить кватернион для лучшего результата.

Вы также можете использовать онлайн-конвентер в квантерион, если вы хотите:
http://quat.zachbennett.com/

Примечание: Ни один проп не имеет общее происхождение. Это означает, что некоторые пропы будут вращаться вокруг переднего левого угла, а другие вокруг центра, а другие в крайне странных местах, которые заставят вас думать: "Что?". Рекомендуется сначала повертеть, чем перевести на точное место, чтобы избежать потери времени.
Инстансы
Так выглядит код инстанса:

<table continent="world" folder="levels/instances/unique/hox_estate_window/world" index_size="20" name="hox_estate_window_001" position="150 -650 500" rotation="0 0 -3.57628e-007 -1" script="default" start_index="0"/>

Параметры очень маленькие, в одну строчку, вот несколько:
- continent
Тоже самое, что и ранее; вам не нужно изменять это.
- folder
Путь к инстансам; обычно он в levels/instances/*
- index_size
Количество индексов которые этот инстанс выделяет. Больше об этом позже.
- name
Уникально название, используется для того, чтобы различать инстансы в файле mission
- position
Местоположение инстанса.
- rotation
Вращение инстанса, в кватернионах
- script
Оставьте это по дефолту. Изменяйте только если вы знаете что это.
- start_index
Это должно совпадать с -” index_size”, больше об этом ниже.

Как вы можете видеть, инстансы с трудом настраиваемые, но не заставят вас слишком напрягаться. Вы увидите много миссий, сочетающих и инстансы, и пропы, которые потребуют от вас постоянного переключения между ними, пока вы работаете с ними. Работа с инстансами очень легка, так что это не должно доставить много хлопот.

Что касается index_size и start_index; Инстансы всегда должны “выделять” определённое количество индексов. Это то, что значит index_size. Это используется для хранение всех под-инстансов для инстанса (другими словами, инстанс коробки с проводами имеет: дверь, провод и коробку; для это всего нужно заранее подготовленное место). Вы обычно можете оставить index_size, чтобы оно просто было.

start_index ДОЛЖЕН совпадать с index_size предыдущего инстанса. Если, например, инстанс 0 имел index_size = 20, и его start_index = 0, значит, что следующий инстанс ОБЯЗАН быть с start_index = 20.

Вот несколько примеров ниже, вы поймёте суть:

<table continent="world" folder="levels/instances/unique/hox_estate_window/world" index_size="20" name="hox_estate_window_001" position="150 -650 500" rotation="0 0 -3.57628e-007 -1" script="default" start_index="0"/>
<table continent="world" folder="levels/instances/unique/hox_estate_window/world" index_size="20" name="hox_estate_window_002" position="300 -1000 500" rotation="0 0 0.707107 0.707106" script="default" start_index="20"/>
<table continent="world" folder="levels/instances/unique/hox_estate_window/world" index_size="20" name="hox_estate_window_003" position="700 -999.999 500" rotation="0 0 0.707107 0.707106" script="default" start_index="40"/>
<table continent="world" folder="levels/instances/unique/hox_estate_window/world" index_size="20" name="hox_estate_window_004" position="950 -749.999 500" rotation="0 0 1 -7.15256e-007" script="default" start_index="60"/>

Больше говорить об инстансах нечего. Они намного более упрощенны, чем пропы, но гораздо менее настраиваемые.
Объяснение о world.mission
Файл mission является ядром ограбления. Оно содержит все аспекты миссии, собранные в элементы. Для начала, файл mission может выглядеть очень сложно, но как только вы научитесь работать с системой, он окажется очень лёгким методом.

Все миссии начинаются с элемента 0: запуск. Это всегда MissionScriptElement, который служит для других событий. Вы можете настроить различные вещи, такие как задержки, другие элементы, и многое другое.

Каждый элемент имеет уникальный идентификатор. Обратите внимание, что этот идентификатор должен быть в последовательности с предыдущим. Тоесть - если последний элемент имеет значение 20183, то следующий элемент должен быть со значением 20184. Существует также индекс элемента, который должен быть уникальным и используется исключительно для привязки. Я бы рекомендовал использовать высокие, неиспользуемые значения для того, чтобы отделить свои пользовательские элементы от базовых игровых элементов

Я буду вдаваться в подробности в разделе Элементы данного руководства, об этих элементах.
Элементы
Части объектов (Ну или же просто "элементы") в строчках кода выглядят так:

<entry index="2" type="table">
<entry key="class" type="string" value="ElementRandom"/>
<entry key="editor_name" type="string" value="select_spawn"/>
<entry key="id" type="number" value="100933"/>
<entry key="module" type="string" value="CoreElementRandom"/>
<entry key="values" type="table">
<entry key="amount" type="number" value="1"/>
<entry key="amount_random" type="number" value="0"/>
<entry key="base_delay" type="number" value="0"/>
<entry key="enabled" type="boolean" value="true"/>
<entry key="execute_on_startup" type="boolean" value="false"/>
<entry key="ignore_disabled" type="boolean" value="true"/>
<entry key="on_executed" type="table">
<entry index="1" type="table">
<entry key="delay" type="number" value="0"/>
<entry key="id" type="number" value="100934"/>
</entry>
<entry index="2" type="table">
<entry key="delay" type="number" value="0"/>
<entry key="id" type="number" value="100935"/>
</entry>
</entry>
<entry key="trigger_times" type="number" value="0"/>
</entry>
</entry>

Также можно создавать свои части объектов (Ну или импортировать уже созданные), но если вы допустите ошибку в пути или коде, то ни к чему хорошему это не приведет, а именно: лаги, баги, вылеты программы, вылеты игры и все в таком духе.

<entry index="XXX"type="table>
Вот это "ХэХэХэ" есть ничто иное, как последовательность чисел. Ну допустим вот такой пример-количество на этом подобъекте "10", значит следующий должен иметь "11", потому, что это, собственно, его индекс. Если напортачить тут, то случатся труднопоправимые баги, в лучшем случае оно просто не загрузится.

<entry key="class" type="string" value="ElementRandom"/>
<entry key="module" type="string" value="CoreElementRandom"/>
Значит, эти строчки отвечают за тип элемента, который вы хотите использовать. Есть лист спецфайлов для элементов с их описанием. Это лучше копировать, так как каждый файл отвечает за свой тип. Вот здесь ошибку придется искать долго: "Вроде написал правильно, а ей что-то не нравится."

<entry key="editor_name" type="string" value="select_spawn"/>
Это название элемента чисто для вас, допустим нужно вставить что-то быстро при помощи "Ctrl+F", да или просто отсортировать элементы по вашему удобству (Для удобства пишите понятные названия).

<entry key="id" type="number" value="100933"/>
Это свой уникальный текст I.D.. Оно нужно для работы частей элемента. Проверяйте, чтобы число не заходило за 200000, это лимит файла "world.world".

<entry key="base_delay" type="number" value="0"/>
Сколько по времени (Измеряется в секундах) будет длиться таймер перед важным событием.

<entry key="enabled" type="boolean" value="true"/>
Активация триггеров для разных элементов, например: "ElementAreaTrigger" с "Enabled=true" будет работать, но если написать "Enabled=false", то, соответственно, активирован он не будет. Это длится то следующего триггера/ов.

<entry key="execute_on_startup" type="boolean" value="false"/>
Используется только при запуске.

<entry key="ignore_disabled" type="boolean" value="true"/>
Тут идет проверка элементов. Активные помечаются, выключенные игнорируются.

<entry key="on_executed" type="table">
Вот мы и добрались до сердца элементов, до их двоичной сути. "Собственно это что?"-Спросите вы. Этот файл отвечает за триггер места (ElementAreaTrigger), он дает команду активации или же дизактивации триггера в определенном месте и совмещение его работы с другими (Этот включен, а этот не включен, ну и наоборот). После происходит выключение триггера при помощи "Element random". Для него нужно выбрать значение.

Delay-Время, записываемое в секундах.
Id-I.D. для работы элемента, должно быть посоеловательным числом I.D. предыдущего элемента.
Важные элементы
Ниже приведен список важных элементов и их функции, в случайном порядке. Обратите внимание, что есть намного больше элементов, но они очень специфичны и, покажут себя в лучшем случае если будут скопированы.

MissionScriptElement
Это служит только одной цели: запуск других элементов (или предотвращение их от запуска). Это в основном используется, когда необходимо запустить большое количество вещей, но такого такого элемента, который бы держал в себе всё что надо - нет.

Еще одна полезная особенность этого элемента является то, что вы можете игнорировать его переключая его с “включен” на “выключен”. Если это происходит, когда элемент вызывается, он не будет выполняться до тех пор, как флаг "ignore_disabled" будет выключен

ElementRandom
Этот элемент используется для рандомизации вещей. Имеет специфический флаг под названием "amount", который определяет, сколько вещей он должен выбрать из "on_executed" таблицы. Он будет выполнять эти отдельные элементы.

ElementToggle
Переключает флаг "enabled" другого элемента или нескольких других элементов, либо на "on", либо на "off".

ElementAreaTrigger
Запускает "on_executed" как только "instigator" входит в указанную область. "Инстигатором" может быть либо игрок, лут, бот, транспортное средство или даже враг. Под флагом "amount", вы можете указать, сколько должно присутствовать, или "all", если вы имеете в виду игроков.

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

Обратите внимание, что этот элемент не должен активироваться во время ограбления. До тех пор пока включен флаг true, этот элемент будет активным. Если вы не хотите, чтобы он был активным всё время, вы можете его включить или выключить с помощью ElementToggle.

ElementWaypoint
Ставит вэйпоинт, если его ещё нет. На указанную позицию.

Возможные вэйпоинты:
- pd2_escape
- pd2_generic_interact
- pd2_computer
- pd2_goto
- pd2_wire_cutter

Вэйпоинт будет поставлен только один раз, до тех пор как флаг “enabled” включен.

ElementOperator
Может делать несколько вещей, но в основном используется для удаления. Способен удалять существующие элементы из ограбления.

Используется для удаления вэйпоинта.

ElementExperience
Дайте XXX потенциального опыта игроку. Общий опыт будет такой, какой вы написали в Main.lua.
Какое вы количество опыты напишите, таким он будет на нормальном уровне сложности.

ElementCarry
Используется для защиты и удаления лута или машин для побега с ограбления.

ElementObjective
Этот элемент делает 2 действия. Один для активации цели, а другой для завершения задачи. Цель, которую вы хотите активировать должна быть указана в файле mm.objectives.objective, который уже есть в ядре, который вы скачали ранее.

Завершение цели ничего не делает, она только удаляет цель из листа, который вы видите при нажатии Tab. Тем не менее, рекомендуется это делать.

ElementSpawnEnemyDummy
Этот элемент спавнит определенного противника на карте, как только выполняется. "amount" определяет, сколько должно заспавнится противников

ElementSpecialObjective
Это используется, чтобы дать определенные особые цели для конкретных врагов / ботов. Это включает в себя такие вещи, как: исследовать эту позицию, охотится на игроков, присоединиться к другим ботам и многое другое. Здесь есть много вариантов, чтобы повозится.

ElementFilter
Это используется, чтобы вызывать определенные вещи только на особых сложностях. Таблица сложностей выглядит следующим образом:

difficulty_easy = Normal
difficulty_normal = Normal
difficulty_hard = Hard
difficulty_overkill = Very hard
difficulty_overkill_145 = Overkill
difficulty_overkill_290 = Death wish

ElementCounter

Этот элемент просто считает вещи. Он не делает ничего особенного; Вам понадобятся другие элементы для этого.

ElementCounterOperator
Позволяет либо "add" или "subtract" конкретное "amount" из указанного ElementCounter.

ElementCounterFilter
Если этот элемент включается, элемент будет проверять указанный счетчик, чтобы увидеть, если он удовлетворяет заданным условиям. Если это так, то будет работать "on_executed" часть элемента.

Вы можете использовать следующие условия:
- "equal"
- "greater_than"
- "greater_than_or_equal"

Обратите внимание, что вы не можете проверить уменьшилось ли количество, но это легко обойти. Вместо того, чтобы, например, считать с 0 до 5 - считайте с 5 до 0.

ElementCounterTrigger
Этот элемент является таким же, как и ElementCounterFilter, помимо этого он будет автоматически запускать элементы (при условии, что "enabled" включен).

Обратите внимание, что этот элемент может проверить только, если счетчик равен заданному значению, и никак по другому.

ElementUnitSequence
Это используется для запуска последовательности или анимации, которая указана в пропе. Может быть использован, чтобы отобразить деньги из сейфа, после того, как дрель открыла его, например.

ElementUnitSequenceTrigger
Этот элемент противоположен тому, который указан выше. Этот элемент срабатывает, как только проп запускает указанную последовательность. Может использоваться для проверки, открыта ли дверь, например, или проверить, разрезан ли провод

ElementEnemyDummyTrigger
Проверяет, является ли конкретное событие происходит без какого либо объекта. Это обычно используется для проверки смертей, например, снайперов. Так что это может заспавнить ещё одного снайпера, или что-нибудь другое.

ElementInstanceInputEvent
Этот элемент работает точно так же, как и ElementUnitSequence, но только для инстансов.

ElementInstanceOutputEvent
Этот элемент работает точно так же, как и ElementUnitSequenceTrigger, но только для инстансов.
Последовательности
Ещё одна важная вещь о которой нужно знать - это последовательности [Sequences]. Последовательности это те вещи, которые запускают то, что нужно пропу сделать. Это открытие дверей в грузовике, сейф, который открывается после того, как таймер дрели закончился, и т.д.

Для того, чтобы получить доступ ко всем этим данным, вы должны найти нужный проп в папке units/*. Потом вам нужно расшифровать файл sequence_manager в папке пропа в GENERIC_XML. Когда вы его откроете, вы увидите все последовательности которые этот проп может активировать.

Есть 2 категории последовательностей: включаемые и не включаемые. Это указано флагом в описании последовательности. Включаемые последовательности могут быть активированы с помощью ElementUnitSequence, в то время как не включаемые могут быть прочитаны с помощью ElementUnitSequenceTrigger.

Каждый проп имеет уникальный набор последовательностей. Но наиболее распространёнными являются “state_hide”,”state_show”, hide и show [убрать и показать] - они могут показать или убрать определённый проп. В большинстве случаев, “state_show”/”show” будет автоматически включать взаимодействие с пропом.

Это то, что вы можете также указать в параметре "mesh_variation" в файле continent.

Обратите внимание, что инстансы не имеют последовательностей. У них есть свои собственные специфические события, которые указаны в папке инстанса. Они также должны быть в файле с именем sequence_manager. Вы можете расшифровать этот файл так же, как и расшифровывали другие файлы sequence_manager.

Вывод
Спасибо за прочтение гайда!

Я писал его очень долго, и я думаю что я могу прорекламировать мои собственные ограбления, которые я использовал источником информации для этого гайда:

Manager Mayhem (только лауд): http://forums.lastbullet.net/mydownloads.php?action=view_down&did=16276

Turret Takedown (только стэлс): http://forums.lastbullet.net/mydownloads.php?action=view_down&did=16348

Жду вас на Last Bullet[modworkshop.net] со своими ограблениями!

Удачи!
The end
Оригинал:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=698601037

Спасибо Mr. Чувак за перевод раздела Elements

Все претензии к непонятности гайда - к оригинальному автору, если же есть орфографические, пунктуационные ошибки, или же ссылки не работают - то это ко мне.

Всем удачи, и пока


11 Comments
howard 1 Dec, 2019 @ 11:03am 
Как играть по сети? А?
FEAKER 21 May, 2019 @ 12:35pm 
Гайд не особо понятен что, куда, зачем, для чего. "Все претензии к непонятности гайда - к оригинальному автору" Оригинал по всей видимости удален, а где либо еще инфы довольно сложно откопать.Где нужно получать ядро уровня, хрен его знает.Но все же автор не виновен, так что лайк
DanZi 1 Apr, 2017 @ 9:26am 
Круто! Но я слышал, что можно еще уровни делать через beardlib editor, было бы круто увидеть по нему гайд
burnt chicken nugget  [author] 15 Jan, 2017 @ 5:07am 
Обновил, можешь скачивать
burnt chicken nugget  [author] 15 Jan, 2017 @ 5:02am 
Сейчас обновлю этот раздел, там скачаешь
FreeDen 15 Jan, 2017 @ 2:56am 
Я непонял. Как файлы ядра то получить!!!
GhostCat 14 Jan, 2017 @ 10:03pm 
wow
Федор Кочегар 12 Jan, 2017 @ 8:51am 
Благодарю за ответы
🗿Psyhowithdrill🗿  [author] 12 Jan, 2017 @ 8:38am 
1) Да, это будет читерством.
2) Нет, не увидят. Для того, чтобы можно было играть с кем-то то этот человек должен будет установить твоё ограбление.
Федор Кочегар 12 Jan, 2017 @ 8:22am 
Интересно. А у меня вот вопрос. Предположим я создал ограбление суть которого закидать МНОГА лута в грузовик. В итоге я получу буквально из ничего тонну опыта и тугриков. Можно ли считать это читерством? Тут я имею в виду морально-этическую сторону вопроса, с юридической точки зрения все нормально, этож мод а не сторонняя программа. И еще вопрос, допустим я создал миссию, захостил, при подключении ко мне что увидят другие игроки? Или это ограбление будет работать только в офлайн-крайм.нет?