using System; namespace ET.Server { /// /// 黄冈晃晃 踢人 /// [MessageHandler(SceneType.Game)] public class C2G_HGHHKickHandler : AMRpcHandler { protected override async ETTask Run(Session session, C2G_HGHHKick request, G2C_HGHHKick response, Action reply) { Player player = session.GetComponent().GetMyPlayer(); if (player == null) { response.Error = ErrorCode.ERR_OperationError; response.Message = "玩家不存在或离线..."; reply(); return; } // 判断参数 if (request.RoomId <= 0) { response.Error = ErrorCode.ERR_ParameterError; response.Message = "参数错误,房间号为空..."; reply(); return; } Scene scene = session.DomainScene(); // 请求的房间是否能找到 Room room = scene.GetComponent().Get(request.RoomId); if (room == null) { response.Error = ErrorCode.ERR_OperationError; response.Message = "请求的房间不存在或已解散..."; reply(); return; } // 玩家是否是房主 if (room.OwnerId != player.Id) { response.Error = ErrorCode.ERR_OperationError; response.Message = "玩家不是房主,不可操作..."; reply(); return; } // 判断玩家是否在其他房间 if (!player.RoomId.Equals(request.RoomId)) { response.Error = ErrorCode.ERR_OperationError; response.Message = "玩家不在此房间,不可操作..."; reply(); return; } // 是否踢自己 if (request.PlayerId == player.Id) { response.Error = ErrorCode.ERR_ParameterError; response.Message = "不可自己踢自己..."; reply(); return; } // 状态是否可踢人 HGHHComponent hghhComponent = room.GetComponent(); if (hghhComponent != null && hghhComponent.State != 0) { response.Error = ErrorCode.ERR_ParameterError; response.Message = "游戏进行中,不可踢人..."; reply(); return; } room.Remove(request.PlayerId); reply(); await ETTask.CompletedTask; } } }