(TMOD) Terraria Mod:快速入门

本文将教授您有关于tmod的制作,在开始前,本帖作者申明:
1)tmod仅适用于正版玩家的客户端,盗版玩家请绕道
2)本制作向导需要您有部分C#(C/C++也可以)语言基础
3)由于是技术贴,请各位不要插楼,插楼影响排版者将删除。
向导镇楼


楼主 1vbbvg  发布于 2017-08-07 08:43:00 +0800 CST  
目录:
+楼层 内容
+3 准备
+4 资源及参考资料
+5 你的第一个mod
+6 添加模块:Item实例
+7 专家:从反编译Terraria开始
+8 专家:绘制Dust、Project
+9 前进需要你
+10 参数表
+11 致谢

楼主 1vbbvg  发布于 2017-08-07 08:47:00 +0800 CST  
4.资源及参考资料
本楼内容都在三楼.....
不要问我为什么创建这一楼,


ps:可以在本楼层快速提问楼主及反馈

楼主 1vbbvg  发布于 2017-08-07 09:08:00 +0800 CST  
3.你的第一个mod(上)
好的,看起来你对Mod开发了解的不是一点点了,那么我们现在就来开始一个新的mod以满足你的好奇心
首先,我们应该找到tmodloader的mod开发文件夹(当然,前提是你安装了tmodloader),该文件夹位于
%username%\My Document\Documents\My Games\Terraria\ModLoader\Mod Sources
,那么,这个文件夹就是你的开发第一步,现在在文件夹下新建一个文件夹,命名为你想要的mod的名字

以Example为例
1)创建新文件
(文件夹)Items mod添加的物品
Example.cs mod的入口,我们可以不用管它,源文件
description.txt mod的描述,文件是写给mod用户的
build.txt mod的信息,文件是写给编译器的
2)编辑文件
在Exapmle.cs下写入
using System;
using Terraria.Graphics.Shaders;
using Terraria.ID;
using Terraria.Localization;
using Terraria.ModLoader;
using Microsoft.Xna.Framework;
using System.Collections.Generic;
using System.IO;
using Microsoft.Xna.Framework.Graphics;
using ReLogic.Graphics;
using Terraria.UI;
using Terraria.DataStructures;
using Terraria.GameContent.UI;
namespace Example//注意,这里要改为你mod的名字,下面的Example一样
{
public class Example : Mod
{
public Example()
{
}
}
}
在description.txt下写入你对于Mod的描述,随便写,不用在乎格式
在build.txt写入
author =
version =
displayName = Example
homepage =
hideCode = false
hideResources = false
includeSource = true
buildIgnore = *.csproj, *.user, obj\*, bin\*, .vs\*
includePDB = true
注意:build.txt要填写,
author = 你的名字(作者)
version = 发布的版本(x.x.x.x)
displayName = Example(mod名)
homepage = (你的steam主页或者mod主页)


到这里,mod的准备已完成,也就是可以通过加载,但是并没有什么卵用,我们要添加一个物品

楼主 1vbbvg  发布于 2017-08-07 09:28:00 +0800 CST  
补:第三楼
(WTF:度娘你又删我贴)
1.准备
---------------------------
众所周知,开发工作不是一件好玩的事(?哪里来的滑稽?),在开始前,你可以使用Notepad++为开始的IDE,但是当你的开发工作进入深度,我们建议你使用Visual Studio IDE,正确的IDE 可以有效的加快你的开发进度以及提高你的开发效率

(防吞)


总结:开发需要
1)你(废话)
2)IDE
3)C#快速入门能力
4)tmodloader
5)一台电脑(又是废话)

楼主 1vbbvg  发布于 2017-08-07 09:33:00 +0800 CST  
3.你的第一个mod(下)
3)创建新物品
在刚才添加的文件夹下新建文件夹名为Items
在里面添加一个物品
以ExampleSword为例,把下文凡是
1.为Example替换为你的mod名
2.为ExampleSword替换为你的物品名
添加两个文件(Items/)
ExampleSword.cs 物品的源文件
ExampleSword.png 物品的贴图
4)写文件
在ExampleSword.cs下写入
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace Example.Items
{
public class ExampleSword : ModItem
{
public override void SetStaticDefaults()
{
Tooltip.SetDefault("This is a modded sword."); //(英文),你的武器的描述,将会显示为Tooltip
}
public override void SetDefaults()
{
item.damage = 50; //武器伤害
item.melee = true; //近战武器?是
item.width = 40; //武器贴图宽度(这里写图片宽)
item.height = 40; //武器贴图高度(这里写图片高)
item.useTime = 20; //使用武器的时间,就是“无比的快”、“非常快”这类的设置. 注意在泰拉中60为1s
item.useAnimation = 20; //武器挥舞动画的时间间隔, 不设置为与usetime会出现奇奇怪怪的效果
item.useStyle = 1; //乌切使用方法, 1:挥动, 2:喝(?), 3 像短剑, 4 像使用生命水晶举过头顶, 5 法杖或者枪
item.knockBack = 6; //击退,最大20
item.value = Item.sellPrice(0, 0, 50, 00); //武器出售价值
item.value = Item.buyPrice(0, 1, 50, 0); //武器购买价值
item.rare = 2; //稀有度, 从-1(垃圾)到13
item.UseSound = SoundID.Item1; //使用武器时发出的声音
item.autoReuse = true; //是否支持自动使用,就是按住左键一直使用
}
public override void AddRecipes()//添加合成配方
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(ItemID.LifeCrystal,1);//添加:一个生命水晶
recipe.AddIngredient(ItemID.FallenStar,1);//添加:一个落星
recipe.SetResult(this, 1);//生成一个
recipe.AddRecipe();
}
public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit)
{
target.AddBuff(BuffID.OnFire, 60); //当碰到怪物时给怪物添加着火debuff
}
}
}
然后ExampleSword.png我用的是



保存,恭喜你,一把剑添加完成

楼主 1vbbvg  发布于 2017-08-07 09:52:00 +0800 CST  
4.添加模块:Item实例
刚刚你已经看到了一个添加item的实例,那么我们现在就来讲讲item的详细添加方法
(由于mod包含的模块众多,所以我不全部都讲,举一反三)
首先刚才的代码是


那么先看开头前三行的using指令
using Microsoft.Xna.Framework;//Xna支持
using Terraria;//Terraria支持
using Terraria.ID;//Terraria的ID,这里在ItemID.LifeCrystal用到了
using Terraria.ModLoader;//ModLoader支持
对,如果对C#有所了解的话,你也可以添加其他譬如System
namespace Example.Items代表该物品隶属于Example\Items,在tmod中,namespace限制了源文件以及贴图的位置,其中斜杠(\)用.代替,申明命名空间
public class ExampleSword : ModItem 代表这个物品ExampleSword是ModItem
public override void SetStaticDefaults() 设置了物品的基本静态属性,比如名称、贴图、提示标签等
public override void SetDefaults()见下
public override void AddRecipes()提供合成
那么public override void SetDefaults()中包含了一堆有关于item的属性问题,包括

这里还没有列举完,如此之多,我们怎么区别什么是什么呢?
方法一:对照英文自己辨识(楼主也是)
方法二:查看wiki
https://github.com/blushiemagic/tModLoader/wiki/Basic-Item
那么我解释几个项目
public bool expertOnly;//专家限定
public bool expert;//只是专家模式
public bool accessory;//是否是饰品

public int maxStack;//最大堆叠
public int pick;//稿子力量
public int axe;//斧子力量
public int hammer;//锤子力量
public int damage;//伤害
public int healLife;//回复的血量
public int healMana;//回复的魔法
public bool potion;//是否是药剂
public bool consumable;//消耗?

楼主 1vbbvg  发布于 2017-08-07 10:37:00 +0800 CST  
8........学会使用Example
不要问我为什么标题改了,,,,,我,,,我认为Dust还是自己摸索来的快一些

ExampleMod中包含了比本帖更为详细的各种指导,我就不在此细说了
包括Dust(灰尘?就是尘埃)的绘制
包括可摆放的物品、家具的写法
包括盔甲、魔法书、BossAI、NPC.......
当你学会用ExampleMod,你就打开了一扇新的大门(为你打开一扇门

楼主 1vbbvg  发布于 2017-08-07 10:55:00 +0800 CST  
9.前进需要你

好的,到这里本帖也就结束了。

你要知道,开发是一件有趣的事,
挑选好一个确定的研究对象,
锲而不舍,
也许你永远也到达不了终点,
但是一路上准可以发现一些有趣的东西
---克莱因

楼主 1vbbvg  发布于 2017-08-07 10:59:00 +0800 CST  
10.参数表
参数表将在wiki右侧找到(开发wiki)

由于度娘的限制,地址就不发了


本楼答疑

楼主 1vbbvg  发布于 2017-08-07 11:00:00 +0800 CST  
11.致谢
鸣谢 Re-logic-开发Terraria
鸣谢 tmodloader团队

楼主 1vbbvg  发布于 2017-08-07 11:02:00 +0800 CST  
14.补充
(没有13,我可不希望我的帖子这么快就沉
使用tmodloaer编译
1>(补充 你的第一个mod)在主界面找到Mod Source

2


楼主 1vbbvg  发布于 2017-08-07 11:08:00 +0800 CST  
完结撒花!

楼主 1vbbvg  发布于 2017-08-07 11:08:00 +0800 CST  


我已经不想说什么了

楼主 1vbbvg  发布于 2017-08-07 11:30:00 +0800 CST  
自顶

楼主 1vbbvg  发布于 2017-08-07 21:05:00 +0800 CST  

楼主:1vbbvg

字数:4893

发表时间:2017-08-07 16:43:00 +0800 CST

更新时间:2019-08-15 15:25:41 +0800 CST

评论数:100条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看