Как создать npc через программу

РЕДАКТИРУЕТСЯ!

Вы новичок? Вы ничего не понимаете в создании модов? Тогда это обучение для вас!

Вы узнаете, как:

  • Устанавливать tAPI и необходимые компоненты;
  • Создавать и устанавливать моды;
  • Создавать мечи, инструменты и материалы;
  • В процессе: NPC, монстры, объекты и снаряды;
  • Глобальные параметры игры;

Установка tAPI

Думаете, что делать моды просто?

Как-бы не так! Вам потребуются:

Вот и всё, что. Теперь осталось установить и можно приступать к модам.

Комментарии к установке:

  1. NET Framework - устанавливать необязательно, так как он есть в установщике Visual C# 2010 Express;
  2. Terraria - само собой разумеется - работает и с лицензионной, и с пиратской версией;
  3. Game Launcher - позволяет вам выбирать, запустить tAPI (в нём нет ваших сохранений) или Terraria;
  4. tAPI - с ним мы и будем создавать/устанавливать моды;

Отлично.

Теперь, когда всё установилось и работает:

  • Всё будет запускаться через Game Launcher;
  • Появятся ярлыки tAPI - для клиента / для сервера / для загрузки.

Наконец можно приступать к модам!

Где и что

Итак, вы можете раздобыть ещё кое-что, перейдя на канал tAPI, написав в чате:

  •  ?tapi-dev - скачать последнюю версию;
  •  ?examplemod - скачать Template Mod (образец мода);
  •  ?images - спрайты игры в PNG;

Это поможет вам в создании мода.

Изменения R10

(Хотел разобрать этот пункт, но решил не трогать)

Примеры из Template Mod:

MWorld.cs
using System; using System.Collections.Generic; using System.Text; using TAPI; using Terraria; namespace TemplateMod { public class MWorld : ModWorld { public MWorld(ModBase modbase) : base(modbase) { } public override void Initialize() { } //Called как создать npc через программу the world is initialized.

public override void PostUpdate() { } //Called after the world Update hook. public override bool? CheckChristmas() { return null; } //If this returns true, it acts like it is christmas. If it returns null, it uses normal code.

public override bool? CheckHalloween() { return null; } //If this returns true, it acts like it is halloween. If it returns null, it как создать npc через программу normal code. public override void WorldGenPostInit() { } //Called just before the world generates. public override void WorldGenModifyTaskList(List<WorldGenTask> list) { } //Called to modify the world gen task list. public override void WorldGenModifyHardmodeTaskList(List<WorldGenTask> list) { } //Called to modify the hardmode world gen task list.

} }

MPlayer.cs
using System; using System.Diagnostics; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using TAPI; using Terraria; namespace TemplateMod { public class MPlayer : TAPI.ModPlayer { public MPlayer(ModBase modBase, Player player) : base(modBase, player) { } public override void PostUpdate() как создать npc через программу { player.AddBuff(Defs.buffType["TemplateMod:ExampleBuff"], 1200); } public override void OnInventoryReset(bool mediumcoreRespawn) //Called when the inventory is reset.

(ie when you respawn. Как создать npc через программу ONLY CALLED ONCE IF PLAYER IS SOFTCORE, ON CREATION) { if (!mediumcoreRespawn) { как создать npc через программу = 200; player.statManaMax = 200; как создать npc через программу } int slot = 3; player.inventory[slot].SetDefaults("Picksaw"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Pwnhammer"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Ankh Shield"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Magic Cuffs"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Magnet Sphere"); player.inventory[slot++].Prefix(-1); как создать npc через программу player.inventory[slot].SetDefaults("Vampire Knives"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("S.D.M.G."); как создать npc через программу player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Chlorophyte Bullet"); player.inventory[slot++].stack = 999; player.inventory[slot].SetDefaults("Chlorophyte Bullet"); player.inventory[slot++].stack = 999; player.inventory[slot].SetDefaults("Terra Blade"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Fairy Wings"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Nimbus Rod"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Bundle of Balloons"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Rainbow Gun"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Rod of Discord"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Golden Shower"); player.inventory[slot++].Prefix(-1); player.inventory[slot].SetDefaults("Sparkfrost Boots"); как создать npc через программу player.inventory[slot++].Prefix(-1); } } }

MNPC.cs
using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using TAPI; using Terraria; namespace TemplateMod { [GlobalMod] public class MNPC : ModNPC //GlobalMod is used for global NPCs, Items, and Projectiles { public MNPC(ModBase modBase, NPC n) : base(modBase, n){ } //NOTE: this npc instance как создать npc через программу null because this is a global ModNPC!

public override List<int> EditSpawnPool(int x, int y, List<int> pool, Player player) { return pool; } //edit the npc spawning pool (remove npc entries, add them, etc.) public override string PostSetChat(string chat) //called after chat has been set.

{ if(npc.type == 22 && Main.rand.Next(4) == 0 как создать npc через программу NPC.AnyNPCs("TemplateMod:ExampleTownNPC")) // If this is the guide's chat and the example town NPC is spawned { string zombieName = Main.chrName[Defs.npcs["TemplateMod:ExampleTownNPC"].type]; return "Keep that.THING away from me! That thing called \"" + zombieName + "\". It keeps trying to EAT me!"; } return null; } } }

MBase.cs
using System; using System.IO; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using TAPI; using Terraria; namespace TemplateMod { public class MBase : TAPI.ModBase //MBase can be any name { public override void OnLoad(){ } //Called when the mod is first loaded.

public override void OnUnload(){ } //Called when the mod is unloaded. public override void OnAllModsLoaded() //Called when all mods are loaded. { //an example biome Biome B = new Biome("ExampleBiome", new List<int> { TileDef.type["TemplateMod:ExampleTile"] }, new List<int> { }, 50); B.SetBiomeMusic(Biome.MusicPriority.High, "vanilla:Music_22"); //ocean music B.AddToGame(); } public override void PreGameDraw(SpriteBatch sb) { } //Called before all game drawing.

public override void PostGameDraw(SpriteBatch sb) { } //Called after all game drawing is finished. public override void ChooseTrack(ref string current) { } //Called when the music track updates. public override void OptionChanged(Option option) { } // Called when leaving the options page on all options for как создать npc через программу mod with notify (ie recently changed) public override List<string> OptionList(Option option) // Called как создать npc через программу Dynamic options for this mod to fill possibleValues.

{ if (option.name == "codedValue") { List<string> list = new List<string>(); list.AddRange(new string[] { "Derp", "> 9000", "much choice", "I don't even", "NOPE" }); return list; } return null; } public override object OnModCall(TAPI.ModBase mod, params object[] args) { return base.OnModCall(mod, args); } //Called when another mod calls this on your mod.

(used for inter-mod communicating) public override void NetReceive(int msgType, BinBuffer bb) { } //Used to handle networking. } }

ModInfo.json
{ "internalName" : "TemplateMod", "displayName": "Template Mod", "author": "Grox The Great", "info": как создать npc через программу example mod utilizing many aspects of TAPI." }


Возможно вам это поможет.

Возможности в JavaScript

Итак, в JavaScript, то есть в файлах с расширением .json, на самом деле можно сделать очень многое.

Разберём, что же именно:

Значения параметров

Для начала усвоим значения параметров:

"string" - имя/название/путь для того или как создать npc через программу файла; "bool" - значение true/false - "да" или "нет"; "int" - целое число - зависит от параметра; "float" - число с десятыми долями - любое число; как создать npc через программу - количество значений - "x" число значений; "[?]" - как создать npc через программу количество значений - любое;

Этап 1: Простой элемент

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

Это почти бесполезно, но таких вещей в каждом моде ну просто МОРЕ. Итак.

Вы, наверное, знаете, где располагаются все ваши сохранения и миры. Если не знаете, то пройдите по адресу "C:\Пользователи\Имя пользователя\Документы\My Games\Terraria" (примерный вариант с лицензионной игрой). Тут находится папка с сохранениями и прочим.
Я не уверен, но папка "tAPI" должна появиться. Вы должны в неё зайти. Если не появилась - откройте tAPI.exe (расположен в папке с игрой, или на вашем рабочем столе).


В этой папке есть папка "Mods", в ней есть папка "Sources". Создайте папку с именем вашего мода в этой папке, а в папке с модом создайте папку "Items". Папкоцепция.

В папке Items хранится абсолютно все, что как создать npc через программу положить в инвентарь!

Создаём там файл ExampleItem.json (можно другое имя) и кладем туда текстурку этого предмета с именем, которое затем укажем в поле "texture". А файлик открываем в блокноте и прописываем там что-то похожее:

{ "code": "ExampleItem", "displayName": "Example Item", "texture": "Item/ExampleItem", "size": [20,20], "maxStack": 99, "value": [0,0,10,0], "rare": 1, "tooltip": "'A basic example item.'", "recipes": [ { "items": { "Vanilla:Dirt Block": 1 }, "tiles": [ "Work Bench" ], "creates": 1 } ] }

Давайте разберемся что есть что.

  • "code" - название меча в коде (писать необязательно).
  • "displayName" - какое имя у меча будет в игре (интересный баг: если это поле не указать, то в игре при попытке использования предмета пропадает панель с вещами).
  • "texture" - текстура предмета (его изображение); необходимо указать полный путь к файлу текстуры.

  • "size" - размер предмета в игре; первое - ширина, второе - высота; блок в игре имеет размер 16x16 пикселей.
  • "scale" - насколько растянуть предмет при использовании (в конкретном примере не указан).

  • "value" - стоимость предмета (цена, за которую вы можете продать предмет торговцу); первая цифра - платиновые монеты, вторая - золотые, третья - серебряные, четвёртая - медные.
  • "rare" - редкость (влияет только на цвет предмета); 0 - белый, 1 - синий, 2 - зелёный и т.д.
  • "toolTip" - описание предмета.
  • "recipes" - рецепт крафта предмета.

    • "items" - какие ингредиенты нужны для крафта; обязательно в начале этого параметра указывайте название вашего мода (или Vanilla, если используете вещи из игры), затем двоеточие имя предмета.
    • "tiles" - какая(-ие) декорация(-ии) нужна(-ы) для создания предмета.

    • "creates" - сколько единиц создаётся.

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

Этап 2: Меч!

Надеюсь, вы подготовили спрайты к вашим вещам.
Идём в папку Items.

Например, я назову свой меч Electrosword, кстати, все изображения должны быть в формате PNG. Создаём файл Electrosword.json, и кладём туда спрайт нашего меча (у кого он нет, он справа). Код меча выглядит так: { "code": "Electrosword", "displayName": "Electrosword", "texture": "Item/Electrosword", как создать npc через программу "useStyle": 1, "useSound": 15, как создать npc через программу "damage": 19, "maxStack": 1, "autoReuse": true, "melee": true, "size": [28,28], "useTime": как создать npc через программу, "useAnimation": 20, "value": [0,0,50,0], "knockback": 5.0, "rare": 1, "toolTip": "'Turn your enemy off!'", "recipes": [ как создать npc через программу { "items": { "Vanilla:Dirt Block": 1 }, "tiles": [ "Work Bench" ], "creates": 1 } ] }


Давайте разберёмся, что есть.

  • "useStyle" - как игрок будет использовать. При 1-ом варианте он будет как создать npc через программу махать, как мечом.

  • "useSound" - какой звук использовать. На данный момент используем 15-ый звук - звук фазового меча (wob-wob-wob);
  • "damage" - собственно, урон.
  • "maxStack" - какой предел у стака. Конечно-же, мы не будем кидаться нашим мечом, так что 1.

  • "autoReuse" - автоатака. Можно ли просто зажать ЛКМ (левую кнопку мыши) для атаки? true -.
  • "melee" - использовать ли префиксы для оружия ближнего боя?

    true -.

  • "useTime" - время использования.
  • "useAnimation" - время анимации, в основном равен времени использования.
  • "knockback" - отбрасывание.

Это основные характеристики оружия.

{ "code": "Electrosword", "displayName": "Electrosword", "texture": "Item/Electrosword", "useStyle": 1, "useSound": 15, "damage": 19, "magic": true, как создать npc через программу "mana": 5, "maxStack": 1, "autoReuse": true, "melee": true, как создать npc через программу "size": [28,28], "useTime": 20, "useAnimation": 20, "value": [0,0,50,0], "knockback": 5.0, "rare": 1, "toolTip": "'Turn your enemy off!'", "recipes": [ { "items": { "Vanilla:Dirt Block": 1 }, "tiles": [ "Work Bench" ], "creates": 1 } ] }

Этап 3: Инструмент

Ну, все как обычно, но мой вам совет: распределить всё по папкам Ranged, Magic, Melee, Materials, Instruments, Armor, Accessories, Tiles, Tools и Custom для удобства, и все пути к текстуркам указывать по пути в проводнике.

Но мои дальнейшие как создать npc через программу обойдутся вообще без поля "texture", ибо в основном имя картинки совпадает с именем файла.

Итак, как создать инструмент? Все очень просто, к коду меча добавляем поля (или одно из них):

  • "hammer" - молот, через двоеточие - мощность;
  • "axe" - топор, аналогично мощность через двоеточие;
  • "pick" - кирка, тоже самое;
  • "useTurn" - true/false - можно ли использовать, отвернувшись от блока.

Хотите универсальный инструмент, например, молототопор? Используете одновременно два параметра, добавляя одновременно "hammer" и "axe".

{ "displayName": "Example Tool", "size": [20,20], как создать npc через программу 1, "value": [0,0,10,0], "rare": 7, "tooltip": "'An example tool.'", "useStyle": 1, "useAnimation": 10, "useTime": 10, "damage": 20, "knockBack": 6, "useSound": 1, "autoReuse": true, "useTurn": true, "melee": true, "pick": 220, "axe": 220, "recipes": [{ "items": { "Vanilla:Dirt Block": 1 }, "tiles": [ "Work Bench" ], "creates": 1 }] }

Вы освоили строение материала, меча инструмента, а теперь перейдем к дальнобойным орудиям.

Этап 4: Дальнобойное оружие

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

  • "noMelee" - ненужно ли предмету наносить урон врагу при его касании? true - ненужно, по умолчанию false.
  • "ranged" - использует ли предмет модификации дальнего боя?

    true -.

  • "shoot" - что предмет стреляет. Вот краткий список снарядов:
    • 1 - стрелы;
    • 10 - пули;
    • 42 - песок;
    • 949 - снежки.
Также можно создавать свои снаряды.
  • "useAmmo" - что предмет использует для своего использования.

    В основном ставится всё то же самое, что и в shoot. Исключение составляют пули - вместо 10 используется число 14.

  • "shootSpeed" - скорость снаряда.

Также довольно редко используется:

  • "reuseDelay" - время до следующего выстрела; используется только в тех случаях, если оружие стреляет за 1 раз более, чем 1 пулей.

    Пример: заводная штурмовая винтовка (Clockwork Assault Rifle).

Не забудьте также:

  • У "useStyle" вместо 1 поставить 5, иначе персонаж будет размахивать вашей пушкой.
  • Убрать строчку "melee": true.

Примеры:

Пример оружия типа заводской штурмовой винтовки, стреляющего снежками
{ "code": "Headwasher", "displayName": "Headwasher", "useStyle": 5, "shoot": 10, "useAmmo": 949, "useSound": 31, "damage": 19, "shootSpeed": 8.5, "maxStack": 1, "autoReuse": true, "noMelee": true, "ranged": true, "size": [52,26], "useTime": 3, "useAnimation": 12, "reuseDelay": 14, "knockback": 1.2, "rare": 4, "toolTip": "'Just to brainwash'", "toolTip2": "Four round burst", "recipes": [{ "items": {"Vanilla:Dirt Block": 1}, "tiles": ["Work Bench"], "creates": 1 }] }
Пример обычного пистолета
{ "code": "Pistol", "displayName": "Pistol", "useStyle": 5, "useSound": 31, "damage": 9, "maxStack": 1, "autoReuse": true, "size": [24,24], "useTime": 16, "noMelee": true, "shoot": 10, "useAmmo": 14, "shootSpeed": 8.5, "useAnimation": 14, "value": [0,0,5,0], как создать npc через программу "knockback": 1.5, "rare": 0, "recipes": [{ "items": { "Vanilla:Iron Bar": 12, "Vanilla:Wood": 6 }, "tiles": [ "Anvil" ], "creates": 1 }] }

"Ну когда же мы начнём создавать монстров?" - наверное, спрашиваете.

как создать npc через программу

В следующей этапе вы как раз его и создадим.

Этап 5: Мобы

Создаём в своём моде новую папку - Mobs. Туда мы будем класть всех НИПов (Не Игровых Персонажей) - монстров, всяких гидов, торговцев, стариков. Эта часть будет как минимум в два как создать npc через программу сложнее.

Вам нужно:

  • Нарисовать моба;
  • Нарисовать его части тела;
  • Написать характеристики (.json);
  • Написать код (.cs).

Начнём с первого. Хотите сделать слизня?

Вам нужно два кадра. Хотите сделать что-нибудь наподобие зомби, скелета? Три кадра. Давайте разберём, как делать эти кадры.
Допустим, вы уже нарисовали монстра, наподобие зомби. Один кадр. Вам нужно нарисовать три кадра. Что нужно сделать?

  1. Если вы пользуетесь Paint, скачайте что-нибудь другое.

  2. Если как создать npc через программу пользуетесь Paint.NET или GIMP, то:
  1. Узнайте размер вашего изображения монстра (в Paint.NET он есть в правом нижнем углу).

    Допустим, он 36х28;

  2. Умножьте высоту (второе число) в 3 (у слизней 2 кадра, значит, в 2) раза. У меня 28*3=84;
  3. В Paint.NET нужно перейти во вкладку "Изображение", а затем как создать npc через программу "Размер полотна.". В GIMP нужно тоже перейти во вкладку "Изображение" и выбрать "Размер холста.".
  4. Меняем высоту (28) на ту, что мы получили ранее (84).

    Не забывайте, что в Paint.NET нужно убрать галочку около "Сохранять пропорции", а в GIMP отсоединить цепи.

Вот ваши 3 кадра. Не переходите границы "кадра".
В этих кадрах должно отображаться как создать npc через программу объекта - если слизень, то он должен сжиматься, а если зомби, он должен двигать своими ногами.

Если вы делаете слизня, вы можете пропустить этот шаг.
Теперь делаем части тела (создайте папку Gores):

  1. Вырезаем (выделяем и нажимаем Ctrl+X) из моба одну часть тела;
  2. Создаём новое изображение с размерами этой части (в Paint.NET размер автоматически подстраивается под размер вставляемого как создать npc через программу
  3. Вставляем (Ctrl+V);
  4. При желании рисуем кровь;
  5. Сохраняем под названием моба и его части тела в папке Gores.

Так повторите до тех пор, пока не будет вырезан весь моб.

Теперь второе - характеристики. Естественно, делаем .json с названием своего моба (не забываем, что изображение должно быть того же названия). Появляются новые параметры:

  • "aiStyle" - как враг ведёт. 0 - как связанный механик, 1 - как слизень, 2 - как демонический глаз, 3 - как зомби, 26 - как единорог.

  • "animationType" - тип анимации. В данном случае 1 для слизня, и 3 для зомби.
  • "npcSlots" - из скольких мобов состоит наш монстр. Конечно же, пишем 1.
  • "frameCount" - сколько кадров в одном изображении.

    2 для слизня, 3 для зомби.

  • "lifeMax" - здоровье врага.
  • "defense" - защита врага.
  • "damage" - сколько враг наносит урона.
  • "soundHit" - звук удара врага. Как создать npc через программу в основном 1-ый звук.
  • "soundKilled" - звук как создать npc через программу врага. Для слизней 1, для зомби 2.
  • "knockbackResist" - защита к отталкиванию. 1 для полной защиты от отталкивания, 0 для её отсутствия.

  • "value" - сколько монет с него падает.
  • "drops" - что выпадает с моба.
    • "item" - какая вещь.
    • "stack" - сколько таких вещей выпадает.
    • "chance" - с каким шансом. 1 - выпадет.
Пример маленького зомби
{ "displayName": "Tiny Zombie", "size": [36,28], "value": как создать npc через программу, "npcSlots": 1, "aiStyle": 3, "animationType": 3, "frameCount": 3, "lifeMax": 30, "defense": 1, "damage": 18, как создать npc через программу 1, "soundKilled" : 2, "knockbackResist": 0.1, "drops": [ { "item": "Shackle", "stack": 1, "chance": 0.05 } ] }


И вот самое сложное - код.

Создайте текстовой файл, а затем вместо формата .txt делаем формат .cs. Также пишем вместо "Текстовой документ" название вашего моба. Что там нужно писать? Можете даже не писать. Просто сделайте Ctrl+C Ctrl+V в созданный файл (рекомендую открывать его Notepad++, если его нет, открывайте блокнотом), а затем заменяете то, что в скобках как создать npc через программу удаляете!) на то, что указано в.

Код для слизня
using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using TAPI; using Terraria; namespace (названиеВашегоМодаСлитно).NPCs { public class (названиеВашегоМоба) : ModNPC { public override void HitEffect(int hitDirection, double damage, bool isDead) { if (Main.netMode != 2) { for (int m = 0; m < (isDead ?

20 : 5); m++) { int dustID = Dust.NewDust(npc.position, npc.width, npc.height, 5, npc.velocity.X * 0.2f, npc.velocity.Y * 0.2f, 100, Color.White, isDead && m % 2 == 0 ? 3f : 1f); if (isDead && m % 2 == 0) { Main.dust[dustID].noGravity = true; } } } } как создать npc через программу public override bool CanSpawn(int x, int y, int type, Player spawnedOn) { if (Main.dayTime && !Main.hardMode) return true; return false; } } }

Код для зомби
using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using TAPI; using Terraria; namespace (названиеВашегоМодаСлитно).NPCs { public class (названиеВашегоМоба) : ModNPC { public override void HitEffect(int hitDirection, double damage, bool isDead) { if (Main.netMode != 2) { for (int m = 0; m < (isDead ?

20 : 5); m++) { int dustID = Dust.NewDust(npc.position, npc.width, npc.height, 5, npc.velocity.X * 0.2f, npc.velocity.Y * 0.2f, 100, Color.White, isDead && m % 2 == 0 ?

3f : 1f); if (isDead && m % 2 == 0) { Main.dust[dustID].noGravity = true; } } if (isDead) { Gore.NewGore(npc.position, npc.velocity, GoreDef.gores["(названиеВашегоМодаСлитно):(названиеГоловыВашегоМонстра)"], 1f); Gore.NewGore(npc.position, npc.velocity, GoreDef.gores["(названиеВашегоМодаСлитно):(названиеТелаВашегоМонстра)"], 1f); Gore.NewGore(npc.position, npc.velocity, GoreDef.gores["(названиеВашегоМодаСлитно):(названиеНогиИлиЛапыВашегоМонстра)"], 1f); Gore.NewGore(npc.position, npc.velocity, GoreDef.gores["(названиеВашегоМодаСлитно):(названиеНогиИлиЛапыВашегоМонстра)"], 1f); } } } public override bool CanSpawn(int x, int y, int type, Как создать npc через программу spawnedOn) { if (Main.dayTime && !Main.hardMode) return true; return false; } } }


Ваш моб не будет появляться ночью и в хардмоде.

Хотите что-то изменить?

  • Если вы хотите, чтобы ваш моб появлялся везде и когда угодно, то просто удалите то, что в фигурных скобках функции 'CanSpawn', кроме "return true;".
  • Если вы хотите, чтобы ваш моб появлялся только ночью, поставьте перед "Main.dayTime" восклицательный знак.

  • Если вы хотите, чтобы ваш моб появлялся всегда, уберите "Main.dayTime && ".
  • Если вы хотите, чтобы ваш моб появлялся только в хардмоде, уберите восклицательный знак перед "Main.hardMode".
  • Если вы хотите, чтобы ваш моб появлялся когда угодно, уберите " && !Main.hardMode".

Если вы хорошо разбираетесь в коде, то вот вам некоторые функции, которые помогут вам как создать npc через программу спавном в определённых условиях:

  • Main.rand.Next(1) == 0 - делает шанс спавна меньше в 2 раза.

    Если вы хотите спавн моба реже, то вместо 1 поставьте любое другое число.

  • y > (Main.maxTilesY * 0.2f) - делает спавн возможным только если игрок находится на высоте ниже 0,2 от высоты мира (в пикселях, без системы "на уровне моря"). Если вы хотите, чтобы моб появлялся только выше, вместо ">" ставите "<", или если вы хотите, чтобы моб не появлялся на высоте ниже/выше, то вместо 0.2 ставьте другое число.

  • Main.player[Main.myPlayer].zoneJungle - моб будет появляться только в джунглях. Для другого биома вместо Jungle вставьте любой другой (Holy, Dungeon и т.д.).

Справка

По вопросам можете обращаться:

  • В блог Ph0enix ultimate;
  • В блог Rustam DFX;

(Может быть вам ответят)

Или в комментарии к данной статье

Источник: http://ru.terraria-rus-fanon.wikia.com/wiki/TAPI/Обучение

Copyright © 2018