Browse Source

【优化】检测模块

meijun 3 years ago
parent
commit
03599d6af5
29 changed files with 217 additions and 116 deletions
  1. 1 1
      Common/CommonAI/Zone/Formula/IFormulas.cs
  2. 1 0
      Common/CommonAI/Zone/Instance/InstanceUnit.Status.cs
  3. 2 2
      Common/CommonAI/Zone/Instance/InstanceUnit.cs
  4. 2 1
      Common/CommonAI/ZoneClient/Messages.cs
  5. 3 15
      Common/CommonAI/ZoneServer/JSGModule/JSGHackerModule.cs
  6. 14 9
      Common/CommonAI/ZoneServer/JSGModule/JSGSrvData.cs
  7. 2 1
      GameEditor/GameEditor.csproj
  8. 1 1
      XmdsCommon/Plugin/XmdsProperties.cs
  9. 66 0
      XmdsCommonServer/Plugin/JSGModule/JSGXmdsHackerModule.cs
  10. 53 51
      XmdsCommonServer/Plugin/Team/XmdsTeamVirtual.cs
  11. 5 0
      XmdsCommonServer/Plugin/XmdsSkillTemplate/Skills/XmdsSkill.cs
  12. 48 17
      XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.cs
  13. 1 1
      XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual_Monster.cs
  14. 1 0
      XmdsCommonServer/XmdsCommonServer.csproj
  15. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_AttackSpeed.cs
  16. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_AttackUpByHp.cs
  17. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Brand_4.cs
  18. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_IgnorCtrlAndSpeedChg.cs
  19. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Invincible.cs
  20. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_MoveSpeedChange.cs
  21. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_NextAttackCrit_AddHP.cs
  22. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_PropChange.cs
  23. 2 2
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedAttenuation.cs
  24. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedChg_DamageRemit.cs
  25. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedUpAndIngoreCtrl.cs
  26. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Stealth.cs
  27. 2 2
      XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SunderArmor.cs
  28. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/other/Other_100005.cs
  29. 1 1
      XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/other/Other_100006.cs

+ 1 - 1
Common/CommonAI/Zone/Formula/IFormulas.cs

@@ -319,7 +319,7 @@ namespace CommonAI.Zone.Formula
 		/** 分发击杀怪物事件 */
 		bool DispatchKillOtherEvent(IVirtualUnit attacker, IVirtualUnit deader);
         /** 获取玩家当前的简要属性信息 */
-        UnitSimpleProp GetSimpleProp();
+        void OnPlayerKillMonster(InstanceUnit monster);
         /////////////////////////////////////////////////////////////////////////////
 
 

+ 1 - 0
Common/CommonAI/Zone/Instance/InstanceUnit.Status.cs

@@ -1604,6 +1604,7 @@ namespace CommonAI.Zone.Instance
                     bf.TotalTime = buff.Data.LifeTimeMS;
                     bf.PassTime = (buff.PassTimeMS);
                     bf.OverlayLevel = buff.OverlayLevel;
+                    bf.ext = buff.BuffExtData;
                     ret.Add(bf);
                 }
                 return false;

+ 2 - 2
Common/CommonAI/Zone/Instance/InstanceUnit.cs

@@ -852,8 +852,8 @@ namespace CommonAI.Zone.Instance
 
                 if (this.IsMonster && this.Virtual.GetMaType() >= 4 && this.Level > 80)
                 {
-                    log.Info("boss死亡:" + this.mProcessDeadCallbackTime + ", 单位id=" + this.Info.ID + ", 场景Id=" +
-                        this.Parent.GetSceneID() + ", " + this.mZone.UUID + ", " + (attacker == null ? "null" : attacker.PlayerUUID));
+                    log.Info("boss死亡:" + this.Parent.GetSceneID() + ", 单位id=" + this.Info.ID + ", 处理死亡时间:" + this.mProcessDeadCallbackTime
+                         + ", SceneUID: " + this.mZone.UUID + ", " + (attacker == null ? "null" : attacker.PlayerUUID));
 
                     if (attacker.IsPlayerUnit)
                     {

+ 2 - 1
Common/CommonAI/ZoneClient/Messages.cs

@@ -21,6 +21,7 @@ namespace CommonAI.ZoneClient
             public int TotalTime;
             public int PassTime;
             public byte OverlayLevel;
+            public int ext;                 //扩展字段,目前非网络流字段
 
             public void WriteExternal(IOutputStream output)
             {
@@ -43,7 +44,7 @@ namespace CommonAI.ZoneClient
 
             public override string ToString()
             {
-                return "[" + BuffTemplateID + ", " + TotalTime + ", " + PassTime + ", " + OverlayLevel + "]";
+                return "[" + BuffTemplateID + ", " + TotalTime + ", " + PassTime + ", " + OverlayLevel + ", " + ext + "]";
             }
         }
         public struct UnitSkillStatus : IExternalizable

+ 3 - 15
Common/CommonAI/ZoneServer/JSGModule/JSGHackerModule.cs

@@ -25,26 +25,14 @@ namespace CommonAI.ZoneServer.JSGModule
 				InstancePlayer player = (InstancePlayer)(attacker.IsPlayer ? attacker : attacker.Virtual.GetMasterUnit());
 				if (player == null)
 				{
-					log.Info("OnPlayerKillMonster player not exist:" + attacker.PlayerUUID + ", " + attacker.Info.ID + ", SceneId:" + attacker.Parent.GetSceneID());
+					log.Info("OnPlayerKillMonster player not exist:" + attacker.Parent.GetSceneID() + ", mID:" + monster.Info.ID + ", PID: "+ attacker.PlayerUUID);
 					return;
 				}
-				UnitSimpleProp simpleProp = player.Virtual.GetSimpleProp();
-				//玩家属性打印
-				log.Info("--------OnPlayerKillMonster print start:" + player.PlayerUUID + ", " + attacker.Parent.GetSceneID());
-				log.Info("当前血:" + simpleProp.mCurHp + ", 攻防血" + simpleProp.mAtk + ", " + simpleProp.mDef + ", " + simpleProp.mMaxHP + ", 妖:" + simpleProp.mMonsterAtk + ", " + simpleProp.mMonsterDef);
-
-				UnitBuffStatus[] buffStatus = player.GetCurrentBuffStatus();
-				if(buffStatus != null)
-                {
-					foreach(UnitBuffStatus buffItem in buffStatus)
-                    {
-						log.Info("玩家buff:" + buffItem.ToString());
-					}
-                }
+				player.Virtual.OnPlayerKillMonster(monster);				
 			}
 			catch(Exception e)
             {
-				log.Warn("OnPlayerKillMonster catch:", e);
+				log.Warn("CI OnPlayerKillMonster catch:", e);
             }			
 #endif
 		}

+ 14 - 9
Common/CommonAI/ZoneServer/JSGModule/JSGSrvData.cs

@@ -14,13 +14,18 @@ using static CommonAI.RTS.Manhattan.AstarManhattan.MSpaceAStar;
 
 namespace CommonAI.ZoneServer.JSGModule
 {
-	public class UnitSimpleProp
-	{
-		public long mCurHp;
-		public long mMaxHP;
-		public long mAtk;
-		public long mDef;
-		public long mMonsterAtk;
-		public long mMonsterDef;
-	}
+	//public class UnitSimpleProp
+	//{
+	//	public long mCurHp;
+	//	//基础属性
+	//	public long mMaxHP;
+	//	public long mAtk;
+	//	public long mDef;
+	//	public long mBaseHP;
+	//	public int mBaseAtk;
+	//	public int mBaseDef;
+
+	//	public long mMonsterAtk;
+	//	public long mMonsterDef;
+	//}
 }

+ 2 - 1
GameEditor/GameEditor.csproj

@@ -39,10 +39,11 @@
     <DefineConstants>TRACE;DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <RunCodeAnalysis>false</RunCodeAnalysis>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
     <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
     <Prefer32Bit>false</Prefer32Bit>
+    <CodeAnalysisIgnoreGeneratedCode>false</CodeAnalysisIgnoreGeneratedCode>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
     <PlatformTarget>AnyCPU</PlatformTarget>

+ 1 - 1
XmdsCommon/Plugin/XmdsProperties.cs

@@ -1618,7 +1618,7 @@ namespace XmdsCommon.Plugin
 		///////////////////////////////////////////////////////////////////////////////////////////
 		/// 为实现技能或者buff特殊逻辑,加上的特殊字段
 		public int NormalAtkCriteRate;                  //普攻暴击几率
-														///////////////////////////////////////////////////////////////////////////////////////////
+		///////////////////////////////////////////////////////////////////////////////////////////
 
 		//获取攻击力
 		public int GetFinalAttack(bool isMonster)

+ 66 - 0
XmdsCommonServer/Plugin/JSGModule/JSGXmdsHackerModule.cs

@@ -0,0 +1,66 @@
+using CommonAI.Zone.Instance;
+using CommonLang;
+using CommonLang.Log;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XmdsCommon.Plugin;
+using static CommonAI.ZoneClient.ClientStruct;
+using static XmdsCommonServer.Plugin.XmdsVirtual;
+
+namespace XmdsCommonServer.Plugin.JSGXmdsModule
+{
+    public class JSGXmdsHackerModule
+    {
+        protected static readonly Logger log = LoggerFactory.GetLogger("JSGXmdsHackerModule");
+
+        public static void OnPlayerKillMonster(InstancePlayer attacker, InstanceUnit monster)
+        {
+            //玩家属性打印
+            XmdsVirtual playerVir = (attacker.Virtual as XmdsVirtual);
+            XmdsUnitProp CurProp = playerVir.MirrorProp;
+            XmdsUnitProp oldProp = playerVir.GetOriginProp();
+
+            log.Info("ID:" + attacker.PlayerUUID + ", 所在场景:" + attacker.Parent.GetSceneID());
+
+            log.Info(", 当前血:" + attacker.CurrentHP + ",基础:" + oldProp.MaxAttack + ", " + oldProp.Defence + ", " + oldProp.MaxHP 
+                +  ", 攻防血" + CurProp.MaxAttack + ", " + CurProp.Defence + ", " + CurProp.MaxHP + ", 妖:" + CurProp.monsterAtk + ", " + CurProp.monsterDef 
+                + ", 妖比:" + CurProp.monsterAtkPer + ", " + CurProp.monsterDefPer) ;
+
+            log.Info("扩展属性1, 增减伤:" + CurProp.AllDmgAdd + ", " + CurProp.AllDmgReduce + ", 玩家增减伤:" + CurProp.PlayerDamageAdd + ", " + CurProp.PlayerDamageReduce
+                + ", 神器伤:" + CurProp.ArtifactMainPer + ", boss伤害:" + CurProp.ToBossCritRate + ", " + CurProp.ToBossCritDamage + ", 杀意:" + CurProp.KillValuePer 
+                + ", 吸血" + CurProp.NormalAtkLeech + ", " + CurProp.ActiveAtkLeech + ", 怪伤害:" + CurProp.monsterDamageAdd + ", " + CurProp.monsterDamageReduce);
+
+            log.Info("扩展属性1, 暴击率:" + CurProp.CritRate + ", 爆伤:" + CurProp.CritDamage + ", 回血:" + CurProp.MaxHPReborn + ", 韧性:" + CurProp.CtrlTimeReduce 
+                + ", CD缩减:" + CurProp.SkillCD + ", 治疗效果:" + CurProp.HealEffect + ", " + CurProp.HealedEffect + ", 移攻速:" + CurProp.MoveSpeed + ", " + CurProp.AttackSpeed + ", 技伤:" + CurProp.SkillDamageAdd);
+
+            UnitBuffStatus[] buffStatus = attacker.GetCurrentBuffStatus();
+            if (buffStatus != null)
+            {
+                foreach (UnitBuffStatus buffItem in buffStatus)
+                {
+                    log.Info("玩家buff:" + buffItem.ToString());
+                }
+            }
+
+            //检测基本属性是否有异常的,打印一下
+            float rate1 = oldProp.MaxAttack == 0 ? 1 : (float)(CurProp.MaxAttack) / oldProp.MaxAttack;
+            float rate2 = oldProp.Defence == 0 ? 1 : CurProp.Defence / oldProp.Defence;
+            float rate3 = oldProp.MaxHP == 0 ? 1 : CurProp.MaxHP / oldProp.MaxHP;
+            if(rate1 > 1.2f || rate2 > 1.2f || rate3 > 1.2f)
+            {
+                HashMap<int, PropChangeOperation> playerProps = playerVir.GetChangePropMap();
+                foreach(PropChangeOperation chgProp in playerProps.Values)
+                {
+                    log.Info("玩家变更属性:" + chgProp.ToString());
+                }
+            }
+            else
+            {
+                log.Info("无特别异常属性!");
+            }
+        }
+    }
+}

+ 53 - 51
XmdsCommonServer/Plugin/Team/XmdsTeamVirtual.cs

@@ -14,9 +14,9 @@ public class XmdsTeamVirtual
     private List<XmdsInstancePlayer> teamMembers = null;
     private TeamFollow mTeamFollow;
 
-	//队伍玩家宠物的天命数据加成
-	private long [] mFateRefreshTime = new long[5];
-	private int[] mFateValue = new int[5];
+    //队伍玩家宠物的天命数据加成
+    private long[] mFateRefreshTime = new long[5];
+    private int[] mFateValue = new int[5];
 
     public XmdsInstancePlayer TeamLeader
     {
@@ -37,7 +37,7 @@ public class XmdsTeamVirtual
 
     public bool isTeamLeader(string uuid)
     {
-        if(mTeamLeader != null)
+        if (mTeamLeader != null)
         {
             return mTeamLeader.PlayerUUID == uuid;
         }
@@ -59,11 +59,11 @@ public class XmdsTeamVirtual
 
     public void addMember(XmdsInstancePlayer player)
     {
-        if(this.teamMembers == null)
+        if (this.teamMembers == null)
         {
             this.teamMembers = new List<XmdsInstancePlayer>();
         }
-    
+
         if (!this.teamMembers.Contains(player))
         {
             teamMembers.RemoveAll((e) => e.PlayerUUID == player.PlayerUUID);
@@ -73,14 +73,14 @@ public class XmdsTeamVirtual
 
     public void cancelAutoFollow(XmdsInstancePlayer player)
     {
-        for(int i = 0; i < this.teamMembers.Count; i++)
+        for (int i = 0; i < this.teamMembers.Count; i++)
         {
-            if(this.teamMembers[i].PlayerUUID == player.PlayerUUID)
+            if (this.teamMembers[i].PlayerUUID == player.PlayerUUID)
             {
                 player.canFollowTeam = false;
                 this.mTeamFollow.removeFollowMember(player);
 
-                if(player.CurrentState is StateFollowLeader)
+                if (player.CurrentState is StateFollowLeader)
                 {
                     player.doSomething();
                 }
@@ -111,9 +111,9 @@ public class XmdsTeamVirtual
 
     public void removeMember(XmdsInstancePlayer player)
     {
-        for(int i = 0;i< this.teamMembers.Count; i++)
+        for (int i = 0; i < this.teamMembers.Count; i++)
         {
-            if(teamMembers[i].PlayerUUID == player.PlayerUUID)
+            if (teamMembers[i].PlayerUUID == player.PlayerUUID)
             {
                 cancelAutoFollow(player);
                 this.teamMembers.Remove(player);
@@ -124,9 +124,9 @@ public class XmdsTeamVirtual
 
     public void changeLeader(XmdsInstancePlayer player, TeamDataEventR2B eventData)
     {
-		if(TeamLeader == null || TeamLeader.PlayerUUID != player.PlayerUUID)
-		//if (TeamLeader != player)
-		{
+        if (TeamLeader == null || TeamLeader.PlayerUUID != player.PlayerUUID)
+        //if (TeamLeader != player)
+        {
             var oldLeader = TeamLeader;
             TeamLeader = player;
             if (TeamLeader != null)
@@ -136,22 +136,22 @@ public class XmdsTeamVirtual
                 this.mTeamFollow.removeFollowMember(TeamLeader);
                 if (TeamLeader.IsGuard)
                 {
-					var guard = TeamLeader.IsGuard;
-					//TeamLeader.cancelGuard();
-					SetAutoBattleB2C evt = new SetAutoBattleB2C();
-					evt.isAutoBattle = guard ? 1 : 0;
-					TeamLeader.queueEvent(evt);
-				}
+                    var guard = TeamLeader.IsGuard;
+                    //TeamLeader.cancelGuard();
+                    SetAutoBattleB2C evt = new SetAutoBattleB2C();
+                    evt.isAutoBattle = guard ? 1 : 0;
+                    TeamLeader.queueEvent(evt);
+                }
 
-				var stateFollow = new SetAutoFollowB2C();
-				stateFollow.stateFollow = 0;
-				TeamLeader.queueEvent(stateFollow);
-			}
-            if(oldLeader != null && eventData != null && eventData.ContainMem(oldLeader.PlayerUUID))
+                var stateFollow = new SetAutoFollowB2C();
+                stateFollow.stateFollow = 0;
+                TeamLeader.queueEvent(stateFollow);
+            }
+            if (oldLeader != null && eventData != null && eventData.ContainMem(oldLeader.PlayerUUID))
             {
                 oldLeader.Leader = TeamLeader;
                 //oldLeader.canFollowTeam = true;
-				// this.mTeamFollow.addFollowMember(oldLeader);
+                // this.mTeamFollow.addFollowMember(oldLeader);
                 if (oldLeader.IsGuard)
                 {
                     oldLeader.cancelGuard();
@@ -164,7 +164,7 @@ public class XmdsTeamVirtual
         }
     }
 
-	public void notifyTeamerRide()
+    public void notifyTeamerRide()
     {
         if (TeamLeader != null)
         {
@@ -187,30 +187,35 @@ public class XmdsTeamVirtual
     }
 
 
-	/** 根据玩家宠物,获取队伍属性加成 */
-	public int GetTeamFateValue(UnitFateType fateType)
-	{
-		if (fateType < UnitFateType.One || fateType > UnitFateType.Five)
-		{
-			return 0;
-		}
+    /** 根据玩家宠物,获取队伍属性加成 */
+    public int GetTeamFateValue(UnitFateType fateType)
+    {
+        if (fateType < UnitFateType.One || fateType > UnitFateType.Five)
+        {
+            return 0;
+        }
 
-		int type = (int)fateType - 1;
-		//每10s钟,重新获取下加成值
-		if (mFateRefreshTime[type] + 10 < CommonLang.CUtils.localTimeMS)
-		{
-			mFateValue[type] = 0;
+        int type = (int)fateType - 1;
+        //每10s钟,重新获取下加成值
+        if (mFateRefreshTime[type] + 10 < CommonLang.CUtils.localTimeMS)
+        {
+            mFateValue[type] = 0;
 
-			for (int i = 0; i < this.teamMembers.Count; i++)
-			{
-				mFateValue[type] = Math.Max(mFateValue[type], teamMembers[i].Virtual.GetPetTalentAddition(fateType));
-			}
+            for (int i = 0; i < this.teamMembers.Count; i++)
+            {
+                mFateValue[type] = Math.Max(mFateValue[type], teamMembers[i].Virtual.GetPetTalentAddition(fateType));
+            }
 
-			mFateRefreshTime[type] = CommonLang.CUtils.localTimeMS;
-		}
+            mFateRefreshTime[type] = CommonLang.CUtils.localTimeMS;
+        }
 
-		return mFateValue[type];
-	}
+        return mFateValue[type];
+    }
+
+    /** 获取队伍成员 */
+    public List<XmdsInstancePlayer> GetTeamMembers(){
+        return this.teamMembers;
+    }
 
 	public class TeamFollow
     {
@@ -266,10 +271,7 @@ public class XmdsTeamVirtual
                     }
                 }
             }
-        }  
-		
-		
-
+        } 
     } 
 
 }

+ 5 - 0
XmdsCommonServer/Plugin/XmdsSkillTemplate/Skills/XmdsSkill.cs

@@ -328,6 +328,11 @@ namespace XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills
             }
         }
 
+        public int GetBindBuffID()
+        {
+            return this.BindBuffID;
+        }
+
         protected virtual void OnBindTemplate(ref BuffTemplate buffTemplate)
         {
 

+ 48 - 17
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.cs

@@ -23,6 +23,7 @@ using CommonAI.data;
 using XmdsCommonServer.Plugin.Base;
 using XmdsCommonSkill.Plugin.CardSkill;
 using CommonAI.ZoneServer.JSGModule;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 
 namespace XmdsCommonServer.Plugin
 {
@@ -106,7 +107,7 @@ namespace XmdsCommonServer.Plugin
         //是否完成初始化技能.
         protected bool mFinishSkillInit = false;
         public XmdsUnitProp MirrorProp;
-        private UnitSimpleProp mSimpleProp;
+
         //脱战计时器.
         private TimeExpire<int> mOutOfCombatTime = null;
         //血量回复计时器.
@@ -992,24 +993,31 @@ namespace XmdsCommonServer.Plugin
         }
 
 
-        public UnitSimpleProp GetSimpleProp()
+        public void OnPlayerKillMonster(InstanceUnit monster)
         {
-            if(mSimpleProp == null)
+            try
             {
-                mSimpleProp = new UnitSimpleProp();
+                XmdsInstancePlayer player = this.mUnit as XmdsInstancePlayer;
+                List<XmdsInstancePlayer> members = player.TeamVirtual == null ? null : player.TeamVirtual.GetTeamMembers();
+                log.Warn("--------OnPlayerKillMonster print start:" + mUnit.PlayerUUID + ", 场景ID" + mUnit.Parent.GetSceneID() + ", 怪ID:" 
+                    + monster.Info.ID + ", 队伍人数:" + (members == null ? -1 : members.Count));
+               
+                if(members == null)
+                {
+                    JSGXmdsHackerModule.OnPlayerKillMonster(player, monster);
+                }
+                else
+                {
+                    //foreach(XmdsInstancePlayer member in members)
+                    {
+                        JSGXmdsHackerModule.OnPlayerKillMonster(player, monster);
+                    }
+                }               
             }
-
-            if(this.MirrorProp != null)
+            catch (Exception e)
             {
-                mSimpleProp.mCurHp = this.mUnit.CurrentHP;
-                mSimpleProp.mMaxHP = this.MirrorProp.MaxHP;
-                mSimpleProp.mAtk = this.MirrorProp.MaxAttack;
-                mSimpleProp.mDef = this.MirrorProp.Defence;
-                mSimpleProp.mMonsterAtk = this.MirrorProp.MaxMonsterAttack;
-                mSimpleProp.mMonsterDef = this.MirrorProp.MaxMonsterDef;
+                log.Warn("XMDSS OnPlayerKillMonster catch:", e);
             }
-           
-            return mSimpleProp;
         }
 
         #endregion
@@ -1955,9 +1963,9 @@ namespace XmdsCommonServer.Plugin
 			return ret;
 		}
 
-		public PropChangeOperation CreatePropChangeOpertation()
+		public PropChangeOperation CreatePropChangeOpertation(UnitBuff buff)
         {
-            return new PropChangeOperation();
+            return new PropChangeOperation(buff == null ? 0 : buff.GetBindBuffID());
         }
 
 		/** 被动改变数值 */
@@ -2059,10 +2067,15 @@ namespace XmdsCommonServer.Plugin
             }
         }
 
+        public HashMap<int, PropChangeOperation> GetChangePropMap()
+        {
+            return this.mPropChangeMap;
+        }
+
         /// <summary>
         /// 操作指令.
         /// </summary>
-        public struct PropChangeOperation
+        public class PropChangeOperation
         {
             /// <summary>
             /// 操作属性.
@@ -2079,6 +2092,9 @@ namespace XmdsCommonServer.Plugin
             /// </summary>
             public OperateType OpType;
 
+            //唯一标识key
+            private int mBindBuffID;
+
             /// <summary>
             /// 操作类型:值加减,百分比,
             /// </summary>
@@ -2087,6 +2103,21 @@ namespace XmdsCommonServer.Plugin
                 Value,
                 Percent,
             }
+
+            public PropChangeOperation(int buffID)
+            {
+                this.mBindBuffID = buffID;
+            }
+
+            public int GetBindBuffID()
+            {
+                return this.mBindBuffID;
+            }
+
+            public override string ToString()
+            {
+                return "[" + this.mBindBuffID + ", " + this.Type + ", " + this.Value + ", " + this.OpType + "]";
+            }
         }
 
         /// <summary>

+ 1 - 1
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual_Monster.cs

@@ -214,7 +214,7 @@ namespace XmdsCommonServer.Plugin
 				RemovePropChangeOperation(backSpeedBuffId);
 			}
 			
-			XmdsVirtual.PropChangeOperation pco = this.CreatePropChangeOpertation();
+			XmdsVirtual.PropChangeOperation pco = this.CreatePropChangeOpertation(null);
             pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
             pco.Value = 5000;
             pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 0
XmdsCommonServer/XmdsCommonServer.csproj

@@ -94,6 +94,7 @@
     <Compile Include="Plugin\Editor\EventsPlayerQuest.cs" />
     <Compile Include="Plugin\Editor\EventTriggers.cs" />
     <Compile Include="Plugin\Base\JSGXmdsComInterface.cs" />
+    <Compile Include="Plugin\JSGModule\JSGXmdsHackerModule.cs" />
     <Compile Include="Plugin\JSGModule\JSGMountainKingModule.cs" />
     <Compile Include="Plugin\Quest\QuestAdapter.cs" />
     <Compile Include="Plugin\Quest\QuestScript.cs" />

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_AttackSpeed.cs

@@ -34,7 +34,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 			//注册监听.
 			mHandleUUID = hitter.RegistLaunchSkillOver(OnLaunchSkillOver, null);
 
-            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
             pco.Type = XmdsVirtual.UnitAttributeType.AttackSpeed;
             pco.Value = changeValue;
             pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_AttackUpByHp.cs

@@ -106,7 +106,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 				}
 
 				this.preOverlayer = maxPer;
-				XmdsVirtual.PropChangeOperation pco = hitted.CreatePropChangeOpertation();
+				XmdsVirtual.PropChangeOperation pco = hitted.CreatePropChangeOpertation(this);
 				pco.Type = XmdsVirtual.UnitAttributeType.Attack;
 				pco.Value = (int)(maxPer * ChangeValue);
 				pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Brand_4.cs

@@ -81,7 +81,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 				{
 					ResetFun(hitted);
 
-					XmdsVirtual.PropChangeOperation pco = hitted.CreatePropChangeOpertation();
+					XmdsVirtual.PropChangeOperation pco = hitted.CreatePropChangeOpertation(this);
 					pco.Type = this.ChangePropType;
 					pco.Value = this.ChangePropValue * this.mBuffLayer;
 					pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_IgnorCtrlAndSpeedChg.cs

@@ -43,7 +43,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 			//移动速度变更.
 			if (this.speedChange != 0)
 			{
-				XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+				XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
 				pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
 				pco.Value = speedChange;
 				pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Invincible.cs

@@ -50,7 +50,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 
 			if(!this.isCanMove)
 			{
-				XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+                XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this) ;
 				pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
 				pco.Value = -10000;
 				pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_MoveSpeedChange.cs

@@ -27,7 +27,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
         {
             //移动速度变更.
             //hitter.AddMoveSpeed(cv);
-            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
             pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
 			pco.Value = ChangePercent * (1 + state.OverlayLevel);
 

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_NextAttackCrit_AddHP.cs

@@ -39,7 +39,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 
 		protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, CommonAI.Zone.Instance.InstanceUnit.BuffState state)
         {
-			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
 			pco.Type = XmdsVirtual.UnitAttributeType.CritRate_NormalAtk;
 			pco.Value = this.criteRate;
 			pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_PropChange.cs

@@ -102,7 +102,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 			}
 
 			XmdsVirtual.PropChangeOperation pco;
-			pco = hitter.CreatePropChangeOpertation();
+			pco = hitter.CreatePropChangeOpertation(this);
 			pco.Type = type;
 			pco.Value = effectValue;
 			pco.OpType = GetOptType();

+ 2 - 2
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedAttenuation.cs

@@ -29,7 +29,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 
 		protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
         {
-            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
             pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
             pco.Value = ChangePercent;
             pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
@@ -60,7 +60,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 				ChangePercent = Math.Max(0, ChangePercent - ChangeSpeed);
 			}
 			//Console.WriteLine("BuffUpdate - " + TimeUtil.GetTimestampMS() + ", " + ChangePercent);
-            XmdsVirtual.PropChangeOperation pco = unit.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = unit.CreatePropChangeOpertation(this);
             pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
             pco.Value = ChangePercent;
             pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedChg_DamageRemit.cs

@@ -49,7 +49,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
             //移动速度变更.
             if(this.speedChange != 0)
             {
-                XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+                XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
                 pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
                 pco.Value = speedChange;
                 pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SpeedUpAndIngoreCtrl.cs

@@ -42,7 +42,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
             //float cv = (hitter.mProp.ServerData.Prop.MoveSpeed * v);
             //移动速度变更.
             //hitter.AddMoveSpeed(cv);
-            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
             pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
             pco.Value = ChangePercent;
             pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_Stealth.cs

@@ -46,7 +46,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 
             if (ChangePercent != 0)
             {
-                XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+                XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
                 pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
                 pco.Value = ChangePercent;
                 pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 2 - 2
XmdsVSPlugins/XmdsCommonSkill/Plugin/Buffs/XmdsBuff_SunderArmor.cs

@@ -37,7 +37,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
         {
 			OverLayer = state.OverlayLevel;
 
-			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
 			pco.Type = XmdsVirtual.UnitAttributeType.Defence;
 			pco.Value = ChangeValue * state.OverlayLevel;
 			pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;
@@ -48,7 +48,7 @@ namespace XmdsCommonSkill.Plugin.Buffs
 				XmdsVirtual attacker, CommonAI.Zone.Formula.AttackSource source,
 				ref XmdsVirtual.AtkResult result)
 		{
-			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation();
+			XmdsVirtual.PropChangeOperation pco = hitter.CreatePropChangeOpertation(this);
 			pco.Type = XmdsVirtual.UnitAttributeType.MoveSpeed;
 			pco.Value = ChangeValue * OverLayer;
 			pco.OpType = XmdsVirtual.PropChangeOperation.OperateType.Percent;

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/other/Other_100005.cs

@@ -52,7 +52,7 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
             this.mOwner = owner;
 
             mNeedHitTimes = Math.Max(10, valueSet.GetValue(owner.mUnit.gameServerFlag == 0 ? skillInfo.SkillLevel : owner.mUnit.gameServerFlag));
-            XmdsVirtual.PropChangeOperation pco = owner.CreatePropChangeOpertation();
+            XmdsVirtual.PropChangeOperation pco = owner.CreatePropChangeOpertation(null);
             pco.Type = XmdsVirtual.UnitAttributeType.SetMaxHP;
             pco.Value = mNeedHitTimes * HIT_DAMAGE;
             mOpID1 = owner.AddPropChangeOperation(pco);

+ 1 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/other/Other_100006.cs

@@ -39,7 +39,7 @@ namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
         protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
         {
 			mNeedHitTimes = valueSet.GetValue();
-			XmdsVirtual.PropChangeOperation pco = owner.CreatePropChangeOpertation();
+			XmdsVirtual.PropChangeOperation pco = owner.CreatePropChangeOpertation(null);
             pco.Type = XmdsVirtual.UnitAttributeType.SetMaxHP;
             pco.Value = mNeedHitTimes;
             mOpID1 = owner.AddPropChangeOperation(pco);