离开房间返回错误码

This commit is contained in:
sk 2024-08-29 16:54:30 +08:00
parent 33eab3f5bc
commit a77cfa41dd
1 changed files with 40 additions and 2 deletions

View File

@ -293,10 +293,48 @@ func CSRoomEvent(s *netlib.Session, packetid int, data interface{}, sid int64) e
return nil
}
func CSDestroyRoom(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSDestroyRoomHandler Process recv ", data)
p := base.PlayerMgrSington.GetPlayer(sid)
if p == nil {
logger.Logger.Warn("CSDestroyRoomHandler p == nil")
return nil
}
scene := p.GetScene()
if scene == nil {
logger.Logger.Warn("CSDestroyRoomHandler p.GetScene() == nil")
return nil
}
if !scene.HasPlayer(p) {
return nil
}
pack := &gamehall.SCDestroyRoom{
RoomId: scene.SceneId,
OpRetCode: gamehall.OpResultCode_Game_OPRC_Error_Game,
}
send := func() {
p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_DESTROYROOM), pack)
logger.Logger.Tracef("SCDestroyRoom: %v", pack)
}
if scene.Creator != p.SnId {
logger.Logger.Warn("CSDestroyRoomHandler s.creator != p.AccountId")
send()
return nil
}
// 房卡场开始后不能解散
if scene.IsCustom() && scene.NumOfGames > 0 {
send()
return nil
}
scene.Destroy(true)
return nil
}
func init() {
// 房间创建者解散房间
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &CSDestroyRoomHandler{})
netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &CSDestroyRoomPacketFactory{})
common.Register(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &gamehall.CSDestroyRoom{}, CSDestroyRoom)
// 离开或暂离房间
common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LEAVEROOM), &CSLeaveRoomHandler{})