Core/NetworkPackage/ClientPack/ClientToMapServer/CB4_Fight/CB40F_tagCMRecyclePriWoodPile.cs
New file @@ -0,0 +1,18 @@ // B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile public class CB40F_tagCMRecyclePriWoodPile : GameNetPackBasic { public uint ObjID; public CB40F_tagCMRecyclePriWoodPile() { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xB40F; } public override void WriteToBytes() { WriteBytes(ObjID, NetDataType.DWORD); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CB4_Fight/CB40F_tagCMRecyclePriWoodPile.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: be36f35f95686874bab75bb7fa423a7a timeCreated: 1562589481 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs
@@ -33,6 +33,11 @@ PersonalEnemy.Bind(vNetData); return; } else if (_npcConfig.NPCType == (int)E_NpcType.PersonalEnemyPVP) { PersonalEnemy.Bind(vNetData); return; } if (BossInfoConfig.IsStone((int)vNetData.NPCID)) { Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
@@ -22,14 +22,18 @@ if (PersonalEnemy.m_SBindCDict.ContainsKey(vNetData.ObjID)) { _actor = GAMgr.Instance.GetBySID(PersonalEnemy.m_SBindCDict[vNetData.ObjID]) as GActorFight; _actor.ActorInfo.serverDie = true; _actor.ActorInfo.SyncServerHp = 0; _actor.ActorInfo.SyncServerHpEx = 0; _actor.ActorInfo.ReduceHp(GActorInfo.FullHp); ClientSceneManager.Instance.lastDeadPos = _actor.Pos; GAMgr.Instance.ServerDie(_actor.ServerInstID); _actor.Die(); _actor.ActorInfo.serverDie = true; GAMgr.Instance.DoDelayDie(_actor as GActorFight); if (_actor is GA_PVPClientPlayer) { GA_PVPClientPlayer.Result(true); } if (_hero != null) { if (_hero.SelectTarget != null && _actor.ServerInstID == _hero.SelectTarget.ServerInstID) Fight/Actor/AI/HeroAI_Auto.cs
@@ -217,6 +217,14 @@ if (m_IsDungeon) { if (ClientCrossServerOneVsOne.isClientCrossServerOneVsOne) { if (dungeonModel.dungeonFightStage == DungeonFightStage.Prepare) { return; } } if (dungeonModel.dungeonFightStage == DungeonFightStage.Normal || PlayerDatas.Instance.baseData.MapID == 31010) { Fight/Actor/HeroBehaviour.cs
@@ -789,7 +789,8 @@ ClientSceneManager.Instance.lastDeadPos = _target.Pos; if (_target is GA_NpcClientFightNorm) if (_target is GA_NpcClientFightNorm || _target is GA_PVPClientPlayer) { _bindID = PersonalEnemy.GetPersionEnemySID(_target.ServerInstID); } @@ -798,7 +799,8 @@ CB405_tagCMSuperAtk.tagSkillPosHurtObj _hurtObj = new CB405_tagCMSuperAtk.tagSkillPosHurtObj(); _hurtObj.ObjID = _bindID == 0 ? _target.ServerInstID : _bindID; if (_target is GA_PlayerXMZZ) if (_target is GA_PlayerXMZZ || _target is GA_PVPClientPlayer) { _hurtObj.ObjType = (byte)GameObjType.gotNPC; } Fight/GameActor/GAMgr.cs
@@ -1450,7 +1450,8 @@ // 全体模式, 强制模式 需要对玩家进行预先判断 if ((E_AttackMode)PlayerDatas.Instance.baseData.AttackMode == E_AttackMode.All || (E_AttackMode)PlayerDatas.Instance.baseData.AttackMode == E_AttackMode.Family || PlayerDatas.Instance.maliciousAtkPlayer.Count > 0) || PlayerDatas.Instance.maliciousAtkPlayer.Count > 0 || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne) { List<GActor> _list = GetGroupList(E_ActorGroup.Player); DoFindTarget(_list, chkPos, r, ref _actor, angle, lockNpcID); Fight/GameActor/GA_PVPClientPlayer.cs
@@ -173,7 +173,7 @@ public sealed override void RefreshLifeBar(ulong value) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null && _hero.SelectTarget == this) if (_hero != null && (_hero.SelectTarget == this || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)) { if (GA_Player.s_OnRefreshLife != null) { Fight/GameActor/PersonalEnemy.cs
@@ -9,6 +9,7 @@ public uint npcID; public Vector3 pos; public E_ActorGroup g; public GA_PlayerClient.PlayerInfo playerInfo; } public static Dictionary<uint, uint> m_CBinSdDict = new Dictionary<uint, uint>(); @@ -17,6 +18,7 @@ private static Dictionary<uint, List<BindInfo>> BindInfoDict = new Dictionary<uint, List<BindInfo>>(); public static UnityEngine.Events.UnityAction<GA_NpcClientFightNorm> OnNpcAppear; public static UnityEngine.Events.UnityAction<GA_PVPClientPlayer> OnPlayerAppear; public static void UnInit() { @@ -33,6 +35,30 @@ return _objID; } return 0; } public static void Create(uint npcID, Vector3 position, GA_PlayerClient.PlayerInfo info) { var _bindInfo = new BindInfo { npcID = npcID, pos = position, playerInfo = info }; if (!BindInfoDict.ContainsKey(npcID)) { BindInfoDict.Add(npcID, new List<BindInfo>()); } BindInfoDict[npcID].Add(_bindInfo); var _package = new CB40C_tagCMSummonPriWoodPile(); _package.NPCID = npcID; _package.Count = 1; _package.HP = info.hp; _package.HPEx = 0; GameNetSystem.Instance.SendInfo(_package); } public static void Create(uint npcID, E_ActorGroup group, Vector3 position, @@ -69,11 +95,33 @@ GameNetSystem.Instance.SendInfo(_package); } public static void ReleaseAll() { foreach (var _csid in m_CBinSdDict.Keys) { var _p = new CB40F_tagCMRecyclePriWoodPile(); _p.ObjID = m_CBinSdDict[_csid]; GameNetSystem.Instance.SendInfo(_p); var _actor = GAMgr.Instance.GetBySID(_csid); if (_actor != null) { GAMgr.Instance.ServerDie(_actor.ServerInstID); GAMgr.Instance.Release(_actor); } } m_CBinSdDict.Clear(); m_SBindCDict.Clear(); BindInfoDict.Clear(); } public static void Release(GA_NpcClientFightNorm npc) { uint _psid = 0; if (m_CBinSdDict.TryGetValue(npc.ServerInstID, out _psid)) { var _p = new CB40F_tagCMRecyclePriWoodPile(); _p.ObjID = _psid; GameNetSystem.Instance.SendInfo(_p); m_CBinSdDict.Remove(npc.ServerInstID); if (m_SBindCDict.ContainsKey(_psid)) { @@ -84,44 +132,88 @@ GAMgr.Instance.Release(npc); } public static void ReleasePlayer(GA_PVPClientPlayer player) { uint _psid = 0; if (m_CBinSdDict.TryGetValue(player.ServerInstID, out _psid)) { var _p = new CB40F_tagCMRecyclePriWoodPile(); _p.ObjID = _psid; GameNetSystem.Instance.SendInfo(_p); m_CBinSdDict.Remove(player.ServerInstID); if (m_SBindCDict.ContainsKey(_psid)) { m_SBindCDict.Remove(_psid); } } GAMgr.Instance.ServerDie(player.ServerInstID); GAMgr.Instance.Release(player); } public static void Bind(H0406_tagNPCAppear h0406) { Vector3 _pos = PlayerDatas.Instance.hero.Pos; GA_PlayerClient.PlayerInfo playerInfo = default(GA_PlayerClient.PlayerInfo); if (BindInfoDict.ContainsKey(h0406.NPCID) && BindInfoDict[h0406.NPCID].Count > 0) { _pos = BindInfoDict[h0406.NPCID][0].pos; playerInfo = BindInfoDict[h0406.NPCID][0].playerInfo; BindInfoDict[h0406.NPCID].RemoveAt(0); } var _config = NPCConfig.Get((int)h0406.NPCID); GA_NpcClientFightNorm _npc = null; if (_config.IsBoss != (int)E_MonsterType.Normal && _config.IsBoss != (int)E_MonsterType.Elite) GA_PVPClientPlayer _player = null; if (_config.NPCType == (int)E_NpcType.PersonalEnemyPVP) { _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(h0406.NPCID, E_ActorGroup.Enemy); } else { _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>(h0406.NPCID, E_ActorGroup.Enemy); } if (_npc != null) { var _vaildPos = _pos; GActor.TryGetValidPos(_pos, ref _vaildPos); _npc.BornPos = _npc.Pos = _vaildPos; m_CBinSdDict[_npc.ServerInstID] = h0406.ObjID; m_SBindCDict[h0406.ObjID] = _npc.ServerInstID; _npc.ActorInfo.Hp = h0406.NPCHP; _npc.ActorInfo.HpEx = h0406.NPCHPEx; _npc.ActorInfo.MaxHp = h0406.MaxHP; _npc.ActorInfo.MaxHpEx = h0406.MaxHPEx; _npc.ActorInfo.moveSpeed = 500f / h0406.Speed; _npc.ActorInfo.LV = h0406.CurLV; _npc.RefreshLifeBar(_npc.ActorInfo.RealHp); if (OnNpcAppear != null) _player = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Player); if (_player != null) { OnNpcAppear(_npc); m_CBinSdDict[_player.ServerInstID] = h0406.ObjID; m_SBindCDict[h0406.ObjID] = _player.ServerInstID; _player.ActorInfo.Hp = h0406.NPCHP; _player.ActorInfo.HpEx = h0406.NPCHPEx; _player.ActorInfo.MaxHp = playerInfo.maxHp; _player.ActorInfo.MaxHpEx = h0406.MaxHPEx; _player.ActorInfo.moveSpeed = 500f / 150; _player.ActorInfo.LV = playerInfo.level; if (OnPlayerAppear != null) { OnPlayerAppear(_player); } } } else if (_config.NPCType == (int)E_NpcType.PersonalEnemy) { if (_config.IsBoss != (int)E_MonsterType.Normal && _config.IsBoss != (int)E_MonsterType.Elite) { _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(h0406.NPCID, E_ActorGroup.Enemy); } else { _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>(h0406.NPCID, E_ActorGroup.Enemy); } if (_npc != null) { var _vaildPos = _pos; GActor.TryGetValidPos(_pos, ref _vaildPos); _npc.BornPos = _npc.Pos = _vaildPos; m_CBinSdDict[_npc.ServerInstID] = h0406.ObjID; m_SBindCDict[h0406.ObjID] = _npc.ServerInstID; _npc.ActorInfo.Hp = h0406.NPCHP; _npc.ActorInfo.HpEx = h0406.NPCHPEx; _npc.ActorInfo.MaxHp = h0406.MaxHP; _npc.ActorInfo.MaxHpEx = h0406.MaxHPEx; _npc.ActorInfo.moveSpeed = 500f / h0406.Speed; _npc.ActorInfo.LV = h0406.CurLV; _npc.RefreshLifeBar(_npc.ActorInfo.RealHp); if (OnNpcAppear != null) { OnNpcAppear(_npc); } } } } Fight/Stage/Dungeon/DungeonStage.cs
@@ -156,6 +156,7 @@ AdventureStage.Instance.Exit(); } PersonalEnemy.ReleaseAll(); ClientSceneManager.Instance.UnInit(); ClientCollectUtility.UnInit(); GAMgr.Instance.UnInit(); @@ -163,7 +164,6 @@ ClientDropItemUtility.Instance.ReleaseAll(); SFXPlayUtility.Instance.Unitialize(); FakeDungeonUtility.Instance.Reset(); PersonalEnemy.UnInit(); } protected override void OnUpdate() System/CrossServerOneVsOne/FightingPKWin.cs
@@ -1,23 +1,23 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, December 21, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, December 21, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FightingPKWin : Window { public class FightingPKWin : Window { [SerializeField] RoleInformation m_RoleInformation1; [SerializeField] RoleInformation m_RoleInformation2; [SerializeField] Button m_AutoBtn; [SerializeField] GameObject m_AutoImg; [SerializeField] RoleInformation m_RoleInformation2; [SerializeField] Button m_AutoBtn; [SerializeField] GameObject m_AutoImg; [SerializeField] Text m_ScoreText1; [SerializeField] Text m_ScoreText2; [SerializeField] Text m_CountdownText; @@ -40,39 +40,39 @@ BuffModel m_BuffModel; BuffModel Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel<BuffModel>()); } } private int positionType = 1; #region Built-in protected override void BindController() private int positionType = 1; #region Built-in protected override void BindController() { _ScrollRect1 = Viewport1.GetComponent<ScrollRect>(); _ScrollRect2 = Viewport2.GetComponent<ScrollRect>(); m_ScrollerController1.OnRefreshCell += OnRefreshGridCell1; m_ScrollerController2.OnRefreshCell += OnRefreshGridCell2; m_ScrollerController2.OnRefreshCell += OnRefreshGridCell2; } protected override void AddListeners() { m_AutoBtn.AddListener(AutoButton); m_RoleInformation1.BuffButton.AddListener(myBuffList); m_RoleInformation2.BuffButton.AddListener(opponentBuffList); } protected override void OnPreOpen() { positionType = CrossServerLogin.Instance.oneVsOnePlayerData.myBornPoint; protected override void AddListeners() { m_AutoBtn.AddListener(AutoButton); m_RoleInformation1.BuffButton.AddListener(myBuffList); m_RoleInformation2.BuffButton.AddListener(opponentBuffList); } protected override void OnPreOpen() { positionType = CrossServerLogin.Instance.oneVsOnePlayerData.myBornPoint; CrossServerOneVsOneRewardModel.PkDanLvNow = CrossServerOneVsOnePlayerInfo.Instance.DanLV; PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418) GA_Player.s_OnRefreshLife += OnRefreshPlayerLifeBar; PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418) GA_Player.s_OnRefreshLife += OnRefreshPlayerLifeBar; if (PlayerDatas.Instance.hero != null) { PlayerDatas.Instance.hero.ActorInfo.OnHpChange += OnHeroHpChanged; } _MyBuffSortList.Clear(); _OpponentBuffSortList.Clear(); m_ScoreText1.text = 0.ToString(); m_ScoreText2.text = 0.ToString(); } _MyBuffSortList.Clear(); _OpponentBuffSortList.Clear(); m_ScoreText1.text = 0.ToString(); m_ScoreText2.text = 0.ToString(); SetScoreText(); BuffScheduling();//buff排序 GetopponentBuff(); @@ -89,28 +89,28 @@ { dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart); PlaceOfBirth(positionType);//从出生位置设置信息 Viewport1.gameObject.SetActive(false); Viewport1.gameObject.SetActive(false); Viewport2.gameObject.SetActive(false); } protected override void OnAfterOpen() } protected override void OnAfterOpen() { HeroBehaviour.OnStopHandupAI += OnHeroHandupAIStopPassive; HeroBehaviour.OnStartHandupAI += OnHeroHandupAIStarted; dungeonModel.dungeonCoolDownEvent += DungeonCoolDownEvent; dungeonModel.dungeonCoolDownEvent += DungeonCoolDownEvent; dungeonModel.updateMissionEvent += UpdateMissionEvent; BuffModel.Even_ObjAddBuf += AddBuff; BuffModel.Even_ObjDelBuff += DelBuff; BuffModel.BuffUpdateEvent += BuffUpdateEvent; OpponentInformation.Instance.ShieldUpdate += ShieldUpdate; BuffModel.Even_ObjDelBuff += DelBuff; BuffModel.BuffUpdateEvent += BuffUpdateEvent; OpponentInformation.Instance.ShieldUpdate += ShieldUpdate; } protected override void OnPreClose() protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418) PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418) GA_Player.s_OnRefreshLife -= OnRefreshPlayerLifeBar; if (PlayerDatas.Instance.hero != null) { @@ -123,13 +123,13 @@ BuffModel.Even_ObjAddBuf -= AddBuff; BuffModel.Even_ObjDelBuff -= DelBuff; BuffModel.BuffUpdateEvent -= BuffUpdateEvent; OpponentInformation.Instance.ShieldUpdate -= ShieldUpdate; OpponentInformation.Instance.ShieldUpdate -= ShieldUpdate; } protected override void OnAfterClose() { protected override void OnAfterClose() { } protected override void LateUpdate() { @@ -161,13 +161,13 @@ } } #endregion #endregion private void OnHeroHpChanged(ulong hp) { PlaceOfBirthUpdate(positionType); } } private void DelBuff() { BuffScheduling(); @@ -217,14 +217,14 @@ OnCreateGridLineCell(m_ScrollerController1); } } } } private void DungeonCoolDownEvent(DungeonCoolDownType type) { if (type == DungeonCoolDownType.FightStart) { dungeonEndTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.FightStart); } } } private void Updatefighting(PlayerDataType _tCDBPlayerRefresh) { switch (_tCDBPlayerRefresh) @@ -244,7 +244,7 @@ } private void OnRefreshPlayerLifeBar(uint _instanceId, ulong _hp, ulong _maxHp) { // DebugEx.LogError("最大血量"+ _maxHp+"当前血量"+ _hp); // Debug.Log("============== 最大血量" + _maxHp + "当前血量" + _hp); if (positionType == 1) { m_RoleInformation2.SetHeroHP((int)_maxHp, (int)_hp); @@ -285,7 +285,7 @@ //{ // m_AutoImg.SetActive(false); //} } } private void AutoButton() { var _hero = PlayerDatas.Instance.hero; @@ -301,8 +301,8 @@ } } //m_AutoImg.SetActive(!m_AutoImg.activeSelf); } } private void SetScoreText() { int roundNum = dungeonModel.mission.roundNum; @@ -337,7 +337,7 @@ private void myBuffList() { Viewport1.gameObject.SetActive(true); } } private void opponentBuffList() { Viewport2.gameObject.SetActive(true); @@ -408,7 +408,7 @@ _buffBGM.b_BuffTime.gameObject.SetActive(false); _buffBGM.BiBuffText.gameObject.SetActive(false); _buffBGM._OnOff = false; } } void UpdateControllerPosition() { if (_MyBuffSortList.Count == 0) @@ -474,7 +474,7 @@ (Viewport1 as RectTransform).sizeDelta = (Viewport1 as RectTransform).sizeDelta.SetY(_OpponentBuffSortList.Count * ItemHeight + UpperAndLower); } } } } void BuffScheduling()//buff排序 { _MyBuffSortList.Clear(); @@ -483,7 +483,7 @@ _MyBuffSortList.Add(key); } } } private void IsShowMyBuffBtn() { if (_MyBuffSortList.Count > 0) @@ -555,8 +555,8 @@ { m_RoleInformation1.BuffNumber.text = _OpponentBuffSortList.Count.ToString(); } } } private void PlaceOfBirth(int type)//关于出生点设置位置信息 { if (type == 1)//左 @@ -605,7 +605,7 @@ m_RoleInformation1.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, (int)PlayerDatas.Instance.baseData.HP); m_RoleInformation1.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield); #if UNITY_EDITOR Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); // Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); #endif } else @@ -615,7 +615,7 @@ m_RoleInformation2.SetHeroHP(PlayerDatas.Instance.extersion.MaxHP, (int)PlayerDatas.Instance.baseData.HP); m_RoleInformation2.SetShieldNumber(PlayerDatas.Instance.extersion.MaxProDef, (int)PlayerDatas.Instance.baseData.shield); #if UNITY_EDITOR Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); // Debug.LogFormat("设置血量: {0}/{1}", PlayerDatas.Instance.baseData.HP, PlayerDatas.Instance.extersion.MaxHP); #endif } } @@ -632,11 +632,11 @@ _OpponentBuffSortList.Add(buffIds[i]); } } } } } } } } System/CrossServerOneVsOneClient/ClientCrossServerOneVsOne.cs
@@ -304,7 +304,7 @@ ClientDungeonStageUtility.SetClientDungeon(false, 0); PlayerDatas.Instance.extersion.pkState = 0; ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData(); PersonalEnemy.ReleaseAll(); PlayerDatas.Instance.baseData.MapID = PlayerDatas.Instance.baseData.mainServerMapIdRecord; StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand() { System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
@@ -66,12 +66,28 @@ 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); // opponentPlayer = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Enemy); PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo); PersonalEnemy.OnPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint; PlayerDatas.Instance.hero.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? leftBornPoint : rightBornPoint; CameraController.Instance.Apply(); } private void OnPlayerAppear(GA_PVPClientPlayer player) { opponentPlayer = player; } private IEnumerator WaitForPlayerCreate() { while (opponentPlayer == null) { yield return null; } opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint; currentStage = new WaitStartStage(); currentStage.Begin(); } @@ -148,10 +164,10 @@ pkStageType = PKStageType.WaitStart; duration = 3f; Debug.LogFormat("进入阶段:{0}", pkStageType); opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1); // opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1); opponentPlayer.ActorInfo.serverDie = false; opponentPlayer.IdleImmediate(); opponentPlayer.SkillMgr.ResetAllCD(); // opponentPlayer.SkillMgr.ResetAllCD(); GA_PVPClientPlayer.AutoAI(false); PlayerDatas.Instance.baseData.HP = (uint)PlayerDatas.Instance.extersion.MaxHP; @@ -178,7 +194,7 @@ public override void Update() { timer += Time.deltaTime; completed = timer >= duration; completed = timer >= duration && opponentPlayer != null; } } @@ -196,13 +212,13 @@ figthCompleted = false; restTimeTimer = 0f; opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint; PlayerDatas.Instance.hero.Behaviour.StartHandupAI(); GA_PVPClientPlayer.AutoAI(true); opponentPlayer.SelectTarget = PlayerDatas.Instance.hero; PlayerDatas.Instance.hero.SelectTarget = opponentPlayer; #if UNITY_EDITOR Debug.LogFormat("进入阶段:{0}", pkStageType); #endif } public override void End() @@ -225,6 +241,7 @@ if (fightInfo.isOver) { PersonalEnemy.ReleasePlayer(opponentPlayer); opponentPlayer.Destroy(); } else @@ -282,22 +299,33 @@ public override void Begin() { pkStageType = PKStageType.RoundPrepare; GA_PVPClientPlayer.AutoAI(false); duration = 3f; Debug.LogFormat("进入阶段:{0}", pkStageType); if (fightInfo.roundWinnerIds[fightInfo.roundWinnerIds.Count - 1] == PlayerDatas.Instance.baseData.PlayerID) { PlayerDatas.Instance.hero.SelectTarget = opponentPlayer; opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1); opponentPlayer.ActorInfo.serverDie = false; opponentPlayer.IdleImmediate(); opponentPlayer.SkillMgr.ResetAllCD(); 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); PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo); PersonalEnemy.OnPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); // PlayerDatas.Instance.hero.SelectTarget = opponentPlayer; // opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1); // opponentPlayer.ActorInfo.serverDie = false; // opponentPlayer.IdleImmediate(); // opponentPlayer.SkillMgr.ResetAllCD(); if (PlayerDatas.Instance.hero.ActorInfo.RealHp <= 0) { PlayerDatas.Instance.baseData.HP = 1; var maxHp = PlayerDatas.Instance.extersion.MaxHP; PlayerDatas.Instance.hero.ActorInfo.ResetHp(1, -1, maxHp, -1); PlayerDatas.Instance.hero.ActorInfo.ResetHp(1, -1, PlayerDatas.Instance.extersion.MaxHP, -1); PlayerDatas.Instance.FightRefreshPlayerHp(1); PlayerDatas.Instance.hero.IdleImmediate(); } @@ -313,14 +341,34 @@ if (opponentPlayer.ActorInfo.RealHp <= 0) { opponentPlayer.ActorInfo.ResetHp(1, -1, (int)playerInfo.maxHp, -1); opponentPlayer.ActorInfo.serverDie = false; opponentPlayer.IdleImmediate(); opponentPlayer = null; // opponentPlayer.ActorInfo.ResetHp(1, -1, (int)playerInfo.maxHp, -1); // opponentPlayer.ActorInfo.serverDie = false; // opponentPlayer.IdleImmediate(); playerInfo.hp = 1; PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo); PersonalEnemy.OnPlayerAppear += OnPlayerAppear; SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate()); } } PlayerDatas.Instance.hero.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? leftBornPoint : rightBornPoint; } private void OnPlayerAppear(GA_PVPClientPlayer player) { opponentPlayer = player; } private IEnumerator WaitForPlayerCreate() { while (opponentPlayer == null) { yield return null; } opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint; opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1); } public override void End() @@ -332,7 +380,7 @@ public override void Update() { timer += Time.deltaTime; completed = timer >= duration; completed = timer >= duration && opponentPlayer != null; } }