From bc20563f3bdfba7a4e3e6d1a4770f86bc7cfa998 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:59 +0800
Subject: [PATCH] 0312 本服/跨服竞技场进入防范问题
---
System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs | 10 ++++
LogicProject/System/ArenaActivity/ArenaManagerModel.cs | 2
System/Dungeon/DungeonModel.cs | 83 +++++++++++++++++++++++++++++++++++++++++
LogicProject/System/ArenaActivity/ArenaWin.cs | 9 ++++
4 files changed, 102 insertions(+), 2 deletions(-)
diff --git a/LogicProject/System/ArenaActivity/ArenaManagerModel.cs b/LogicProject/System/ArenaActivity/ArenaManagerModel.cs
index 1ef908c..93179f0 100644
--- a/LogicProject/System/ArenaActivity/ArenaManagerModel.cs
+++ b/LogicProject/System/ArenaActivity/ArenaManagerModel.cs
@@ -1095,7 +1095,7 @@
public class ILFightStage : ILPKStage
{
bool figthCompleted = false;
- float restTime = 2f;
+ float restTime = 0.5f;
float restTimeTimer = 0f;
public override void Begin()
diff --git a/LogicProject/System/ArenaActivity/ArenaWin.cs b/LogicProject/System/ArenaActivity/ArenaWin.cs
index c323499..1af553e 100644
--- a/LogicProject/System/ArenaActivity/ArenaWin.cs
+++ b/LogicProject/System/ArenaActivity/ArenaWin.cs
@@ -46,6 +46,8 @@
ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
+ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
+
float DeltaTmp = 0;
float lastClickFightTime = 0;
@@ -162,6 +164,13 @@
return;
}
+ int error;
+ if (!dungeonModel.CanEnter(out error))
+ {
+ dungeonModel.ProcessEnterError(error);
+ return;
+ }
+
if (Time.realtimeSinceStartup - lastClickFightTime < 0.5)
return;
lastClickFightTime = Time.realtimeSinceStartup;
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs b/System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs
index 08a33bc..d6cafa6 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs
@@ -17,7 +17,7 @@
RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
-
+ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
public void Display(int index)
{
@@ -39,6 +39,14 @@
return;
}
+ int error;
+ if (!dungeonModel.CanEnter(out error))
+ {
+ dungeonModel.ProcessEnterError(error);
+ return;
+ }
+
+
if (matchPlayer.PlayerID > 10000)
{
var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 6e96e2b..aa161b1 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -147,6 +147,7 @@
BossRebornModel bossRebornModel { get { return ModelCenter.Instance.GetModel<BossRebornModel>(); } }
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
+ TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
public override void Init()
{
ParseConfig();
@@ -611,6 +612,88 @@
RequestChallangeDungeon(_dungeon.mapId, _dungeon.lineId);
}
+ public bool CanEnter(out int error)
+ {
+ var mapId = PlayerDatas.Instance.baseData.MapID;
+ var mapConfig = MapConfig.Get(mapId);
+ if (mapConfig.MapFBType != (int)MapType.OpenCountry ||
+ ArenaManager.IsArenaStage() ||
+ ClientDungeonStageUtility.isClientDungeon ||
+ ClientCrossServerOneVsOne.isClientCrossServerOneVsOne ||
+ AdventureStage.Instance.IsInAdventureStage
+ )
+ {
+ error = 1;
+ return false;
+ }
+
+ if (teamModel.isMatching)
+ {
+ error = 2;
+ return false;
+ }
+
+ if (teamModel.teamPrepare.isPreparing)
+ {
+ error = 3;
+ return false;
+ }
+
+ if (CrossServerLogin.Instance.IsEnterCrossServerPreparing())
+ {
+ error = 4;
+ return false;
+ }
+
+ var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
+ if (deadModel.playerIsDie)
+ {
+ error = 5;
+ return false;
+ }
+ if (PlayerDatas.Instance.extersion.bossState == 1)
+ {
+ error = 6;
+ return false;
+ }
+
+ if (CrossServerUtility.IsCrossServer())
+ {
+ error = 7;
+ return false;
+ }
+ error = 0;
+ return true;
+ }
+
+ public void ProcessEnterError(int error)
+ {
+ switch (error)
+ {
+ case 1:
+ SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
+ break;
+ case 2:
+ SysNotifyMgr.Instance.ShowTip("CrossMap1");
+ break;
+ case 3:
+ SysNotifyMgr.Instance.ShowTip("CrossMap2");
+ break;
+ case 4:
+ SysNotifyMgr.Instance.ShowTip("CrossMap3");
+ break;
+ case 5:
+ SysNotifyMgr.Instance.ShowTip("CrossMap4");
+ break;
+ case 6:
+ SysNotifyMgr.Instance.ShowTip("CrossMap11");
+ break;
+ case 7:
+ SysNotifyMgr.Instance.ShowTip("CrossMap10");
+ break;
+ }
+ }
+
public void GroupChallenge(int _dungeonId, int _lineId = 0)
{
GroupChallenge(new Dungeon(_dungeonId, _lineId));
--
Gitblit v1.8.0