77 lines
2 KiB
C#
77 lines
2 KiB
C#
using System.Buffers;
|
|
using Server.Network;
|
|
|
|
namespace Server.Engines.BuffIcons;
|
|
|
|
public static class BuffIconPackets
|
|
{
|
|
public static void SendAddBuffPacket(
|
|
this NetState ns,
|
|
Serial mob,
|
|
BuffIcon iconID,
|
|
int titleCliloc,
|
|
int secondaryCliloc,
|
|
TextDefinition args,
|
|
long seconds
|
|
)
|
|
{
|
|
if (ns.CannotSendPackets())
|
|
{
|
|
return;
|
|
}
|
|
|
|
var hasArgs = args != null;
|
|
var length = hasArgs ? args.ToString()!.Length * 2 + 52 : 46;
|
|
var writer = new SpanWriter(stackalloc byte[length]);
|
|
writer.Write((byte)0xDF); // Packet ID
|
|
writer.Write((ushort)length);
|
|
writer.Write(mob);
|
|
writer.Write((short)iconID);
|
|
writer.Write((short)0x1); // command (0 = remove, 1 = add, 2 = data)
|
|
writer.Write(0);
|
|
|
|
writer.Write((short)iconID);
|
|
writer.Write((short)0x1); // command (0 = remove, 1 = add, 2 = data)
|
|
writer.Write(0);
|
|
|
|
writer.Write((short)seconds);
|
|
writer.Clear(3);
|
|
writer.Write(titleCliloc);
|
|
writer.Write(secondaryCliloc);
|
|
|
|
if (hasArgs)
|
|
{
|
|
writer.Write(0);
|
|
writer.Write((short)0x1);
|
|
writer.Write((ushort)0);
|
|
writer.WriteLE('\t');
|
|
writer.WriteLittleUniNull(args);
|
|
writer.Write((short)0x1);
|
|
writer.Write((ushort)0);
|
|
}
|
|
else
|
|
{
|
|
writer.Clear(10);
|
|
}
|
|
|
|
ns.Send(writer.Span);
|
|
}
|
|
|
|
public static void SendRemoveBuffPacket(this NetState ns, Serial mob, BuffIcon iconID)
|
|
{
|
|
if (ns.CannotSendPackets())
|
|
{
|
|
return;
|
|
}
|
|
|
|
var writer = new SpanWriter(stackalloc byte[15]);
|
|
writer.Write((byte)0xDF); // Packet ID
|
|
writer.Write((ushort)15);
|
|
writer.Write(mob);
|
|
writer.Write((short)iconID);
|
|
writer.Write((short)0x0); // command (0 = remove, 1 = add, 2 = data)
|
|
writer.Write(0);
|
|
|
|
ns.Send(writer.Span);
|
|
}
|
|
}
|