decode GetUdGuildMapInfo more

This commit is contained in:
wish
2023-10-30 23:08:52 +11:00
parent e3f9b66257
commit fb3ecd0305

View File

@@ -482,8 +482,9 @@ type Tile struct {
ID uint16 ID uint16
NextID uint16 NextID uint16
BranchID uint16 BranchID uint16
QuestFile uint16 QuestFile1 uint16
Unk0 uint32 QuestFile2 uint16
QuestFile3 uint16
BranchIndex uint8 BranchIndex uint8
Type uint8 Type uint8
PointsReq int32 PointsReq int32
@@ -515,12 +516,12 @@ func (im *InterceptionMaps) Value() (valuer driver.Value, err error) {
func (md *MapData) GetClaimed() uint32 { func (md *MapData) GetClaimed() uint32 {
var claimed uint32 var claimed uint32
for _, tile := range md.Tiles { for _, tile := range md.Tiles {
if md.Points[tile.QuestFile]-tile.PointsReq > 0 { if md.Points[tile.QuestFile1]-tile.PointsReq > 0 {
tile.Claimed = true tile.Claimed = true
if tile.PointsReq > 0 { if tile.PointsReq > 0 {
claimed++ claimed++
} }
md.Points[tile.QuestFile] -= tile.PointsReq md.Points[tile.QuestFile1] -= tile.PointsReq
} }
} }
return claimed return claimed
@@ -598,16 +599,17 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
err = s.server.db.QueryRow(`SELECT interception_maps FROM guilds WHERE id=$1`, guild.ID).Scan(&interceptionMaps) err = s.server.db.QueryRow(`SELECT interception_maps FROM guilds WHERE id=$1`, guild.ID).Scan(&interceptionMaps)
if err != nil { if err != nil {
s.server.logger.Error("Failed to load interception map data", zap.Error(err)) s.server.logger.Error("Failed to load interception map data", zap.Error(err))
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4)) doAckBufSucceed(s, pkt.AckHandle, []byte{0xFF})
return return
} }
bf := byteframe.NewByteFrame()
bf.WriteUint8(0) // No error
var tilesClaimed uint32 var tilesClaimed uint32
currentMapID, prevMapID := interceptionMaps.CurrPrevID() currentMapID, prevMapID := interceptionMaps.CurrPrevID()
currProg := byteframe.NewByteFrame() currProg := byteframe.NewByteFrame()
prevProg := byteframe.NewByteFrame() prevProg := byteframe.NewByteFrame()
bf := byteframe.NewByteFrame() bf.WriteUint8(uint8(len(interceptionMaps.Maps)))
bf.WriteUint16(uint16(len(interceptionMaps.Maps)))
for _, _map := range interceptionMaps.Maps { for _, _map := range interceptionMaps.Maps {
bf.WriteUint32(_map.ID) bf.WriteUint32(_map.ID)
bf.WriteUint32(_map.NextID) bf.WriteUint32(_map.NextID)
@@ -615,8 +617,9 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
bf.WriteUint16(tile.ID) bf.WriteUint16(tile.ID)
bf.WriteUint16(tile.NextID) bf.WriteUint16(tile.NextID)
bf.WriteUint16(tile.BranchID) bf.WriteUint16(tile.BranchID)
bf.WriteUint16(tile.QuestFile) bf.WriteUint16(tile.QuestFile1)
bf.WriteUint32(tile.Unk0) bf.WriteUint16(tile.QuestFile2)
bf.WriteUint16(tile.QuestFile3)
bf.WriteUint8(tile.BranchIndex) bf.WriteUint8(tile.BranchIndex)
bf.WriteUint8(tile.Type) bf.WriteUint8(tile.Type)
bf.WriteInt32(tile.PointsReq) bf.WriteInt32(tile.PointsReq)
@@ -636,14 +639,14 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
currProg.WriteUint8(uint8(len(_map.Tiles))) currProg.WriteUint8(uint8(len(_map.Tiles)))
for _, tile := range _map.Tiles { for _, tile := range _map.Tiles {
if tile.Type != 1 { if tile.Type != 1 {
if _map.Points[tile.QuestFile]-tile.PointsReq > 0 { if _map.Points[tile.QuestFile1]-tile.PointsReq > 0 {
tile.Claimed = true tile.Claimed = true
tilesClaimed++ tilesClaimed++
_map.Points[tile.QuestFile] -= tile.PointsReq _map.Points[tile.QuestFile1] -= tile.PointsReq
currProg.WriteInt32(tile.PointsReq) currProg.WriteInt32(tile.PointsReq)
} else { } else {
currProg.WriteInt32(_map.Points[tile.QuestFile]) currProg.WriteInt32(_map.Points[tile.QuestFile1])
_map.Points[tile.QuestFile] = 0 _map.Points[tile.QuestFile1] = 0
} }
} else { } else {
currProg.WriteInt32(0) currProg.WriteInt32(0)
@@ -652,8 +655,9 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
currProg.WriteUint16(tile.ID) currProg.WriteUint16(tile.ID)
currProg.WriteUint16(tile.NextID) currProg.WriteUint16(tile.NextID)
currProg.WriteUint16(tile.BranchID) currProg.WriteUint16(tile.BranchID)
currProg.WriteUint16(tile.QuestFile) currProg.WriteUint16(tile.QuestFile1)
currProg.WriteUint32(tile.Unk0) currProg.WriteUint16(tile.QuestFile2)
currProg.WriteUint16(tile.QuestFile3)
currProg.WriteUint8(tile.BranchIndex) currProg.WriteUint8(tile.BranchIndex)
currProg.WriteUint8(tile.Type) currProg.WriteUint8(tile.Type)
if tile.Claimed || tile.Type == 1 { if tile.Claimed || tile.Type == 1 {
@@ -669,14 +673,14 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
prevProg.WriteUint8(uint8(len(_map.Tiles))) prevProg.WriteUint8(uint8(len(_map.Tiles)))
for _, tile := range _map.Tiles { for _, tile := range _map.Tiles {
if tile.Type != 1 { if tile.Type != 1 {
if _map.Points[tile.QuestFile]-tile.PointsReq > 0 { if _map.Points[tile.QuestFile1]-tile.PointsReq > 0 {
tile.Claimed = true tile.Claimed = true
tilesClaimed++ tilesClaimed++
_map.Points[tile.QuestFile] -= tile.PointsReq _map.Points[tile.QuestFile1] -= tile.PointsReq
prevProg.WriteInt32(tile.PointsReq) prevProg.WriteInt32(tile.PointsReq)
} else { } else {
prevProg.WriteInt32(_map.Points[tile.QuestFile]) prevProg.WriteInt32(_map.Points[tile.QuestFile1])
_map.Points[tile.QuestFile] = 0 _map.Points[tile.QuestFile1] = 0
} }
} else { } else {
prevProg.WriteInt32(0) prevProg.WriteInt32(0)
@@ -685,8 +689,9 @@ func handleMsgMhfGetUdGuildMapInfo(s *Session, p mhfpacket.MHFPacket) {
prevProg.WriteUint16(tile.ID) prevProg.WriteUint16(tile.ID)
prevProg.WriteUint16(tile.NextID) prevProg.WriteUint16(tile.NextID)
prevProg.WriteUint16(tile.BranchID) prevProg.WriteUint16(tile.BranchID)
prevProg.WriteUint16(tile.QuestFile) prevProg.WriteUint16(tile.QuestFile1)
prevProg.WriteUint32(tile.Unk0) prevProg.WriteUint16(tile.QuestFile2)
prevProg.WriteUint16(tile.QuestFile3)
prevProg.WriteUint8(tile.BranchIndex) prevProg.WriteUint8(tile.BranchIndex)
prevProg.WriteUint8(tile.Type) prevProg.WriteUint8(tile.Type)
if tile.Claimed || tile.Type == 1 { if tile.Claimed || tile.Type == 1 {
@@ -931,7 +936,7 @@ func GenerateUdGuildMaps() ([]MapData, []MapBranch) {
branchIndex++ branchIndex++
newTile := Tile{ newTile := Tile{
ID: newBranchTile, ID: newBranchTile,
QuestFile: uint16(j%5 + 58079), QuestFile1: uint16(j%5 + 58079),
BranchIndex: uint8(branchIndex), BranchIndex: uint8(branchIndex),
Type: 0, Type: 0,
PointsReq: 100, PointsReq: 100,