mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-02-06 01:57:38 +01:00
rewrite EnumerateStage
This commit is contained in:
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user