Фэндом


ВведениеПравить

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

Отметим, что обычным предметам можно добавить только один положительный бафф на время с помощью .ini файлов, таким образом, вы уже можете понять, почему кодирование с C # является более мощным, так как существует меньше ограничений.

ТребованияПравить

Это руководство предполагает, что вы выполнили следующие туториалы и знакомы с компиляцией модов:

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

Создание .ini файла для зельяПравить

Как вы должны быть знакомы с созданием предмета, эти шаги будут весьма краткими. Но, давайте сделаем пользовательские зелье, которое применяет несколько баффов!

Для начала:

  • Создайте папку для вашего мода с названием "Custom Weapons". Если у вас уже есть папка для вашего мода, то вы можете использовать её.
  • Создайте папку с названием "Item" (если она у вас есть, то не надо)
  • Так как это зелье, давайте скопируем .ini файл Лечебного зелья в эту папку, и назовите его "Elixir of Power.ini"
  • Найти подходящую картинку и назовите её «Elixir of Power.png". Вы можете использовать изображение лечебного зелья, или даже создать своё собственное! См. Ресурсы для некоторых программ, которые вы можете использовать.
  • Дайте ему следующие атрибуты:
[Stats]
width=14
height=24
type=-1
useStyle=2
useAnimation=17
useTime=17
maxStack=30
consumable=True
useTurn=True
scale=1
useSound=3
rare=1
value=2000
[Recipe]
Amount=1
needWater=False
Items=2 Lesser Healing Potion,1 Glowing Mushroom
Tiles=Bottle

Большая разница между этим файлом и лечебным зельем, что нет "Potion=True" атрибута или "healLife=100" атрибута. Мы хотим, чтобы наш предмет давал баффы, но не восстанавливал жизни, поэтому мы убрали их. Если вы хотите, вы всегда можете добавить их обратно. Кроме того, "Potion=True", немного вводит в заблуждение. Это не индикатор того, что это зелье или нет, но оно имеет 60-секундный кулдаун, совместно с другими предметами. Вот почему зельем маны не имеет кулдауна, но есть у грибов.

Предоставление зелью некоторых эффектовПравить

Как уже упоминалось во введении, у .ini файла есть ограничения: вы можете указать только один положительный бафф. Что делать, если мы хотим добавить три? Ну, мы должны создать .cs файл, чтобы мы могли приказать игре конкретно делать то, что мы хотим.

  • Создайте файл с именем "Elixir of Power.cs"
  • Он должен быть вместе с двумя другими файлами, Elixir of Power.ini и Elixir of Power.png
  • Поместите следующий код в .cs файл:
​public static void UseItem(Player player, int playerID) {
         player.AddBuff(3, 600, false);
         player.AddBuff(5, 600, false);
         player.AddBuff(17, 600, false);

}
  • Если это ваше первое программирование, ваши глаза, возможно полностью остекленели, так что вот объяснение того, что здесь происходит.
    • Самая первая строка называется функцией определения. Функция называется UseItem. Раздел, который называется "public stats" означает, что любой другой код может вызывать (выполнять) эти функции без каких-либо ограничений, и "Void" означает, что функция не возвращает значения (так она принимает вход, но не дает выхода).
    • Часть в круглых скобках с содержимым "(Player player, int playerID)" является входной, которая дает функции, или заставляет работать. Мы предполагаем действительного игрок и ID этого игрока.
      • Примечание: Если вы используете любую из функций в классах tConfig'а, то вы просто скопировать определение, описанное здесь, как есть, и игра будет знать, что делать. Когда вы продвинитесь и научитесь писать свои собственные функции, вы будете нести ответственность за правильное прохождение информации и из нее.
    • Наконец, мясо функции: Все, что находится в фигурных скобках { } это функция. Мы видим три очень похожие команды: player.AddBuff, и кучу вещей в скобках. Это вызовы функций. То, что происходит здесь, связано с объектом-игроком (так называемый игрок), и для этого есть функция "AddBuff", поэтому, когда мы это делаем, это вешает положительный бафф на игроков. Откуда он знает, что положительный эффект надо дать игроку? Из скобок.
    • Первый номер - тип баффа, а второй - продолжительность в кадрах. Зная, что есть 60 кадров в секунду, каждый бафф будет длиться по 10 секунд (равный 60 раз 10).

ТестированиеПравить

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

КАРТИНКА ЗДЕСЬ

Создание мечаПравить

Меч очень похож по своей концепции на зелье: мы должны иметь .ini файл, .png файл и .cs файл.

ВыводыПравить

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

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

Вызов метеора Править

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

public void UseItem(Player player, int playerID) {
    WorldGen.dropMeteor();
}


Спаун кроликов Править

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

public void UseItem(Player player, int playerID) {
    NPC.SpawnOnPlayer(playerID, "Bunny");
}


Эффект меча Starfury Править

Создавайте падающие с неба звезды для использования

public void UseItem(Player player, int playerID) {

	// Установите переменные
	float x = (float)(Main.mouseX + Main.screenPosition.X);
	float y = (float)(Main.mouseY + Main.screenPosition.Y);
	float speedX = (Main.rand.Next(80) - 40) / 10f;
	float speedY = 14.9f;
	int type = 12;
	int damage = (int)(item.damage * player.magicDamage);
	float knockback = 2.0f;
	int owner = playerID;

	
	// Отрегулируйте положение снаряда
	x += Main.rand.Next(200) - 100f;
	y += -500f;
	
	
	// Фактический спаун снаряда	
	int projID = Projectile.NewProjectile(
		x, y, speedX, speedY,
		type, damage, knockback, owner
		);
	
}

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на Фэндоме

Случайная вики