public virtual void PostUpdate(DateTime tick, List <SubPacket> packets = null) { if (updateFlags != ActorUpdateFlags.None) { packets = packets ?? new List <SubPacket>(); if ((updateFlags & ActorUpdateFlags.Position) != 0) { if (positionUpdates != null && positionUpdates.Count > 0) { var pos = positionUpdates[0]; if (pos != null) { oldPositionX = positionX; oldPositionY = positionY; oldPositionZ = positionZ; oldRotation = rotation; positionX = pos.X; positionY = pos.Y; positionZ = pos.Z; zone.UpdateActorPosition(this); //Program.Server.GetInstance().mLuaEngine.OnPath(actor, position, positionUpdates) } positionUpdates.Remove(pos); } packets.Add(CreatePositionUpdatePacket()); } if ((updateFlags & ActorUpdateFlags.Speed) != 0) { packets.Add(SetActorSpeedPacket.BuildPacket(actorId, moveSpeeds[0], moveSpeeds[1], moveSpeeds[2], moveSpeeds[3])); } if ((updateFlags & ActorUpdateFlags.Name) != 0) { packets.Add(SetActorNamePacket.BuildPacket(actorId, displayNameId, customDisplayName)); } if ((updateFlags & ActorUpdateFlags.State) != 0) { packets.Add(SetActorStatePacket.BuildPacket(actorId, currentMainState, 0x3B)); } if ((updateFlags & ActorUpdateFlags.SubState) != 0) { packets.Add(SetActorSubStatePacket.BuildPacket(actorId, currentSubState)); } updateFlags = ActorUpdateFlags.None; } zone.BroadcastPacketsAroundActor(this, packets); }
public SubPacket CreateNamePacket() { return(SetActorNamePacket.BuildPacket(actorId, displayNameId, displayNameId == 0xFFFFFFFF | displayNameId == 0x0 ? customDisplayName : "")); }