Browse Source

【优化】监控日志

meijun 3 years ago
parent
commit
6559da4313

+ 2 - 2
Common/CommonAI/Zone/EventTrigger/EventAdapter.cs

@@ -295,7 +295,7 @@ namespace CommonAI.Zone.EventTrigger
 				if (!isTrigger)
 				if (!isTrigger)
 				{
 				{
 					timeUse = System.Environment.TickCount - startTick;
 					timeUse = System.Environment.TickCount - startTick;
-					JSGServerProfile.RecordTrigger(this.ZoneAPI.GetSceneID(), this.Name, timeUse, false);
+					JSGServerProfile.RecordTrigger(this.ZoneAPI, this.Name, timeUse, false);
 				}
 				}
 #endif
 #endif
 			}
 			}
@@ -370,7 +370,7 @@ namespace CommonAI.Zone.EventTrigger
 				PrintStopwatch(stopwatch, "RunInternal");
 				PrintStopwatch(stopwatch, "RunInternal");
 #if JSGProfile
 #if JSGProfile
 				int timeUse = System.Environment.TickCount - startTick + checkTimeUse;
 				int timeUse = System.Environment.TickCount - startTick + checkTimeUse;
-				JSGServerProfile.RecordTrigger(this.ZoneAPI.GetSceneID(), this.Name, timeUse, true);
+				JSGServerProfile.RecordTrigger(this.ZoneAPI, this.Name, timeUse, true);
 #endif
 #endif
 			}
 			}
 		}
 		}

+ 4 - 0
Common/CommonAI/Zone/Formula/IFormulas.cs

@@ -111,6 +111,10 @@ namespace CommonAI.Zone.Formula
 
 
 		// 技能或者法术的一次ATTACK是否有击中,只有有一个击中也算
 		// 技能或者法术的一次ATTACK是否有击中,只有有一个击中也算
 		private bool hasHitted;
 		private bool hasHitted;
+
+        //内部扩展使用,伤害额外叠加倍数
+        public float mDmgAddPer;
+
         public bool HasHitted { get { return hasHitted; } set {
         public bool HasHitted { get { return hasHitted; } set {
                 if(value && !hasHitted)
                 if(value && !hasHitted)
                 {
                 {

+ 2 - 1
Common/CommonAI/Zone/Instance/InstanceZone.cs

@@ -60,7 +60,7 @@ namespace CommonAI.Zone.Instance
         private long mQueryPassTimeMS = 0;
         private long mQueryPassTimeMS = 0;
         private int mQueryPassTimeSEC = 0;
         private int mQueryPassTimeSEC = 0;
         private bool mHalfSync = false;
         private bool mHalfSync = false;
-
+        readonly public long mCreateTime;
         readonly private Random random;
         readonly private Random random;
         readonly private Logger log;
         readonly private Logger log;
 
 
@@ -99,6 +99,7 @@ namespace CommonAI.Zone.Instance
         internal InstanceZone(TemplateManager templates, InstanceZoneListener listener, ZoneEditor.SceneData data, GSCreateAreaData gsData,
         internal InstanceZone(TemplateManager templates, InstanceZoneListener listener, ZoneEditor.SceneData data, GSCreateAreaData gsData,
             int spaceDivSize, int maxUnitCount, int randomSeed)
             int spaceDivSize, int maxUnitCount, int randomSeed)
         {
         {
+            mCreateTime = TimeUtil.GetTimestampMS();
             InstanceZone.s_alloc_zone_count++;
             InstanceZone.s_alloc_zone_count++;
             InstanceZone.s_active_zone_count++;
             InstanceZone.s_active_zone_count++;
             var info = data.ZoneData;
             var info = data.ZoneData;

+ 11 - 5
Common/CommonAI/ZoneServer/JSGModule/JSGServerProfile.cs

@@ -1,5 +1,6 @@
 using CommonAI.Data;
 using CommonAI.Data;
 using CommonAI.Zone;
 using CommonAI.Zone;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using CommonLang;
 using CommonLang.Log;
 using CommonLang.Log;
 using System;
 using System;
@@ -36,12 +37,14 @@ namespace CommonAI.ZoneServer.JSGModule
 		{
 		{
 			// 总触发次数<100 || 总耗时小于<3000 将会被过滤输出
 			// 总触发次数<100 || 总耗时小于<3000 将会被过滤输出
 			public int areaId;
 			public int areaId;
+			public long areaCreateTime;
 			public TriggerData total = new TriggerData();
 			public TriggerData total = new TriggerData();
 			public HashMap<string, TriggerData> profileData = new HashMap<string, TriggerData>();
 			public HashMap<string, TriggerData> profileData = new HashMap<string, TriggerData>();
 
 
-			public JSGTriggerProfile(int areaId)
+			public JSGTriggerProfile(int areaId, long createTime)
 			{
 			{
 				this.areaId = areaId;
 				this.areaId = areaId;
+				this.areaCreateTime = createTime;
 			}
 			}
 		}
 		}
 
 
@@ -112,12 +115,13 @@ namespace CommonAI.ZoneServer.JSGModule
 		}
 		}
 
 
 		/** 记录场景触发器耗时 */
 		/** 记录场景触发器耗时 */
-		public static void RecordTrigger(int areaId, string triggerName, int timeUse, bool isTrigger)
+		public static void RecordTrigger(InstanceZone zone, string triggerName, int timeUse, bool isTrigger)
 		{
 		{
+			int areaId = zone.GetSceneID();
 			JSGTriggerProfile trigger = mZoneTriggers.Get(areaId);
 			JSGTriggerProfile trigger = mZoneTriggers.Get(areaId);
 			if (trigger == null)
 			if (trigger == null)
 			{
 			{
-				trigger = new JSGTriggerProfile(areaId);
+				trigger = new JSGTriggerProfile(areaId, zone.mCreateTime);
 				mZoneTriggers.Put(areaId, trigger);
 				mZoneTriggers.Put(areaId, trigger);
 			}
 			}
 
 
@@ -169,14 +173,16 @@ namespace CommonAI.ZoneServer.JSGModule
 			}
 			}
 
 
 			JSGPrintLog("----------------------场景事件耗时输出----------------------");
 			JSGPrintLog("----------------------场景事件耗时输出----------------------");
+			long curTime = CommonLang.TimeUtil.GetTimestampMS();
 			foreach (JSGTriggerProfile info in mZoneTriggers.Values)
 			foreach (JSGTriggerProfile info in mZoneTriggers.Values)
 			{
 			{
-				JSGPrintLog("##场景触发器总揽:" + info.areaId + ", 检测次数:" + info.total.checkTimes + ", 触发次数: " + info.total.triggerTimes + ", 耗时:" + info.total.timeUse);
+				JSGPrintLog("##触发器总揽:" + info.areaId + ", 运行:" + (curTime - info.areaCreateTime) + ", 创建时间:" + info.areaCreateTime + 
+					", 检测数:" + info.total.checkTimes + ", 触发数: " + info.total.triggerTimes + ", 耗时:" + info.total.timeUse);
 				if (info.total.checkTimes > 50000 || info.total.timeUse > 500)
 				if (info.total.checkTimes > 50000 || info.total.timeUse > 500)
 				{
 				{
 					foreach (KeyValuePair<string, TriggerData> kv in info.profileData)
 					foreach (KeyValuePair<string, TriggerData> kv in info.profileData)
 					{
 					{
-						JSGPrintLog("------场景触发器总揽:" + kv.Key + ", 检测次数:" + kv.Value.checkTimes + ", 触发次数: " + kv.Value.triggerTimes + ", 耗时:" + kv.Value.timeUse);
+						JSGPrintLog("------触发器详细:" + kv.Key + ", 检测次数:" + kv.Value.checkTimes + ", 触发次数: " + kv.Value.triggerTimes + ", 耗时:" + kv.Value.timeUse);
 					}
 					}
 				}			
 				}			
 			}
 			}

+ 1 - 0
XmdsCommon/Plugin/XmdsProperties.cs

@@ -2003,6 +2003,7 @@ namespace XmdsCommon.Plugin
         public int SkillLevel = 1;
         public int SkillLevel = 1;
 		//天赋技能等级.
 		//天赋技能等级.
 		//斩妖特殊含义:冷却时间减少,触发几率增加,持续时间增加
 		//斩妖特殊含义:冷却时间减少,触发几率增加,持续时间增加
+        //天书:1:灵珠伤害加成
 		public int TalentSkillLevel1 = 1;
 		public int TalentSkillLevel1 = 1;
         public int TalentSkillLevel2 = 1;
         public int TalentSkillLevel2 = 1;
         public int TalentSkillLevel3 = 1;
         public int TalentSkillLevel3 = 1;

+ 32 - 1
XmdsCommonServer/Plugin/JSGModule/JSGXmdsHackerModule.cs

@@ -165,7 +165,7 @@ namespace XmdsCommonServer.Plugin.JSGXmdsModule
                 int checkValue = (source != null && source.Attack != null && source.Attack.Properties.GetAttackID() / 100 == 1104)
                 int checkValue = (source != null && source.Attack != null && source.Attack.Properties.GetAttackID() / 100 == 1104)
                     ? attacker.mUnit.CurrentHP : attacker.MirrorProp.GetFinalAttack(hitter == null ? false : hitter.mUnit.IsMonster);
                     ? attacker.mUnit.CurrentHP : attacker.MirrorProp.GetFinalAttack(hitter == null ? false : hitter.mUnit.IsMonster);
 
 
-                if (finalDmg / sourceDmg > 5.0f || finalDmg / checkValue > 60)
+                if (finalDmg / sourceDmg > GetDamageWarnRate(source) || finalDmg / checkValue > 60)
                 {
                 {
                     log.Warn(flag + ", dmg: " + (int)finalDmg + ", src: " + (int)sourceDmg + ", attackerAtk: " + attacker.MirrorProp.MaxAttack + ", "
                     log.Warn(flag + ", dmg: " + (int)finalDmg + ", src: " + (int)sourceDmg + ", attackerAtk: " + attacker.MirrorProp.MaxAttack + ", "
                         + attacker.MirrorProp.MaxMonsterAttack + ", atkHP:" + attacker.mUnit.CurrentHP
                         + attacker.MirrorProp.MaxMonsterAttack + ", atkHP:" + attacker.mUnit.CurrentHP
@@ -180,6 +180,37 @@ namespace XmdsCommonServer.Plugin.JSGXmdsModule
 #endif
 #endif
         }
         }
 
 
+        /** 获得伤害倍率警告阈值 */
+        private static float GetDamageWarnRate(AttackSource source)
+        {
+            float dmgAddition = 0;
+            float dmgBase = 3.0f;
+            if(source != null)
+            {
+                if(source.FromSkillType == XmdsSkillType.cardSkill)
+                {
+                    dmgBase = 5.0f;
+                }
+                else
+                {
+                    dmgAddition = source.mDmgAddPer;
+                }
+            }
+
+            return dmgAddition + dmgBase;
+        }
+
+        /** 卡牌系统,输出卡牌数量异常日志 */
+        public static void CheckAndPrintCardSameErrorInfo(string tag, int cardSames, long ltime, AttackSource source)
+        {
+#if JSGProfile
+            if (cardSames <= 1)
+            {
+                log.Warn("触发卡牌数量异常:" + tag + ", " + ltime + ", " + JSGModule.GetAttackSourceDes(source));
+            }
+#endif
+        }
+
 #endif
 #endif
     }
     }
 }
 }

+ 6 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/PassiveSkills/other/TianShuBase.cs

@@ -72,7 +72,12 @@ namespace XmdsCommonSkill.Plugin.Skills.Magic
 					this.mBuffValidEndTime = 0;         // 标记失效
 					this.mBuffValidEndTime = 0;         // 标记失效
 					//hitted.mUnit.AddBuff(this.GetBindBuffID(), attacker.mUnit);
 					//hitted.mUnit.AddBuff(this.GetBindBuffID(), attacker.mUnit);
 					this.launchEffectSpell(attacker, hitted, false);
 					this.launchEffectSpell(attacker, hitted, false);
-					damage += damage * (mValueSet2.GetValue(skill.SkillLevel) + skill.TalentSkillLevel1) * XmdsUnitProp.PER;
+					float skillDmgAddition = (mValueSet2.GetValue(skill.SkillLevel) + skill.TalentSkillLevel1) * XmdsUnitProp.PER;
+					damage += damage * skillDmgAddition;
+					if(source != null)
+                    {
+						source.mDmgAddPer = skillDmgAddition;
+					}
 					return damage;
 					return damage;
 				}
 				}
 
 

+ 3 - 0
XmdsVSPlugins/XmdsCommonSkill/Plugin/Skills/CardSkill/12_ZhuQue/CardSkill_1230010.cs

@@ -9,6 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using XmdsCommon.Plugin;
 using XmdsCommon.Plugin;
 using XmdsCommonServer.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Skills;
 using XmdsCommonSkill.Plugin.Skills;
@@ -71,6 +72,8 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		protected virtual float OnHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 		protected virtual float OnHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
 			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
 		{
 		{
+			JSGXmdsHackerModule.CheckAndPrintCardSameErrorInfo("CardSkill_1230010", this.mTriggerSameCards, this.mTriggerTime, source);
+
 			//if(!mHitUnits.Contains(hitted.mUnit.ID))
 			//if(!mHitUnits.Contains(hitted.mUnit.ID))
 			{
 			{
 				mHitUnits.Add(hitted.mUnit.ID);
 				mHitUnits.Add(hitted.mUnit.ID);

+ 4 - 0
XmdsVSPlugins/XmdsCommonSkill/Plugin/Skills/CardSkill/13_BaiHu/CardSkill_1330000.cs

@@ -1,6 +1,7 @@
 using CommonAI.Data;
 using CommonAI.Data;
 using CommonAI.Zone;
 using CommonAI.Zone;
 using CommonAI.Zone.Formula;
 using CommonAI.Zone.Formula;
+using CommonAI.ZoneServer.JSGModule;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
@@ -8,6 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using XmdsCommon.Plugin;
 using XmdsCommon.Plugin;
 using XmdsCommonServer.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Skills;
 using XmdsCommonSkill.Plugin.Skills;
@@ -69,6 +71,8 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		protected float OnHandleHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 		protected float OnHandleHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
 			ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
 		{
 		{
+			JSGXmdsHackerModule.CheckAndPrintCardSameErrorInfo("CardSkill_1330000", this.mTriggerSameCards, this.mTriggerTime, source);
+
 			var bt = attacker.GetRegistBuff(BuffID_CRITE_UP);
 			var bt = attacker.GetRegistBuff(BuffID_CRITE_UP);
 			bt.LifeTimeMS = s_ValueSet2.GetValue(skill.SkillLevel, base.GetIndex2(1));
 			bt.LifeTimeMS = s_ValueSet2.GetValue(skill.SkillLevel, base.GetIndex2(1));
 			var buff = attacker.GetRegisBuffVirtual(BuffID_CRITE_UP) as XmdsBuff_PropChange;
 			var buff = attacker.GetRegisBuffVirtual(BuffID_CRITE_UP) as XmdsBuff_PropChange;

+ 4 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/Skills/CardSkill/14_XuanWu/CardSkill_1430000.cs

@@ -8,6 +8,7 @@ using System.Threading.Tasks;
 using XmdsCommon.JSGModule.Interface;
 using XmdsCommon.JSGModule.Interface;
 using XmdsCommon.Plugin;
 using XmdsCommon.Plugin;
 using XmdsCommonServer.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Buffs;
 using static CommonAI.Zone.Instance.InstanceUnit;
 using static CommonAI.Zone.Instance.InstanceUnit;
@@ -65,7 +66,9 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		{
 		{
 			if(buff != null && buff.ID == CARD_XW_IGNORECTRL_HUDUN && !string.IsNullOrEmpty(result) && !BuffState.ENDResult_HuDunBreak.Equals(result))
 			if(buff != null && buff.ID == CARD_XW_IGNORECTRL_HUDUN && !string.IsNullOrEmpty(result) && !BuffState.ENDResult_HuDunBreak.Equals(result))
 			{
 			{
-				unit.CardModule.AddCard(s_ValueSet2.GetValue(this.mTriggerLv, Math.Min(0, this.mTriggerSameNums - 1)), true);
+				JSGXmdsHackerModule.CheckAndPrintCardSameErrorInfo("CardSkill_1330000", this.mTriggerSameCards, this.mTriggerTime, source);
+
+				unit.CardModule.AddCard(s_ValueSet2.GetValue(this.mTriggerLv, Math.Max(1, this.mTriggerSameNums - 1)), true);
 			}
 			}
 
 
 		}
 		}

+ 3 - 1
XmdsVSPlugins/XmdsCommonSkill/Plugin/base/JSGPlayerCardSkillBase.cs

@@ -35,12 +35,14 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		//青龙之力,XX之力最高层数
 		//青龙之力,XX之力最高层数
 		protected static int BUFF_ABILITY_MAXLAYER = 10;
 		protected static int BUFF_ABILITY_MAXLAYER = 10;
 
 
-		private int mTriggerSameCards;
+		protected int mTriggerSameCards;			//触发时相同卡的个数
+		protected long mTriggerTime;			//触发时间
 
 
 		//触发卡牌技能
 		//触发卡牌技能
 		public virtual void TriggerCardSkill(XmdsVirtual player, XmdsVirtual hitter, AttackSource source, CardSkillData skillData, int sameNums)
 		public virtual void TriggerCardSkill(XmdsVirtual player, XmdsVirtual hitter, AttackSource source, CardSkillData skillData, int sameNums)
 		{
 		{
 			// 基础数据初始化
 			// 基础数据初始化
+			this.mTriggerTime = CommonLang.TimeUtil.GetTimestampMS();
 			this.mTriggerSameCards = sameNums;
 			this.mTriggerSameCards = sameNums;
 			player.CardModule.TriggerSkillLoadStrength(skillData, sameNums);
 			player.CardModule.TriggerSkillLoadStrength(skillData, sameNums);
 			this.OnTriggerCardSkill(player, hitter, source, skillData, sameNums);
 			this.OnTriggerCardSkill(player, hitter, source, skillData, sameNums);