mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-01-19 18:44:45 +00:00
Improve Outfit packets
This commit is contained in:
parent
d75ab1166f
commit
1e7c0123a4
|
|
@ -13,15 +13,15 @@ final case class OutfitMemberEvent(
|
|||
unk1: Int,
|
||||
unk2: Int,
|
||||
unk3: Int,
|
||||
unk4: Int,
|
||||
unk5: Int,
|
||||
unk6: Int,
|
||||
member_name: String,
|
||||
unk7: Int,
|
||||
unk8: Int,
|
||||
unk9: Int,
|
||||
unk10: Int,
|
||||
unk12: Int,
|
||||
unk13: Int,
|
||||
unk14: Int,
|
||||
unk15: Int,
|
||||
unk11: Int,
|
||||
) extends PlanetSideGamePacket {
|
||||
type Packet = OutfitMemberEvent
|
||||
def opcode = GamePacketOpcode.OutfitMemberEvent
|
||||
|
|
@ -32,26 +32,26 @@ object OutfitMemberEvent extends Marshallable[OutfitMemberEvent] {
|
|||
implicit val codec: Codec[OutfitMemberEvent] = (
|
||||
("unk00" | uintL(2)) ::
|
||||
("outfit_id" | PlanetSideGUID.codec) ::
|
||||
("unk1" | uint16L) ::
|
||||
("unk2" | uint16L) ::
|
||||
("unk3" | uint16L) ::
|
||||
("unk1" | uint8L) ::
|
||||
("unk2" | uint8L) ::
|
||||
("unk3" | uint8L) ::
|
||||
("unk4" | uint8L) ::
|
||||
("unk5" | uint8L) ::
|
||||
("unk6" | uint8L) ::
|
||||
("member_name" | PacketHelpers.encodedWideStringAligned(6)) ::
|
||||
("unk7" | uint8L) ::
|
||||
("unk8" | uint8L) ::
|
||||
("unk7" | uint16L) ::
|
||||
("unk8" | uint16L) ::
|
||||
("unk9" | uint16L) ::
|
||||
("unk10" | uint8L) ::
|
||||
("unk12" | uint8L) ::
|
||||
("unk13" | uint8L) ::
|
||||
("unk14" | uint8L) ::
|
||||
("unk15" | uint8L)
|
||||
("unk10" | uint16L) ::
|
||||
("unk11" | uint8L)
|
||||
).xmap[OutfitMemberEvent](
|
||||
{
|
||||
case unk00 :: outfit_id :: u1 :: u2 :: u3 :: member_name :: u7 :: u8 :: u9 :: u10 :: u12 :: u13 :: u14 :: u15 :: HNil =>
|
||||
OutfitMemberEvent(unk00, outfit_id, u1, u2, u3, member_name, u7, u8, u9, u10, u12, u13, u14, u15)
|
||||
case unk00 :: outfit_id :: u1 :: u2 :: u3 :: u4 :: u5 :: u6 :: member_name :: u7 :: u8 :: u9 :: u10 :: u11 :: HNil =>
|
||||
OutfitMemberEvent(unk00, outfit_id, u1, u2, u3, u4, u5, u6, member_name, u7, u8, u9, u10, u11)
|
||||
},
|
||||
{
|
||||
case OutfitMemberEvent(unk00, outfit_id, u1, u2, u3, member_name, u7, u8, u9, u10, u12, u13, u14, u15) =>
|
||||
unk00 :: outfit_id :: u1 :: u2 :: u3 :: member_name :: u7 :: u8 :: u9 :: u10 :: u12 :: u13 :: u14 :: u15 :: HNil
|
||||
case OutfitMemberEvent(unk00, outfit_id, u1, u2, u3, u4, u5, u6, member_name, u7, u8, u9, u10, u11) =>
|
||||
unk00 :: outfit_id :: u1 :: u2 :: u3 :: u4 :: u5 :: u6 :: member_name :: u7 :: u8 :: u9 :: u10 :: u11 :: HNil
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import shapeless.{::, HNil}
|
|||
final case class OutfitMemberUpdate(
|
||||
outfit_guid: PlanetSideGUID,
|
||||
unk1: Int,
|
||||
unk2: Int,
|
||||
avatar_guid: PlanetSideGUID,
|
||||
unk3: Int,
|
||||
) extends PlanetSideGamePacket {
|
||||
type Packet = OutfitMemberUpdate
|
||||
|
|
@ -22,7 +22,7 @@ object OutfitMemberUpdate extends Marshallable[OutfitMemberUpdate] {
|
|||
implicit val codec: Codec[OutfitMemberUpdate] = (
|
||||
("outfit_guid" | PlanetSideGUID.codec) ::
|
||||
("unk1" | uint16L) ::
|
||||
("unk2" | uint16L) ::
|
||||
("avatar_guid" | PlanetSideGUID.codec) ::
|
||||
("unk3" | uint8L)
|
||||
).xmap[OutfitMemberUpdate](
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,25 +10,43 @@ import scodec.bits._
|
|||
|
||||
class OutfitMemberEventTest extends Specification {
|
||||
|
||||
//val unk0_ABC: ByteVector = hex"90 3518 4000 1a4e 4100 2 180 450078007000650072007400 8483 07e0 119d bfe0 70" // 0x90048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010
|
||||
val unk0_ABC: ByteVector = hex"90 048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010"
|
||||
//val unk0_ABC: ByteVector = hex"90 3518 4000 1a4e 4100 2 180 450078007000650072007400 8483 07e0 119d bfe0 70" // 0x90048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010
|
||||
val unk0_ABC_Lazer: ByteVector = hex"90 048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010"
|
||||
|
||||
val OpolE = hex"90 0 4864 0003 aad6 280a 14 0 4f0070006f006c004500 c9a1 80e0 0d03 2040 10"
|
||||
val Billy = hex"90 0 4864 0003 a41a 280a 20 0 620069006c006c007900320035003600 935f 6000 186a b040 50"
|
||||
val Lazer = hex"90 0 4864 0001 030c 2802 24 0 4c0061007a00650072003100390038003200 e6dc 25a0 153e 6040 10"
|
||||
val Virus = hex"90 0 4864 0002 1b64 4c02 28 0 5600690072007500730047006900760065007200 2f89 0080 0000 0000 10"
|
||||
val PvtPa = hex"90 0 4864 0000 1e69 e80a 2c 0 500076007400500061006e00630061006b0065007300 705e a080 0a85 e060 10"
|
||||
val Night = hex"90 0 4864 0002 4cf0 3802 28 0 4e006900670068007400770069006e0067003100 b8fb 9a40 0da6 ec80 50"
|
||||
|
||||
/*
|
||||
OutfitMemberEvent(0, ValidPlanetSideGUID(6418), 0, 0, 64, 195, 10, 0, Lazer1982, 230, 220, 37, 160, 21, 62, 96, 64, 16, BitVector(empty))
|
||||
OutfitMemberEvent(0, ValidPlanetSideGUID(6418), 0, 0, 7, 154, 122, 2, PvtPancakes, 112, 94, 160, 128, 10, 133, 224, 96, 16, BitVector(empty))
|
||||
OutfitMemberEvent(0, ValidPlanetSideGUID(6418), 0, 0, 134, 217, 19, 0, VirusGiver, 47, 137, 0, 128, 0, 0, 0, 0, 16, BitVector(empty))
|
||||
OutfitMemberEvent(0, ValidPlanetSideGUID(6418), 0, 0, 234, 181, 138, 2, OpolE, 201, 161, 128, 224, 13, 3, 32, 64, 16, BitVector(empty))
|
||||
OutfitMemberEvent(0, ValidPlanetSideGUID(6418), 0, 0, 233, 6, 138, 2, billy256, 147, 95, 96, 0, 24, 106, 176, 64, 80, BitVector(empty))
|
||||
|
||||
|
||||
*/
|
||||
|
||||
"decode Unk0 ABC" in {
|
||||
PacketCoding.decodePacket(unk0_ABC).require match {
|
||||
case OutfitMemberEvent(unk00, outfit_guid, unk1, unk2, unk3, member_name, unk7, unk8, unk9, unk10, unk12, unk13, unk14, unk15) =>
|
||||
PacketCoding.decodePacket(unk0_ABC_Lazer).require match {
|
||||
case OutfitMemberEvent(unk00, outfit_guid, unk1, unk2, unk3, unk4, unk5, unk6, member_name, unk7, unk8, unk9, unk10, unk11) =>
|
||||
unk00 mustEqual 0
|
||||
outfit_guid mustEqual PlanetSideGUID(6418)
|
||||
unk1 mustEqual 0
|
||||
unk2 mustEqual 49984
|
||||
unk3 mustEqual 10
|
||||
unk2 mustEqual 0
|
||||
unk3 mustEqual 64
|
||||
unk4 mustEqual 195
|
||||
unk5 mustEqual 10
|
||||
unk6 mustEqual 0
|
||||
member_name mustEqual "Lazer1982"
|
||||
unk7 mustEqual 244
|
||||
unk8 mustEqual 58
|
||||
unk9 mustEqual 57413
|
||||
unk10 mustEqual 11
|
||||
unk12 mustEqual 76
|
||||
unk13 mustEqual 96
|
||||
unk14 mustEqual 64
|
||||
unk15 mustEqual 16
|
||||
unk7 mustEqual 15092
|
||||
unk8 mustEqual 57413
|
||||
unk9 mustEqual 19467
|
||||
unk10 mustEqual 16480
|
||||
unk11 mustEqual 16
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
|
|
@ -39,20 +57,20 @@ val unk0_ABC: ByteVector = hex"90 048640001030c28022404c0061007a0065007200310039
|
|||
unk00 = 0,
|
||||
outfit_id = PlanetSideGUID(6418),
|
||||
unk1 = 0,
|
||||
unk2 = 49984,
|
||||
unk3 = 10,
|
||||
unk2 = 0,
|
||||
unk3 = 64,
|
||||
unk4 = 195,
|
||||
unk5 = 10,
|
||||
unk6 = 0,
|
||||
member_name = "Lazer1982",
|
||||
unk7 = 244,
|
||||
unk8 = 58,
|
||||
unk9 = 57413,
|
||||
unk10 = 11,
|
||||
unk12 = 76,
|
||||
unk13 = 96,
|
||||
unk14 = 64,
|
||||
unk15 = 16,
|
||||
unk7 = 15092,
|
||||
unk8 = 57413,
|
||||
unk9 = 19467,
|
||||
unk10 = 16480,
|
||||
unk11 = 16,
|
||||
)
|
||||
val pkt = PacketCoding.encodePacket(msg).require.toByteVector
|
||||
|
||||
pkt mustEqual unk0_ABC
|
||||
pkt mustEqual unk0_ABC_Lazer
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue