diff --git a/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala b/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala index 7ade14ad2..9df2cf263 100644 --- a/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala +++ b/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala @@ -5,7 +5,7 @@ import net.psforever.packet.{ControlPacketOpcode, Marshallable, PlanetSideContro import scodec.Codec import scodec.codecs._ -final case class ControlSyncResp(timeDiff : Int, unk : Long, +final case class ControlSyncResp(timeDiff : Int, serverTick : Long, field1 : Long, field2 : Long, field3 : Long, field4 : Long) extends PlanetSideControlPacket { type Packet = ControlSyncResp @@ -16,7 +16,7 @@ final case class ControlSyncResp(timeDiff : Int, unk : Long, object ControlSyncResp extends Marshallable[ControlSyncResp] { implicit val codec : Codec[ControlSyncResp] = ( ("time_diff" | uint16) :: - ("unk" | uint32) :: + ("server_tick" | uint32) :: ("field1" | int64) :: ("field2" | int64) :: ("field3" | int64) :: diff --git a/pslogin/src/main/scala/LoginSessionActor.scala b/pslogin/src/main/scala/LoginSessionActor.scala index 1d9ff0c2e..9fa291c66 100644 --- a/pslogin/src/main/scala/LoginSessionActor.scala +++ b/pslogin/src/main/scala/LoginSessionActor.scala @@ -68,6 +68,11 @@ class LoginSessionActor extends Actor with MDCContextAware { case Successful(v) => handlePkt(v) } + case sync @ ControlSync(diff, unk, f1, f2, f3, f4, fa, fb) => + log.debug(s"SYNC: ${sync}") + val serverTick = Math.abs(System.nanoTime().toInt) // limit the size to prevent encoding error + sendResponse(PacketCoding.CreateControlPacket(ControlSyncResp(diff, serverTick, + fa, fb, fb, fa))) case MultiPacket(packets) => packets.foreach { pkt => PacketCoding.DecodePacket(pkt) match {