Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -517,6 +517,7 @@ StageManager.Instance.Load<DungeonStage>(baseData.MapID, true); if (hero != null && !hero.ActorInfo.serverDie) { hero.RequestName(); hero.IdleImmediate(); hero.State = E_ActorState.Idle; } Core/NetworkPackage/ClientPack/ClientToGameServer/CC0_CrossRealm/CC003_tagCGForceQuitCrossState.cs
New file @@ -0,0 +1,19 @@ using UnityEngine; using System.Collections; // C0 03 强制退出跨服状态 #tagCGForceQuitCrossState public class CC003_tagCGForceQuitCrossState : GameNetPackBasic { public CC003_tagCGForceQuitCrossState() { combineCmd = (ushort)0x1801; _cmd = (ushort)0xC003; } public override void WriteToBytes() { } } Core/NetworkPackage/ClientPack/ClientToGameServer/CC0_CrossRealm/CC003_tagCGForceQuitCrossState.cs.meta
File was renamed from System/CrossServerOneVsOne/MatchWin.cs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 784a736d12f092c4db01eddfdd2ea569 timeCreated: 1544583799 licenseType: Free guid: 8121ba00aeb53ff4cab35031d1b94af1 timeCreated: 1545810908 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC005_tagGCCrossRealmPKBillboardInfo.cs
@@ -4,9 +4,11 @@ // C0 05 跨服PK赛季排行榜 #tagGCCrossRealmPKBillboardInfo public class DTCC005_tagGCCrossRealmPKBillboardInfo : DtcBasic { CrossServerRewardModel m_CrossServerRewardModel; public class DTCC005_tagGCCrossRealmPKBillboardInfo : DtcBasic { CrossServerRewardModel m_CrossServerRewardModel; CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } } public override void Done(GameNetPackBasic vNetPack) { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HC005_tagGCCrossRealmPKBillboardInfo vNetData = vNetPack as HC005_tagGCCrossRealmPKBillboardInfo; if (vNetData == null) { System/CrossServerOneVsOne/CrossServerOneVsOneWin.cs
@@ -151,7 +151,6 @@ WindowCenter.Instance.CloseImmediately<CrossServerOneVsOneHonorStoreWin>(); WindowCenter.Instance.CloseImmediately<SeasonRewardWin>(); WindowCenter.Instance.CloseImmediately<SegmentRewardWin>(); WindowCenter.Instance.CloseImmediately<MatchWin>(); arena_SelectImg.SetActive(false); rankAward_SelectImg.SetActive(false); seasonAward_SelectImg.SetActive(false); System/CrossServerOneVsOne/CrossServerRewardModel.cs
@@ -60,29 +60,16 @@ CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } } public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>(); public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem(); //Dictionary<int,> Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>> ZoneRankingDic = new Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>>(); public Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>(); public Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>> ZoneRankingDic = new Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>>(); public Action CrossRealmPKAwardStateUpdate;//领取奖励刷新 public Action RankInformationUpdate;//排行奖励刷新 public Action RankInformationUpdate;//排行榜刷新 private uint DayPKCountAwardState; //每日匹配次数奖励记录 private uint DayWinCountAwardState; // 每日胜利次数奖励记录 private uint DanLVAwardState; // 段位达标奖励记录 private int SeasonAwardState; // 赛季结算奖励是否已领取 private bool m_IsOpenMatch; public int ZoneID = 0;//赛区ID public int SeasonID = 0;//赛季ID public bool IsOpenMatch { get { return m_IsOpenMatch; } set { m_IsOpenMatch = value; } } DateTime m_DateTime = DateTime.Now; public DateTime Date_Time { get { return m_DateTime; } set { m_DateTime = value; } } public int MyRank = 0;//我的排名 public override void Init() { GetSeasonAward(); @@ -137,6 +124,10 @@ itemClass.Isbind = int.Parse((_jsonData[j][2]).ToString()); itemClassList.Add(itemClass); } if (itemClassList.Count <= 0) { continue; } seasonAwardClass.ItemList = itemClassList; SegmentRewardDic.Add(_config.DanLV, seasonAwardClass); } @@ -161,10 +152,6 @@ } } SeasonRewardDic = _award; } public void ResetTime() { Date_Time = TimeUtility.ServerNow; } public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102跨服PK玩家奖励记录 { @@ -203,7 +190,7 @@ _bool = MathUtility.GetBitValue(DayWinCountAwardState, (ushort)Index); break; case CrossRealmPKAwardStateEnum.DanLVAwardState: _bool = MathUtility.GetBitValue(DayWinCountAwardState, (ushort)Index); _bool = MathUtility.GetBitValue(DanLVAwardState, (ushort)Index); break; } } @@ -226,6 +213,17 @@ public void ViewCrossPKBillboard(int ZoneID, int SeasonID)//(赛区,赛季) 查看跨服竞技场赛季排行榜 { ZoneRankingStruct zoneRanking = new ZoneRankingStruct(); zoneRanking.ZoneID = ZoneID; zoneRanking.SeasonID = SeasonID; int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID; if (ZoneRankingDic.ContainsKey(zoneRanking)) { if (RankInformationUpdate != null) { RankInformationUpdate(); } } CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard(); c001.ZoneID = (byte)ZoneID; c001.SeasonID = (byte)SeasonID; @@ -234,11 +232,9 @@ public void CrossRealmPKBillboardInfo(HC005_tagGCCrossRealmPKBillboardInfo info)//跨服PK赛季排行榜 { ZoneID = info.ZoneID; SeasonID = info.SeasonID; Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>(); if (info.Count > 0) { RankInformationDic.Clear(); for (int i = 0; i < info.Count; i++) { if (!RankInformationDic.ContainsKey(i)) @@ -252,6 +248,10 @@ RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV; RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore; RankInformationDic.Add(i, RankingInformation); if (PlayerDatas.Instance.baseData.PlayerID == info.PKBillboardList[i].PlayerID) { MyRank = i; } } else { @@ -276,7 +276,10 @@ } else { ZoneRankingDic[zoneRank] = RankInformationDic; if (RankInformationDic.Count > 0) { ZoneRankingDic[zoneRank] = RankInformationDic; } } if (RankInformationUpdate != null) { System/CrossServerOneVsOne/MatchWin.cs
File was deleted System/CrossServerOneVsOne/RankCellCtrl.cs
@@ -19,12 +19,13 @@ [SerializeField] Image m_RankNumBottom; [SerializeField] Text m_NameTxt; [SerializeField] Text m_JobTxt; [SerializeField] Text m_RankWhatTxt; // [SerializeField] Text m_RankWhatTxt; [SerializeField] Text m_SegmentTxt; [SerializeField] Text m_IntegralTxt; [SerializeField] Image m_RealmImage; CrossServerRewardModel m_CrossServerRewardModel; CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } } RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } } public override void Refresh(CellView cell) { int index = cell.index; @@ -53,25 +54,34 @@ } m_RealmImage.gameObject.SetActive(false); RankingInformationClass data = null; if (crossServerRewardModel.RankInformationDic != null && index < crossServerRewardModel.RankInformationDic.Count) ZoneRankingStruct zoneRanking = new ZoneRankingStruct(); zoneRanking.ZoneID= crossServerRewardModel.ZoneID; zoneRanking.SeasonID = crossServerRewardModel.SeasonID; Dictionary<int, RankingInformationClass> rankDic = new Dictionary<int, RankingInformationClass>(); if (crossServerRewardModel.ZoneRankingDic.ContainsKey(zoneRanking)) { data = crossServerRewardModel.RankInformationDic[index]; rankDic = crossServerRewardModel.ZoneRankingDic[zoneRanking]; } if (rankDic != null && index < rankDic.Count) { data = rankDic[index]; } if (data != null) { m_RankButton.SetListener(()=> { DebugEx.LogError(data.PlayerID); //DebugEx.LogError(data.PlayerID); roleParticularModel.ViewFairyCrossServerOneVsOne(data.PlayerID); }); m_NameTxt.text = data.PlayerName; m_JobTxt.text = OccupationNameConfig.GetOccupationName(data.Job, 0); m_JobTxt.text = OccupationNameConfig.GetOccupationName(data.Job, 1); RealmConfig presentCfg = Config.Instance.Get<RealmConfig>(data.Realm); if (presentCfg != null) { m_RealmImage.gameObject.SetActive(true); m_RealmImage.SetSprite(presentCfg.Img); } m_RankWhatTxt.text = data.Power.ToString(); // m_RankWhatTxt.text = data.Power.ToString(); Segment(data.DanLv); m_IntegralTxt.text = data.PkScore.ToString(); } @@ -79,13 +89,13 @@ { m_NameTxt.text = Language.Get("L1046"); m_JobTxt.text = "-"; m_RankWhatTxt.text = "-"; // m_RankWhatTxt.text = "-"; m_SegmentTxt.text= "-"; m_IntegralTxt.text= "-"; m_NameTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_JobTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_RankWhatTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); // m_RankWhatTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_SegmentTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); m_SegmentTxt.color = UIHelper.GetUIColor(TextColType.NavyBrown); } System/CrossServerOneVsOne/RankingWin.cs
@@ -11,7 +11,8 @@ using TableConfig; using EnhancedUI.EnhancedScroller; namespace Snxxz.UI { namespace Snxxz.UI { //积分排名 [XLua.Hotfix] public class RankingWin : Window @@ -20,6 +21,7 @@ [SerializeField] Button m_CloseButton; [SerializeField] Text m_TextMyRank;//我的排名 [SerializeField] Text m_TextScores;//我的积分 [SerializeField] Text m_NumberText;//赛季 [SerializeField] GameObject m_DivisionObj;//赛区 [SerializeField] Text m_DivisionNameText1;//赛区名 @@ -38,23 +40,34 @@ protected override void BindController() { m_ScrollerController.OnRefreshCell += OnRefreshGridCell; m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_Z;//赛区 m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_S;//赛区 } protected override void AddListeners() { m_CloseButton.AddListener(()=> { Close(); }); m_CloseButton.AddListener(() => { Close(); }); m_PullButton1.AddListener(OnClickPullButton1); m_PullButton2.AddListener(OnClickPullButton2); } protected override void OnPreOpen() { SetZoneIDAndSeasonID(); ZoneAndSeasonpanel(); m_NumberText.text = CrossServerOneVsOnePKSeason.Instance.SeasonID.ToString(); m_TextScores.text = CrossServerOneVsOnePlayerInfo.Instance.Score.ToString(); SetTextMyRank(); SetZoneAndSeasonNum(); OnCreateGridLineCell(m_ScrollerController); OnCreateGridLineCell_Z(m_ScrollerController1); OnCreateGridLineCell_S(m_ScrollerController2); m_ScrollerController.JumpIndex(0); } protected override void OnActived() { crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询 } protected override void OnAfterOpen() { CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfoEvent; @@ -67,7 +80,7 @@ crossServerRewardModel.RankInformationUpdate -= RankInformationUpdate; } protected override void OnAfterClose() { @@ -75,16 +88,18 @@ #endregion private void RankInformationUpdate() { m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 SetZoneAndSeasonNum(); OnCreateGridLineCell(m_ScrollerController); m_ScrollerController.JumpIndex(0); } private void OnClickPullButton1() { m_ClickScreenOtherSpace1.SetActive(true); m_ClickScreenOtherSpace1.SetActive(!m_ClickScreenOtherSpace1.activeSelf); } private void OnClickPullButton2() { m_ClickScreenOtherSpace1.SetActive(false); m_ClickScreenOtherSpace2.SetActive(!m_ClickScreenOtherSpace2.activeSelf); } private void UpdatePlayerInfoEvent() { @@ -109,19 +124,63 @@ { gridCtrl.AddCell(ScrollerDataType.Normal, i); } } gridCtrl.Restart(); } void OnCreateGridLineCell_Z(ScrollerController gridCtrl)//赛区 { gridCtrl.Refresh(); for (int i = 1; i <= CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } void OnCreateGridLineCell_S(ScrollerController gridCtrl)//赛季 { gridCtrl.Refresh(); for (int i = 1; i <= CrossServerOneVsOnePKSeason.Instance.SeasonID; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { } private void OnRefreshGridCell_Z(ScrollerDataType type, CellView cell)//赛区 { int Index = cell.index; Button Btn = cell.GetComponent<Button>(); Text txt = cell.transform.Find("Text").GetComponent<Text>(); txt.text = "赛区" + Index; Btn.SetListener(() => { crossServerRewardModel.ZoneID = Index; m_ClickScreenOtherSpace1.SetActive(false); crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询 }); } private void OnRefreshGridCell_S(ScrollerDataType type, CellView cell)//赛季 { int Index = cell.index; Button Btn = cell.GetComponent<Button>(); Text txt = cell.transform.Find("Text").GetComponent<Text>(); txt.text = "赛季" + Index; Btn.SetListener(() => { crossServerRewardModel.SeasonID = Index; m_ClickScreenOtherSpace2.SetActive(false); crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询 }); } private void SetTextMyRank() { int danlv = CrossServerOneVsOnePlayerInfo.Instance.DanLV; var config= Config.Instance.Get<CrossServerArenaConfig>(danlv); var config = Config.Instance.Get<CrossServerArenaConfig>(danlv); if (config != null && danlv >= 6) { m_TextMyRank.text = config.Name; @@ -134,8 +193,20 @@ private void SetZoneAndSeasonNum() { m_DivisionNameText1.text = crossServerRewardModel.ZoneID.ToString(); m_DivisionNameText2.text = crossServerRewardModel.SeasonID.ToString(); m_DivisionNameText1.text = "赛区"+crossServerRewardModel.ZoneID.ToString(); m_DivisionNameText2.text = "赛季"+crossServerRewardModel.SeasonID.ToString(); } private void SetZoneIDAndSeasonID()//设置赛区和ID { if (crossServerRewardModel.ZoneID == 0) { crossServerRewardModel.ZoneID = CrossServerOneVsOnePKSeason.Instance.ZoneID; } if (crossServerRewardModel.SeasonID == 0) { crossServerRewardModel.SeasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID; } } private void ZoneAndSeasonpanel() @@ -152,7 +223,7 @@ { m_DivisionObj.gameObject.SetActive(false); } if (CrossServerOneVsOnePKSeason.Instance.SeasonID > 1)//赛区 if (CrossServerOneVsOnePKSeason.Instance.SeasonID > 1)//赛季 { m_SeasonObj.gameObject.SetActive(true); if (m_ClickScreenOtherSpace2.activeSelf) System/CrossServerOneVsOne/SegmentRewardCell.cs
@@ -5,7 +5,8 @@ using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { //段位奖励的奖励条 [XLua.Hotfix] @@ -36,12 +37,19 @@ } public void SetReceive(int id) { m_ReceiveBtn.RemoveAllListeners(); m_ReceiveBtn.AddListener(OnClickReceive); _Id = id; var config = Config.Instance.Get<CrossServerArenaConfig>(_Id); if (config != null) { m_Image_Segment.SetSprite(config.IconKey); // m_Image_Segment.SetNativeSize(); } if (crossServerRewardModel.SegmentRewardDic.ContainsKey(id)) { var dic = crossServerRewardModel.SegmentRewardDic[id]; var dic = crossServerRewardModel.SegmentRewardDic[id]; m_Text_Segment.text = dic.Name; ReceiveItem(id); } System/Login/CrossServerLogin.cs
@@ -49,8 +49,8 @@ opponentName = matchOK.MatchPlayer[0].PlayerName, opponentJob = matchOK.MatchPlayer[0].Job, opponentMaxHp = (int)matchOK.MatchPlayer[0].MaxHP, opponentLevel=(int)matchOK.MatchPlayer[0].LV, opponentPlayerId=(int)matchOK.MatchPlayer[0].PlayerID, opponentLevel = (int)matchOK.MatchPlayer[0].LV, opponentPlayerId = (int)matchOK.MatchPlayer[0].PlayerID, }; Clock.Create(DateTime.Now + new TimeSpan(5 * TimeSpan.TicksPerSecond), () => @@ -241,7 +241,9 @@ } else { //需要服务端再给一个封包来处理登录跨服失败的情况 ExceptionCatcher.ReportException("登录跨服出现异常", StringUtility.Contact("角色:", PlayerDatas.Instance.baseData.PlayerName)); var sendInfo = new CC003_tagCGForceQuitCrossState(); GameNetSystem.Instance.SendInfo(sendInfo); loginModel.ReAccountLogin(); } } System/Mount/PlayerMountDatas.cs
@@ -250,7 +250,12 @@ int type = 0; foreach (var key in _DicMountItem.Keys) { if (_DicMountItem[key] >= Config.Instance.Get<AttrFruitConfig>(key).MaxUseCnt) var AttrFruit = Config.Instance.Get<AttrFruitConfig>(key); if (AttrFruit == null) { continue; } if (_DicMountItem[key] >= AttrFruit.MaxUseCnt) { continue; } System/RoleParticulars/RoleParticularModel.cs
@@ -73,6 +73,12 @@ ViewRoleParticulars(_playerId); } public void ViewFairyCrossServerOneVsOne(int _playerId) { viewPlayerType = 4; ViewRoleParticulars(_playerId); } private void ViewRoleParticulars(int playerID) { if (viewPlayerType != 2) @@ -96,9 +102,19 @@ return; } } CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo(); pak.PlayerID = (uint)playerID; GameNetSystem.Instance.SendInfo(pak); switch (viewPlayerType) { case 4: CC002_tagCGViewCrossPlayerInfo c002 = new CC002_tagCGViewCrossPlayerInfo(); c002.PlayerID = (uint)playerID; GameNetSystem.Instance.SendInfo(c002); break; default: CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo(); pak.PlayerID = (uint)playerID; GameNetSystem.Instance.SendInfo(pak); break; } } public void OnRevRoleEquip(HA705_tagSCQueryPlayerCacheResult package) @@ -597,6 +613,7 @@ switch (viewPlayerType) { case 0: case 4: if (!WindowCenter.Instance.IsOpen<RoleParticularsWin>()) { WindowCenter.Instance.Open<RoleParticularsWin>(); Utility/TimeUtility.cs
@@ -134,6 +134,11 @@ public static event Action OnCreateRoleTimeRefresh; public static void OnRefreshCreateRoleTime(HA124_tagMCPlayerInfo _package) { if (_package.socketType==GameNetSystem.SocketType.CrossSever) { return; } createRoleTime = Convert.ToDateTime(UIHelper.GetTime(_package.CreateRoleTime)); createRoleTimeTail = new DateTime(createRoleTime.Year, createRoleTime.Month, createRoleTime.Day); if (OnCreateRoleTimeRefresh != null) @@ -146,6 +151,11 @@ public static event Action OnServerTimeRefresh; public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData) { if (vNetData.socketType == GameNetSystem.SocketType.CrossSever) { return; } DateTime n = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second); s_ServerTime = n; DebugEx.Log("OnRefreshServerTime月份:" + s_ServerTime.Month); @@ -159,9 +169,15 @@ SyncServerTime(); }, 60); } public static event Action OnServerOpenDayRefresh; public static void OnRefreshServerOpenDay(HA005_tagOpenServerDay package) { if (package.socketType == GameNetSystem.SocketType.CrossSever) { return; } OpenDay = package.Day; IsMixServer = package.IsMixServer == 1; MixOpenDay = package.MixDay;