55 lines
1.8 KiB
C#
55 lines
1.8 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;
|
|
}
|
|
string canPvp = PvpMap.inatance.CanPvp();
|
|
if (canPvp != null)
|
|
{
|
|
response.Message = canPvp;
|
|
reply();
|
|
return;
|
|
}
|
|
string ret = PvpMap.inatance.RequestMatch(unit);
|
|
if (ret != null)
|
|
{
|
|
response.Message = ret;
|
|
}
|
|
reply();
|
|
|
|
await ETTask.CompletedTask;
|
|
}
|
|
}
|
|
} |