fix various savedata bugs

This commit is contained in:
wish
2022-10-08 13:59:48 +11:00
parent 4f2a94cc50
commit 6ee9234745
3 changed files with 19 additions and 16 deletions

View File

@@ -97,8 +97,8 @@ func (save *CharacterSaveData) Save(s *Session) {
return return
} }
_, err = s.server.db.Exec(`UPDATE characters SET savedata=$1, is_new_character=$2, hrp=$3, gr=$4, is_female=$5, weapon_type=$6, weapon_id=$7 WHERE id=$8 _, err = s.server.db.Exec(`UPDATE characters SET savedata=$1, is_new_character=false, hrp=$2, gr=$3, is_female=$4, weapon_type=$5, weapon_id=$6 WHERE id=$7
`, save.compSave, save.IsNewCharacter, save.HRP, save.GR, save.Gender, save.WeaponType, save.WeaponID, save.CharID) `, save.compSave, save.HRP, save.GR, save.Gender, save.WeaponType, save.WeaponID, save.CharID)
if err != nil { if err != nil {
s.logger.Error("Failed to update savedata", zap.Error(err), zap.Uint32("charID", save.CharID)) s.logger.Error("Failed to update savedata", zap.Error(err), zap.Uint32("charID", save.CharID))
} }
@@ -140,18 +140,21 @@ func (save *CharacterSaveData) updateStructWithSaveData() {
} else { } else {
save.Gender = false save.Gender = false
} }
save.RP = binary.LittleEndian.Uint16(save.decompSave[pointerRP : pointerRP+2]) if !save.IsNewCharacter {
save.HouseTier = save.decompSave[pointerHouseTier : pointerHouseTier+5] save.RP = binary.LittleEndian.Uint16(save.decompSave[pointerRP : pointerRP+2])
save.HouseData = save.decompSave[pointerHouseData : pointerHouseData+195] save.HouseTier = save.decompSave[pointerHouseTier : pointerHouseTier+5]
save.BookshelfData = save.decompSave[pointerBookshelfData : pointerBookshelfData+5576] save.HouseData = save.decompSave[pointerHouseData : pointerHouseData+195]
save.GalleryData = save.decompSave[pointerGalleryData : pointerGalleryData+1748] save.BookshelfData = save.decompSave[pointerBookshelfData : pointerBookshelfData+5576]
save.ToreData = save.decompSave[pointerToreData : pointerToreData+240] save.GalleryData = save.decompSave[pointerGalleryData : pointerGalleryData+1748]
save.GardenData = save.decompSave[pointerGardenData : pointerGardenData+68] save.ToreData = save.decompSave[pointerToreData : pointerToreData+240]
save.WeaponType = save.decompSave[pointerWeaponType] save.GardenData = save.decompSave[pointerGardenData : pointerGardenData+68]
save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[pointerWeaponID : pointerWeaponID+2]) save.WeaponType = save.decompSave[pointerWeaponType]
save.HRP = binary.LittleEndian.Uint16(save.decompSave[pointerHRP : pointerHRP+2]) save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[pointerWeaponID : pointerWeaponID+2])
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[pointerGRP : pointerGRP+4])) save.HRP = binary.LittleEndian.Uint16(save.decompSave[pointerHRP : pointerHRP+2])
save.KQF = save.decompSave[pointerKQF : pointerKQF+8] save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[pointerGRP : pointerGRP+4]))
save.KQF = save.decompSave[pointerKQF : pointerKQF+8]
}
return
} }
func handleMsgMhfSexChanger(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfSexChanger(s *Session, p mhfpacket.MHFPacket) {

View File

@@ -45,7 +45,7 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
s.logger.Info("Updating save with blob") s.logger.Info("Updating save with blob")
characterSaveData.decompSave = saveData characterSaveData.decompSave = saveData
} }
characterSaveData.IsNewCharacter = false characterSaveData.updateStructWithSaveData()
characterSaveData.Save(s) characterSaveData.Save(s)
s.logger.Info("Wrote recompressed savedata back to DB.") s.logger.Info("Wrote recompressed savedata back to DB.")

View File

@@ -63,7 +63,7 @@ func (s *Server) registerDBAccount(username string, password string) error {
INSERT INTO characters ( INSERT INTO characters (
user_id, is_female, is_new_character, name, unk_desc_string, user_id, is_female, is_new_character, name, unk_desc_string,
hrp, gr, weapon_type, last_login) hrp, gr, weapon_type, last_login)
VALUES($1, False, True, '', '', 1, 0, 0, $2)`, VALUES($1, False, True, '', '', 0, 0, 0, $2)`,
id, id,
uint32(time.Now().Unix()), uint32(time.Now().Unix()),
) )