rewrite EnumerateStage

This commit is contained in:
wish
2023-10-30 23:23:11 +11:00
parent 04858f11ea
commit 542b8f8bf6

View File

@@ -372,7 +372,6 @@ func handleMsgSysEnumerateStage(s *Session, p mhfpacket.MHFPacket) {
var joinable int var joinable int
for sid, stage := range s.server.stages { for sid, stage := range s.server.stages {
stage.RLock() stage.RLock()
defer stage.RUnlock()
if len(stage.reservedClientSlots) == 0 && len(stage.clients) == 0 { if len(stage.reservedClientSlots) == 0 && len(stage.clients) == 0 {
continue continue
@@ -386,8 +385,11 @@ func handleMsgSysEnumerateStage(s *Session, p mhfpacket.MHFPacket) {
resp.WriteUint16(uint16(len(stage.reservedClientSlots))) // Reserved players. resp.WriteUint16(uint16(len(stage.reservedClientSlots))) // Reserved players.
resp.WriteUint16(0) // Unk resp.WriteUint16(0) // Unk
resp.WriteUint8(0) // Unk if len(stage.clients) > 0 {
resp.WriteBool(len(stage.clients) > 0) // Has departed. bf.WriteUint16(1)
} else {
bf.WriteUint16(0)
}
resp.WriteUint16(stage.maxPlayers) // Max players. resp.WriteUint16(stage.maxPlayers) // Max players.
if len(stage.password) > 0 { if len(stage.password) > 0 {
// This byte has also been seen as 1 // This byte has also been seen as 1
@@ -397,6 +399,7 @@ func handleMsgSysEnumerateStage(s *Session, p mhfpacket.MHFPacket) {
resp.WriteUint8(0) resp.WriteUint8(0)
} }
ps.Uint8(resp, sid, false) ps.Uint8(resp, sid, false)
stage.RUnlock()
} }
bf.WriteUint16(uint16(joinable)) bf.WriteUint16(uint16(joinable))
bf.WriteBytes(resp.Data()) bf.WriteBytes(resp.Data())