From e56238a10c9c524a93b443e69fb96bac0b085bc2 Mon Sep 17 00:00:00 2001 From: Tahir Akhlaq Date: Fri, 30 Jun 2017 02:38:55 +0100 Subject: [PATCH] fixed crash on updating controller for npcs - fixed updating player movement --- FFXIVClassic Map Server/actors/Actor.cs | 3 ++- FFXIVClassic Map Server/actors/area/Area.cs | 2 -- FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs | 2 +- FFXIVClassic Map Server/dataobjects/Session.cs | 6 +++++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/FFXIVClassic Map Server/actors/Actor.cs b/FFXIVClassic Map Server/actors/Actor.cs index 15b58d2c..845650b9 100644 --- a/FFXIVClassic Map Server/actors/Actor.cs +++ b/FFXIVClassic Map Server/actors/Actor.cs @@ -152,7 +152,8 @@ namespace FFXIVClassic_Map_Server.Actors { updateMs = 150; } - if (hasMoved && diffTime.Milliseconds >= updateMs) + + if (hasMoved && ((this is Player ) || diffTime.Milliseconds >= updateMs)) { hasMoved = (this.positionUpdates != null && this.positionUpdates.Count > 0); if (hasMoved) diff --git a/FFXIVClassic Map Server/actors/area/Area.cs b/FFXIVClassic Map Server/actors/area/Area.cs index 806dd396..d59d47fe 100644 --- a/FFXIVClassic Map Server/actors/area/Area.cs +++ b/FFXIVClassic Map Server/actors/area/Area.cs @@ -161,8 +161,6 @@ namespace FFXIVClassic_Map_Server.Actors public void UpdateActorPosition(Actor actor) { - this.hasMoved = true; - int gridX = (int)actor.positionX / boundingGridSize; int gridY = (int)actor.positionZ / boundingGridSize; diff --git a/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs b/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs index 45550ae6..87e1f5e9 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs @@ -44,7 +44,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai // todo: trigger listeners // todo: action queues - controller.Update(tick); + controller?.Update(tick); } public void CheckCompletedStates() diff --git a/FFXIVClassic Map Server/dataobjects/Session.cs b/FFXIVClassic Map Server/dataobjects/Session.cs index c111c09f..48e392e8 100644 --- a/FFXIVClassic Map Server/dataobjects/Session.cs +++ b/FFXIVClassic Map Server/dataobjects/Session.cs @@ -68,6 +68,9 @@ namespace FFXIVClassic_Map_Server.dataobjects if (isUpdatesLocked) return; + if (playerActor.positionX == x && playerActor.positionY == y && playerActor.positionZ == z && playerActor.rotation == rot) + return; + playerActor.oldPositionX = playerActor.positionX; playerActor.oldPositionY = playerActor.positionY; playerActor.oldPositionZ = playerActor.positionZ; @@ -80,8 +83,9 @@ namespace FFXIVClassic_Map_Server.dataobjects playerActor.moveState = moveState; GetActor().zone.UpdateActorPosition(GetActor()); - + playerActor.QueuePositionUpdate(new Vector3(x,y,z)); } + long lastMilis = 0; public void UpdateInstance(List list) {