From d01b24369869ddde953776f82a8900e49b016d64 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期六, 25 八月 2018 11:57:39 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Fight/Actor/State/SMB/SMB_Base.cs |   53 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/Fight/Actor/State/SMB/SMB_Base.cs b/Fight/Actor/State/SMB/SMB_Base.cs
index de44069..3290439 100644
--- a/Fight/Actor/State/SMB/SMB_Base.cs
+++ b/Fight/Actor/State/SMB/SMB_Base.cs
@@ -91,6 +91,7 @@
 
     protected void AddToNpcPosList(GActorFight attacker, GActorFight target, int bodyControlId, Vector3 direction, List<NPCPos> npcPosList)
     {
+        // Debug.LogFormat("{0} attack {1} ==================== 0", attacker.GetType().ToString(), target.GetType().ToString());
         if (PreFightMission.Instance.IsFinished() == false)
         {
             return;
@@ -103,10 +104,20 @@
 
         SoBodyControl _bodyControl = ScriptableObjectLoader.LoadSoBodyControl(bodyControlId);
 
+        if (!_bodyControl.pushOrPull)
+        {
+            direction = -direction;
+        }
+
         float _distance = _bodyControl.curve.keys[_bodyControl.curve.length - 1].time;
 
         Vector3 _checkPos = target.Pos;
         Vector3 _pullPosition = _checkPos + direction * _distance;
+
+        if (!_bodyControl.pushOrPull)
+        {
+            _pullPosition = attacker.Pos + MathUtility.ForwardXZ(target.Pos, attacker.Pos) * 0.5f;
+        }
 
         _checkPos.y = 0;
         _pullPosition.y = 0;
@@ -117,24 +128,36 @@
             _pullPosition = _hit.position;
         }
 
+        // 鍙涓昏瀵艰嚧鐨勬帹閫昏緫. 濡傛灉鏄叾浠栦汉鐨勯��涓嶈
+        if (target is GActorNpcFight)
+        {
+            if (attacker is GA_Player)
+            {
+                return;
+            }
+        }
+
         if (GActor.TryGetValidPos(_pullPosition, ref _checkPos))
         {
             if (target.ActorType == GameObjType.gotPlayer)
             {
-                GActorPlayerBase _player = target as GActorPlayerBase;
-                //Debug.Log("--------------------------- 8");
-                if (_player.MovingState != E_MovingState.Ride)
+                if (target is GA_Hero)
                 {
-                    //Debug.Log("--------------------------- 9");
-                    CB402_tagCMNPCBeatBack _beatBack = new CB402_tagCMNPCBeatBack();
-                    _beatBack.ObjType = (byte)GameObjType.gotPlayer;
-                    _beatBack.Count = 1;
-                    _beatBack.NPCPosList = new CB402_tagCMNPCBeatBack.tagCMNPCPos[1];
-                    _beatBack.NPCPosList[0] = new CB402_tagCMNPCBeatBack.tagCMNPCPos();
-                    _beatBack.NPCPosList[0].ObjID = (uint)target.ServerInstID;
-                    _beatBack.NPCPosList[0].PosX = (ushort)(_checkPos.x * 2f + GA_Hero.MapOffset.x);
-                    _beatBack.NPCPosList[0].PosY = (ushort)(_checkPos.z * 2f + GA_Hero.MapOffset.x);
-                    GameNetSystem.Instance.SendInfo(_beatBack);
+                    GActorPlayerBase _player = target as GActorPlayerBase;
+                    //Debug.Log("--------------------------- 8");
+                    if (_player.MovingState != E_MovingState.Ride)
+                    {
+                        // Debug.LogFormat("{0} attack {1} ==================== 9", attacker.GetType().ToString(), target.GetType().ToString());
+                        CB402_tagCMNPCBeatBack _beatBack = new CB402_tagCMNPCBeatBack();
+                        _beatBack.ObjType = (byte)GameObjType.gotPlayer;
+                        _beatBack.Count = 1;
+                        _beatBack.NPCPosList = new CB402_tagCMNPCBeatBack.tagCMNPCPos[1];
+                        _beatBack.NPCPosList[0] = new CB402_tagCMNPCBeatBack.tagCMNPCPos();
+                        _beatBack.NPCPosList[0].ObjID = (uint)target.ServerInstID;
+                        _beatBack.NPCPosList[0].PosX = (ushort)(_checkPos.x * 2f + GA_Hero.MapOffset.x);
+                        _beatBack.NPCPosList[0].PosY = (ushort)(_checkPos.z * 2f + GA_Hero.MapOffset.z);
+                        GameNetSystem.Instance.SendInfo(_beatBack);
+                    }
                 }
                 //else
                 //{
@@ -146,8 +169,8 @@
                 NPCPos _npcPos = new NPCPos
                 {
                     objId = (int)target.ServerInstID,
-                    posX = (int)(_checkPos.x * 2f),
-                    posY = (int)(_checkPos.z * 2f)
+                    posX = (int)(_checkPos.x * 2f + GA_Hero.MapOffset.x),
+                    posY = (int)(_checkPos.z * 2f + GA_Hero.MapOffset.z)
                 };
                 npcPosList.Add(_npcPos);
             }

--
Gitblit v1.8.0