mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-27 10:03:06 +01:00
enforce Stage.maxPlayers on EnterStage
This commit is contained in:
@@ -151,6 +151,13 @@ func removeSessionFromStage(s *Session) {
|
|||||||
func handleMsgSysEnterStage(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgSysEnterStage(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgSysEnterStage)
|
pkt := p.(*mhfpacket.MsgSysEnterStage)
|
||||||
|
|
||||||
|
if stage, exists := s.server.stages[pkt.StageID]; exists {
|
||||||
|
if len(stage.reservedClientSlots) == int(stage.maxPlayers) {
|
||||||
|
doAckSimpleFail(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x01})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Push our current stage ID to the movement stack before entering another one.
|
// Push our current stage ID to the movement stack before entering another one.
|
||||||
if s.stage != nil {
|
if s.stage != nil {
|
||||||
s.stage.Lock()
|
s.stage.Lock()
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ func NewStage(ID string) *Stage {
|
|||||||
objects: make(map[uint32]*Object),
|
objects: make(map[uint32]*Object),
|
||||||
objectIndex: 0,
|
objectIndex: 0,
|
||||||
rawBinaryData: make(map[stageBinaryKey][]byte),
|
rawBinaryData: make(map[stageBinaryKey][]byte),
|
||||||
maxPlayers: 4,
|
maxPlayers: 127,
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user