diff --git a/FFXIVClassic Map Server/PacketProcessor.cs b/FFXIVClassic Map Server/PacketProcessor.cs index 0a4be42d..e5cb10dd 100644 --- a/FFXIVClassic Map Server/PacketProcessor.cs +++ b/FFXIVClassic Map Server/PacketProcessor.cs @@ -136,7 +136,7 @@ namespace FFXIVClassic_Lobby_Server } if (actorID == 0) - break; + break; //Second connection if (mPlayers.ContainsKey(actorID)) @@ -215,7 +215,7 @@ namespace FFXIVClassic_Lobby_Server client.queuePacket(reply5); - client.queuePacket(BasePacket.createPacket(AddActorPacket.buildPacket(player.actorID, player.actorID), true, false)); + client.queuePacket(BasePacket.createPacket(AddActorPacket.buildPacket(player.actorID, player.actorID, 0), true, false)); client.queuePacket(reply6); @@ -308,9 +308,11 @@ namespace FFXIVClassic_Lobby_Server break; //Update Position case 0x00CA: + //Update Position UpdatePlayerPositionPacket posUpdate = new UpdatePlayerPositionPacket(subpacket.data); player.updatePlayerActorPosition(posUpdate.x, posUpdate.y, posUpdate.z, posUpdate.rot, posUpdate.moveState); + //Update Instance List instanceUpdatePackets = player.updateInstance(inn.getActorsAroundActor(player.getActor(), 50)); foreach (BasePacket bp in instanceUpdatePackets) client.queuePacket(bp); diff --git a/FFXIVClassic Map Server/bin/Debug/packets/playerscript b/FFXIVClassic Map Server/bin/Debug/packets/playerscript new file mode 100644 index 00000000..197ffce2 Binary files /dev/null and b/FFXIVClassic Map Server/bin/Debug/packets/playerscript differ diff --git a/FFXIVClassic Map Server/bin/Debug/packets/playerscript2 b/FFXIVClassic Map Server/bin/Debug/packets/playerscript2 new file mode 100644 index 00000000..13bbe914 Binary files /dev/null and b/FFXIVClassic Map Server/bin/Debug/packets/playerscript2 differ diff --git a/FFXIVClassic Map Server/bin/Debug/packets/playerscript3 b/FFXIVClassic Map Server/bin/Debug/packets/playerscript3 new file mode 100644 index 00000000..c281c8c1 Binary files /dev/null and b/FFXIVClassic Map Server/bin/Debug/packets/playerscript3 differ diff --git a/FFXIVClassic Map Server/dataobjects/Player.cs b/FFXIVClassic Map Server/dataobjects/Player.cs index bc10608f..b39fd283 100644 --- a/FFXIVClassic Map Server/dataobjects/Player.cs +++ b/FFXIVClassic Map Server/dataobjects/Player.cs @@ -124,9 +124,16 @@ namespace FFXIVClassic_Map_Server.dataobjects continue; if (actorInstanceList.Contains(actor)) + { posUpdateSubpackets.Add(actor.createPositionUpdatePacket(playerActor.actorID)); + } else - basePackets.Add(actor.createActorSpawnPackets(playerActor.actorID)); + { + BasePacket p = actor.createActorSpawnPackets(playerActor.actorID); + p.replaceActorID(0x29b27d3, playerActor.actorID); + basePackets.Add(p); + actorInstanceList.Add(actor); + } } basePackets.Add(BasePacket.createPacket(posUpdateSubpackets, true, false)); diff --git a/FFXIVClassic Map Server/packets/send/Actor/AddActorPacket.cs b/FFXIVClassic Map Server/packets/send/Actor/AddActorPacket.cs index 21672224..c92e23a2 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/AddActorPacket.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/AddActorPacket.cs @@ -12,9 +12,12 @@ namespace FFXIVClassic_Map_Server.packets.send.actor public const ushort OPCODE = 0x00CA; public const uint PACKET_SIZE = 0x28; - public static SubPacket buildPacket(uint playerActorID, uint actorID) + public static SubPacket buildPacket(uint playerActorID, uint actorID, byte val) { - return new SubPacket(OPCODE, playerActorID, actorID, new byte[8]); + byte[] data = new byte[PACKET_SIZE-0x20]; + data[0] = val; //Why? + + return new SubPacket(OPCODE, playerActorID, actorID, data); } }