Tconfig мод Surfpup'а вики
Advertisement

Существует пример NPC, включенный в примере-моде. Этот учебник был обновлен, чтобы использовать этот пример.Спрайт для использования сделал Omnir.

Hero_of_Lumelia.png

Это руководство покажет вам, как создать город NPC\

Пользовательский городской NPC может иметь пользовательский диалог, магазин предметов, требования для спауна и имя.

Создание вашей мод папки[]

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

Создание .ini файла[]

Меняем имя NPC - в данном примере, это называется "Hero of Lumelia» - как и все остальное, имя ini-файла должно быть имя NPC, так что "Hero of Lumelia.ini"

Содержание нашего файла:

[Stats]
frameCount=16
animationType=28
aiStyle=7
height=40
width=20
damage=0
defense=22
lifeMax=450
scale=1
soundHit=1
soundKilled=1
type=-1
knockBackResist=.3
townNPC=True
friendly=False

Некоторые замечания:

  • frameCount - количество кадров, которые находятся в вашем .png спрайт изображения.
  • aiStyle - как NPC будет вести себя
  • animationType определяет внутренний код, используемый для обработки анимации. Очень часто вы хотите сделать спрайт, который базируется на уже существующем, и использовать тот же код анимации, который уже встроен в игру, а не через процесс создания нового кода анимации.
  • townNPC должен быть установлен True для игры, чтобы можно было с ним общаться, как с обычным NPC
  • friendly определяет, будет ли NPC бить игрока. В этом случае, я установил friendly False, и повреждения нулю, так что это не больно игроку, и я могу убить NPC легко - для целей тестирования, конечно. Это, как кролики работают, я верю.
  • type должен быть установлен в 1, если вы хотите использовать собственное изображение. Он влияет на многие другие вещи, которые обрабатываются в коде
ПРИМЕЧАНИЕ :::

При изменении названия все файлы должны так же названы.

Пример:

Villager1.ini

Villager1.png

Villager1.cs

КОНЕЦ ПРИМЕЧАНИЯ :::

Обязательные изображения[]

Вы должны иметь спрайт для NPC (так называемый "Hero of Lumelia.png"), а также спрайт головы NPC (под названием "Hero of Lumelia Head.png"). Глава изображение, необходимое для жилья интерфейс, и выглядит следующим образом:

Hero_of_Lumelia_Head.png

  • Примечание - вы на самом деле не имеете к кадру спрайта никакого дела, просто оставьте его как знамя вы видите выше.

Создание методов для чат, магазин товаров, и более[]

Этот код идет в файл с именем: Hero of Lumelia.cs

TownSpawn()[]

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

public static bool TownSpawn() {
	if(Main.hardMode)
		return true;
		
	return false;
}

Этот NPC спаунится, если мир находится в хардмоде. Если метод return true, NPC будет появляться.

SetName()[]

Затем, мы добавим SetName () метод. Настоятельно рекомендуется определить это, если вы хотите, чтобы ваш NPC назывался как "Hero of Lumelia the Hero of Lumelia"

public static string SetName() {
	if(Main.rand.Next(1)==0)
		return "Arthur";
	return "Lancelot";
}

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

Chat()[]

Теперь мы будем смотреть на чат метод.

public static string Chat() {
	if(Main.rand.Next(1)==0)
		return "I eat Corruptors for breakfast.";
	return "The pixies around here have a serious temper.";
}

Этот метод просто возвращает строку диалоговый текст, отображаемый, когда игрок нажимает на NPC. Вы можете проверить различные условия, чтобы NPC говорил вещи в определенное время дня или высмеивать, как только игрок имеет 6 сердца ... Есть много вещей, которые вы могли бы сделать. Простейший пример включает в себя только случайный выбор между несколькими строками текста.

SetupShop()[]

Наконец, это код нашего примера для установки магазина предметов:

public static void SetupShop(Chest chest) {
	int index=0;
	chest.item[index].SetDefaults("Flame Beam");
	index++;
	chest.item[index].SetDefaults("Muramasa");
	index++;
	chest.item[index].SetDefaults("Red Hero's Shirt");
	index++;
	chest.item[index].SetDefaults("Red Hero's Pants");
	index++;
	chest.item[index].SetDefaults("Red Hero's Hat");
	index++;
}

Она занимает сундук в качестве параметра, и все, что вам нужно сделать, это добавить элементы к сундуку .SetDefaults () метод устанавливает пункт, что вы хотите его видеть. Вы можете также изменять цены на эти предметы, хотя это не будет сделано в этом примере.

Заключение[]

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

Advertisement