mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-02-12 19:31:04 +00:00
Working login to TR Sancuary!
Packet: SetCurrentAvatarMessage Lots of hacks to get here, but wow, what a milestone.
This commit is contained in:
parent
e0db8ec2b7
commit
5fa0610208
10 changed files with 76 additions and 13 deletions
|
|
@ -347,7 +347,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
case UnknownMessage21 => noDecoder(opcode)
|
||||
case BindPlayerMessage => noDecoder(opcode)
|
||||
case ObjectCreateMessage_Duplicate => noDecoder(opcode)
|
||||
case ObjectCreateMessage => noDecoder(opcode)
|
||||
case ObjectCreateMessage => game.ObjectCreateMessage.decode
|
||||
case ObjectDeleteMessage => noDecoder(opcode)
|
||||
case PingMsg => noDecoder(opcode)
|
||||
case VehicleStateMessage => noDecoder(opcode)
|
||||
|
|
@ -379,7 +379,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
case LoadMapMessage => noDecoder(opcode)
|
||||
|
||||
// OPCODE 50
|
||||
case SetCurrentAvatarMessage => noDecoder(opcode)
|
||||
case SetCurrentAvatarMessage => game.SetCurrentAvatarMessage.decode
|
||||
case ObjectHeldMessage => noDecoder(opcode)
|
||||
case WeaponFireMessage => noDecoder(opcode)
|
||||
case AvatarJumpMessage => noDecoder(opcode)
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ final case class CharacterInfoMessage(zoneId : PlanetSideZoneID,
|
|||
|
||||
object CharacterInfoMessage extends Marshallable[CharacterInfoMessage] {
|
||||
implicit val codec : Codec[CharacterInfoMessage] = (
|
||||
("unknown" | uint32L).unit(0) ::
|
||||
("unknown" | uint32L).unit(0) :: // this type is set to unit as we dont know what it is yet
|
||||
("zoneId" | PlanetSideZoneID.codec) ::
|
||||
("charId" | uint32L) ::
|
||||
("charGUID" | PlanetSideGUID.codec) ::
|
||||
|
|
|
|||
|
|
@ -4,9 +4,6 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, Plan
|
|||
import scodec.Codec
|
||||
import scodec.codecs._
|
||||
|
||||
/**
|
||||
* Created by Root on 5/19/2016.
|
||||
*/
|
||||
final case class KeepAliveMessage(code : Int) extends PlanetSideGamePacket {
|
||||
type Packet = KeepAliveMessage
|
||||
def opcode = GamePacketOpcode.KeepAliveMessage
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ case class ObjectCreateMessageParent(guid : Int, slot : Int)
|
|||
case class ObjectCreateMessage(streamLength : Long,
|
||||
objectClass : Int,
|
||||
guid : Int,
|
||||
parentInfo : Option[ObjectCreateMessageParent])
|
||||
parentInfo : Option[ObjectCreateMessageParent]
|
||||
)
|
||||
extends PlanetSideGamePacket {
|
||||
|
||||
def opcode = GamePacketOpcode.ObjectCreateMessage
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
// 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._
|
||||
|
||||
final case class SetCurrentAvatarMessage(guid: PlanetSideGUID, unk1 : Int, unk2 : Int) extends PlanetSideGamePacket {
|
||||
type Packet = SetCurrentAvatarMessage
|
||||
def opcode = GamePacketOpcode.SetCurrentAvatarMessage
|
||||
def encode = SetCurrentAvatarMessage.encode(this)
|
||||
}
|
||||
|
||||
object SetCurrentAvatarMessage extends Marshallable[SetCurrentAvatarMessage] {
|
||||
implicit val codec: Codec[SetCurrentAvatarMessage] = (
|
||||
("guid" | PlanetSideGUID.codec) ::
|
||||
("unk1" | uint(3)) ::
|
||||
("unk2" | uint(3))
|
||||
).as[SetCurrentAvatarMessage]
|
||||
}
|
||||
|
|
@ -142,5 +142,26 @@ class GamePacketTest extends Specification {
|
|||
(hex"1f".bits ++ bin"0" ++ hex"01000000".bits).toByteVector
|
||||
}
|
||||
}
|
||||
|
||||
"ObjectCreateMessage" should {
|
||||
val packet = hex"18 CF 13 00 00 BC 87 00 0A F0 16 C3 43 A1 30 90 00 02 C0 40 00 08 70 43 00 68 00 6F 00 72 00 64 00 54 00 52 00 82 65 1F F5 9E 80 80 00 00 00 00 00 3F FF C0 00 00 00 20 00 00 00 20 27 03 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FC CC 10 00 03 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 00 00 00 01 00 7E C8 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 C0 00 42 C5 46 86 C7 00 00 02 A0 00 00 12 60 78 70 65 5F 77 61 72 70 5F 67 61 74 65 5F 75 73 61 67 65 92 78 70 65 5F 69 6E 73 74 61 6E 74 5F 61 63 74 69 6F 6E 92 78 70 65 5F 73 61 6E 63 74 75 61 72 79 5F 68 65 6C 70 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 32 8E 78 70 65 5F 66 6F 72 6D 5F 73 71 75 61 64 8E 78 70 65 5F 74 68 5F 6E 6F 6E 73 61 6E 63 8B 78 70 65 5F 74 68 5F 61 6D 6D 6F 90 78 70 65 5F 74 68 5F 66 69 72 65 6D 6F 64 65 73 8F 75 73 65 64 5F 63 68 61 69 6E 62 6C 61 64 65 9A 76 69 73 69 74 65 64 5F 62 72 6F 61 64 63 61 73 74 5F 77 61 72 70 67 61 74 65 8E 76 69 73 69 74 65 64 5F 6C 6F 63 6B 65 72 8D 75 73 65 64 5F 70 75 6E 69 73 68 65 72 88 75 73 65 64 5F 72 65 6B 8D 75 73 65 64 5F 72 65 70 65 61 74 65 72 9F 76 69 73 69 74 65 64 5F 64 65 63 6F 6E 73 74 72 75 63 74 69 6F 6E 5F 74 65 72 6D 69 6E 61 6C 8F 75 73 65 64 5F 73 75 70 70 72 65 73 73 6F 72 96 76 69 73 69 74 65 64 5F 6F 72 64 65 72 5F 74 65 72 6D 69 6E 61 6C 85 6D 61 70 31 35 85 6D 61 70 31 34 85 6D 61 70 31 32 85 6D 61 70 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0A 36 13 88 04 00 40 00 00 10 00 04 00 00 4D 6E 40 10 41 00 00 00 40 00 18 08 38 1C C0 20 32 00 00 07 80 15 E1 D0 02 10 20 00 00 08 00 03 01 07 13 A8 04 06 40 00 00 10 03 20 BB 00 42 E4 00 00 01 00 0E 07 70 08 6C 80 00 06 40 01 C0 F0 01 13 90 00 00 C8 00 38 1E 40 23 32 00 00 19 00 07 03 D0 05 0E 40 00 03 20 00 E8 7B 00 A4 C8 00 00 64 00 DA 4F 80 14 E1 00 00 00 40 00 18 08 38 1F 40 20 32 00 00 0A 00 08 "
|
||||
val packet2 = hex"18 17 74 00 00 BC 8C 10 90 3B 45 C6 FA 94 00 9F F0 00 00 40 00 08 C0 44 00 69 00 66 00 66 00 45"
|
||||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(packet2).require match {
|
||||
case obj @ ObjectCreateMessage(len, cls, guid, parent) =>
|
||||
len === 29719
|
||||
cls === 121
|
||||
guid === 2497
|
||||
parent === None
|
||||
case default =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode" in {
|
||||
ok
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue