Fix projectile removal.

This commit is contained in:
Zidonuke 2011-12-29 18:53:27 -05:00
parent be6a5a771b
commit d5affa3ba5
4 changed files with 61 additions and 11 deletions

View file

@ -870,40 +870,40 @@ namespace TShockAPI
if (args.Player.Index != owner) if (args.Player.Index != owner)
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (dmg > 175) if (dmg > 175)
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (TShock.CheckIgnores(args.Player)) if (TShock.CheckIgnores(args.Player))
{ {
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (TShock.CheckProjectilePermission(args.Player, index, type)) if (TShock.CheckProjectilePermission(args.Player, index, type))
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (args.Player.ProjectileThreshold >= TShock.Config.ProjectileThreshold) if (args.Player.ProjectileThreshold >= TShock.Config.ProjectileThreshold)
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000) if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000)
{ {
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
@ -938,26 +938,26 @@ namespace TShockAPI
if (args.Player.Index != Main.projectile[index].owner) if (args.Player.Index != Main.projectile[index].owner)
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (TShock.CheckIgnores(args.Player)) if (TShock.CheckIgnores(args.Player))
{ {
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if (TShock.CheckProjectilePermission(args.Player, index, type)) if (TShock.CheckProjectilePermission(args.Player, index, type))
{ {
args.Player.LastThreat = DateTime.UtcNow; args.Player.LastThreat = DateTime.UtcNow;
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000) if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000)
{ {
args.Player.SendData(PacketTypes.ProjectileNew, "", index); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }

View 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);
}
}
}

View file

@ -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) public virtual bool SendTileSquare(int x, int y, int size = 10)
{ {
try try

View file

@ -107,6 +107,7 @@
<Compile Include="Net\BaseMsg.cs" /> <Compile Include="Net\BaseMsg.cs" />
<Compile Include="Net\DisconnectMsg.cs" /> <Compile Include="Net\DisconnectMsg.cs" />
<Compile Include="Net\NetTile.cs" /> <Compile Include="Net\NetTile.cs" />
<Compile Include="Net\ProjectileRemoveMsg.cs" />
<Compile Include="Net\SpawnMsg.cs" /> <Compile Include="Net\SpawnMsg.cs" />
<Compile Include="Net\WorldInfoMsg.cs" /> <Compile Include="Net\WorldInfoMsg.cs" />
<Compile Include="DB\RegionManager.cs" /> <Compile Include="DB\RegionManager.cs" />
@ -182,7 +183,7 @@
</PropertyGroup> </PropertyGroup>
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <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> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.