Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

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

Создание предмета

Прежде чем приступить к созданию тайла(Tile), стоит создать предмет(Item), который игрок сможет хранить в инвентаре и ставить.

Создадим файл CoolStation в папке Items

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

В SetDefaults мы добавим нужные параметры

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

Параметры следующие:

  • Знакомые нам width и height - высота и ширина нашего спрайта в пикселях
  • value - значение, по которому наш предмет будет продаваться торговцам(Item.sellPrice отвечает за то, сколько стоит продажа предмета, а Item.buyPrice - покупка)
  • DefaultToPlaceableTile(ModContent.TileType<Tiles.CoolStationTile>()) - строчка посложнее, разберём её по частям. DefaultToPlaceableTile - функция, содержащая параметров, характерных предмету тайла. Например, то, с какой скоростью ставится блок, какая анимация проигрывается и тому подобное. А ModContent.TileType<Tiles.CoolStationTile>(), находящееся внутри скобочек - то, какой тайл будет ставится. В нашем случае это тайл CoolStationTile, находящийся в папке Tiles(который мы скоро создадим).

И, конечно же, добавим рецепт нашему столу

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

Так же, не забываем добавить спрайт нашего стола в папку с скриптом

https://github.com/tModLoader/tModLoader/blob/baa7ff18ba86b87c9fc47016c4fd16b722749ee1/ExampleMod/Content/Items/Placeable/Furniture/ExampleWorkbench.png
https://github.com/tModLoader/tModLoader/blob/baa7ff18ba86b87c9fc47016c4fd16b722749ee1/ExampleMod/Content/Items/Placeable/Furniture/ExampleWorkbench.png

Теперь, перейдём непосредственно к созданию тайла

Создание тайла

Добавим папку Tiles в проект и создадим в ней CoolStationTile

Для тайла станции крафта(в нашем случае это верстак), создадим следующие параметры

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

Получаем следующую, на первый взгляд страшную картину. Давайте разберёмся, что к чему

  • Main.tileTable[Type] - считается ли тайл столом(это влияет, например, можно ли поставить на него банку), [Type] означает, что при взаимодействии именно с нашим блоком будут какие-либо параметры, а Main/TileID.Sets, что именно взаимодействует с нашим блоком.
  • tileSolidTop - можно ли встать на наш блок, как на платформу. Вместо этого можно было бы написать просто tileSolid, тогда наш блок стал бы непроходимым, но нам это не нужно
  • tileNoAttach отвечает за то, где можно поставить стол. В нашем случае значение true запретит ставить наш блок где-то, кроме пола
  • tileLavaDeath - будет ли блок уничтожаться при соприкосновении с лавой
  • tileFrameImportant - нужно для рендера(обязательно)
  • DisableSmartCursor - будет ли умный курсор выделять наш объект(нам это не нужно, т.к. наш объект ничего не делает)
  • IgnoredByNpcStepUp - будут ли НИПы пытаться забраться на наш стол(true чтобы не пытались, false чтобы пытались)
  • DustType - параметр, которому можно присвоить значение какой-либо пыли. Эта самая пыль будет появляться, когда стол будут ломать
  • TileObjectData.newTile.CopyFrom(TileObjectData.Style2x1) - эта строчка позволяет скопировать параметры тайла от блоков на подобии стола. Если бы мы делали тайл 3 на 2 блока, мы бы написали Style3x2
  • CoordinateHeights - здесь мы задаём высоту кусочка нашего тайла(объясню, когда будем рисовать спрайт)
  • addTyle - добавляет наш тайл в мир
  • AddToArray(ref TileID.Sets.RoomNeeds.CountsAsTable) - данная строка позволяет наш стол сделать столом не только для нас, но и для НИПов. То есть в дом с нашим верстаком сможет заехать НИП
  • AdjTiles = new int[] { TileID.WorkBenches } - добавляет наш верстак в ряд верстаков, на которых можно крафтить. Вместо WorkBenches мы могли бы написать Anvils, и тогда наш верстак считался бы наковальней
  • LocalizedText tableName = CreateMapEntryName();AddMapEntry(new Color(200, 200, 200), tableName); - благодаря переменной tableName мы сможем создать локализацию названия нашего стола на карте, вторая строчка отвечает непосредственно за добавление стола на карту в виде несколько пикселей цвета Серого цвета. Вы можете поиграть с параметрами внутри Color, чтобы найти нужный цвет. Также, если у вас подчёркивается красным Color, вставьте в самое начало кода следующую строку: using Microsoft.Xna.Framework;

Фух, надеюсь, вы ещё не уснули. Но ничего, мы почти закончили. Теперь давайте я покажу вам спрайт, который у меня получился, и попытаюсь объяснить, как его нужно делать

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

О нет, фиолетовые линии, наверное это какой-то баг? Вовсе нет, они нужны, чтобы игра понимала, что и куда нужно ставить. Помните Style2x1? Ну так вот он. Как мы знаем, каждый блок в террарии занимает ровно 16х16 пикселей. Соответственно, подобная сетка нужна для разделения нашего стола шириной 32 пикселя на две половины по 16. Однако, вы могли заметить, что высота нашего стола составляет 18 пикселей. Как же так, разве это не ошибка? Вовсе нет, именно для этого у нас и была строчка с CoordinateHeights, в которой мы как раз и задали высоту в 18 пикселей. Но как тогда этот стол поместится в блок высотой 16? Никак. Параметр CoordinateHeights позволяет задать высоту кусочка за счёт углубления его внутрь блока под ним как раз на 2 пикселя.

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

Заметьте, что нижние пиксели стола находятся на уровне верхних пикселей травы и досок

Говоря подробнее о сетке, она не обязательно должна быть фиолетовой(она может быть даже полностью прозрачной), но обязательно должна быть в 2 пикселя шириной.

Со спрайтом покончили, сохраняем, забываем, идём к локализации. Давайте же откроем его

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

Тут много всего, но нас интересую три вещи

  • Tooltip - Описание ваших предметов и баффов
  • DisplayName - Название предметов и баффов
  • Третью строку разберём поподробнее. Tiles.CoolStationTile.MapEntry отвечает за то, как будет называться какой - либо тайл на карте, в нашем случае это CoolStationTile, который мы только что создали. Mods.CoolMod.Items.CoolStation.DisplayName - это название предмета тайла, который хранится в папке Items, который хранится в папке CoolMod, который хранится в папке Mods.

Для примера также давайте добавим наш стол как обязательный тайл для создания меча из 2 части.

Разработка модов для Terraria 1.4.4. Часть 5 - Создание тайлов и станций крафта

На этом всё! Давайте же зайдём в игру и проверим, как это работает

Всё работает! Поздравляю, теперь вы умеете создавать свои станции крафта, которые стоят и на которых можно крафтить вещи!

Спасибо за то, что прочитали статью! Если что-то не работает или у вас какие-то вопросы, заходите в мой дискорд канал, также, у вас есть возможность поддержать меня, поставив лайк и перейдя на бусти!

Удачи и не забывайте играть в игры!

55
11
3 комментария

ты забросил?

Ответить

нет, просто желание делать туториалы раз в полгода накатывает xd

1
Ответить