mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-07-16 08:55:18 +00:00
Improve Outfit packets
This commit is contained in:
parent
d75ab1166f
commit
1e7c0123a4
3 changed files with 63 additions and 45 deletions
|
|
@ -13,15 +13,15 @@ final case class OutfitMemberEvent(
|
||||||
unk1: Int,
|
unk1: Int,
|
||||||
unk2: Int,
|
unk2: Int,
|
||||||
unk3: Int,
|
unk3: Int,
|
||||||
|
unk4: Int,
|
||||||
|
unk5: Int,
|
||||||
|
unk6: Int,
|
||||||
member_name: String,
|
member_name: String,
|
||||||
unk7: Int,
|
unk7: Int,
|
||||||
unk8: Int,
|
unk8: Int,
|
||||||
unk9: Int,
|
unk9: Int,
|
||||||
unk10: Int,
|
unk10: Int,
|
||||||
unk12: Int,
|
unk11: Int,
|
||||||
unk13: Int,
|
|
||||||
unk14: Int,
|
|
||||||
unk15: Int,
|
|
||||||
) extends PlanetSideGamePacket {
|
) extends PlanetSideGamePacket {
|
||||||
type Packet = OutfitMemberEvent
|
type Packet = OutfitMemberEvent
|
||||||
def opcode = GamePacketOpcode.OutfitMemberEvent
|
def opcode = GamePacketOpcode.OutfitMemberEvent
|
||||||
|
|
@ -32,26 +32,26 @@ object OutfitMemberEvent extends Marshallable[OutfitMemberEvent] {
|
||||||
implicit val codec: Codec[OutfitMemberEvent] = (
|
implicit val codec: Codec[OutfitMemberEvent] = (
|
||||||
("unk00" | uintL(2)) ::
|
("unk00" | uintL(2)) ::
|
||||||
("outfit_id" | PlanetSideGUID.codec) ::
|
("outfit_id" | PlanetSideGUID.codec) ::
|
||||||
("unk1" | uint16L) ::
|
("unk1" | uint8L) ::
|
||||||
("unk2" | uint16L) ::
|
("unk2" | uint8L) ::
|
||||||
("unk3" | uint16L) ::
|
("unk3" | uint8L) ::
|
||||||
|
("unk4" | uint8L) ::
|
||||||
|
("unk5" | uint8L) ::
|
||||||
|
("unk6" | uint8L) ::
|
||||||
("member_name" | PacketHelpers.encodedWideStringAligned(6)) ::
|
("member_name" | PacketHelpers.encodedWideStringAligned(6)) ::
|
||||||
("unk7" | uint8L) ::
|
("unk7" | uint16L) ::
|
||||||
("unk8" | uint8L) ::
|
("unk8" | uint16L) ::
|
||||||
("unk9" | uint16L) ::
|
("unk9" | uint16L) ::
|
||||||
("unk10" | uint8L) ::
|
("unk10" | uint16L) ::
|
||||||
("unk12" | uint8L) ::
|
("unk11" | uint8L)
|
||||||
("unk13" | uint8L) ::
|
|
||||||
("unk14" | uint8L) ::
|
|
||||||
("unk15" | uint8L)
|
|
||||||
).xmap[OutfitMemberEvent](
|
).xmap[OutfitMemberEvent](
|
||||||
{
|
{
|
||||||
case unk00 :: outfit_id :: u1 :: u2 :: u3 :: member_name :: u7 :: u8 :: u9 :: u10 :: u12 :: u13 :: u14 :: u15 :: HNil =>
|
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, member_name, u7, u8, u9, u10, u12, u13, u14, u15)
|
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) =>
|
case OutfitMemberEvent(unk00, outfit_id, u1, u2, u3, u4, u5, u6, member_name, u7, u8, u9, u10, u11) =>
|
||||||
unk00 :: outfit_id :: u1 :: u2 :: u3 :: member_name :: u7 :: u8 :: u9 :: u10 :: u12 :: u13 :: u14 :: u15 :: HNil
|
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(
|
final case class OutfitMemberUpdate(
|
||||||
outfit_guid: PlanetSideGUID,
|
outfit_guid: PlanetSideGUID,
|
||||||
unk1: Int,
|
unk1: Int,
|
||||||
unk2: Int,
|
avatar_guid: PlanetSideGUID,
|
||||||
unk3: Int,
|
unk3: Int,
|
||||||
) extends PlanetSideGamePacket {
|
) extends PlanetSideGamePacket {
|
||||||
type Packet = OutfitMemberUpdate
|
type Packet = OutfitMemberUpdate
|
||||||
|
|
@ -22,7 +22,7 @@ object OutfitMemberUpdate extends Marshallable[OutfitMemberUpdate] {
|
||||||
implicit val codec: Codec[OutfitMemberUpdate] = (
|
implicit val codec: Codec[OutfitMemberUpdate] = (
|
||||||
("outfit_guid" | PlanetSideGUID.codec) ::
|
("outfit_guid" | PlanetSideGUID.codec) ::
|
||||||
("unk1" | uint16L) ::
|
("unk1" | uint16L) ::
|
||||||
("unk2" | uint16L) ::
|
("avatar_guid" | PlanetSideGUID.codec) ::
|
||||||
("unk3" | uint8L)
|
("unk3" | uint8L)
|
||||||
).xmap[OutfitMemberUpdate](
|
).xmap[OutfitMemberUpdate](
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,25 +10,43 @@ import scodec.bits._
|
||||||
|
|
||||||
class OutfitMemberEventTest extends Specification {
|
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 3518 4000 1a4e 4100 2 180 450078007000650072007400 8483 07e0 119d bfe0 70" // 0x90048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010
|
||||||
val unk0_ABC: ByteVector = hex"90 048640001030c28022404c0061007a00650072003100390038003200f43a45e00b4c604010"
|
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 {
|
"decode Unk0 ABC" in {
|
||||||
PacketCoding.decodePacket(unk0_ABC).require match {
|
PacketCoding.decodePacket(unk0_ABC_Lazer).require match {
|
||||||
case OutfitMemberEvent(unk00, outfit_guid, unk1, unk2, unk3, member_name, unk7, unk8, unk9, unk10, unk12, unk13, unk14, unk15) =>
|
case OutfitMemberEvent(unk00, outfit_guid, unk1, unk2, unk3, unk4, unk5, unk6, member_name, unk7, unk8, unk9, unk10, unk11) =>
|
||||||
unk00 mustEqual 0
|
unk00 mustEqual 0
|
||||||
outfit_guid mustEqual PlanetSideGUID(6418)
|
outfit_guid mustEqual PlanetSideGUID(6418)
|
||||||
unk1 mustEqual 0
|
unk1 mustEqual 0
|
||||||
unk2 mustEqual 49984
|
unk2 mustEqual 0
|
||||||
unk3 mustEqual 10
|
unk3 mustEqual 64
|
||||||
|
unk4 mustEqual 195
|
||||||
|
unk5 mustEqual 10
|
||||||
|
unk6 mustEqual 0
|
||||||
member_name mustEqual "Lazer1982"
|
member_name mustEqual "Lazer1982"
|
||||||
unk7 mustEqual 244
|
unk7 mustEqual 15092
|
||||||
unk8 mustEqual 58
|
unk8 mustEqual 57413
|
||||||
unk9 mustEqual 57413
|
unk9 mustEqual 19467
|
||||||
unk10 mustEqual 11
|
unk10 mustEqual 16480
|
||||||
unk12 mustEqual 76
|
unk11 mustEqual 16
|
||||||
unk13 mustEqual 96
|
|
||||||
unk14 mustEqual 64
|
|
||||||
unk15 mustEqual 16
|
|
||||||
case _ =>
|
case _ =>
|
||||||
ko
|
ko
|
||||||
}
|
}
|
||||||
|
|
@ -39,20 +57,20 @@ val unk0_ABC: ByteVector = hex"90 048640001030c28022404c0061007a0065007200310039
|
||||||
unk00 = 0,
|
unk00 = 0,
|
||||||
outfit_id = PlanetSideGUID(6418),
|
outfit_id = PlanetSideGUID(6418),
|
||||||
unk1 = 0,
|
unk1 = 0,
|
||||||
unk2 = 49984,
|
unk2 = 0,
|
||||||
unk3 = 10,
|
unk3 = 64,
|
||||||
|
unk4 = 195,
|
||||||
|
unk5 = 10,
|
||||||
|
unk6 = 0,
|
||||||
member_name = "Lazer1982",
|
member_name = "Lazer1982",
|
||||||
unk7 = 244,
|
unk7 = 15092,
|
||||||
unk8 = 58,
|
unk8 = 57413,
|
||||||
unk9 = 57413,
|
unk9 = 19467,
|
||||||
unk10 = 11,
|
unk10 = 16480,
|
||||||
unk12 = 76,
|
unk11 = 16,
|
||||||
unk13 = 96,
|
|
||||||
unk14 = 64,
|
|
||||||
unk15 = 16,
|
|
||||||
)
|
)
|
||||||
val pkt = PacketCoding.encodePacket(msg).require.toByteVector
|
val pkt = PacketCoding.encodePacket(msg).require.toByteVector
|
||||||
|
|
||||||
pkt mustEqual unk0_ABC
|
pkt mustEqual unk0_ABC_Lazer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue