From 6a8921ecc0e480a8db0fb2ded7b0fa2624b918b3 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 03 十二月 2018 14:40:58 +0800
Subject: [PATCH] 5104 【1.3】新增记录玩家战力下降前后战力记录流向,有下降生成流向,涨战力不记录

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py        |    6 +++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py                       |    6 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py                      |   15 +++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py                       |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py                          |   42 +++++++++++++++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py                              |    1 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py                                      |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                    |    7 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py |    5 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py                 |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                |   23 +++++++++++
 11 files changed, 99 insertions(+), 15 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py
index 77af721..d22858e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py
@@ -181,7 +181,8 @@
     curFamily.Broadcast_FamilyChange()
     #通知地图服务器刷新
     PlayerFamily.SendPack_MapServer_PlayerFamilyRefresh(curFamily)
-    GameWorld.Log("    __DoOpenCostLogic 扣除家族兽粮=%s OK!" % (foodCost))
+    GameWorld.Log("    __DoOpenCostLogic 扣除家族兽粮=%s OK!, familyID=%s,playerFamilyLV=%s" 
+                  % (foodCost, curFamily.GetFamilyID(), curMember.GetFamilyLV()), curPlayer.GetPlayerID())
     return True
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index a1a2f2d..fa23d8c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -5162,4 +5162,25 @@
 Rune_Source_Unkown,         # 老号未知 0
 Rune_Source_Default,        # 默认 1
 Item_Source_Compound,       # 符印合成 2
-) = range(3)
\ No newline at end of file
+) = range(3)
+
+(
+PowerDownType_Rune, #符印替换
+PowerDownType_LVUP, #人物升级
+PowerDownType_EquipChange, #装备替换
+PowerDownType_StoneChange, #宝石替换
+PowerDownType_Suit, #套装合成
+PowerDownType_EquipWash, #洗练
+PowerDownType_Title, #称号过期
+PowerDownType_Dogz, #神兽召回
+) = range(7)
+FightPowerDownRecordDict = {
+    PowerDownType_Rune:'Rune',
+    PowerDownType_LVUP:'LVUP',
+    PowerDownType_EquipChange:'EquipChange',
+    PowerDownType_StoneChange:'StoneChange',
+    PowerDownType_Suit:'Suit',
+    PowerDownType_EquipWash:'EquipWash',
+    PowerDownType_Title:'DelTitle',
+    PowerDownType_Dogz:'DogzState',
+    } 
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 9f48c2d..d922fde 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -113,6 +113,7 @@
 import ChConfig
 import ShareDefine
 import PlayerControl
+import PyGameData
 #===============================================================================
 ##发送事件记录给EventShell
 # @param eventTypeStr: 事件类型标识
@@ -154,7 +155,7 @@
     name = curPlayer.GetName()
     
     dataDict = {'Type':'login', 'IP':str(ip), 'AccID':accID,
-                'Name':name, 'LoginTime':str(loginTime), 'LogoutTime':''}
+                'Name':name, 'LoginTime':str(loginTime), 'LogoutTime':'', 'MFPFightPower':GetMFPFightPowerInfo(curPlayer)}
     
     #发送封包
     SendEventPack("LogInOut", dataDict, curPlayer)
@@ -176,11 +177,18 @@
     goldPaper = curPlayer.GetGoldPaper()
     dataDict = {'Type':'logout', 'IP':ip, 'AccID':accID, 'LV':lv, 'VipLV':vipLV,
                   'Name':name, 'LoginTime':str(loginTime), 'Gold':gold, 'GoldPaper':goldPaper,
-                  'LogoutTime':str(logoutTime)}
+                  'LogoutTime':str(logoutTime), 'MFPFightPower':GetMFPFightPowerInfo(curPlayer)}
     #发送封包
     SendEventPack("LogInOut", dataDict, curPlayer)
     return
 
+def GetMFPFightPowerInfo(curPlayer):
+    #记录模块战力
+    dataDict = {}
+    for mfpType in ShareDefine.ModuleFightPowerTypeList:
+        fightPower = PlayerControl.GetMFPFightPower(curPlayer, mfpType)
+        dataDict[mfpType] = fightPower
+    return dataDict
     
 ## 新增有效登陆
 #  @param accID: 账号ID
@@ -930,8 +938,8 @@
     dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), 
                 "AccID":curPlayer.GetAccID()}
     dataDict.update(addDict)
-    
     SendEventPack("StoneChange_%s"%eventName, dataDict, curPlayer)
+    Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_StoneChange, addDict)
     return
 
 def DR_VIPChange(curPlayer, eventName, addDict={}):
@@ -1590,4 +1598,30 @@
     
     #发送封包
     SendEventPack("RealmLVUp", dataDict, curPlayer)
-    return
\ No newline at end of file
+    return
+
+def Cache_FightPowerChangeInfo(curPlayer, dotype, dataDict):
+    ##暂存可能导致战力降低的行为信息
+    dataDict['dotime'] = str(datetime.datetime.today()).split(".")[0]
+    eventName = ChConfig.FightPowerDownRecordDict.get(dotype, 'Unknown')
+    if eventName in PyGameData.g_fightpowerChangeDataRecordDict:
+        PyGameData.g_fightpowerChangeDataRecordDict[eventName].append(dataDict)
+    else:
+        PyGameData.g_fightpowerChangeDataRecordDict[eventName] = [dataDict]
+    return
+
+def DR_FightPowerChangeInfo(curPlayer, beforePower):
+    ##记录战力降低的行为信息
+    dataDict = {'beforePower':beforePower, 'PlayerID':curPlayer.GetPlayerID(), 'AccID':curPlayer.GetAccID()}
+    for dotype, dateList in PyGameData.g_fightpowerChangeDataRecordDict.items():
+        rList = []
+        for dateInfo in dateList:
+            dateTimeStr = dateInfo['dotime']
+            if GameWorld.GetPastSeconds(dateTimeStr) >10:
+                continue
+            rList.append(dateInfo)
+        dataDict[dotype] = rList
+    PyGameData.g_fightpowerChangeDataRecordDict = {}
+    #发送封包
+    SendEventPack("FightPowerChangeInfo", dataDict, curPlayer)
+    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py
index d64ba82..e46c1d6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py
@@ -27,6 +27,7 @@
 import ItemControler
 import IpyGameDataPY
 import EventShell
+import DataRecordPack
 
 
 #//A3 17 套装合成#tagCMSuitCompose
@@ -94,6 +95,8 @@
     
     #通知等级
     ChEquip.NotifyEquipPartSuiteLV(curPlayer, equipPlace)
+    dataDict = {'equipPlace':equipPlace,'suiteType':suiteType,'tagSuitLV':tagSuitLV,'curSuiteLV':curSuiteLV}
+    DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Suit, dataDict)
     
     #先刷装备BUFF 再计算属性
     ChEquip.RefreshPlayerEquipAttribute(curPlayer)
@@ -187,6 +190,8 @@
                 giveItemDict[itemID] = giveItemDict.get(itemID, 0) + itemCnt
         
         ChEquip.SetEquipPartSuiteLV(curPlayer, equipPlace, suiteType, toSuiteLV)
+        dataDict = {'equipPlace':equipPlace,'suiteType':suiteType,'tagSuitLV':toSuiteLV,'curSuiteLV':curSuiteLV}
+        DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Suit, dataDict)
     
     if not giveItemDict:
         return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
index 18af030..0b6e4fc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
@@ -22,6 +22,7 @@
 import PlayerControl
 import PlayerSuccess
 import IPY_GameWorld
+import DataRecordPack
 import ShareDefine
 import ItemCommon
 import ChConfig
@@ -274,6 +275,8 @@
         if attrNum in useGoldAttrNumList:
             isRefreshAttr = True
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum), tempValue)
+            dataDict = {'equipPlace':equipPlace,'attrNum':attrNum,'oldValue':washValue,'newValue':tempValue}
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipWash, dataDict)
             GameWorld.DebugLog("    勾选洗练,直接更新数值: %s" % tempValue, playerID)
         else:
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (equipPlace, attrNum), tempValue)
@@ -339,7 +342,10 @@
         
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (equipPlace, attrNum), 0)
         if isSave == 1:
+            oldValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum))
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (equipPlace, attrNum), tempValue)
+            dataDict = {'equipPlace':equipPlace,'attrNum':attrNum,'oldValue':oldValue,'newValue':tempValue}
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipWash, dataDict)
             GameWorld.DebugLog("保存洗练数据: equipPlace=%s,attrNum=%s,tempValue=%s" % (equipPlace, attrNum, tempValue), playerID)
             
     if isSave == 1:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index 81ffcec..a4bcf8a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -33,6 +33,7 @@
 import Operate_EquipStone
 import Operate_EquipSuitCompose
 import IpyGameDataPY
+import DataRecordPack
 import EventShell
 
 import math
@@ -878,9 +879,10 @@
                 return -1
 
         curPlayer = self.__Player
-        #equipPack = self.__PlayerEquip
-        #equipItem = equipPack.GetAt(packEquipIndex)
-        
+        equipPack = self.__PlayerEquip
+        equipItem = equipPack.GetAt(packEquipIndex)
+        desItemID, desUserData = [0, ''] if equipItem.IsEmpty() else [equipItem.GetItemTypeID(), equipItem.GetUserData()]
+        srcItemID, srcUserData = curItem.GetItemTypeID(), curItem.GetUserData()
         # 装备绑定处理 在 DoLogic_ItemBindType函数有处理,此处注释掉
 #        if not curItem.GetIsBind():
 #            SetItemIsBind(curItem, True)
@@ -896,6 +898,9 @@
             #套装降级处理
             Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, packEquipIndex)
             EventShell.EventRespons_EquipStar(curPlayer)
+            dataDict = {'dotype':'EquipItem', 'desItemID':desItemID, 'desUserData':desUserData,'srcItemID':srcItemID,'srcUserData':srcUserData}
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
+            
         self.RefreshStartEquipCount()
         return packEquipIndex if result else -1
     
@@ -955,7 +960,7 @@
             return
         
         equipID = curEquip.GetItemTypeID()
-
+        userData = curEquip.GetUserData()
         #该物品锁定不执行==============================================
         if curEquip.GetIsLocked():
             PlayerControl.NotifyCode(curPlayer, "RescannotEquip")
@@ -993,6 +998,8 @@
         #套装降级处理
         Operate_EquipSuitCompose.CheckEquipSuitReduce(curPlayer, equipIndex)
         EventShell.EventRespons_EquipStar(curPlayer)
+        dataDict = {'dotype':'UnEquipItem', 'equipID':equipID, 'userData':userData}
+        DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
 #===============================================================================
 #        #destItemPlace = 卸下物品的位置        
 #        destItemPlace = curPack.GetAt(packIndex)
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 da6762a..8a76e92 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3851,6 +3851,7 @@
                        
             # 记录玩家升级
             DataRecordPack.DR_PlayerUpgrade(curPlayer, curPlayer.GetLV(), GetPlayerTotalExp(curPlayer), lvUpNeedExp)
+            DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_LVUP, {'lv':curLV})
             
             self.__DoLVUPAddPoint()  # 升级加点
             #self.__DoLvUpAddSkill()  # 升级加技能
@@ -4739,14 +4740,16 @@
         mfpInfo.MFPCnt = len(mfpDataList)
         mfpInfo.MFPList = mfpDataList
         NetPackCommon.SendFakePack(curPlayer, mfpInfo)
-        
+        beforeFightPower = curPlayer.GetFightPower()
         curPlayer.SetFightPower(totalFightPower, False)
+        if totalFightPower < beforeFightPower:
+            DataRecordPack.DR_FightPowerChangeInfo(curPlayer, beforeFightPower)
         highestFightPower = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FightPower_Highest, 0,
                                                            ChConfig.Def_PDictType_FightPower)
         if totalFightPower > highestFightPower:
             NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_Highest, totalFightPower,
                                  ChConfig.Def_PDictType_FightPower)
-        GameWorld.DebugLog("总战力: %s, 历史最高战力: %s" % (totalFightPower, highestFightPower))
+        GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (totalFightPower, highestFightPower, beforeFightPower))
         PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
         # 记录开服活动数据
         OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
index e2b56eb..6551fe4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
@@ -24,6 +24,7 @@
 import SkillCommon
 import SkillShell
 import PassiveBuffEffMng
+import DataRecordPack
 
 import time
 #-------------------------------------------------------------
@@ -219,7 +220,7 @@
     if curDienstgradData:
         # 删除对应技能
         __DelSkill(curPlayer, curDienstgradData)
-    
+    DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Title, {'dienstgradID':dienstgradID})
     #重新刷新角色属性
     if isRefreshAttr:
         CalcAllDienstgradAttr(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
index 79917ff..4b0522a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -29,6 +29,7 @@
 import SkillCommon
 import SkillShell
 import PlayerSuccess
+import DataRecordPack
 
 import time
 
@@ -64,6 +65,8 @@
     
     # 设置成功后才能刷技能
     PassiveBuffEffMng.PlayerDogzSkill(curPlayer)
+    if not isFight:
+        DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Title, {'dogzID':dogzID})
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
index 303dad1..0de7a49 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRune.py
@@ -29,6 +29,7 @@
 import PlayerMagicWeapon
 import IPY_GameWorld
 import OpenServerCampaign
+import DataRecordPack
 
 g_runeLVExpDict = {}
 
@@ -294,11 +295,12 @@
         if emptyIndex == -1:
             GameWorld.DebugLog("符印背包已满,无法摘下! ", curPlayer.GetPlayerID())
             return True
-        
+        desRuneData = 0
         # 摘下设置孔数据为0
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Rune_Data % srcRuneNum, 0)
         ItemControler.SetVPackItemKeyData(curPlayer, ShareDefine.rptRune, emptyIndex, srcRuneData)
-    
+    dataDict = {'desBackPack':desBackPack, 'srcRuneData':srcRuneData, 'desRuneData':desRuneData}
+    DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_Rune, dataDict)
     RefreshRuneAttr(curPlayer)
     PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
     Sync_RuneInfo(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
index 45f508b..ceed064 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
@@ -75,3 +75,4 @@
 g_teamFBMemRelationAddDict = {} # 组队副本队员关系加成信息 {playerID:[relation, relationAdd, relationPlayerID, relationPlayerName], ...}    
 
 
+g_fightpowerChangeDataRecordDict = {} #导致战力降低的各种行为记录
\ No newline at end of file

--
Gitblit v1.8.0