diff --git a/schemas/patch-schema/21-rename-hrp.sql b/schemas/patch-schema/21-rename-hrp.sql new file mode 100644 index 000000000..605210636 --- /dev/null +++ b/schemas/patch-schema/21-rename-hrp.sql @@ -0,0 +1,5 @@ +BEGIN; + +ALTER TABLE IF EXISTS public.characters RENAME hrp TO hr; + +END; \ No newline at end of file diff --git a/server/channelserver/handlers_character.go b/server/channelserver/handlers_character.go index 310fa0221..782ec8190 100644 --- a/server/channelserver/handlers_character.go +++ b/server/channelserver/handlers_character.go @@ -25,7 +25,7 @@ const ( pGardenData // +68 pWeaponType // +1 pWeaponID // +2 - pHRP // +2 + pHR // +2 pGRP // +4 pKQF // +8 lBookshelfData @@ -47,7 +47,7 @@ type CharacterSaveData struct { GardenData []byte WeaponType uint8 WeaponID uint16 - HRP uint16 + HR uint16 GR uint16 KQF []byte @@ -63,7 +63,7 @@ func getPointers() map[SavePointer]int { pointers[pWeaponType] = 128789 pointers[pHouseTier] = 129900 pointers[pToreData] = 130228 - pointers[pHRP] = 130550 + pointers[pHR] = 130550 pointers[pGRP] = 130556 pointers[pHouseData] = 130561 pointers[pBookshelfData] = 139928 @@ -78,7 +78,7 @@ func getPointers() map[SavePointer]int { pointers[pWeaponType] = 92789 pointers[pHouseTier] = 93900 pointers[pToreData] = 94228 - pointers[pHRP] = 94550 + pointers[pHR] = 94550 pointers[pGRP] = 94556 pointers[pHouseData] = 94561 pointers[pBookshelfData] = 103928 @@ -91,7 +91,7 @@ func getPointers() map[SavePointer]int { pointers[pWeaponType] = 60789 pointers[pHouseTier] = 61900 pointers[pToreData] = 62228 - pointers[pHRP] = 62550 + pointers[pHR] = 62550 pointers[pHouseData] = 62561 pointers[pBookshelfData] = 57118 // This pointer only half works pointers[pGalleryData] = 72064 @@ -102,7 +102,7 @@ func getPointers() map[SavePointer]int { pointers[pWeaponType] = 12789 pointers[pHouseTier] = 13900 pointers[pToreData] = 14228 - pointers[pHRP] = 14550 + pointers[pHR] = 14550 pointers[pHouseData] = 14561 pointers[pBookshelfData] = 9118 // Probably same here pointers[pGalleryData] = 24064 @@ -174,8 +174,8 @@ func (save *CharacterSaveData) Save(s *Session) { save.compSave = save.decompSave } - _, 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.HRP, save.GR, save.Gender, save.WeaponType, save.WeaponID, save.CharID) + _, err := s.server.db.Exec(`UPDATE characters SET savedata=$1, is_new_character=false, hr=$2, gr=$3, is_female=$4, weapon_type=$5, weapon_id=$6 WHERE id=$7 + `, save.compSave, save.HR, save.GR, save.Gender, save.WeaponType, save.WeaponID, save.CharID) if err != nil { s.logger.Error("Failed to update savedata", zap.Error(err), zap.Uint32("charID", save.CharID)) } @@ -233,9 +233,9 @@ func (save *CharacterSaveData) updateStructWithSaveData() { save.GardenData = save.decompSave[save.Pointers[pGardenData] : save.Pointers[pGardenData]+68] save.WeaponType = save.decompSave[save.Pointers[pWeaponType]] save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pWeaponID] : save.Pointers[pWeaponID]+2]) - save.HRP = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pHRP] : save.Pointers[pHRP]+2]) + save.HR = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pHR] : save.Pointers[pHR]+2]) if _config.ErupeConfig.RealClientMode >= _config.G1 { - if save.HRP == uint16(999) { + if save.HR == uint16(999) { save.GR = grpToGR(int(binary.LittleEndian.Uint32(save.decompSave[save.Pointers[pGRP] : save.Pointers[pGRP]+4]))) } } diff --git a/server/channelserver/handlers_guild.go b/server/channelserver/handlers_guild.go index be61f1241..5613bd53b 100644 --- a/server/channelserver/handlers_guild.go +++ b/server/channelserver/handlers_guild.go @@ -1075,7 +1075,7 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) { for _, applicant := range applicants { bf.WriteUint32(applicant.CharID) bf.WriteUint32(0) - bf.WriteUint16(applicant.HRP) + bf.WriteUint16(applicant.HR) bf.WriteUint16(applicant.GR) ps.Uint8(bf, applicant.Name, true) } @@ -1435,7 +1435,7 @@ func handleMsgMhfEnumerateGuildMember(s *Session, p mhfpacket.MHFPacket) { for _, member := range guildMembers { bf.WriteUint32(member.CharID) - bf.WriteUint16(member.HRP) + bf.WriteUint16(member.HR) if s.server.erupeConfig.RealClientMode >= _config.G10 { bf.WriteUint16(member.GR) } diff --git a/server/channelserver/handlers_guild_member.go b/server/channelserver/handlers_guild_member.go index ac64e892a..f4cb04175 100644 --- a/server/channelserver/handlers_guild_member.go +++ b/server/channelserver/handlers_guild_member.go @@ -22,7 +22,7 @@ type GuildMember struct { Recruiter bool `db:"recruiter"` AvoidLeadership bool `db:"avoid_leadership"` IsLeader bool `db:"is_leader"` - HRP uint16 `db:"hrp"` + HR uint16 `db:"hr"` GR uint16 `db:"gr"` WeaponID uint16 `db:"weapon_id"` WeaponType uint8 `db:"weapon_type"` @@ -74,7 +74,7 @@ SELECT * FROM ( c.last_login, COALESCE(recruiter, false) AS recruiter, COALESCE(avoid_leadership, false) AS avoid_leadership, - c.hrp, + c.hr, c.gr, c.weapon_id, c.weapon_type, diff --git a/server/channelserver/handlers_guild_scout.go b/server/channelserver/handlers_guild_scout.go index 3c73b5bec..a599ec301 100644 --- a/server/channelserver/handlers_guild_scout.go +++ b/server/channelserver/handlers_guild_scout.go @@ -204,7 +204,7 @@ func handleMsgMhfGetGuildScoutList(s *Session, p mhfpacket.MHFPacket) { } rows, err := s.server.db.Queryx(` - SELECT c.id, c.name, c.hrp, c.gr, ga.actor_id + SELECT c.id, c.name, c.hr, c.gr, ga.actor_id FROM guild_applications ga JOIN characters c ON c.id = ga.character_id WHERE ga.guild_id = $1 AND ga.application_type = 'invited' @@ -230,9 +230,9 @@ func handleMsgMhfGetGuildScoutList(s *Session, p mhfpacket.MHFPacket) { for rows.Next() { var charName string var charID, actorID uint32 - var hrp, gr uint16 + var HR, GR uint16 - err = rows.Scan(&charID, &charName, &hrp, &gr, &actorID) + err = rows.Scan(&charID, &charName, &HR, &GR, &actorID) if err != nil { doAckSimpleFail(s, pkt.AckHandle, nil) @@ -246,8 +246,8 @@ func handleMsgMhfGetGuildScoutList(s *Session, p mhfpacket.MHFPacket) { bf.WriteUint32(actorID) bf.WriteUint32(charID) bf.WriteUint32(uint32(TimeAdjusted().Unix())) - bf.WriteUint16(hrp) // HR? - bf.WriteUint16(gr) // GR? + bf.WriteUint16(HR) // HR? + bf.WriteUint16(GR) // GR? bf.WriteBytes(stringsupport.PaddedString(charName, 32, true)) count++ } diff --git a/server/channelserver/handlers_house.go b/server/channelserver/handlers_house.go index 705c76393..5e47d0436 100644 --- a/server/channelserver/handlers_house.go +++ b/server/channelserver/handlers_house.go @@ -47,7 +47,7 @@ func handleMsgMhfUpdateInterior(s *Session, p mhfpacket.MHFPacket) { type HouseData struct { CharID uint32 `db:"id"` - HRP uint16 `db:"hrp"` + HR uint16 `db:"hr"` GR uint16 `db:"gr"` Name string `db:"name"` HouseState uint8 `db:"house_state"` @@ -59,7 +59,7 @@ func handleMsgMhfEnumerateHouse(s *Session, p mhfpacket.MHFPacket) { bf := byteframe.NewByteFrame() bf.WriteUint16(0) var houses []HouseData - houseQuery := `SELECT c.id, hrp, gr, name, COALESCE(ub.house_state, 2) as house_state, COALESCE(ub.house_password, '') as house_password + houseQuery := `SELECT c.id, hr, gr, name, COALESCE(ub.house_state, 2) as house_state, COALESCE(ub.house_password, '') as house_password FROM characters c LEFT JOIN user_binary ub ON ub.id = c.id WHERE c.id=$1` switch pkt.Method { case 1: @@ -92,7 +92,7 @@ func handleMsgMhfEnumerateHouse(s *Session, p mhfpacket.MHFPacket) { } } case 3: - houseQuery = `SELECT c.id, hrp, gr, name, COALESCE(ub.house_state, 2) as house_state, COALESCE(ub.house_password, '') as house_password + houseQuery = `SELECT c.id, hr, gr, name, COALESCE(ub.house_state, 2) as house_state, COALESCE(ub.house_password, '') as house_password FROM characters c LEFT JOIN user_binary ub ON ub.id = c.id WHERE name ILIKE $1` house := HouseData{} rows, _ := s.server.db.Queryx(houseQuery, fmt.Sprintf(`%%%s%%`, pkt.Name)) @@ -120,7 +120,7 @@ func handleMsgMhfEnumerateHouse(s *Session, p mhfpacket.MHFPacket) { } else { bf.WriteUint8(0) } - bf.WriteUint16(house.HRP) + bf.WriteUint16(house.HR) if _config.ErupeConfig.RealClientMode >= _config.G10 { bf.WriteUint16(house.GR) } diff --git a/server/signserver/dbutils.go b/server/signserver/dbutils.go index e8e0e944c..1469af362 100644 --- a/server/signserver/dbutils.go +++ b/server/signserver/dbutils.go @@ -27,7 +27,7 @@ func (s *Server) newUserChara(uid uint32) error { _, err = s.db.Exec(` INSERT INTO characters ( user_id, is_female, is_new_character, name, unk_desc_string, - hrp, gr, weapon_type, last_login) + hr, gr, weapon_type, last_login) VALUES($1, False, True, '', '', 0, 0, 0, $2)`, uid, uint32(time.Now().Unix()), @@ -63,7 +63,7 @@ type character struct { IsNewCharacter bool `db:"is_new_character"` Name string `db:"name"` UnkDescString string `db:"unk_desc_string"` - HRP uint16 `db:"hrp"` + HR uint16 `db:"hr"` GR uint16 `db:"gr"` WeaponType uint16 `db:"weapon_type"` LastLogin uint32 `db:"last_login"` @@ -71,7 +71,7 @@ type character struct { func (s *Server) getCharactersForUser(uid uint32) ([]character, error) { characters := make([]character, 0) - err := s.db.Select(&characters, "SELECT id, is_female, is_new_character, name, unk_desc_string, hrp, gr, weapon_type, last_login FROM characters WHERE user_id = $1 AND deleted = false ORDER BY id", uid) + err := s.db.Select(&characters, "SELECT id, is_female, is_new_character, name, unk_desc_string, hr, gr, weapon_type, last_login FROM characters WHERE user_id = $1 AND deleted = false ORDER BY id", uid) if err != nil { return nil, err } diff --git a/server/signserver/dsgn_resp.go b/server/signserver/dsgn_resp.go index 715299f8f..2f491e8c0 100644 --- a/server/signserver/dsgn_resp.go +++ b/server/signserver/dsgn_resp.go @@ -70,14 +70,11 @@ func (s *Session) makeSignResponse(uid uint32) []byte { lastPlayed = char.ID } bf.WriteUint32(char.ID) - - // Exp, HR[x] is split by 0, 1, 30, 50, 99, 299, 998, 999 if s.server.erupeConfig.DebugOptions.MaxLauncherHR { bf.WriteUint16(999) } else { - bf.WriteUint16(char.HRP) + bf.WriteUint16(char.HR) } - bf.WriteUint16(char.WeaponType) // Weapon, 0-13. bf.WriteUint32(char.LastLogin) // Last login date, unix timestamp in seconds. bf.WriteBool(char.IsFemale) // Sex, 0=male, 1=female. diff --git a/server/signv2server/dbutils.go b/server/signv2server/dbutils.go index f5ea57846..b2d5872bb 100644 --- a/server/signv2server/dbutils.go +++ b/server/signv2server/dbutils.go @@ -56,7 +56,7 @@ func (s *Server) userIDFromToken(ctx context.Context, token string) (uint32, err func (s *Server) createCharacter(ctx context.Context, userID uint32) (Character, error) { var character Character err := s.db.GetContext(ctx, &character, - "SELECT id, name, is_female, weapon_type, hrp, gr, last_login FROM characters WHERE is_new_character = true AND user_id = $1 LIMIT 1", + "SELECT id, name, is_female, weapon_type, hr, gr, last_login FROM characters WHERE is_new_character = true AND user_id = $1 LIMIT 1", userID, ) if err == sql.ErrNoRows { @@ -68,10 +68,10 @@ func (s *Server) createCharacter(ctx context.Context, userID uint32) (Character, err = s.db.GetContext(ctx, &character, ` INSERT INTO characters ( user_id, is_female, is_new_character, name, unk_desc_string, - hrp, gr, weapon_type, last_login + hr, gr, weapon_type, last_login ) VALUES ($1, false, true, '', '', 0, 0, 0, $2) - RETURNING id, name, is_female, weapon_type, hrp, gr, last_login`, + RETURNING id, name, is_female, weapon_type, hr, gr, last_login`, userID, uint32(time.Now().Unix()), ) } @@ -96,7 +96,7 @@ func (s *Server) getCharactersForUser(ctx context.Context, uid uint32) ([]Charac var characters []Character err := s.db.SelectContext( ctx, &characters, ` - SELECT id, name, is_female, weapon_type, hrp, gr, last_login + SELECT id, name, is_female, weapon_type, hr, gr, last_login FROM characters WHERE user_id = $1 AND deleted = false AND is_new_character = false ORDER BY id ASC`, uid, diff --git a/server/signv2server/endpoints.go b/server/signv2server/endpoints.go index 5a0a6c8e7..b3ac00254 100644 --- a/server/signv2server/endpoints.go +++ b/server/signv2server/endpoints.go @@ -37,7 +37,7 @@ type Character struct { Name string `json:"name"` IsFemale bool `json:"isFemale" db:"is_female"` Weapon uint32 `json:"weapon" db:"weapon_type"` - HR uint32 `json:"hr" db:"hrp"` + HR uint32 `json:"hr" db:"hr"` GR uint32 `json:"gr"` LastLogin int32 `json:"lastLogin" db:"last_login"` }