mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-11 06:24:38 +00:00
Packet: PingMsg
Actual handling of this message is still needed. Not sure what response to send to the PS client
This commit is contained in:
parent
004f36219b
commit
b9ef1fd725
4 changed files with 78 additions and 3 deletions
|
|
@ -349,7 +349,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
case ObjectCreateMessage_Duplicate => noDecoder(opcode)
|
||||
case ObjectCreateMessage => game.ObjectCreateMessage.decode
|
||||
case ObjectDeleteMessage => game.ObjectDeleteMessage.decode
|
||||
case PingMsg => noDecoder(opcode)
|
||||
case PingMsg => game.PingMsg.decode
|
||||
case VehicleStateMessage => noDecoder(opcode)
|
||||
case FrameVehicleStateMessage => noDecoder(opcode)
|
||||
case GenericObjectStateMsg => game.GenericObjectStateMsg.decode
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright (c) 2016 PSForever.net to present
|
||||
package net.psforever.packet.game
|
||||
|
||||
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
|
||||
import scodec.Codec
|
||||
import scodec.codecs._
|
||||
|
||||
/** Sent periodically by the PlanetSide client when connected to the Login server. Not encrypted
|
||||
*
|
||||
* @param unk1
|
||||
* @param unk2
|
||||
*/
|
||||
final case class PingMsg(unk1 : Long, unk2 : Long) extends PlanetSideGamePacket {
|
||||
type Packet = PingMsg
|
||||
def opcode = GamePacketOpcode.PingMsg
|
||||
def encode = PingMsg.encode(this)
|
||||
}
|
||||
|
||||
object PingMsg extends Marshallable[PingMsg] {
|
||||
implicit val codec : Codec[PingMsg] = (
|
||||
("unk1" | uint32L) ::
|
||||
("unk2" | uint32L)
|
||||
).as[PingMsg]
|
||||
}
|
||||
|
|
@ -150,10 +150,12 @@ class GamePacketTest extends Specification {
|
|||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(packet2).require match {
|
||||
case obj @ ObjectCreateMessage(len, cls, guid, parent) =>
|
||||
case obj @ ObjectCreateMessage(len, cls, guid, parent, rest) =>
|
||||
val manualRest = packet2.bits.drop(32 + 1 + 0xb + 16)
|
||||
len === 29719
|
||||
cls === 121
|
||||
guid === 2497
|
||||
rest === manualRest
|
||||
parent === None
|
||||
case default =>
|
||||
ko
|
||||
|
|
@ -741,5 +743,24 @@ class GamePacketTest extends Specification {
|
|||
pkt_hitobj mustEqual string_hitobj
|
||||
}
|
||||
}
|
||||
|
||||
"PingMsg" should {
|
||||
val packet = hex"1a 00000000 b0360000"
|
||||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(packet).require match {
|
||||
case PingMsg(unk1, unk2) =>
|
||||
unk1 === 0
|
||||
unk2 === 14000
|
||||
case default =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode" in {
|
||||
val msg = PingMsg(0, 14000)
|
||||
PacketCoding.EncodePacket(msg).require.toByteVector === packet
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue