Fixed emotes, they all work now.

This commit is contained in:
Filip Maj 2017-06-15 00:05:14 -04:00
parent cdfa2f682e
commit 0e8de966a9
3 changed files with 69 additions and 9 deletions

View file

@ -771,9 +771,9 @@ namespace FFXIVClassic_Map_Server.Actors
return mountState;
}
public void DoEmote(uint emoteId)
public void DoEmote(uint animId, uint descId)
{
BroadcastPacket(ActorDoEmotePacket.BuildPacket(actorId, actorId, currentTarget, emoteId), true);
BroadcastPacket(ActorDoEmotePacket.BuildPacket(actorId, actorId, currentTarget, animId, descId), true);
}
public void SendGameMessage(Actor sourceActor, Actor textIdOwner, ushort textId, byte log, params object[] msgParams)

View file

@ -10,7 +10,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
public const ushort OPCODE = 0x00E1;
public const uint PACKET_SIZE = 0x30;
public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, uint targettedActorId, uint emoteID)
public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, uint targettedActorId, uint animationId, uint descriptionId)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
@ -21,11 +21,12 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
uint realAnimID = 0x5000000 | ((emoteID - 100) << 12);
uint realDescID = 20000 + ((emoteID - 1) * 10) + (targettedActorId == sourceActorId ? (uint)2 : (uint)1);
uint realAnimID = 0x5000000 | (animationId << 12);
if (descriptionId != 10105 && targettedActorId == sourceActorId)
descriptionId++;
binWriter.Write((UInt32)realAnimID);
binWriter.Write((UInt32)targettedActorId);
binWriter.Write((UInt32)realDescID);
binWriter.Write((UInt32)descriptionId);
}
}