zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/Handler/Battle/Pvp/C2M_RequestPersonalPvpHandl...

55 lines
1.7 KiB
C#

using Cal.DataTable;
using System;
namespace ET
{
[ActorMessageHandler]
public class C2M_RequestPersonalPvpHandler : AMActorLocationRpcHandler<Unit, C2M_RequestPersonalPvp, M2C_RequestPersonalPvp>
{
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<UnitScene>();
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;
}
}
}