- IP属地
- 广东省
- 2018/08/28
- 60
- 56
- 勋章
- 1
- · 发布于未知
今天我来写教程,因为想不出要什么开场白所以就直接开始了吧
PS:关于Mod教程同样可以参考裙中世界,那里的教程很强很强很强...
PSS:如果文中有错误或是漏洞,请大佬指出
PSSS:看教程之前最好先学会这个教程中的内容
PSSSS:我会在评论中放出教程全代码
===========================================
创建文件
C#:
using System.Collections.Generic;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace BunnyMod//这里是命名空间,记得改成你自己的(问怎么改的,去看裙中世界)
{
public class BunnyModPlayer : ModPlayer
{
//即将要写骚操作的地方
}
}
===========================================
创建人物自带物品
首先要用到的一个重写函数是:
public override void SetupStartInventory(IList<Item> items, bool mediumcoreDeath)
关于这个重写函数还有另一个版本是:
public override void SetupStartInventory(IList<Item> items)
上面那个版本是用于TML版本为0.10.1.5的,下面那个是0.10.1.5之前的
推荐使用上面的,然后TML尽量保持为最新版本(目前最新版本是0.10.1.5)
这个重写函数的作用是:修改玩家创建时物品栏内的物品
如果第二个参数mediumcoreDeath为True,则:为在中核(死亡掉落所有物品)死亡的角色添加物品(就是死了之后重生物品栏自带的物品)
那么解释完之后就开始实际运用,我会用注释的方法说明每一条的作用
C#:
public override void SetupStartInventory(IList<Item> items, bool mediumcoreDeath)//重写函数
{
Item item = new Item();//添加一个新物品
item.SetDefaults(ItemID.BunnyStatue);//添加的物品为原版的兔子雕像,ItemID.BunnyStatue表示ID为445的物品(就是兔子雕像嘛)
item.stack = 233;//物品的堆叠数,如果没有这一条它会默认为1
items.Add(item);//添加到玩家物品栏库存里
if (mediumcoreDeath)//如果玩家在中核中复活了,就运行大括号的内容
{
item = new Item();//添加一个新物品
item.SetDefaults(mod.ItemType("名叫Sawynture的兔子"));//添加的物品选定为Mod中类名为"名叫Sawynture的兔子"的物品
item.stack = 31415;//堆叠数
items.Add(item);//给玩家物品栏库存添加
}
}
进入游戏提示语
用到的重写函数是
public override void OnEnterWorld(Player player)
巧了,这个没有另一个版本:razz:
这个重写函数在玩家进入世界时运行
参数"player"选定的是进入世界的玩家,不过提示语并不需要用到player这个参数
但是你可以用player做一些有:razz:趣的
(代码杀的代码是player.KillMe(PlayerDeathReason.ByCustomReason(player.name + " 被神秘的东方力量杀死了"), 1000.0, 0, false);)
接下来我还是用注释讲解吧
C#:
public override void OnEnterWorld(Player player)//当玩家进入世界,运行以下代码
{
Main.NewText("欢迎来到作者的Terraria游戏世界", Color.Gold);//提示语,显示为金色
}
当你只填了提示语这个参数,其他都没填,默认是这种:
否则就是:
我推荐使用void Main.NewText(string newText, Microsoft.Xna.Framework.Color color, [bool force = false]这种
原因:这个简单,而且我只会用这种和默认的
如果你想自定义颜色,就选择默认的那种,分别填进去RGB值就OK
如果你不想用默认的,那
示例:
[/COLOR]Main.NewText("欢迎来到作者的Terraria游戏世界", new Color(233, 233, 233));//会显示[COLOR=rgb(233, 233, 233)]欢迎来到作者的Terraria游戏世界[/COLOR]
那么"bool force"又是什么参数?
答:其实我也不知道,我通过神秘的反编译魔法也没发现这个有什么特点
唯一的特点就是当这个值为true时,不会有提示语显示出来,我猜测这个也许是拿来充当if的
比如我想让玩家拿着兔子物品时才发送提示语,我可以这么写:
C#:
Main.NewText("你手里拿着Sawynture的亲戚干啥?", Color.Gold, player.inventory[player.selectedItem].type != NPCID.Bunny);
===========================================
应该就清晰明了了吧~
如果还有什么不会的可以在评论里问我
最好问的是本文章提及的内容
最后编辑: