Fix projectile removal.
This commit is contained in:
parent
be6a5a771b
commit
d5affa3ba5
4 changed files with 61 additions and 11 deletions
|
|
@ -870,40 +870,40 @@ namespace TShockAPI
|
|||
if (args.Player.Index != owner)
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (dmg > 175)
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckIgnores(args.Player))
|
||||
{
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckProjectilePermission(args.Player, index, type))
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.Player.ProjectileThreshold >= TShock.Config.ProjectileThreshold)
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000)
|
||||
{
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -938,26 +938,26 @@ namespace TShockAPI
|
|||
if (args.Player.Index != Main.projectile[index].owner)
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckIgnores(args.Player))
|
||||
{
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckProjectilePermission(args.Player, index, type))
|
||||
{
|
||||
args.Player.LastThreat = DateTime.UtcNow;
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000)
|
||||
{
|
||||
args.Player.SendData(PacketTypes.ProjectileNew, "", index);
|
||||
args.Player.RemoveProjectile(ident, owner);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
35
TShockAPI/Net/ProjectileRemoveMsg.cs
Normal file
35
TShockAPI/Net/ProjectileRemoveMsg.cs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
using System.IO;
|
||||
using System.IO.Streams;
|
||||
|
||||
namespace TShockAPI.Net
|
||||
{
|
||||
public class ProjectileRemoveMsg : BaseMsg
|
||||
{
|
||||
public override PacketTypes ID
|
||||
{
|
||||
get
|
||||
{
|
||||
return PacketTypes.ProjectileNew;
|
||||
}
|
||||
}
|
||||
|
||||
public short Index { get; set; }
|
||||
public byte Owner { get; set; }
|
||||
|
||||
public override void Pack(Stream stream)
|
||||
{
|
||||
stream.WriteInt16(Index);
|
||||
stream.WriteSingle(-1);
|
||||
stream.WriteSingle(-1);
|
||||
stream.WriteSingle(0);
|
||||
stream.WriteSingle(0);
|
||||
stream.WriteSingle(0);
|
||||
stream.WriteInt16(0);
|
||||
stream.WriteByte(Owner);
|
||||
stream.WriteByte(0);
|
||||
stream.WriteSingle(0);
|
||||
stream.WriteSingle(0);
|
||||
stream.WriteSingle(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -281,6 +281,20 @@ namespace TShockAPI
|
|||
}
|
||||
}
|
||||
|
||||
public void RemoveProjectile(int index, int owner)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
var msg = new ProjectileRemoveMsg()
|
||||
{
|
||||
Index = (short)index,
|
||||
Owner = (byte)owner
|
||||
};
|
||||
msg.PackFull(ms);
|
||||
SendRawData(ms.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool SendTileSquare(int x, int y, int size = 10)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@
|
|||
<Compile Include="Net\BaseMsg.cs" />
|
||||
<Compile Include="Net\DisconnectMsg.cs" />
|
||||
<Compile Include="Net\NetTile.cs" />
|
||||
<Compile Include="Net\ProjectileRemoveMsg.cs" />
|
||||
<Compile Include="Net\SpawnMsg.cs" />
|
||||
<Compile Include="Net\WorldInfoMsg.cs" />
|
||||
<Compile Include="DB\RegionManager.cs" />
|
||||
|
|
@ -182,7 +183,7 @@
|
|||
</PropertyGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<UserProperties BuildVersion_IncrementBeforeBuild="False" BuildVersion_StartDate="2011/6/17" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_BuildAction="Both" BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" />
|
||||
<UserProperties BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildAction="Both" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_StartDate="2011/6/17" BuildVersion_IncrementBeforeBuild="False" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue