Создание сценария может сделать игру дольше, добавив вызовы, мини-игры, или совершенно новый способ играть. Вот как вы можете начать делать свои собственные:
Введение
Вместо того, чтобы играть творческим способом, где вы можете делать что угодно, Сценарий более структурирован. У него есть конкретные цели, набор ограниченных инструментов или деталей, а иногда и другие правила. Учебник, Комплект сборка, и все сценарии на коленях созданы таким структурированным способом. Они показывают, чего вы можете достичь, используя эту систему.
Сценарий обычно включает в себя сохраненную сцену и сценарий LUA. Сценарий LUA загружается при запуске сценария, Настройка игры и создание сценария.
Пожалуйста, обрати внимание: Пример сценария в этом руководстве можно найти на семинаре, поиск “Anexampresserio.”
Сцена
Чтобы начать создавать сценарий, Первоначально - подготовить сцену.
В творческой панели, выберите “Новая пустая сцена” вариант. Выберите карту, Настройте среду, если хотите, а затем нажмите кнопку воспроизведения.
Если вы хотите, чтобы ваш сценарий начался с пустой сцены, Вы закончили на этом этапе; Вы можете сохранить его как есть. Однако, Многие сценарии требуют, чтобы некоторые структуры присутствовали с самого начала.
Например, Здесь у нас есть грузовик -вилочный погрузчик, Зеленый ствол на палитре, и контрольная точка цилиндра:
Кроме того, есть круговая часть, символизирующая “золотая монета.” Это послужит шаблоном для вознаграждений, которые мы создадим в сценарии сценария.
Сейчас, Попробуйте устроить сцену, которая напоминает одну иллюстрированную.
Как только ваша сцена будет подготовлена, Перейти на экран «Сохранить сцену». Предоставить ему имя, описание, и добавить “сценарий” как тег. После, Нажмите кнопку Сохранить:
ПРИМЕЧАНИЕ: Вы должны пометить сохранение с “сценарий”, так что его можно загрузить из Начать сценарий экран позже.
Идентификаторы сцены
В сценарии, Сценарий LUA должен определить детали или конструкции на сцене, чтобы манипулировать ими. Каждая часть и конструкция имеет уникальный идентификатор сцены для этой цели.
Чтобы узнать идентификаторы объектов в сцене, вы можете использовать “Частично” мод сценария предоставлен. Загрузите его с экрана модов сценариев, найдено под “Встроенные примеры” вкладка.
Когда вы нацелитесь на роль в сцене, он отобразит идентификатор конструкции, которой он принадлежит:
Не забудьте записать идентификационные номера вилочного погрузчика, бочка, контрольно-пропускной пункт, и “Золотая монетная награда” Конструкции в вашей сцене.
ВАЖНЫЙ: Убедитесь, что вы отмечаете идентификаторы строительства, Не точки части!
Сценарий сценарий
Go to %USERPROFILE%\AppData\LocalLow\SmashHammer Games\GearBlocks\SavedScenes and locate the folder for your saved scene (например, Anexampresserial). В этой папке, Создайте новый пустой текстовый файл и назовите его сценарий.lua:
При загрузке сцены из Начать сценарий экран, Игра автоматически загрузится сценарий.lua Если это найдет.
Редактировать сценарий.lua файл, и введите следующий код LUA:
-- Идентификаторы конструкций в сохраненной сцене:
локальная контрольная точка -конструкция = <ID идет сюда>
локальный BarrelConstructionId = <ID идет сюда>
Местный вознаграждение TemplateConstructionId = <ID идет сюда>
локальный forkliftConstructionId = <ID идет сюда>
local checkpointPosition = Vector3.Zero
local rewardTemplatePart = nil
local isGoalAchieved = false
ВАЖНЫЙ: Вместо каждого <ID идет сюда>, Замените его на соответствующий идентификационный номер конструкции, который вы отметили.
Сейчас, Включите следующие функции. Эти функции деактивируют инструменты и другие функции, и установить пользовательский интерфейс. Мы будем ссылаться на это во время инициализации:
Локальная функция не допускает функций() -- Установите переменные, чтобы отключить функции игры. NoBuilderTool.Value = true NoMaterialTool.Value = true NoLinkerTool.Value = true NoPainterTool.Value = true NoGrabberTool.Value = true NoSceneTool.Value = true NoPartSpawnDestroy.Value = true NoConstructionSaveLoad.Value = true NoSceneSave.Value = true end local function initUI() -- Создать окно пользовательского интерфейса. Win = windows.createwindow() Win.SetAlenment( align_rightedge, 20, 300 ) Win.SetAlenment( align_topedge, 80, 200 ) Win.Title = 'FORKLIFT CHALLENGE' Win.Show( истинный ) Win.isclosable = false -- Добавьте к нему текстовую метку. Метка = win.createLabel() Метка .setAlenment( align_horizedges, 10, 10 ) Метка .setAlenment( align_vertedges, 10, 10 ) Label.fontsize = 30 Label.Alignment = textAnc_MiddleCenter Label.Text = "Используйте вилочный погрузчик, чтобы положить ствол в целевую зону ..." конец
Затем, Добавить следующий блок кода:
Локальная функция OnReardConstructionSpaked( строительство ) -- Разморозить порожденную часть. Constructionops.setConstructionFrozen( Строительство.id, ЛОЖЬ ) end local function spawnRewards( Numparts ) -- Добавьте обработчик в мероприятие, которое, по -видимому,. -- Это поднимается в игре, когда строится строительство. ConstructionSpawned.handler.Add( OnReardConstructionSpaked ) -- Временно включить нереску части. Nopartspawndestroy.value = false -- Породить награду "золотая монета" части, дублируя их из шаблона. if rewardTemplatePart then for i = 1, Numparts делают -- Случайное место рядом с контрольной точкой. локальная Spawnposition = контрольная точка + Vector3 .__ Новый( Math.random() * 5 - 2.5, Math.random() * 2 + 2, Math.random() * 5 - 2.5 ) локальная спавнизация = Quaternion.euler( Math.random() * 360, Math.random() * 360, Math.random() * 360 ) -- Породить дубликатную часть. PopConstructions.duplicatePart( rewardtemplatepart.id, Spawnposition, Spawnerientation ) end end -- Снова отключить нересту. Nopartspawndestroy.value = true -- Удалить, удалив наш обработчик конструкции, а также. ConstructionSpawned.handler.remove( OnReardConstructionSpaked ) конец
Функция SpawnEards(Numparts) генерирует несколько частей вознаграждения в случайных положениях, дублируя их из шаблона. Мы будем использовать эту функцию, когда игрок достигнет цели.
Сейчас, Добавьте следующее к своему скрипту LUA:
Локальная функция OnConstructionEnderchpoint( строительство ) -- Проверьте, является ли конструкция, введенная в контрольную точку, является стволом. -- Если так, Затем цель была достигнута. если не иссечено и (Construction.id == BarrelConstructionId) then Label.Text = "<цвет = желтый>Отличная работа, иметь несколько золотых монет!</цвет>" SpawnEards( 10 ) isGoalAchieved = true end end local function initScene() -- Начните с создания всех конструкций на сцене не нацелимым. for construction in Constructions.Instances do ConstructionOps.SetConstructionTargetable( Строительство.id, ЛОЖЬ ) конец -- Затем сделайте вилочный погрузчик, чтобы игрок мог войти и водить его. Constructionops.setConstructionTargetable( forkliftConstructionId, истинный ) локальная контрольная конструкция = строительство.( CheckPointConstructionId ) Local CheckPointPart = CheckPointConstruction.getPart( 0 ) -- Кэшировать мировую позицию в области контрольной точки для последующего использования. CheckPointPosition = CheckPointPart.position -- Добавьте обработчик в конструктивное событие поведения контрольной точки. -- Это поднимается всякий раз, когда строительство входит в контрольно -пропускной пункт. for behaviour in checkpointPart.Behaviours do if behaviour.Name == 'Checkpoint' then behaviour.OnConstructionEntered.add( OnConstructionEnderedCheckpoint ) break end end -- Кэшировать награду "золотая монета" шаблона для последующего использования. Local rewardtemplateConstruction = Constructions.GetinStance( rewardtemplateConstructionId ) rewardtemplatepart = rewardtemplateConstruction.getPart( 0 ) -- Переместите шаблон, часть 1 км ниже земли, так что игрок этого не видит! Constructionops.freezeConstructionatground( rewardtemplateConstruction.id, Vector3 .__ Новый( 0, -1000, 0 ) ) конец
The Initscene() Функция гарантирует, что только вилочный погрузчик нацелен на игрока, кэширует некоторые переменные для последующего использования, и устанавливает контрольно -пропускной пункт OnConstructionEned обработчик событий.
В рамках OnConstructionEnderedCheckpoint(строительство) обработчик событий, Если ствол входит в контрольную точку, это означает, что цель достигается, и мы приступаем к порождению наград.
Чтобы завершить, Вставьте этот последний блок кода:
----- Игровые обработки событий -----
-- Событие Gameready поднимается в игре, когда сцена закончилась
-- загрузка (то есть. карта и любые сохраненные конструкции в ней).
-- Здесь мы добавляем обработчик к этому событию, В нем мы инициализируем все для сценария.
Локальная функция ongameready()
ОТКРЫТИЕ()
для похищения()
Initscene()
end
GameReady.Handler.add( ongameready )
----- Функции входа -----
-- Очистка() называется игрой, когда сценарий выгружен.
Очистка функций()
Windows.DestroyWindow( Победить )
-- Обязательно удалите наш обработчик мероприятий Gameready.
Gameready.handler.remove( ongameready )
конец
The ongameready() Обработчик событий запустит наши функции инициализации, когда игра будет готово играть. Код в Очистка() гарантирует, что мы убираем соответствующим образом, когда игрок выходит из сценария.
Сохраните свой сценарий, И все готово попробовать сценарий!
Играя в свой сценарий
Теперь введите Начать сценарий экран, и под “Локально спасено” вкладка, Вы должны найти свой сценарий:
Попробуйте сыграть…
И посмотрите, есть ли у вас навыки вилочного погрузчика…
Чтобы получить награду…
ХОРОШО, Это не было сложной задачей играть, но надеюсь, это даст вам представление о возможностях!
Дополнительная информация
Это руководство только царапает поверхность того, что возможно при сценариях.
Чтобы узнать больше, встроенные сценарии-хорошая ссылка, ты найдешь их здесь: С:\Программные файлы (х86)\Steam\steamapps\common\GearBlocks\GearBlocks_Data\StreamingAssets\Scenes.
Если вы хотите попробовать их изменить, Скопируйте их в свой местный Сохраненные сцены папка первой!
Окончательно, Вот полная документация для Gearblocks Lua Scripting API. Это будет развиваться со временем, поскольку я раскрываю больше функций и функциональности в API, Так что добавьте в закладки для будущего справки!
Это все, чем мы делимся сегодня для этого. Блоки передач гид. Это руководство было первоначально создано и написано опасность726. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.