mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-16 17:05:03 +01:00
Merge branch 'main' into feature/rasta
# Conflicts: # server/channelserver/handlers_mercenary.go
This commit is contained in:
@@ -1621,7 +1621,7 @@ func handleMsgMhfGetEarthStatus(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
s.QueueAck(pkt.AckHandle, resp.Data())
|
s.QueueAck(pkt.AckHandle, resp.Data())
|
||||||
*/
|
*/
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckBufSucceed(s, pkt.AckHandle, []byte{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfRegistSpabiTime(s *Session, p mhfpacket.MHFPacket) {}
|
func handleMsgMhfRegistSpabiTime(s *Session, p mhfpacket.MHFPacket) {}
|
||||||
|
|||||||
@@ -14,37 +14,25 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// THERE ARE [PARTENER] [MERCENARY] [OTOMO AIRU]
|
|
||||||
|
|
||||||
///////////////////////////////////////////
|
|
||||||
/// PARTENER //
|
|
||||||
///////////////////////////////////////////
|
|
||||||
|
|
||||||
func handleMsgMhfLoadPartner(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfLoadPartner(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfLoadPartner)
|
pkt := p.(*mhfpacket.MsgMhfLoadPartner)
|
||||||
// load partner from database
|
|
||||||
var data []byte
|
var data []byte
|
||||||
err := s.server.db.QueryRow("SELECT partner FROM characters WHERE id = $1", s.charID).Scan(&data)
|
err := s.server.db.QueryRow("SELECT partner FROM characters WHERE id = $1", s.charID).Scan(&data)
|
||||||
if err != nil {
|
|
||||||
s.logger.Fatal("Failed to get partner savedata from db", zap.Error(err))
|
|
||||||
}
|
|
||||||
if len(data) > 0 {
|
if len(data) > 0 {
|
||||||
doAckBufSucceed(s, pkt.AckHandle, data)
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
||||||
} else {
|
} else {
|
||||||
|
s.logger.Warn("Failed to load partner data", zap.Error(err))
|
||||||
doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
||||||
}
|
}
|
||||||
// TODO(Andoryuuta): Figure out unusual double ack. One sized, one not.
|
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfSavePartner(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfSavePartner(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfSavePartner)
|
pkt := p.(*mhfpacket.MsgMhfSavePartner)
|
||||||
|
|
||||||
dumpSaveData(s, pkt.RawDataPayload, "partner")
|
dumpSaveData(s, pkt.RawDataPayload, "partner")
|
||||||
|
|
||||||
_, err := s.server.db.Exec("UPDATE characters SET partner=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
_, err := s.server.db.Exec("UPDATE characters SET partner=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update partner savedata in db", zap.Error(err))
|
s.logger.Warn("Failed to save partner data", zap.Error(err))
|
||||||
}
|
}
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
||||||
}
|
}
|
||||||
@@ -59,13 +47,10 @@ func handleMsgMhfLoadHunterNavi(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
pkt := p.(*mhfpacket.MsgMhfLoadHunterNavi)
|
pkt := p.(*mhfpacket.MsgMhfLoadHunterNavi)
|
||||||
var data []byte
|
var data []byte
|
||||||
err := s.server.db.QueryRow("SELECT hunternavi FROM characters WHERE id = $1", s.charID).Scan(&data)
|
err := s.server.db.QueryRow("SELECT hunternavi FROM characters WHERE id = $1", s.charID).Scan(&data)
|
||||||
if err != nil {
|
|
||||||
s.logger.Fatal("Failed to get hunter navigation savedata from db", zap.Error(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(data) > 0 {
|
if len(data) > 0 {
|
||||||
doAckBufSucceed(s, pkt.AckHandle, data)
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
||||||
} else {
|
} else {
|
||||||
|
s.logger.Warn("Failed to load navi data", zap.Error(err))
|
||||||
// set first byte to 1 to avoid pop up every time without save
|
// set first byte to 1 to avoid pop up every time without save
|
||||||
body := make([]byte, 0x226)
|
body := make([]byte, 0x226)
|
||||||
body[0] = 1
|
body[0] = 1
|
||||||
@@ -75,16 +60,12 @@ func handleMsgMhfLoadHunterNavi(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
func handleMsgMhfSaveHunterNavi(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfSaveHunterNavi(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfSaveHunterNavi)
|
pkt := p.(*mhfpacket.MsgMhfSaveHunterNavi)
|
||||||
|
|
||||||
dumpSaveData(s, pkt.RawDataPayload, "hunternavi")
|
|
||||||
|
|
||||||
if pkt.IsDataDiff {
|
if pkt.IsDataDiff {
|
||||||
var data []byte
|
var data []byte
|
||||||
|
|
||||||
// Load existing save
|
// Load existing save
|
||||||
err := s.server.db.QueryRow("SELECT hunternavi FROM characters WHERE id = $1", s.charID).Scan(&data)
|
err := s.server.db.QueryRow("SELECT hunternavi FROM characters WHERE id = $1", s.charID).Scan(&data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to get hunternavi savedata from db", zap.Error(err))
|
s.logger.Warn("Failed to save navi data", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we actually had any hunternavi data, using a blank buffer if not.
|
// Check if we actually had any hunternavi data, using a blank buffer if not.
|
||||||
@@ -97,19 +78,17 @@ func handleMsgMhfSaveHunterNavi(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
// Perform diff and compress it to write back to db
|
// Perform diff and compress it to write back to db
|
||||||
s.logger.Info("Diffing...")
|
s.logger.Info("Diffing...")
|
||||||
saveOutput := deltacomp.ApplyDataDiff(pkt.RawDataPayload, data)
|
saveOutput := deltacomp.ApplyDataDiff(pkt.RawDataPayload, data)
|
||||||
|
|
||||||
_, err = s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", saveOutput, s.charID)
|
_, err = s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", saveOutput, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update hunternavi savedata in db", zap.Error(err))
|
s.logger.Warn("Failed to save navi data", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
s.logger.Info("Wrote recompressed hunternavi back to DB.")
|
s.logger.Info("Wrote recompressed hunternavi back to DB.")
|
||||||
} else {
|
} else {
|
||||||
dumpSaveData(s, pkt.RawDataPayload, "hunternavi")
|
dumpSaveData(s, pkt.RawDataPayload, "hunternavi")
|
||||||
// simply update database, no extra processing
|
// simply update database, no extra processing
|
||||||
_, err := s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
_, err := s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update hunternavi savedata in db", zap.Error(err))
|
s.logger.Warn("Failed to save navi data", zap.Error(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
||||||
@@ -444,5 +423,3 @@ func GetCatDetails(bf *byteframe.ByteFrame) []CatDefinition {
|
|||||||
}
|
}
|
||||||
return cats
|
return cats
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////
|
|
||||||
|
|||||||
Reference in New Issue
Block a user