mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-19 18:14:44 +00:00
Packet: LoadMapMessage (#61)
* Add LoadMapMessage packet * Add LoadMapMessage test
This commit is contained in:
parent
83264de081
commit
a37fb3214c
|
|
@ -376,7 +376,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
case UnknownMessage46 => noDecoder(opcode)
|
||||
case CharacterCreateRequestMessage => game.CharacterCreateRequestMessage.decode
|
||||
case CharacterRequestMessage => game.CharacterRequestMessage.decode
|
||||
case LoadMapMessage => noDecoder(opcode)
|
||||
case LoadMapMessage => game.LoadMapMessage.decode
|
||||
|
||||
// OPCODE 50
|
||||
case SetCurrentAvatarMessage => game.SetCurrentAvatarMessage.decode
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
// 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._
|
||||
|
||||
|
||||
/**
|
||||
* map_name and nav_map_name should match (unless you want to be lost :))
|
||||
*
|
||||
* ex:
|
||||
* map13 & home3 = vs sanc
|
||||
* map10 & z10 = amerish
|
||||
* map07 & z7 = esamir
|
||||
*/
|
||||
final case class LoadMapMessage(map_name : String,
|
||||
nav_map_name : String, // Also determines loading screen
|
||||
unk1 : Int,
|
||||
unk2 : Long,
|
||||
weapons_unlocked : Boolean,
|
||||
checksum : Long) //?
|
||||
extends PlanetSideGamePacket {
|
||||
type Packet = LoadMapMessage
|
||||
def opcode = GamePacketOpcode.LoadMapMessage
|
||||
def encode = LoadMapMessage.encode(this)
|
||||
}
|
||||
|
||||
object LoadMapMessage extends Marshallable[LoadMapMessage] {
|
||||
implicit val codec : Codec[LoadMapMessage] = (
|
||||
("map_name" | PacketHelpers.encodedString) :: // TODO: Implement encodedStringWithLimit
|
||||
("nav_map_name" | PacketHelpers.encodedString) :: //TODO: Implement encodedStringWithLimit
|
||||
("unk1" | uint16L) ::
|
||||
("unk2" | uint32L) ::
|
||||
("weapons_unlocked" | bool) ::
|
||||
("checksum" | uint32L)
|
||||
).as[LoadMapMessage]
|
||||
}
|
||||
|
|
@ -837,6 +837,31 @@ class GamePacketTest extends Specification {
|
|||
}
|
||||
}
|
||||
|
||||
"LoadMapMessage" should {
|
||||
val string = hex"31 85 6D61703130 83 7A3130 0FA0 19000000 F6 F1 60 86 80"
|
||||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case LoadMapMessage(map_name, nav_map_name, unk1, unk2, weapons_unlocked, unk3) =>
|
||||
map_name mustEqual "map10"
|
||||
nav_map_name mustEqual "z10"
|
||||
unk1 mustEqual 40975
|
||||
unk2 mustEqual 25
|
||||
weapons_unlocked mustEqual true
|
||||
unk3 mustEqual 230810349
|
||||
case default =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode" in {
|
||||
val msg = LoadMapMessage("map10","z10",40975,25,true,230810349)
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
pkt mustEqual string
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"QuantityUpdateMessage" should {
|
||||
val string = hex"3D 5300 7B000000"
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
|
|||
log.debug("Object: " + obj)
|
||||
// LoadMapMessage 13714 in mossy .gcap
|
||||
// XXX: hardcoded shit
|
||||
sendRawResponse(hex"31 85 6D 61 70 31 33 85 68 6F 6D 65 33 A4 9C 19 00 00 00 AE 30 5E 70 00 ")
|
||||
sendResponse(PacketCoding.CreateGamePacket(0, LoadMapMessage("map13","home3",40100,25,true,3770441820L))) //VS Sanctuary
|
||||
sendRawResponse(objectHex)
|
||||
|
||||
// These object_guids are specfic to VS Sanc
|
||||
|
|
|
|||
Loading…
Reference in a new issue