From 770dde0336b63cb2ab948d03ce3a0e1a4e2d1b82 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 22 九月 2018 02:56:52 +0800
Subject: [PATCH] 3724 【开发】掉落归属异常日志优化(仅boss时才输出)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   54 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index a9219ee..07322d1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -308,34 +308,38 @@
     return
 
 #---------------------------------------------------------------------
-def SendMailBatch(mailTypeKey, batchPlayerIDList, batchAddItemList=[], batchParamList=[], batchGold=[], batchGoldPaper=[], batchSilver=[]):
+def SendMailBatch(mailTypeKey, batchPlayerIDList, batchAddItemList=[], batchParamList=[], batchGold=[], batchGoldPaper=[], batchSilver=[], batchDetail=[]):
     '''批量发送邮件, 用于瞬间需要发送多封(大量)邮件的,比如一些公共副本活动等结算时
     @param mailTypeKey: 邮件模板key
     @param batchPlayerIDList: [playerIDList, playerIDList, ...]
     @param batchAddItemList: [addItemList, addItemList, ...]
     @param batchParamList: [paramList, paramList, ...]
     @param batchGold: [batchGold, batchGold, ...]
-    @param batchGold: [batchGoldPaper, batchGoldPaper, ...]
-    @param batchGold: [batchSilver, batchSilver, ...]
+    @param batchGoldPaper: [batchGoldPaper, batchGoldPaper, ...]
+    @param batchSilver: [batchSilver, batchSilver, ...]
+    @param batchDetail: [记录邮件流向用, ...]
     '''
-    msgInfo = str([mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver])
+    msgInfo = str([mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver, batchDetail])
     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMailBatch", msgInfo, len(msgInfo))
     GameWorld.Log("SendMailBatch %s, batchPlayerIDList=%s, batchAddItemList=%s, batchParamList=%s, batchGold=%s, batchGoldPaper=%s, batchSilver=%s" 
                   % (mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver))
     return
 
-def SendMailByKey(mailTypeKey, playerIDList, addItemList, paramList=[], gold=0, goldPaper=0, silver=0):
+def SendMailByKey(mailTypeKey, playerIDList, addItemList, paramList=[], gold=0, goldPaper=0, silver=0, detail=""):
+    '''
+    @param detail: 记录邮件流向用
+    '''
     if not mailTypeKey:
         mailTypeKey = ShareDefine.DefaultLackSpaceMailType
     
     content = "<MailTemplate>%s</MailTemplate>%s" % (mailTypeKey, json.dumps(paramList, ensure_ascii=False))
-    SendMail("", content, 30, playerIDList, addItemList, gold, goldPaper, silver)
+    SendMail("", content, 30, playerIDList, addItemList, gold, goldPaper, silver, detail)
     return
 
 ## 功能发放物品补偿/奖励邮件
 #  @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...]
 #  @return
-def SendMail(title, content, getDays, playerIDList, addItemList, gold=0, goldPaper=0, silver=0):
+def SendMail(title, content, getDays, playerIDList, addItemList, gold=0, goldPaper=0, silver=0, detail=""):
     if not playerIDList:
         return
     
@@ -377,7 +381,7 @@
     for key, itemCnt in itemCountDict.items():
         itemID, isBind = key
         combineItemList.append((itemID, itemCnt, isBind))
-    cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver]
+    cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver, detail]
     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMail", '%s' % (cmdList), len(str(cmdList)))
     return True
 
@@ -2009,7 +2013,7 @@
 # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路)
 # @return 返回值无意义
 # @remarks 玩家切换地图
-def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID= -1, msg='', canLock=True, exData1=0):
+def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0):
     #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本
 #    if curPlayer.GetHP() <= 0 :
 #        GameWorld.Log("死亡无法切换地图")
@@ -2082,6 +2086,10 @@
                 GameWorld.DebugLog("分流boss, bossID=%s,bossShuntLineID=%s" % (bossID, bossShuntLineID), playerID)
                 NPCCommon.AddBossShuntRelatedPlayer(curPlayer, tagMapID, bossShuntLineID, bossID, tick)
                 return bossShuntLineID
+        return tagLineID
+    
+    if curMapID == tagMapID:
+        GameWorld.DebugLog("同地图切换坐标不处理分流!", playerID)
         return tagLineID
     
     # 可以用来常规分流的线路人数字典信息, 并不是所有线路都可以用来做人数分流的,比如中立地图有多条线用来分流boss,但是只有1条线可用来做常规的人数分流
@@ -2723,8 +2731,8 @@
         
         curBourseMoney = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
         updBourseMoney = curBourseMoney
-        #当是交易所扣费时,则必定扣除交易额度
-        if costType == ChConfig.Def_Cost_BourseBuy:
+        #当是交易所扣费、钻石红包时,则必定扣除交易额度
+        if costType in ChConfig.UnUseInner_CostType:
             updBourseMoney = max(0, curBourseMoney - price)
         #其他如果当前金子比交易额度还少,则强制调整交易额度为当前金子数(这种情况一般是非交易所消费的,需要同步扣除交易所可购买额度)
         elif updPlayerGold < updBourseMoney:
@@ -3395,6 +3403,7 @@
         
         OnlyFinalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_OnlyFinalHurt) # 额外输出伤害
         PVPAtkBackHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_PVPAtkBackHP) # PVP攻击回血
+        NPCHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_NPCHurtAddPer) # 对怪物伤害加成
         
         #其他需作为公式参数的系数
         AtkSpeedParameter = fpParam.GetCftAtkSpeed()
@@ -5394,10 +5403,11 @@
     fightExpRate += PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FightExpRate) # VIP加成
     
     actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成
-    if not PlayerTJG.GetIsTJG(curPlayer) and actExpRateInfo.get(ShareDefine.ActKey_State) \
-        and curPlayer.GetLV() >= actExpRateInfo.get(ShareDefine.ActKey_LVLimit, 0):
-        fightExpRate += actExpRateInfo.get(ShareDefine.ActKey_AddExpRate, 0)
-    
+    if not PlayerTJG.GetIsTJG(curPlayer) and actExpRateInfo.get(ShareDefine.ActKey_State):
+        actExpIpyData = IpyGameDataPY.GetIpyGameData("ActExpRate", actExpRateInfo.get(ShareDefine.ActKey_CfgID))
+        if actExpIpyData and curPlayer.GetLV() >= actExpIpyData.GetLVLimit():
+            fightExpRate += actExpIpyData.GetAddExpRate()
+            
     if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成
         fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
     
@@ -5514,6 +5524,7 @@
 def SetGMForbidenTalk(curPlayer, value):
     curPlayer.SetGMForbidenTalk(value)
     curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value)
+    curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False)
     return
 
 
@@ -6055,7 +6066,10 @@
 
 ## 对怪物伤害加成
 def GetNPCHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NPCHurtAddPer)
-def SetNPCHurtAddPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value)
+def SetNPCHurtAddPer(curPlayer, value):
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value)
+    curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_NPCHurtAddPer, value, False)
+    
 #---职业伤害加成---
 ## 目标战士伤害加成
 def GetJobAHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_JobAHurtAddPer)
@@ -6116,9 +6130,6 @@
     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False)
     
 #---特殊伤害概率---
-## 富甲一击概率
-def GetFujiaHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FujiaHitRate)
-def SetFujiaHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FujiaHitRate, value)
 ## 富豪一击概率
 def GetFuhaoHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FuhaoHitRate)
 def SetFuhaoHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FuhaoHitRate, value)
@@ -6129,6 +6140,11 @@
     curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value)
     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False)
     
+## 最终伤害百分比
+def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer)
+def SetFinalHurtPer(curPlayer, value):
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value)
+    curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtPer, value, False)
 ## 最终固定伤害增加
 def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt)
 def SetFinalHurt(curPlayer, value):

--
Gitblit v1.8.0