diff --git a/server/channelserver/handlers_house.go b/server/channelserver/handlers_house.go index b3aadf372..c979208d2 100644 --- a/server/channelserver/handlers_house.go +++ b/server/channelserver/handlers_house.go @@ -246,17 +246,13 @@ func handleMsgMhfLoadDecoMyset(s *Session, p mhfpacket.MHFPacket) { var data []byte err := s.server.db.QueryRow("SELECT decomyset FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Fatal("Failed to get preset decorations savedata from db", zap.Error(err)) + s.logger.Error("Failed to load decomyset", zap.Error(err)) } if len(data) > 0 { doAckBufSucceed(s, pkt.AckHandle, data) - //doAckBufSucceed(s, pkt.AckHandle, data) } else { - // set first byte to 1 to avoid pop up every time without save - body := make([]byte, 0x226) - body[0] = 1 - doAckBufSucceed(s, pkt.AckHandle, body) + doAckBufSucceed(s, pkt.AckHandle, []byte{0x01, 0x00}) } } @@ -267,7 +263,7 @@ func handleMsgMhfSaveDecoMyset(s *Session, p mhfpacket.MHFPacket) { bf := byteframe.NewByteFrameFromBytes(pkt.RawDataPayload[1:]) // skip first unk byte err := s.server.db.QueryRow("SELECT decomyset FROM characters WHERE id = $1", s.charID).Scan(&loadData) if err != nil { - s.logger.Fatal("Failed to get preset decorations savedata from db", zap.Error(err)) + s.logger.Error("Failed to load decomyset", zap.Error(err)) } else { numSets := bf.ReadUint8() // sets being written // empty save @@ -313,7 +309,7 @@ func handleMsgMhfSaveDecoMyset(s *Session, p mhfpacket.MHFPacket) { dumpSaveData(s, loadData, "decomyset") _, err := s.server.db.Exec("UPDATE characters SET decomyset=$1 WHERE id=$2", loadData, s.charID) if err != nil { - s.logger.Fatal("Failed to update decomyset savedata in db", zap.Error(err)) + s.logger.Error("Failed to save decomyset", zap.Error(err)) } } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) diff --git a/server/channelserver/handlers_mercenary.go b/server/channelserver/handlers_mercenary.go index 5a8808b54..3a855485f 100644 --- a/server/channelserver/handlers_mercenary.go +++ b/server/channelserver/handlers_mercenary.go @@ -21,7 +21,7 @@ func handleMsgMhfLoadPartner(s *Session, p mhfpacket.MHFPacket) { if len(data) > 0 { doAckBufSucceed(s, pkt.AckHandle, data) } else { - s.logger.Warn("Failed to load partner data", zap.Error(err)) + s.logger.Error("Failed to load partner", zap.Error(err)) doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}) } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) @@ -32,7 +32,7 @@ func handleMsgMhfSavePartner(s *Session, p mhfpacket.MHFPacket) { dumpSaveData(s, pkt.RawDataPayload, "partner") _, err := s.server.db.Exec("UPDATE characters SET partner=$1 WHERE id=$2", pkt.RawDataPayload, s.charID) if err != nil { - s.logger.Warn("Failed to save partner data", zap.Error(err)) + s.logger.Error("Failed to save partner", zap.Error(err)) } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) } @@ -50,10 +50,8 @@ func handleMsgMhfLoadHunterNavi(s *Session, p mhfpacket.MHFPacket) { if len(data) > 0 { doAckBufSucceed(s, pkt.AckHandle, data) } 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 + s.logger.Error("Failed to load hunternavi", zap.Error(err)) body := make([]byte, 0x226) - body[0] = 1 doAckBufSucceed(s, pkt.AckHandle, body) } } @@ -65,14 +63,13 @@ func handleMsgMhfSaveHunterNavi(s *Session, p mhfpacket.MHFPacket) { // Load existing save err := s.server.db.QueryRow("SELECT hunternavi FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Warn("Failed to save navi data", zap.Error(err)) + s.logger.Error("Failed to load hunternavi", zap.Error(err)) } // Check if we actually had any hunternavi data, using a blank buffer if not. // This is requried as the client will try to send a diff after character creation without a prior MsgMhfSaveHunterNavi packet. if len(data) == 0 { data = make([]byte, 0x226) - data[0] = 1 // set first byte to 1 to avoid pop up every time without save } // Perform diff and compress it to write back to db @@ -80,15 +77,15 @@ func handleMsgMhfSaveHunterNavi(s *Session, p mhfpacket.MHFPacket) { saveOutput := deltacomp.ApplyDataDiff(pkt.RawDataPayload, data) _, err = s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", saveOutput, s.charID) if err != nil { - s.logger.Warn("Failed to save navi data", zap.Error(err)) + s.logger.Error("Failed to save hunternavi", zap.Error(err)) } - s.logger.Info("Wrote recompressed hunternavi back to DB.") + s.logger.Info("Wrote recompressed hunternavi back to DB") } else { dumpSaveData(s, pkt.RawDataPayload, "hunternavi") // simply update database, no extra processing _, err := s.server.db.Exec("UPDATE characters SET hunternavi=$1 WHERE id=$2", pkt.RawDataPayload, s.charID) if err != nil { - s.logger.Warn("Failed to save navi data", zap.Error(err)) + s.logger.Error("Failed to save hunternavi", zap.Error(err)) } } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) diff --git a/server/channelserver/handlers_plate.go b/server/channelserver/handlers_plate.go index 172a5f134..7138535bb 100644 --- a/server/channelserver/handlers_plate.go +++ b/server/channelserver/handlers_plate.go @@ -12,28 +12,28 @@ func handleMsgMhfLoadPlateData(s *Session, p mhfpacket.MHFPacket) { var data []byte err := s.server.db.QueryRow("SELECT platedata FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Error("Failed to get plate data savedata from db", zap.Error(err)) + s.logger.Error("Failed to load platedata", zap.Error(err)) } if len(data) > 0 { doAckBufSucceed(s, pkt.AckHandle, data) } else { - doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4)) + doAckBufSucceed(s, pkt.AckHandle, []byte{}) } } func handleMsgMhfSavePlateData(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfSavePlateData) - dumpSaveData(s, pkt.RawDataPayload, "platedata") - if pkt.IsDataDiff { var data []byte // Load existing save err := s.server.db.QueryRow("SELECT platedata FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Fatal("Failed to get platedata savedata from db", zap.Error(err)) + s.logger.Error("Failed to load platedata", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } if len(data) > 0 { @@ -41,7 +41,9 @@ func handleMsgMhfSavePlateData(s *Session, p mhfpacket.MHFPacket) { s.logger.Info("Decompressing...") data, err = nullcomp.Decompress(data) if err != nil { - s.logger.Fatal("Failed to decompress savedata from db", zap.Error(err)) + s.logger.Error("Failed to decompress platedata", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } } else { // create empty save if absent @@ -52,20 +54,25 @@ func handleMsgMhfSavePlateData(s *Session, p mhfpacket.MHFPacket) { s.logger.Info("Diffing...") saveOutput, err := nullcomp.Compress(deltacomp.ApplyDataDiff(pkt.RawDataPayload, data)) if err != nil { - s.logger.Fatal("Failed to diff and compress platedata savedata", zap.Error(err)) + s.logger.Error("Failed to diff and compress platedata", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } _, err = s.server.db.Exec("UPDATE characters SET platedata=$1 WHERE id=$2", saveOutput, s.charID) if err != nil { - s.logger.Fatal("Failed to update platedata savedata in db", zap.Error(err)) + s.logger.Error("Failed to save platedata", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } - s.logger.Info("Wrote recompressed platedata back to DB.") + s.logger.Info("Wrote recompressed platedata back to DB") } else { + dumpSaveData(s, pkt.RawDataPayload, "platedata") // simply update database, no extra processing _, err := s.server.db.Exec("UPDATE characters SET platedata=$1 WHERE id=$2", pkt.RawDataPayload, s.charID) if err != nil { - s.logger.Fatal("Failed to update platedata savedata in db", zap.Error(err)) + s.logger.Error("Failed to save platedata", zap.Error(err)) } } @@ -77,28 +84,28 @@ func handleMsgMhfLoadPlateBox(s *Session, p mhfpacket.MHFPacket) { var data []byte err := s.server.db.QueryRow("SELECT platebox FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Error("Failed to get sigil box savedata from db", zap.Error(err)) + s.logger.Error("Failed to load platebox", zap.Error(err)) } if len(data) > 0 { doAckBufSucceed(s, pkt.AckHandle, data) } else { - doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4)) + doAckBufSucceed(s, pkt.AckHandle, []byte{}) } } func handleMsgMhfSavePlateBox(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfSavePlateBox) - dumpSaveData(s, pkt.RawDataPayload, "platebox") - if pkt.IsDataDiff { var data []byte // Load existing save err := s.server.db.QueryRow("SELECT platebox FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Fatal("Failed to get sigil box savedata from db", zap.Error(err)) + s.logger.Error("Failed to load platebox", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } // Decompress @@ -107,7 +114,9 @@ func handleMsgMhfSavePlateBox(s *Session, p mhfpacket.MHFPacket) { s.logger.Info("Decompressing...") data, err = nullcomp.Decompress(data) if err != nil { - s.logger.Fatal("Failed to decompress savedata from db", zap.Error(err)) + s.logger.Error("Failed to decompress platebox", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } } else { // create empty save if absent @@ -118,20 +127,25 @@ func handleMsgMhfSavePlateBox(s *Session, p mhfpacket.MHFPacket) { s.logger.Info("Diffing...") saveOutput, err := nullcomp.Compress(deltacomp.ApplyDataDiff(pkt.RawDataPayload, data)) if err != nil { - s.logger.Fatal("Failed to diff and compress savedata", zap.Error(err)) + s.logger.Error("Failed to diff and compress platebox", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } _, err = s.server.db.Exec("UPDATE characters SET platebox=$1 WHERE id=$2", saveOutput, s.charID) if err != nil { - s.logger.Fatal("Failed to update platebox savedata in db", zap.Error(err)) + s.logger.Error("Failed to save platebox", zap.Error(err)) + doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) + return } - s.logger.Info("Wrote recompressed platebox back to DB.") + s.logger.Info("Wrote recompressed platebox back to DB") } else { + dumpSaveData(s, pkt.RawDataPayload, "platebox") // simply update database, no extra processing _, err := s.server.db.Exec("UPDATE characters SET platebox=$1 WHERE id=$2", pkt.RawDataPayload, s.charID) if err != nil { - s.logger.Fatal("Failed to update platedata savedata in db", zap.Error(err)) + s.logger.Error("Failed to save platebox", zap.Error(err)) } } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) @@ -142,7 +156,7 @@ func handleMsgMhfLoadPlateMyset(s *Session, p mhfpacket.MHFPacket) { var data []byte err := s.server.db.QueryRow("SELECT platemyset FROM characters WHERE id = $1", s.charID).Scan(&data) if err != nil { - s.logger.Fatal("Failed to get presets sigil savedata from db", zap.Error(err)) + s.logger.Error("Failed to load platemyset", zap.Error(err)) } if len(data) > 0 { @@ -159,7 +173,7 @@ func handleMsgMhfSavePlateMyset(s *Session, p mhfpacket.MHFPacket) { dumpSaveData(s, pkt.RawDataPayload, "platemyset") _, err := s.server.db.Exec("UPDATE characters SET platemyset=$1 WHERE id=$2", pkt.RawDataPayload, s.charID) if err != nil { - s.logger.Fatal("Failed to update platemyset savedata in db", zap.Error(err)) + s.logger.Error("Failed to save platemyset", zap.Error(err)) } doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) }