From b9885c49f34e6b697dca9cc2b268640d112df8da Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 08 七月 2019 22:03:33 +0800
Subject: [PATCH] 4445 【BUG】【主干】跨服pk打机器人,技能用了没特效没伤害
---
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs | 84 +++++++++++++++++++++++++++++++++---------
1 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs b/System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
index 6866a42..6c3ac8e 100644
--- a/System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
+++ b/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;
}
}
--
Gitblit v1.8.0