1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-24 05:37:46 +00:00

Got rid of some garbage packets. Emote packet implemented though bug with descriptions.

This commit is contained in:
Filip Maj 2015-10-12 02:03:47 -04:00
parent 810edfcee4
commit d3325676c5
22 changed files with 49 additions and 4 deletions

View file

@ -80,6 +80,7 @@
<Compile Include="packets\receive\LockTargetPacket.cs" /> <Compile Include="packets\receive\LockTargetPacket.cs" />
<Compile Include="packets\receive\EndScriptPacket.cs" /> <Compile Include="packets\receive\EndScriptPacket.cs" />
<Compile Include="packets\receive\StartScriptPacket.cs" /> <Compile Include="packets\receive\StartScriptPacket.cs" />
<Compile Include="packets\send\actor\ActorDoEmotePacket.cs" />
<Compile Include="packets\send\actor\DeleteAllActorsPacket.cs" /> <Compile Include="packets\send\actor\DeleteAllActorsPacket.cs" />
<Compile Include="packets\send\actor\inventory\EquipmentChangePacket.cs" /> <Compile Include="packets\send\actor\inventory\EquipmentChangePacket.cs" />
<Compile Include="packets\send\actor\inventory\InventoryBeginChangePacket.cs" /> <Compile Include="packets\send\actor\inventory\InventoryBeginChangePacket.cs" />

View file

@ -307,6 +307,8 @@ namespace FFXIVClassic_Lobby_Server
break; break;
//Set Target //Set Target
case 0x00CD: case 0x00CD:
subpacket.debugPrintSubPacket();
SetTargetPacket setTarget = new SetTargetPacket(subpacket.data); SetTargetPacket setTarget = new SetTargetPacket(subpacket.data);
player.setTarget(setTarget.actorID); player.setTarget(setTarget.actorID);
client.queuePacket(BasePacket.createPacket(SetActorTargetAnimatedPacket.buildPacket(player.actorID, player.actorID, setTarget.actorID), true, false)); client.queuePacket(BasePacket.createPacket(SetActorTargetAnimatedPacket.buildPacket(player.actorID, player.actorID, setTarget.actorID), true, false));
@ -319,8 +321,9 @@ namespace FFXIVClassic_Lobby_Server
//Start Script //Start Script
case 0x012D: case 0x012D:
subpacket.debugPrintSubPacket(); subpacket.debugPrintSubPacket();
StartScriptPacket startScript = new StartScriptPacket(subpacket.data); //StartScriptPacket startScript = new StartScriptPacket(subpacket.data);
client.queuePacket(new BasePacket("./packets/script/bed.bin")); //client.queuePacket(new BasePacket("./packets/script/bed.bin"));
client.queuePacket(BasePacket.createPacket(ActorDoEmotePacket.buildPacket(player.actorID, player.getTargetedActor(), 137), true, false));
break; break;
//Script Result //Script Result
case 0x012E: case 0x012E:

View file

@ -18,8 +18,8 @@ namespace FFXIVClassic_Map_Server.dataobjects
public uint characterID = 0; public uint characterID = 0;
public uint actorID = 0; public uint actorID = 0;
private uint currentTarget = 0; private uint currentTarget = 0xC0000000;
private uint currentLockedTarget = 0; private uint currentLockedTarget = 0xC0000000;
private uint currentZoneID = 0; private uint currentZoneID = 0;
@ -121,5 +121,10 @@ namespace FFXIVClassic_Map_Server.dataobjects
{ {
currentLockedTarget = actorID; currentLockedTarget = actorID;
} }
public uint getTargetedActor()
{
return currentTarget;
}
} }
} }

View file

@ -0,0 +1,36 @@
using FFXIVClassic_Lobby_Server.packets;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class ActorDoEmotePacket
{
public const ushort OPCODE = 0x00E1;
public const uint PACKET_SIZE = 0x30;
public static SubPacket buildPacket(uint playerActorID, uint targetActorID, uint emoteID)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
uint realAnimID = 0x5000000 | ((emoteID - 100) << 12);
uint realDescID = 20000 + ((emoteID - 1) * 10) + (targetActorID == playerActorID || targetActorID == 0xC0000000 ? (uint)2 : (uint)1);
binWriter.Write((UInt32)realAnimID);
binWriter.Write((UInt32)targetActorID);
binWriter.Write((UInt32)realDescID);
}
}
SubPacket packet = new SubPacket(OPCODE, playerActorID, targetActorID, data);
return packet;
}
}
}