mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-12 15:04:39 +00:00
Packet: LoadMapMessage (#61)
* Add LoadMapMessage packet * Add LoadMapMessage test
This commit is contained in:
parent
83264de081
commit
a37fb3214c
4 changed files with 65 additions and 2 deletions
|
|
@ -376,7 +376,7 @@ object GamePacketOpcode extends Enumeration {
|
||||||
case UnknownMessage46 => noDecoder(opcode)
|
case UnknownMessage46 => noDecoder(opcode)
|
||||||
case CharacterCreateRequestMessage => game.CharacterCreateRequestMessage.decode
|
case CharacterCreateRequestMessage => game.CharacterCreateRequestMessage.decode
|
||||||
case CharacterRequestMessage => game.CharacterRequestMessage.decode
|
case CharacterRequestMessage => game.CharacterRequestMessage.decode
|
||||||
case LoadMapMessage => noDecoder(opcode)
|
case LoadMapMessage => game.LoadMapMessage.decode
|
||||||
|
|
||||||
// OPCODE 50
|
// OPCODE 50
|
||||||
case SetCurrentAvatarMessage => game.SetCurrentAvatarMessage.decode
|
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 {
|
"QuantityUpdateMessage" should {
|
||||||
val string = hex"3D 5300 7B000000"
|
val string = hex"3D 5300 7B000000"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
|
||||||
log.debug("Object: " + obj)
|
log.debug("Object: " + obj)
|
||||||
// LoadMapMessage 13714 in mossy .gcap
|
// LoadMapMessage 13714 in mossy .gcap
|
||||||
// XXX: hardcoded shit
|
// 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)
|
sendRawResponse(objectHex)
|
||||||
|
|
||||||
// These object_guids are specfic to VS Sanc
|
// These object_guids are specfic to VS Sanc
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue