c# - 让子弹在 TModLoader 中造成减益
问题描述
我正在尝试在 TModLoader 中制造一颗子弹,让敌人击中“冰冷”减益。根据我所做的研究,这段代码应该可以工作。每当我运行它时,它都会给我错误“ IceShot.HitNPC:找不到合适的方法来覆盖。 ”谢谢!
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace Tweaks.Items
{
public class IceShot : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Ice Shot");
Tooltip.SetDefault("Inflicts the \"Chilled\" debuff");
}
public override void SetDefaults()
{
item.damage = 9;
item.ranged = true;
item.width = 8;
item.height = 8;
item.maxStack = 999;
item.consumable = true;
item.knockBack = 1.5f;
item.value = 10;
item.rare = ItemRarityID.Green;
item.shoot = ModContent.ProjectileType<IceShotProjectile>();
item.shootSpeed = 16f;
item.ammo = AmmoID.Bullet;
}
public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)
{
target.AddBuff(46, 180, false);
}
}
}
解决方案
我知道我很晚才回答这个问题,但这个修复非常简单。您缺少Player player
参数。
而不是这个:
public override void OnHitNPC(NPC target, int damage, float knockback, bool crit) {
target.AddBuff(46, 180, false);
}
把这个:
public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit) {
target.AddBuff(BuffID.Chilled, 180, false);
}
我添加了缺少的参数,并且我还将第一个参数target.AddBuff()
从 46 更改为BuffID.Chilled
,因为它提高了可读性。
如果错误消失但目标没有受到影响Chilled
,则将此代码移动到您的IceShotProjectile.cs
文件中。
推荐阅读
- c++ - arma::SpMat
在 RcppArmadillo 函数中输入 - go - 在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度
- android - android 11 kotlin 中的包可见性
- css - 加载后将 div 保留在视口中
- python - 与 ROS 点云的距离太慢,如何优化?
- c++ - 在其他几个 cpp 文件中实例化一个类并使用它的方法
- reactjs - 为什么运行构建后反应路由器不起作用?
- angular - 过滤器包含在 on() ngrx reducer 中
- powerbi - Excel Sum If 数组在 Power BI 中
- vue.js - Vetur 错误,vetur 找不到任何元素,例如模板、div 以及更多错误