本帖最后由 阴阳师元素祭祀 于 2020-5-21 09:28 编辑
概要
本教程不教基础编程问题
如有需要
请找丛林森林蝙蝠
本文全是水。
如果有基础
你也可以跳过本教程
直接前往https://github.com/tModLoader/tModLoader/wiki
本教程所用代码完整开源目录
https://github.com/euOnmyoji/MCBBSCraft
教程环境配置
游戏本体:steam的泰拉瑞亚
IDE:Rider
操作系统:Windows 10
tModLoader的steam商店: https://store.steampowered.com/app/1281930/tModLoader/
以及C#和.net framework相关资源
创建Mod
启动tModLoader
加载完毕相关信息之后
在主菜单右下角
的下方
进入开发者模式
之后进入Mod Sources界面

点击Create Mod
教程使用的版本需要四个参数
点Open Sources
并打开Rider (或自己的IDE)
导入project
使用Autoload
mod所创建的物品等在默认情况会自动加载到游戏中
如果是需要资源的东西
则会自动加载与命名空间和类名有关的资源文件
如果需要关闭某个东西的自动加载
复制代码复写该方法并返回false
同时可以修改texture或者name来修改名字/资源文件路径
编译并测试Mod
编译加载可能的常见问题
创建自己的物品并使用Projectile
创建mod时自带一个物品示例当然那并不能满足狂热的混乱厨
我们需要创建一个混乱的混乱物品
使用时像枪一样发射好人卡
先写一个好人卡的Projectile
复制代码其中aiStyle和aiType 是使用游戏中已有的逻辑来执行相关的飞行/攻击逻辑
关于游戏内物品对应的aiType和aiStyle
可以在附录中查看某表 或科学上网前往{..}查询
之后修改默认的物品示例
复制代码//ModContent.ProjectileType<..>()为以前过时的mod.ProjectileType<...>()
同时改变一下好人卡的射击速度
这里玄学调参就默认为10了
同时去掉一些近战武器的代码
最后看起来的效果大概就是
复制代码
修改物品合成配方
物品是需要合成的
那么混乱也应该可以被合成
修改默认的示例代码即可
实例化一个ModRecipe来表示一个合成配方
其中AddIngredient(物品, 数量)
来增加合成所需的物品
SetResult表示成品的物品类
调用AddRecipe添加配方到游戏中
如果你想让物品(混乱)在指定的tile处合成(比如工作台)
请使用
复制代码
复制代码
创建自己的buff并应用到Projectile
被发好人卡的时候
一般来讲都有一个buff
或者一个明显的提示
当然 想要有buff得先有自己的类用于控制逻辑
因为混乱发的卡太好看了所以我们使用相同的WarningCard材质
同时从其他地方示例抄一段代码
看起来就像这样
复制代码
我们想要这个buff在NPC被发卡的时候获得
则在WarningCard重写OnHitNPC
并调用AddBuff来为目标添加buff
其中1秒正常情况为60帧
AddBuff(buff类型, 时间(帧), quiet);
对于buff类型
使用ModContent相关方法获取
最后看起来就像这样
复制代码
附录
Projectile和AiStyle对应表
概要
本教程不教基础编程问题
如有需要
请找
本文全是水。
如果有基础
你也可以跳过本教程
直接前往https://github.com/tModLoader/tModLoader/wiki
本教程所用代码完整开源目录
https://github.com/euOnmyoji/MCBBSCraft
教程环境配置
游戏本体:steam的泰拉瑞亚
IDE:Rider
操作系统:Windows 10
tModLoader的steam商店: https://store.steampowered.com/app/1281930/tModLoader/
以及C#和.net framework相关资源
创建Mod
启动tModLoader
加载完毕相关信息之后
在主菜单右下角
Copyright @ 2017 Re-Logic
的下方
进入开发者模式
之后进入Mod Sources界面

点击Create Mod

- mod名字(不要有空格
- mod显示名字
- 作者
- BasicSword (可能是命名空间的root
点Open Sources
并打开Rider (或自己的IDE)

导入project
使用Autoload
mod所创建的物品等在默认情况会自动加载到游戏中
如果是需要资源的东西
则会自动加载与命名空间和类名有关的资源文件
如果需要关闭某个东西的自动加载
- public override bool Autoload(ref string name, ref string texture) {
- texture = texture.Replace("WarnedBuff", "WarningCard");
- return true;
- }
同时可以修改texture或者name来修改名字/资源文件路径
编译并测试Mod

创建自己的物品并使用Projectile
创建mod时自带一个物品示例当然那并不能满足
我们需要创建一个混乱的混乱物品
使用时像枪一样发射好人卡
先写一个好人卡的Projectile
- public class WarningCard : ModProjectile {
- public override void SetStaticDefaults() {
- DisplayName.SetDefault("Give warnings to them!");
- }
- public override void SetDefaults() {
- projectile.arrow = true;
- projectile.width = 21;
- projectile.height = 17;
- projectile.aiStyle = 1;
- projectile.friendly = true;
- projectile.ranged = true;
- aiType = ProjectileID.WoodenArrowFriendly;
- }
- }
关于游戏内物品对应的aiType和aiStyle
可以在附录中查看某表 或科学上网前往{..}查询
之后修改默认的物品示例
- item.shoot = ModContent.ProjectileType<WarningCard>();
- item.shootSpeed = 10;
同时改变一下好人卡的射击速度
这里玄学调参就默认为10了
同时去掉一些近战武器的代码
最后看起来的效果大概就是
- public class Mess : ModItem {
- public override void SetStaticDefaults() {
- Tooltip.SetDefault("Hunluan!.");
- }
- public override void SetDefaults() {
- item.damage = 1;
- item.width = 10;
- item.height = 10;
- item.useTime = 20;
- item.useAnimation = 20;
- item.useStyle = ItemUseStyleID.HoldingOut;
- item.knockBack = 6;
- item.value = 10000;
- item.rare = ItemRarityID.Yellow;
- item.UseSound = SoundID.Item1;
- item.autoReuse = true;
- item.shoot = ModContent.ProjectileType<WarningCard>();
- item.shootSpeed = 10;
- }
- }
修改物品合成配方
物品是需要合成的
那么混乱也应该可以被合成
修改默认的示例代码即可
实例化一个ModRecipe来表示一个合成配方
其中AddIngredient(物品, 数量)
来增加合成所需的物品
SetResult表示成品的物品类
调用AddRecipe添加配方到游戏中
如果你想让物品(混乱)在指定的tile处合成(比如工作台)
请使用
- recipe.AddTile(TileID.WorkBenches);
- public override void AddRecipes() {
- var recipe = new ModRecipe(mod);
- recipe.AddIngredient(ItemID.SoulofNight, 1);
- recipe.AddIngredient(ItemID.SoulofLight, 1);
- recipe.SetResult(this);
- recipe.AddRecipe();
- }
创建自己的buff并应用到Projectile
被发好人卡的时候
一般来讲都有一个buff
或者一个明显的提示
当然 想要有buff得先有自己的类用于控制逻辑
因为
同时从其他地方示例抄一段代码
看起来就像这样
- public class WarnedBuff : ModBuff {
- public override bool Autoload(ref string name, ref string texture) {
- texture = texture.Replace("WarnedBuff", "WarningCard");
- return true;
- }
- public override void SetDefaults() {
- DisplayName.SetDefault("You're good.");
- }
- }
我们想要这个buff在NPC被发卡的时候获得
则在WarningCard重写OnHitNPC
并调用AddBuff来为目标添加buff
其中1秒正常情况为60帧
AddBuff(buff类型, 时间(帧), quiet);
对于buff类型
使用ModContent相关方法获取
最后看起来就像这样
- public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) {
- int buffType = ModContent.BuffType<WarnedBuff>();
- target.AddBuff(buffType, 5 * 60, target.HasBuff(buffType));
- }
附录
Projectile和AiStyle对应表
全体待填···
第二个mod名字瞩目
等等我才发现这是1.3.5.3的tml···
之前1.3.5.3上装会倒会1352来着
等等我才发现这是1.3.5.3的tml···
之前1.3.5.3上装会倒会1352来着
这tmod刚独立就出教程了?
Stars_leap 发表于 2020-5-20 23:25
这tmod刚独立就出教程了?
之前又不是没有= =
看得出来 写的很匆忙
我彻底爱上yys啦(指教程
可以参考一下: https://fs49.org/sample-page/