using Cal.DataTable; using System; namespace ET { [ActorMessageHandler] public class C2M_RequestPersonalPvpHandler : AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_RequestPersonalPvp request, M2C_RequestPersonalPvp response, Action reply) { if (!unit.IsTeamLeader) { response.Message = "您不是队长!"; reply(); return; } Team team = TeamComponent.Instance.Get(unit.TeamLeaderId); if (team.TeamState == TeamState.Fight) { Log.Error($"*【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】多次进行竞技场战斗"); response.Message = "系统错误"; reply(); return; } if (team.MemberCount > 1) { response.Message = "只能单人战斗"; reply(); return; } UnitScene unitScene = unit.GetComponent(); if (unitScene.MapId / 100 == Sys_SceneId.Scene_MainCity) { response.Message = "城镇禁止斗殴!"; reply(); return; } var canPvp = PvpMap.inatance.CanPvp(); if (canPvp != null) { response.Message = canPvp; reply(); return; } var ret = PvpMap.inatance.RequestMatch(unit); if (ret != null) { response.Message = ret; } reply(); await ETTask.CompletedTask; } } }