From 01e033a79a5ce63e298015d0783560a77ccffea9 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 14 九月 2018 11:46:46 +0800
Subject: [PATCH] fix:3543 【后端】【主干】【1.0.15】开服红包优化 每天赠送次数

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   33 +++++++++++++++++++++++++--------
 1 files changed, 25 insertions(+), 8 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 6c82da8..b9de67e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -86,6 +86,7 @@
 import ChNetSendPack
 import PlayerState
 import QuestCommon
+import PlayerDogz
 import GMShell
 
 import random
@@ -1160,8 +1161,12 @@
 #    3. 如果没有玩家存在, 副本回收
     if GameWorld.GetMap().GetMapFBType() != 0:
         #离开副本
+        fbIndex = GameWorld.GetGameWorld().GetCurGameWorldIndex()
+        exitFBType = 1 if isDisconnect else 2
+        PyGameData.g_lastExitFBType[fbIndex] = [exitFBType, tick]
+        #GameWorld.DebugLog("玩家离开副本:fbIndex=%s,exitFBType=%s, %s" % (fbIndex, exitFBType, PyGameData.g_lastExitFBType), curPlayer.GetPlayerID())
         FBLogic.DoExitFBLogic(curPlayer, tick)
-
+        
     GameLogic_ManorWar.DoExitFB(curPlayer, tick)
     
     #清空所有不属于自己的光环
@@ -2004,7 +2009,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("死亡无法切换地图")
@@ -2077,6 +2082,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条线可用来做常规的人数分流
@@ -2718,8 +2727,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:
@@ -3390,6 +3399,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()
@@ -3950,11 +3960,13 @@
         PlayerPet.CalcPetItemAddPlayerAttr(curPlayer)
         PlayerRune.RefreshRuneAttr(curPlayer)
         PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
+        PlayerMagicWeapon.CalcMagicWeaponSoulAttr(curPlayer)
         PlayerSuccess.CalcSuccessAttr(curPlayer)
         PlayerVip.CalcVIPAttr(curPlayer)
         PlayerRefineStove.CalcStoveAttr(curPlayer)
         PlayerFamilyTech.CalcFamilyTechAttr(curPlayer)
         PlayerEquipDecompose.RefreshEDAttr(curPlayer)
+        PlayerDogz.RefreshDogzAttr(curPlayer)
         self.RefreshAllState(isForce=True)
         GameWorld.DebugLog("End ReCalcAllState!!!")
         return
@@ -6048,7 +6060,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)
@@ -6109,9 +6124,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)
@@ -6122,6 +6134,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