From ab3e152b7d4173139421151f843701ee403288b5 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 27 Jun 2017 21:30:32 -0400 Subject: [PATCH] Fixed spawning being broken. --- FFXIVClassic Map Server/actors/Actor.cs | 11 ++++++++--- .../actors/chara/player/Player.cs | 2 +- FFXIVClassic Map Server/dataobjects/Session.cs | 13 +++++-------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/FFXIVClassic Map Server/actors/Actor.cs b/FFXIVClassic Map Server/actors/Actor.cs index 265ce29f..ca5ab6d4 100644 --- a/FFXIVClassic Map Server/actors/Actor.cs +++ b/FFXIVClassic Map Server/actors/Actor.cs @@ -92,9 +92,14 @@ namespace FFXIVClassic_Map_Server.Actors } public SubPacket CreateSpawnPositonPacket(ushort spawnType) + { + return CreateSpawnPositonPacket(null, spawnType); + } + + public SubPacket CreateSpawnPositonPacket(Player player, ushort spawnType) { //TODO: FIX THIS IF - uint playerActorId = 0; //Get Rid + uint playerActorId = player == null ? 0 : player.actorId; //Get Rid SubPacket spawnPacket; if (!spawnedFirstTime && playerActorId == actorId) spawnPacket = SetActorPositionPacket.BuildPacket(actorId, 0, positionX, positionY, positionZ, rotation, 0x1, false); @@ -252,7 +257,7 @@ namespace FFXIVClassic_Map_Server.Actors subpackets.Add(CreateAddActorPacket(8)); subpackets.AddRange(GetEventConditionPackets()); subpackets.Add(CreateSpeedPacket()); - subpackets.Add(CreateSpawnPositonPacket( spawnType)); + subpackets.Add(CreateSpawnPositonPacket(player, spawnType)); subpackets.Add(CreateNamePacket()); subpackets.Add(CreateStatePacket()); subpackets.Add(CreateIsZoneingPacket()); @@ -271,7 +276,7 @@ namespace FFXIVClassic_Map_Server.Actors subpackets.Add(CreateAddActorPacket(8)); subpackets.AddRange(GetEventConditionPackets()); subpackets.Add(CreateSpeedPacket()); - subpackets.Add(CreateSpawnPositonPacket(spawnType)); + subpackets.Add(CreateSpawnPositonPacket(null, spawnType)); subpackets.Add(CreateNamePacket()); subpackets.Add(CreateStatePacket()); subpackets.Add(CreateIsZoneingPacket()); diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 938df61d..e3830566 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -299,7 +299,7 @@ namespace FFXIVClassic_Map_Server.Actors if (IsMyPlayer(requestPlayer.actorId)) subpackets.AddRange(Create0x132Packets()); subpackets.Add(CreateSpeedPacket()); - subpackets.Add(CreateSpawnPositonPacket(spawnType)); + subpackets.Add(CreateSpawnPositonPacket(this, spawnType)); subpackets.Add(CreateAppearancePacket()); subpackets.Add(CreateNamePacket()); subpackets.Add(_0xFPacket.BuildPacket(actorId)); diff --git a/FFXIVClassic Map Server/dataobjects/Session.cs b/FFXIVClassic Map Server/dataobjects/Session.cs index 7aca7d7b..a3965832 100644 --- a/FFXIVClassic Map Server/dataobjects/Session.cs +++ b/FFXIVClassic Map Server/dataobjects/Session.cs @@ -136,17 +136,14 @@ namespace FFXIVClassic_Map_Server.dataobjects if (actor is Character && ((Character)actor).isStatic) continue; - GetActor().QueuePacket(actor.CreatePositionUpdatePacket()); + QueuePacket(actor.CreatePositionUpdatePacket()); } else - { - if (actor is Player) - GetActor().QueuePacket(actor.GetSpawnPackets(playerActor, 1)); - else - GetActor().QueuePacket(actor.GetSpawnPackets(1)); + { + QueuePacket(actor.GetSpawnPackets(playerActor, 1)); - GetActor().QueuePacket(actor.GetInitPackets()); - GetActor().QueuePacket(actor.GetSetEventStatusPackets()); + QueuePacket(actor.GetInitPackets()); + QueuePacket(actor.GetSetEventStatusPackets()); actorInstanceList.Add(actor); if (actor is Npc)