少年修仙传客户端代码仓库
hch
2025-02-17 ef31ad38399d5c9a3f6a52f42aa4bdba8adb31ad
10349 【越南】【英文】【BT】【砍树】跨服竞技场优化
4个文件已删除
14个文件已修改
725 ■■■■■ 已修改文件
LogicProject/System/ArenaActivity/ArenaManagerModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServer/CrossServerUtility.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneArenaWin.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneMatchResultCell.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneRoundWin.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneRoundWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneStartFightWin.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneStartFightWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerSettlementWin.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/FightingPKWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOne.cs 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CrossServerLogin.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LogicProject/System/ArenaActivity/ArenaManagerModel.cs
@@ -19,7 +19,6 @@
        }
    }
    static ServerMirrorFightModel mirrorFightModel { get { return ModelCenter.Instance.GetModel<ServerMirrorFightModel>(); } }
    /// stage
    public static readonly Vector3 leftBornPoint = new Vector3(4.9f, 0.2f, 3.5f);
LogicProject/System/CrossServerQualifying/CrossServerQualifyingModel.cs
@@ -361,7 +361,7 @@
    {
        var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
        var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
        return PlayerDatas.Instance.baseData.CrossServerFlag > 2 && mapList.IndexOf(dataMapId) != -1;
        return mapList.IndexOf(dataMapId) != -1;
    }
    //进入跨服排位赛,借用跨服竞技1v1模拟
@@ -460,11 +460,6 @@
            OverType = netPack.OverType;
            WinnerID = netPack.WinnerID;
            RoundWinnerID = netPack.RoundWinnerID.ToList();
            if (WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
            {
                WindowCenter.Instance.Close<CrossServerOneVsOneRoundWin>();
            }
            
            if (WindowCenter.Instance.IsOpen<FightingPKWin>())
            {
System/CrossServer/CrossServerUtility.cs
@@ -44,14 +44,8 @@
        var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
        var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
        if (dataMapId == 32070)
        {
            return PlayerDatas.Instance.baseData.CrossServerFlag > 2
                && dataMapId == 32070;
        }
        return PlayerDatas.Instance.baseData.CrossServerFlag > 2
            && dataMapId == CrossServerOneVsOneModel.CrossServerDataMapId;
        return dataMapId == CrossServerOneVsOneModel.CrossServerDataMapId || dataMapId == 32070;
    }
    public static bool IsCrossServerBoss()
System/CrossServerOneVsOne/CrossServerOneVsOneArenaWin.cs
@@ -48,6 +48,7 @@
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
            TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
            crossServerModel.UpdateMatchPlayersEvent += UpdateMatchPlayers;
            RoleParticularModel.OnRevPackage += OnRecvPlayerViewPack;
        }
        protected override void OnAfterOpen()
@@ -61,12 +62,29 @@
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
            TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
            crossServerModel.UpdateMatchPlayersEvent -= UpdateMatchPlayers;
            RoleParticularModel.OnRevPackage -= OnRecvPlayerViewPack;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void OnRecvPlayerViewPack(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
        {
            if (crossServerModel.matchPlayers.Count == 0)
                return;
            for (int i = 0;i < crossServerModel.matchPlayers.Count; i++)
            {
                if (crossServerModel.matchPlayers[i].PlayerID == playerID)
                {
                    matchPlayerObjs[i].Display(i);
                    break;
                }
            }
        }
        private void UpdatePlayerInfo()
        {
@@ -129,7 +147,6 @@
            winRateText.text = CrossServerOneVsOnePlayerInfo.Instance.DisplayWinningRate();
            sumNumText.text = CrossServerOneVsOnePlayerInfo.Instance.PKCount.ToString();
            int winSteakCnt = CrossServerOneVsOnePlayerInfo.Instance.CWinCount;
            winSteakCnt = winSteakCnt > 1 ? winSteakCnt : 0;
            winStreakText.text = winSteakCnt.ToString();
        }
System/CrossServerOneVsOne/CrossServerOneVsOneMatchResultCell.cs
@@ -45,18 +45,14 @@
            }
            else
            {
                int winNum = 0;
                int failNum = 0;
                resultInfo.GetWinAndFailNum(out winNum,out failNum);
                string compareScore = StringUtility.Contact(winNum,":",failNum);
                if (isWinStreak)
                {
                    info.text = Language.Get("CrossServer102", resultInfo.VsPlayerName.Replace("@gm", ""), compareScore,resultInfo.AddScore,
                    info.text = Language.Get("CrossServer102", resultInfo.VsPlayerName.Replace("@gm", ""), resultInfo.AddScore,
                        resultInfo.WinStreak, winStreakScore);
                }
                else
                {
                    info.text = Language.Get("CrossServer101", resultInfo.VsPlayerName.Replace("@gm", ""), compareScore,resultInfo.AddScore);
                    info.text = Language.Get("CrossServer101", resultInfo.VsPlayerName.Replace("@gm", ""), resultInfo.AddScore);
                }
            }
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)
        {
System/CrossServerOneVsOne/CrossServerOneVsOnePKPlayerCell.cs
@@ -25,22 +25,42 @@
                return;
            var matchPlayer = crossServerModel.matchPlayers[index];
            ShowRawPlayer((int)matchPlayer.PlayerID);
            ShowRawPlayer((int)matchPlayer.PlayerID, index);
            nameText.text = matchPlayer.PlayerName;
            fightPointTxt.text = UIHelper.ReplaceLargeArtNum(matchPlayer.FightPowerEx * Constants.ExpPointValue + matchPlayer.FightPower);
            winScoreTxt.text = crossServerModel.winConstScoreArr[index].ToString();
            winScoreTxt.text = Language.Get("CrossServerOneVsOne2") + crossServerModel.winConstScoreArr[index].ToString();
            challengeBtn.AddListener(() =>
            {
                if (matchPlayer.PlayerID > 10000)
                {
                    var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
                    if (teamModel.isMatching)
                    {
                        teamModel.RequestCancelAutoMatchTeam();
                    }
                    CrossServerLogin.Instance.InitOneVsOnePlayerInfo(matchPlayer);
                    mirrorFightModel.SendMirrorFight(CrossServerOneVsOneModel.CrossServerDataMapId, 0, matchPlayer.PlayerID, 0);
                }
                else
                {
                    CrossServerLogin.Instance.InitOneVsOneClientPlayerInfo(matchPlayer);
                    ClientCrossServerOneVsOne.JiaMatchOk(matchPlayer);
                }
            });
        }
        void ShowRawPlayer(int playerID)
        void ShowRawPlayer(int playerID, int index)
        {
            if (playerID < 10000)
            {
                ShowRobot(playerID, index);
                return;
            }
            var viewPlayerData = model.GetViewPlayerData(playerID);
            if (viewPlayerData == null)
            {
@@ -75,8 +95,59 @@
                titleID = viewPlayerData.rolePropData.TitleID,
            };
            UI3DModelExhibition.Instance.ShowPlayer(playerRaw, data);
            if (index == 0)
                UI3DModelExhibition.InstanceClone1.ShowPlayer(playerRaw, data);
            else if (index == 1)
                UI3DModelExhibition.InstanceClone2.ShowPlayer(playerRaw, data);
            else if (index == 2)
                UI3DModelExhibition.InstanceClone3.ShowPlayer(playerRaw, data);
            playerRaw.raycastTarget = false;
        }
        void ShowRobot(int playerID, int index)
        {
            var robot = crossServerModel.robots[playerID];
            int clothesID = 0;
            int weaponID1 = 0;
            int weaponID2 = 0;
            // 因为衣服是所有装备的父节点, 需要预先处理衣服
            for (int i = 0; i < robot.itemDatas.Length; ++i)
            {
                var _itemInfo = robot.itemDatas[i];
                if (_itemInfo.place == (int)RoleEquipType.Clothes)
                {
                    clothesID = (int)_itemInfo.id;
                }
                if (_itemInfo.place == (int)RoleEquipType.Weapon)
                {
                    weaponID1 = (int)_itemInfo.id;
                }
                else if (_itemInfo.place == (int)RoleEquipType.Weapon2)
                {
                    weaponID2 = (int)_itemInfo.id;
                }
            }
            var data = new UI3DPlayerExhibitionData
            {
                job = robot.job,
                clothesId = clothesID,
                weaponId = weaponID1,
                secondaryId = weaponID2,
            };
            if (index == 0)
                UI3DModelExhibition.InstanceClone1.ShowPlayer(playerRaw, data);
            else if (index == 1)
                UI3DModelExhibition.InstanceClone2.ShowPlayer(playerRaw, data);
            else if (index == 2)
                UI3DModelExhibition.InstanceClone3.ShowPlayer(playerRaw, data);
            playerRaw.raycastTarget = false;
        }
    }
}
System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
@@ -189,10 +189,6 @@
    {
        if (CrossServerUtility.IsCrossServerOneVsOne() )//副本结算界面
        {
            if (WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
            {
                WindowCenter.Instance.Close<CrossServerOneVsOneRoundWin>();
            }
            WindowCenter.Instance.Open<CrossServerSettlementWin>();
        }
    }
System/CrossServerOneVsOne/CrossServerOneVsOneRoundWin.cs
File was deleted
System/CrossServerOneVsOne/CrossServerOneVsOneRoundWin.cs.meta
File was deleted
System/CrossServerOneVsOne/CrossServerOneVsOneStartFightWin.cs
File was deleted
System/CrossServerOneVsOne/CrossServerOneVsOneStartFightWin.cs.meta
File was deleted
System/CrossServerOneVsOne/CrossServerSettlementWin.cs
@@ -64,6 +64,7 @@
        protected override void OnPreOpen()
        {
            PlayerDatas.Instance.hero.StopAll();
            timer = 0f;
            int WinnerID = crossServerModel.pkResultInfo.WinnerID;
            int playerID = (int)PlayerDatas.Instance.baseData.PlayerID;
@@ -131,10 +132,11 @@
            }
            else
            {
                CrossServerOneVsOneRewardModel.ExitCrossRealm();
                model.ExitCurrentDungeon();
            }
            CloseClick();
            PlayerDatas.Instance.hero.StopAll();
        }
        private void SetNormal()
System/CrossServerOneVsOne/FightingPKWin.cs
@@ -223,6 +223,7 @@
            if (type == DungeonCoolDownType.FightStart)
            {
                dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart);
                PlayerDatas.Instance.hero.Behaviour.StartHandupAI();
            }
        }
        private void Updatefighting(PlayerDataType _tCDBPlayerRefresh)
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOne.cs
@@ -3,14 +3,13 @@
using UnityEngine;
using vnxbqy.UI;
using System;
using System.Text.RegularExpressions;
using LitJson;
using System.Text;
public class ClientCrossServerOneVsOne
{
    public const int mapId = 1000;
    public const uint OPPONENT_PLAYERID = 999999;
    public static uint OPPONENT_PLAYERID;
    public static bool isClientCrossServerOneVsOne { get; private set; }
    public static FightResultSupplement resultSupplement;
@@ -44,50 +43,10 @@
        }
    }
    public static bool TryClientCrossServerOneVsOne(int myClass)
    {
        var config = CrossServerArenaConfig.Get(myClass);
        if (config == null)
        {
            return false;
        }
        if (config.robotProbability <= 0)
        {
            return false;
        }
        var random = UnityEngine.Random.Range(0, 100);
        return random < config.robotProbability;
    }
    public static string GetRandomOpponentName(int job)
    {
        var serverName = string.Empty;
        while (string.IsNullOrEmpty(serverName))
        {
            try
            {
                var groupRandom = UnityEngine.Random.Range(0, ServerListCenter.Instance.serverInfoCommon.common.Length);
                var serverRandom = UnityEngine.Random.Range(0, ServerListCenter.Instance.serverInfoCommon.common[groupRandom].group_list.Length);
                var serverData = ServerListCenter.Instance.serverInfoCommon.common[groupRandom].group_list[serverRandom];
                if (serverData.running_status == (int)ServerState.Normal
                    || serverData.running_status == (int)ServerState.Busy
                    || serverData.running_status == (int)ServerState.Hot)
                {
                    serverName = serverData.name;
                }
            }
            catch (System.Exception ex)
            {
                Debug.LogError(ex);
            }
        }
        var playerName = StringUtility.Contact(RandomNameConfig.GetFirstName(job), RandomNameConfig.GetSecondName(job));
        return string.Concat("[", serverName.Replace("@gm", ""), "]", playerName);
        return StringUtility.Contact(RandomNameConfig.GetFirstName(job), RandomNameConfig.GetSecondName(job));
    }
    public static GA_PlayerClient.PlayerInfo GetRandomOpponentPlayerInfo(int scoreClass, int job, string playerName, int level, ulong maxHp)
@@ -130,37 +89,18 @@
        return playerInfo;
    }
    //改为直接挑战机器人
    public static void JiaMatchOk()
    //挑战机器人 ID固定为  1-对应高分段机器人,2-中分段,3-低分段
    public static void JiaMatchOk(HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer player)
    {
        var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
        if (teamModel.isMatching)
        {
            teamModel.RequestCancelAutoMatchTeam();
        }
        var package = new HC001_tagGCCrossRealmPKMatchOK();
        //package.RoomID = 1000;
        var serverName = ServerListCenter.Instance.currentServer.name;
        var playerName = PlayerDatas.Instance.baseData.PlayerName;
        //package.PlayerName = StringUtility.Contact("[", serverName.Replace("@gm", ""), "]", playerName);
        //package.Number = (byte)UnityEngine.Random.Range(1, 3);
        var opponent = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer();
        opponent.Job = (byte)UnityEngine.Random.Range(1, 3);
        opponent.PlayerName = GetRandomOpponentName(opponent.Job);
        opponent.PlayerID = OPPONENT_PLAYERID;
        var exceptedLevel = PlayerDatas.Instance.baseData.LV - UnityEngine.Random.Range(1, 5);
        opponent.LV = (ushort)(Mathf.Clamp(exceptedLevel, FuncOpenLVConfig.Get(157).LimitLV, 999));
        //opponent.MaxProDef = 100;
        //var maxHP = (ulong)(PlayerDatas.Instance.extersion.MaxHP * UnityEngine.Random.Range(0.7f, 0.95f));
        //opponent.MaxHP = (uint)(maxHP % Constants.ExpPointValue);
        //opponent.MaxHPEx = (uint)(maxHP / Constants.ExpPointValue);
        package.MatchPlayer = new HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer[] { opponent };
        //myPlace = package.Number;
        opponentName = opponent.PlayerName;
        myPlace = 1;
        opponentName = player.PlayerName;
        OPPONENT_PLAYERID = player.PlayerID;
        StartClientCrossServerOneVsOne();
    }
@@ -293,6 +233,7 @@
        ClientCrossServerOneVsOne.resultSupplement = resultSupplement;
        var sendInfo = new CC108_tagCMCrossRealmPKRobotOver();
        sendInfo.IsWin = (byte)(resultSupplement.winPlayerId == PlayerDatas.Instance.baseData.PlayerID ? 1 : 0);
        sendInfo.TagPlayerID = OPPONENT_PLAYERID;
        GameNetSystem.Instance.SendInfo(sendInfo);
    }
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
@@ -18,7 +18,9 @@
    static GA_PVPClientPlayer opponentPlayer;
    static uint roundWiner = 0;
    PKStage currentStage;
    PKStage currentStage;
    CrossServerOneVsOneModel model { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
    public override void Initialize()
    {
@@ -62,13 +64,9 @@
            opponentPlayer = null;
        }
        var job = CrossServerLogin.Instance.oneVsOnePlayerData.opponentJob;
        var playerName = CrossServerLogin.Instance.oneVsOnePlayerData.opponentName;
        var level = CrossServerLogin.Instance.oneVsOnePlayerData.opponentLevel;
        var maxHp = CrossServerLogin.Instance.oneVsOnePlayerData.opponentMaxHp;
        var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
        playerInfo = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, maxHp);
        // opponentPlayer = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Enemy);
        playerInfo = model.robots[(int)ClientCrossServerOneVsOne.OPPONENT_PLAYERID];
        playerInfo.maxHp = CrossServerLogin.Instance.oneVsOnePlayerData.opponentMaxHp;
        playerInfo.hp = playerInfo.maxHp;
        PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo);
        PersonalEnemy.OnPlayerAppear += OnPlayerAppear;
        SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate());
@@ -252,19 +250,9 @@
        public override void End()
        {
            fightInfo.roundWinnerIds.Add(roundWiner);//记录获胜者的id
            if (fightInfo.roundCount >= 2)
            if (fightInfo.roundCount >= 1)
            {
                if (fightInfo.roundCount == 2)
                {
                    if (fightInfo.roundWinnerIds[0] == fightInfo.roundWinnerIds[1])
                    {
                        fightInfo.isOver = true;
                    }
                }
                else
                {
                    fightInfo.isOver = true;
                }
                fightInfo.isOver = true;
            }
            if (fightInfo.isOver)
System/Dungeon/DungeonModel.cs
@@ -1486,7 +1486,7 @@
                    if (PlayerDatas.Instance.baseData.dungeonMapId != 0)
                    {
                        config = MapConfig.Get(PlayerDatas.Instance.baseData.dungeonMapId);
                        if (config != null && config.MapFBType == (int)MapType.SingleFB)
                        if (config != null && (config.MapFBType == (int)MapType.SingleFB || config.MapFBType == 10))
                        {
                            _mapId = PlayerDatas.Instance.baseData.dungeonMapId;
                        }
System/Login/CrossServerLogin.cs
@@ -41,6 +41,82 @@
        public string passwordBuf { get; private set; }
        public void InitOneVsOnePlayerInfo(HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer player)
        {
            oneVsOnePlayerData = new CrossServerOneVsOne()
            {
                isClient = false,
                myName = PlayerDatas.Instance.baseData.PlayerName,
                myJob = PlayerDatas.Instance.baseData.Job,
                myFace = AvatarHelper.GetMyAvatarID(),
                myFacePic = AvatarHelper.GetMyAvatarFrameID(),
                myBornPoint = 1,
                opponentName = player.PlayerName.Replace("@gm", ""),
                opponentJob = player.Job,
                opponentFace = (int)player.Face,
                opponentFacePic = (int)player.FacePic,
                opponentLevel = player.LV,
                opponentPlayerId = (int)player.PlayerID,
            };
        }
        public void UpdatePKPlayerInfo(GA_Player player)
        {
            oneVsOnePlayerData = new CrossServerOneVsOne()
            {
                isClient = oneVsOnePlayerData.isClient,
                myName = oneVsOnePlayerData.myName,
                myJob = oneVsOnePlayerData.myJob,
                myFace = oneVsOnePlayerData.myFace,
                myFacePic = oneVsOnePlayerData.myFacePic,
                myBornPoint = oneVsOnePlayerData.myBornPoint,
                opponentName = oneVsOnePlayerData.opponentName,
                opponentJob = oneVsOnePlayerData.opponentJob,
                opponentFace = oneVsOnePlayerData.opponentFace,
                opponentFacePic = oneVsOnePlayerData.opponentFacePic,
                opponentMaxHp = player.ActorInfo.MaxHp,
                opponentLevel = oneVsOnePlayerData.opponentLevel,
                opponentPlayerId = oneVsOnePlayerData.opponentPlayerId,
                MaxProDef = (int)player.ActorInfo.maxProDef,
            };
        }
        //挑战机器人 ID固定为  1-对应高分段机器人,2-中分段,3-低分段
        public void InitOneVsOneClientPlayerInfo(HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer player)
        {
            int playerID = (int)player.PlayerID;
            ulong maxHP = 100000;
            if (playerID == 1)
            {
                maxHP = PlayerDatas.Instance.extersion.MaxHP * 2;
            }
            else if (playerID == 2)
            {
                maxHP = (ulong)(PlayerDatas.Instance.extersion.MaxHP*0.8);
            }
            else if (playerID == 3)
            {
                maxHP = (ulong)(PlayerDatas.Instance.extersion.MaxHP * 0.4);
            }
            oneVsOnePlayerData = new CrossServerOneVsOne()
            {
                isClient = false,
                myName = PlayerDatas.Instance.baseData.PlayerName,
                myJob = PlayerDatas.Instance.baseData.Job,
                myFace = AvatarHelper.GetMyAvatarID(),
                myFacePic = AvatarHelper.GetMyAvatarFrameID(),
                myBornPoint = 1,
                opponentName = player.PlayerName.Replace("@gm", ""),
                opponentJob = player.Job,
                opponentFace = (int)player.Face,
                opponentFacePic = (int)player.FacePic,
                opponentLevel = player.LV,
                opponentPlayerId = (int)player.PlayerID,
                opponentMaxHp = maxHP
            };
        }
        //public void CrossServerOneVsOneLogin()
        //{
        //    var loginModel = ModelCenter.Instance.GetModel<LoginModel>();
@@ -258,15 +334,10 @@
        public ulong opponentMaxHp;
        public int MaxProDef;// 最大护盾
        public CrossServerOneVsOne SetWaitForLoginCrossServer(bool waitForLoginCrossServer)
        {
            this.waitForLoginCrossServer = waitForLoginCrossServer;
            return this;
        }
        public bool IsCrossServerOneVsOneEntering()
        {
            return autoEnsureTime > Time.time;
            return false;
        }
    }