From ef31ad38399d5c9a3f6a52f42aa4bdba8adb31ad Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:57 +0800
Subject: [PATCH] 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化
---
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs | 204 +++++++++++++++++++++++++++++----------------------
1 files changed, 116 insertions(+), 88 deletions(-)
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 01b27ee..cd0ae2a 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -30,6 +30,8 @@
public event Action UpdateMatchPlayersEvent;
public bool loginQueryMatch = false;
+ public Dictionary<int, GA_PlayerClient.PlayerInfo> robots = new Dictionary<int, GA_PlayerClient.PlayerInfo>();
+
public override void Init()
{
ParseFuncConfig();
@@ -47,7 +49,6 @@
CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent -= UpdateSeason;
TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
- dungeonModel.updateMissionEvent -= UpdateFBHelp;
rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState;
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
TimeMgr.Instance.OnDayEvent -= OnDay;
@@ -75,7 +76,6 @@
GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
rewardModel.CrossRealmPKAwardStateUpdate += UpdateDayAwardState;
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdateDayAwardState;
- dungeonModel.updateMissionEvent += UpdateFBHelp;
TimeMgr.Instance.OnDayEvent += OnDay;
UpdateServerOpenDay();
UpdateDayAwardState();
@@ -127,6 +127,18 @@
}
}
recordDataMapId = dataMapId;
+ if (dataMapId == CrossServerDataMapId || dataMapId == 1000)
+ {
+ PersonalEnemy.OnMirrorPlayerAppear += OnPlayerAppear;
+ }
+ }
+
+ private void OnPlayerAppear(GA_Player player)
+ {
+ CrossServerLogin.Instance.UpdatePKPlayerInfo(player);
+ PersonalEnemy.OnMirrorPlayerAppear -= OnPlayerAppear;
+ dungeonModel.dungeonFightStage = DungeonFightStage.Normal;
+
}
private void UpdateMinute()
@@ -182,47 +194,6 @@
UpdateCrossMatchRedpoint();
}
- private void UpdateFBHelp()
- {
- if (!CrossServerUtility.IsCrossServerOneVsOne())
- {
- return;
- }
-
- var hero = PlayerDatas.Instance.hero;
- var mission = dungeonModel.mission;
- if (mission.prepareTime > 0)
- {
- roundEndTime = DateTime.Now + new TimeSpan(mission.prepareTime * TimeSpan.TicksPerMillisecond);
- if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
- {
- WindowCenter.Instance.Open<CrossServerOneVsOneRoundWin>();
- }
- if (hero != null)
- {
- hero.Behaviour.StopHandupAI(true);
- hero.StopPathFind();
- }
-
- }
- DebugEx.LogFormat("鍓湰甯姪淇℃伅鍥炲悎鏄惁寮�濮嬶細锛歿0}", mission.isStart);
- if (mission.isStart == 1)
- {
- if (WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
- {
- WindowCenter.Instance.Close<CrossServerOneVsOneRoundWin>();
- }
-
- if (!WindowCenter.Instance.IsOpen<CrossServerOneVsOneStartFightWin>())
- {
- WindowCenter.Instance.Open<CrossServerOneVsOneStartFightWin>();
- }
- if (hero != null)
- {
- hero.Behaviour.StartHandupAI();
- }
- }
- }
public List<AwardType> GetDayAwardsList()
{
@@ -454,13 +425,70 @@
matchPlayers.Clear();
for (int i = 0; i < package.MatchPlayerCount; i++)
{
- matchPlayers.Add(package.MatchPlayer[i]);
- //鏈嶅姟绔病鏈変富鍔ㄦ帹閫佺殑璇濓紝杩欓噷闇�瑕佽姹備竴娆$帺瀹剁紦瀛樻暟鎹�
+ int playerID = (int)package.MatchPlayer[i].PlayerID;
+ if (playerID > 10000)
+ {
+ matchPlayers.Add(package.MatchPlayer[i]);
+ //鏈嶅姟绔病鏈変富鍔ㄦ帹閫佺殑璇濓紝杩欓噷闇�瑕佽姹備竴娆$帺瀹剁紦瀛樻暟鎹�
+ ModelCenter.Instance.GetModel<RoleParticularModel>().ViewPlayerCacheData(playerID);
+ }
+ else
+ {
+ int job = (byte)UnityEngine.Random.Range(1, 3);
+ string name = ClientCrossServerOneVsOne.GetRandomOpponentName(job);
+ int level = 1;
+ int fightPower = 0;
+ int fightPowerEx = 0; //鎴樺姏锛屾暣闄や嚎閮ㄥ垎
+ ulong tmpFightPower = 0;
+ if (playerID == 1)
+ {
+ level = Math.Min((int)(PlayerDatas.Instance.baseData.LV * 1.2), 999);
+ tmpFightPower = PlayerDatas.Instance.baseData.FightPoint*2;
+ }
+ else if (playerID == 2)
+ {
+ level = Math.Max((int)(PlayerDatas.Instance.baseData.LV * 0.8), 160);
+ tmpFightPower = (ulong)(PlayerDatas.Instance.baseData.FightPoint * 0.8);
+ }
+ else if (playerID == 3)
+ {
+ level = Math.Max((int)(PlayerDatas.Instance.baseData.LV * 0.6), 160);
+ tmpFightPower = (ulong)(PlayerDatas.Instance.baseData.FightPoint * 0.5);
+ }
+ fightPower = (int)(tmpFightPower % 100000000);
+ fightPowerEx = (int)(tmpFightPower / 100000000);
+
+ //鏈哄櫒浜�
+ matchPlayers.Add(new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer()
+ {
+ PlayerID = (uint)playerID,
+ PlayerName = name,
+ Job = (byte)job,
+ LV = (ushort)level,
+ RealmLV = PlayerDatas.Instance.baseData.realmLevel,
+ Face = (uint)AvatarHelper.GetAvatarDefaultID(job),
+ FacePic = (uint)AvatarHelper.GetAvatarFrameDefaultID(job),
+ FightPower = (uint)fightPower,
+ FightPowerEx = (uint)fightPowerEx
+ });
+
+ CreateRobot(matchPlayers[i]);
+ }
+
+
}
UpdateMatchPlayersEvent?.Invoke();
}
+ void CreateRobot(HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer player)
+ {
+ var job = player.Job;
+ var playerName = player.PlayerName;
+ var level = player.LV;
+ var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
+ robots[(int)player.PlayerID] = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, 1);
+ }
BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
/// <summary>
@@ -489,56 +517,56 @@
GameNetSystem.Instance.SendInfo(pKBuy);
}
- public bool TryGetMatchTip()
- {
- int mapId = PlayerDatas.Instance.baseData.MapID;
- bool isCrossDungeon = CrossServerUtility.IsCrossServer();
- if (isCrossDungeon)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching3");
- return true;
- }
+ //public bool TryGetMatchTip()
+ //{
+ // int mapId = PlayerDatas.Instance.baseData.MapID;
+ // bool isCrossDungeon = CrossServerUtility.IsCrossServer();
+ // if (isCrossDungeon)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching3");
+ // return true;
+ // }
- var mapConfig = MapConfig.Get(mapId);
- bool isDungeon = mapConfig != null && mapConfig.MapFBType != 0 ? true : false;
- if (isDungeon)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching4");
- return true;
- }
+ // var mapConfig = MapConfig.Get(mapId);
+ // bool isDungeon = mapConfig != null && mapConfig.MapFBType != 0 ? true : false;
+ // if (isDungeon)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching4");
+ // return true;
+ // }
- var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
- if (deadModel.playerIsDie)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching5");
- return true;
- }
+ // var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
+ // if (deadModel.playerIsDie)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching5");
+ // return true;
+ // }
- var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
- bool isTeamMatch = teamModel.isMatching;
- if (isTeamMatch)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching6");
- return true;
- }
+ // var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+ // bool isTeamMatch = teamModel.isMatching;
+ // if (isTeamMatch)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching6");
+ // return true;
+ // }
- bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
- if (isDungeonPrepare)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching7");
- return true;
- }
+ // bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
+ // if (isDungeonPrepare)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching7");
+ // return true;
+ // }
- int remainMatchNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
- if (remainMatchNum <= 0)
- {
- SysNotifyMgr.Instance.ShowTip("CrossMatching16");
- return true;
- }
+ // int remainMatchNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
+ // if (remainMatchNum <= 0)
+ // {
+ // SysNotifyMgr.Instance.ShowTip("CrossMatching16");
+ // return true;
+ // }
- return false;
+ // return false;
- }
+ //}
public bool TryGetBuyMatchTimes(string key)
{
--
Gitblit v1.8.0