跳至正文

Mod基本信息

通过前两章的学习,你一定明白了如何在TML里去做一个物品/武器,但是在继续制作更多物品之前,我们要先对TML以及Mod本体有充分的了解。


TML 的基本概念

钩子

什么是钩子,你以后可能会经常在教程中看到钩子这个词,所以最好现在明白它的意思。比如说,之前我们设置物品属性的时用到的SetDefaults函数,就可以被称作钩子。我们讲过,它的作用就是在原版设置物品属性的时候额外的多执行一段SetDefaults里面的代码。所以说,所有的这种类似的重写函数都可以被叫做钩子。

除此之外,还有一些钩子具有更改原版代码执行的顺序的功能。比如我现在就给你们介绍一个,先回到TemplateGun.cs

你们会发现有一个函数我没有讲过

// 控制这把枪使用时候的重写函数
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) {
    return true;
}

注意这个函数跟刚才的函数不太一样,里面是个return true,现在你不妨试试把return true改为return false

然后你就会发现你的枪射不出来了…… 但是仍然在消耗弹药。也就是说,这个函数可以把原版的发射代码屏蔽掉,这就是一个更改执行顺序的钩子。

一般的来说,钩子就是指代可以把自己挂在某个正在执行任务的程序上的方法,这样当这个程序执行到一些你感兴趣的内容的时候,你就可以操作它。

build.txt

现在,我们回到TemplateMod2的源码,如果你突然想换Mod的名字……(别告诉我你想换主名字,那将是一场灾难)

那么你可以去TemplateMod2源码的根目录下,找到build.txt

这个文件相当重要,它包含了Mod的基本信息,打开看应该是这样的

里面有很多属性,大概的格式是这样的

属性1 = 值
属性2 = 值1, 值2, 值3 ...

displayNameauthor这两个属性应该十分熟悉,分别是Mod的显示名字和作者名字。接下来的version就是Mod的版本了,会显示在Mod加载界面。

下面这张图是对于部分属性的介绍,直接把属性和值添加到文件就可以生效

属性名 描述 默认值
displayName Mod在TML里显示的名字(不是文件夹的名字哦,可以是中文)
author 作者的名字
version Mod的版本,会在Mod菜单中显示。注意,这个属性是要求格式的。格式如下
  <数字>.<数字>.<数字>.<数字>,也就是我们最常见到的版本号的格式,这里我取了1.0
dllReferences 如果你的Mod要引用外部的dll,把文件名写在这。文件名不要包含扩展名,你必须将dll文件放在/lib文件夹中才能构建Mod的引用
modReferences 你的mod依赖的Mod的列表。 同样不包含扩展名。(这里是强依赖
weakReferences 弱引用Mod列表,用于联动Mod,但是并不要求这个Mod被加载。但是弱引用内容也需要特殊的技巧去处理。
noCompile 这个Mod的源码需不需要被编译,默认是不用管的。(高级内容,暂时可以无视) FALSE
homepage 这个Mod主页的链接,如果有的话,比如这里是教程官网
hideCode 如果设为true,你的源码以及编译好的dll就不会被TML抽取,如果你不想被别人看到源码就设为true FALSE
hideResources 是否隐藏Mod中包含的资源文件,比如贴图,音乐文件等等,不想被别人看见就设为true FALSE
includeSource 是否把.cs源码文件也放入tmod文件中,这样别人可以看见你写的所有源代码,我这里设置的是允许。不想允许就设为false(make sure to
  set hideCode to false).
FALSE
buildIgnore 将Mod源码编译成tmod文件的时候,哪些文件(或文件夹)是不需要放进tmod文件的,比如我这里让VS的工程文件和不需要的引用库被排除在外,这样能减小tmod文件的大小,一般按我这么写就行了。includeSource为false的时候自动会忽略.cs文件 build.txt, .gitattributes, .gitignore, .git/, .vs/, .idea/, bin/, obj/,
  Thumbs.db
includePDB 需不需要包括符号调试文件,如果包含可以更多提供debug信息,同时也允许使用VS进行Debug FALSE
side 这个Mod是客户端Mod还是服务器端Mod Both

description.txt

我们应该还能在根目录下看到一个叫description.txt的文件,打开一看你就明白了 ,它里面的内容会显示在这里

这里面的内容没有任何限制,可以随便写

<主类名>.cs

这个文件非常重要,任何一个MOD源码的根目录下都要有一个主类名.cs(比如TemplateMod2.cs)这个格式的一个源码文件。为什么说它重要呢?因为这个类里面的钩子可以主管资源加载,绘制,联动等等生杀大权。 你们以后也会学到,这个文件里要写很多很关键的代码 。


MOD图标修改

这个Mod目前是没有任何图标的,如果我们想要给它添加一个图标,先要确保你的贴图是长和宽都是80像素,且是PNG格式。

然后我们在Mod源码根目录下放入这个文件,改名为icon.png

然后重新加载Mod就能看见图标了

如果你想要修改Mod主名字,建议新建一个Mod,因为改主名字相当麻烦且容易出错

下一章我们会继续制作物品。

《Mod基本信息》有4个想法

发表回复