Prechádzať zdrojové kódy

【优化】监控日志

meijun 3 rokov pred
rodič
commit
6559da4313

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

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

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

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

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

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

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

@@ -1,5 +1,6 @@
 using CommonAI.Data;
 using CommonAI.Zone;
+using CommonAI.Zone.Instance;
 using CommonLang;
 using CommonLang.Log;
 using System;
@@ -36,12 +37,14 @@ namespace CommonAI.ZoneServer.JSGModule
 		{
 			// 总触发次数<100 || 总耗时小于<3000 将会被过滤输出
 			public int areaId;
+			public long areaCreateTime;
 			public TriggerData total = new TriggerData();
 			public HashMap<string, TriggerData> profileData = new HashMap<string, TriggerData>();
 
-			public JSGTriggerProfile(int areaId)
+			public JSGTriggerProfile(int areaId, long createTime)
 			{
 				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);
 			if (trigger == null)
 			{
-				trigger = new JSGTriggerProfile(areaId);
+				trigger = new JSGTriggerProfile(areaId, zone.mCreateTime);
 				mZoneTriggers.Put(areaId, trigger);
 			}
 
@@ -169,14 +173,16 @@ namespace CommonAI.ZoneServer.JSGModule
 			}
 
 			JSGPrintLog("----------------------场景事件耗时输出----------------------");
+			long curTime = CommonLang.TimeUtil.GetTimestampMS();
 			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)
 				{
 					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;
 		//天赋技能等级.
 		//斩妖特殊含义:冷却时间减少,触发几率增加,持续时间增加
+        //天书:1:灵珠伤害加成
 		public int TalentSkillLevel1 = 1;
         public int TalentSkillLevel2 = 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)
                     ? 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 + ", "
                         + attacker.MirrorProp.MaxMonsterAttack + ", atkHP:" + attacker.mUnit.CurrentHP
@@ -180,6 +180,37 @@ namespace XmdsCommonServer.Plugin.JSGXmdsModule
 #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
     }
 }

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

@@ -72,7 +72,12 @@ namespace XmdsCommonSkill.Plugin.Skills.Magic
 					this.mBuffValidEndTime = 0;         // 标记失效
 					//hitted.mUnit.AddBuff(this.GetBindBuffID(), attacker.mUnit);
 					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;
 				}
 

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

@@ -9,6 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XmdsCommon.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Skills;
@@ -71,6 +72,8 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		protected virtual float OnHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 			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))
 			{
 				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.Zone;
 using CommonAI.Zone.Formula;
+using CommonAI.ZoneServer.JSGModule;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -8,6 +9,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XmdsCommon.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 using XmdsCommonSkill.Plugin.Skills;
@@ -69,6 +71,8 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		protected float OnHandleHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
 			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);
 			bt.LifeTimeMS = s_ValueSet2.GetValue(skill.SkillLevel, base.GetIndex2(1));
 			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.Plugin;
 using XmdsCommonServer.Plugin;
+using XmdsCommonServer.Plugin.JSGXmdsModule;
 using XmdsCommonServer.XLS.Data;
 using XmdsCommonSkill.Plugin.Buffs;
 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))
 			{
-				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之力最高层数
 		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)
 		{
 			// 基础数据初始化
+			this.mTriggerTime = CommonLang.TimeUtil.GetTimestampMS();
 			this.mTriggerSameCards = sameNums;
 			player.CardModule.TriggerSkillLoadStrength(skillData, sameNums);
 			this.OnTriggerCardSkill(player, hitter, source, skillData, sameNums);