mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 07:55:33 +01:00
@@ -32,6 +32,7 @@ type MsgMhfEnumerateGuild struct {
|
|||||||
AckHandle uint32
|
AckHandle uint32
|
||||||
Type EnumerateGuildType
|
Type EnumerateGuildType
|
||||||
Page uint8
|
Page uint8
|
||||||
|
Sorting bool
|
||||||
RawDataPayload []byte
|
RawDataPayload []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +46,8 @@ func (m *MsgMhfEnumerateGuild) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cli
|
|||||||
m.AckHandle = bf.ReadUint32()
|
m.AckHandle = bf.ReadUint32()
|
||||||
m.Type = EnumerateGuildType(bf.ReadUint8())
|
m.Type = EnumerateGuildType(bf.ReadUint8())
|
||||||
m.Page = bf.ReadUint8()
|
m.Page = bf.ReadUint8()
|
||||||
|
m.Sorting = bf.ReadBool()
|
||||||
|
bf.ReadUint8()
|
||||||
m.RawDataPayload = bf.DataFromCurrent()
|
m.RawDataPayload = bf.DataFromCurrent()
|
||||||
bf.Seek(-2, io.SeekEnd)
|
bf.Seek(-2, io.SeekEnd)
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1101,9 +1101,9 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
switch pkt.Type {
|
switch pkt.Type {
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_GUILD_NAME:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_GUILD_NAME:
|
||||||
bf.ReadBytes(10)
|
bf.ReadBytes(8)
|
||||||
searchTerm := fmt.Sprintf(`%%%s%%`, stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes()))
|
searchTerm := fmt.Sprintf(`%%%s%%`, stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes()))
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE g.name ILIKE $1 OFFSET $2`, guildInfoSelectQuery), searchTerm, pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE g.name ILIKE $1 OFFSET $2 LIMIT 11`, guildInfoSelectQuery), searchTerm, pkt.Page*10)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
||||||
@@ -1111,9 +1111,9 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_LEADER_NAME:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_LEADER_NAME:
|
||||||
bf.ReadBytes(10)
|
bf.ReadBytes(8)
|
||||||
searchTerm := fmt.Sprintf(`%%%s%%`, stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes()))
|
searchTerm := fmt.Sprintf(`%%%s%%`, stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes()))
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE lc.name ILIKE $1 OFFSET $2`, guildInfoSelectQuery), searchTerm, pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE lc.name ILIKE $1 OFFSET $2 LIMIT 11`, guildInfoSelectQuery), searchTerm, pkt.Page*10)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
||||||
@@ -1121,7 +1121,6 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_LEADER_ID:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_LEADER_ID:
|
||||||
bf.ReadBytes(2)
|
|
||||||
ID := bf.ReadUint32()
|
ID := bf.ReadUint32()
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE leader_id = $1`, guildInfoSelectQuery), ID)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE leader_id = $1`, guildInfoSelectQuery), ID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -1131,11 +1130,10 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_MEMBERS:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_MEMBERS:
|
||||||
sorting := bf.ReadUint8()
|
if pkt.Sorting {
|
||||||
if sorting == 1 {
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY member_count DESC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY member_count DESC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
|
||||||
} else {
|
} else {
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY member_count ASC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY member_count ASC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
@@ -1144,11 +1142,10 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_REGISTRATION:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_REGISTRATION:
|
||||||
sorting := bf.ReadUint8()
|
if pkt.Sorting {
|
||||||
if sorting == 1 {
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY id ASC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY id ASC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
|
||||||
} else {
|
} else {
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY id DESC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY id DESC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
@@ -1157,11 +1154,10 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_RANK:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_ORDER_RANK:
|
||||||
sorting := bf.ReadUint8()
|
if pkt.Sorting {
|
||||||
if sorting == 1 {
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY rank_rp DESC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY rank_rp DESC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
|
||||||
} else {
|
} else {
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY rank_rp ASC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s ORDER BY rank_rp ASC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
@@ -1170,10 +1166,9 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_MOTTO:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_MOTTO:
|
||||||
bf.ReadBytes(2)
|
|
||||||
mainMotto := bf.ReadUint16()
|
mainMotto := bf.ReadUint16()
|
||||||
subMotto := bf.ReadUint16()
|
subMotto := bf.ReadUint16()
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE main_motto = $1 AND sub_motto = $2 OFFSET $3`, guildInfoSelectQuery), mainMotto, subMotto, pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE main_motto = $1 AND sub_motto = $2 OFFSET $3 LIMIT 11`, guildInfoSelectQuery), mainMotto, subMotto, pkt.Page*10)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
||||||
@@ -1182,7 +1177,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_GUILD_TYPE_RECRUITING:
|
case mhfpacket.ENUMERATE_GUILD_TYPE_RECRUITING:
|
||||||
// Assume the player wants the newest guilds with open recruitment
|
// Assume the player wants the newest guilds with open recruitment
|
||||||
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE recruiting=true ORDER BY id DESC OFFSET $1`, guildInfoSelectQuery), pkt.Page*10)
|
rows, err = s.server.db.Queryx(fmt.Sprintf(`%s WHERE recruiting=true ORDER BY id DESC OFFSET $1 LIMIT 11`, guildInfoSelectQuery), pkt.Page*10)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
guild, _ := buildGuildObjectFromDbResult(rows, err, s)
|
||||||
@@ -1202,7 +1197,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
switch pkt.Type {
|
switch pkt.Type {
|
||||||
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ALLIANCE_NAME:
|
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ALLIANCE_NAME:
|
||||||
bf.ReadBytes(10)
|
bf.ReadBytes(8)
|
||||||
searchTerm := stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes())
|
searchTerm := stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes())
|
||||||
for _, alliance := range tempAlliances {
|
for _, alliance := range tempAlliances {
|
||||||
if strings.Contains(alliance.Name, searchTerm) {
|
if strings.Contains(alliance.Name, searchTerm) {
|
||||||
@@ -1210,7 +1205,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_LEADER_NAME:
|
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_LEADER_NAME:
|
||||||
bf.ReadBytes(10)
|
bf.ReadBytes(8)
|
||||||
searchTerm := stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes())
|
searchTerm := stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes())
|
||||||
for _, alliance := range tempAlliances {
|
for _, alliance := range tempAlliances {
|
||||||
if strings.Contains(alliance.ParentGuild.LeaderName, searchTerm) {
|
if strings.Contains(alliance.ParentGuild.LeaderName, searchTerm) {
|
||||||
@@ -1218,7 +1213,6 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_LEADER_ID:
|
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_LEADER_ID:
|
||||||
bf.ReadBytes(2)
|
|
||||||
ID := bf.ReadUint32()
|
ID := bf.ReadUint32()
|
||||||
for _, alliance := range tempAlliances {
|
for _, alliance := range tempAlliances {
|
||||||
if alliance.ParentGuild.LeaderCharID == ID {
|
if alliance.ParentGuild.LeaderCharID == ID {
|
||||||
@@ -1226,8 +1220,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ORDER_MEMBERS:
|
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ORDER_MEMBERS:
|
||||||
sorting := bf.ReadBool()
|
if pkt.Sorting {
|
||||||
if sorting {
|
|
||||||
sort.Slice(tempAlliances, func(i, j int) bool {
|
sort.Slice(tempAlliances, func(i, j int) bool {
|
||||||
return tempAlliances[i].TotalMembers > tempAlliances[j].TotalMembers
|
return tempAlliances[i].TotalMembers > tempAlliances[j].TotalMembers
|
||||||
})
|
})
|
||||||
@@ -1238,8 +1231,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
alliances = tempAlliances
|
alliances = tempAlliances
|
||||||
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ORDER_REGISTRATION:
|
case mhfpacket.ENUMERATE_ALLIANCE_TYPE_ORDER_REGISTRATION:
|
||||||
sorting := bf.ReadBool()
|
if pkt.Sorting {
|
||||||
if sorting {
|
|
||||||
sort.Slice(tempAlliances, func(i, j int) bool {
|
sort.Slice(tempAlliances, func(i, j int) bool {
|
||||||
return tempAlliances[i].CreatedAt.Unix() > tempAlliances[j].CreatedAt.Unix()
|
return tempAlliances[i].CreatedAt.Unix() > tempAlliances[j].CreatedAt.Unix()
|
||||||
})
|
})
|
||||||
@@ -1260,16 +1252,14 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf = byteframe.NewByteFrame()
|
bf = byteframe.NewByteFrame()
|
||||||
|
|
||||||
if pkt.Type > 8 {
|
if pkt.Type > 8 {
|
||||||
if len(guilds) > 10 {
|
hasNextPage := false
|
||||||
bf.WriteUint16(10)
|
if len(alliances) > 10 {
|
||||||
} else {
|
hasNextPage = true
|
||||||
|
alliances = alliances[:10]
|
||||||
|
}
|
||||||
bf.WriteUint16(uint16(len(alliances)))
|
bf.WriteUint16(uint16(len(alliances)))
|
||||||
}
|
bf.WriteBool(hasNextPage) // Unk
|
||||||
bf.WriteUint8(0x00) // Unk
|
for _, alliance := range alliances {
|
||||||
for i, alliance := range alliances {
|
|
||||||
if i == 10 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
bf.WriteUint32(alliance.ID)
|
bf.WriteUint32(alliance.ID)
|
||||||
bf.WriteUint32(alliance.ParentGuild.LeaderCharID)
|
bf.WriteUint32(alliance.ParentGuild.LeaderCharID)
|
||||||
bf.WriteUint16(alliance.TotalMembers)
|
bf.WriteUint16(alliance.TotalMembers)
|
||||||
@@ -1288,16 +1278,14 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteBool(true) // TODO: Enable GuildAlliance applications
|
bf.WriteBool(true) // TODO: Enable GuildAlliance applications
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
hasNextPage := false
|
||||||
if len(guilds) > 10 {
|
if len(guilds) > 10 {
|
||||||
bf.WriteUint16(10)
|
hasNextPage = true
|
||||||
} else {
|
guilds = guilds[:10]
|
||||||
|
}
|
||||||
bf.WriteUint16(uint16(len(guilds)))
|
bf.WriteUint16(uint16(len(guilds)))
|
||||||
}
|
bf.WriteBool(hasNextPage)
|
||||||
bf.WriteUint8(0x01) // Unk
|
for _, guild := range guilds {
|
||||||
for i, guild := range guilds {
|
|
||||||
if i == 10 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
bf.WriteUint32(guild.ID)
|
bf.WriteUint32(guild.ID)
|
||||||
bf.WriteUint32(guild.LeaderCharID)
|
bf.WriteUint32(guild.LeaderCharID)
|
||||||
bf.WriteUint16(guild.MemberCount)
|
bf.WriteUint16(guild.MemberCount)
|
||||||
|
|||||||
Reference in New Issue
Block a user