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