From 67b5c3b99bc3cbbfb26c1755d02d566713d0b280 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期四, 27 六月 2019 17:39:37 +0800 Subject: [PATCH] 4272 【主干】野外地图击杀VIPBoss掉落广播优化 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 178 ++++++++++++++++++++++------------------------------------- 1 files changed, 66 insertions(+), 112 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py index 72fa8a1..d9b5574 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py @@ -90,7 +90,6 @@ # @change: "2014-12-01 19:10" ljd 增加领取合服活动登陆奖励事件记录 # @change: "2014-12-21 23:00" hxp 增加功能奖励物品 # @change: "2014-12-23 00:30" hxp 充值前/消费时流向信息扩展(增加各大功能信息) -# @change: "2015-01-27 22:30" hxp 增加转生等级变更流向 # @change: "2015-02-05 15:00" hxp 充值送礼流向扩展信息字典 # @change: "2015-02-27 21:00" hxp 增加大师等级升级流向; 重新开启技能学习流向 # @change: "2015-03-30 14:00" hxp 增加击杀NPC流向 @@ -113,6 +112,7 @@ import ChConfig import ShareDefine import PlayerControl +import PyGameData #=============================================================================== ##发送事件记录给EventShell # @param eventTypeStr: 事件类型标识 @@ -123,6 +123,7 @@ if curPlayer: pid = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerFromPID) dataDict["pid"] = pid + dataDict["fightPower"] = curPlayer.GetFightPower() dataDict["time"] = str(datetime.datetime.today()).split(".")[0] dataStr = str(dataDict) @@ -153,7 +154,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) @@ -175,11 +176,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 @@ -345,6 +353,8 @@ #发送封包 SendEventPack("CTGError", dataDict, curPlayer) GameWorld.ErrLog("%s. %s" % (errorInfo, addDict), curPlayer.GetPlayerID()) + + GameWorld.SendGameStateMail("CTGError:%s - %s"%(errorInfo, dataDict)) return def DR_CTGOK(curPlayer, addDict): @@ -422,24 +432,6 @@ #发送封包 SendEventPack("PlayerCoinAfterCharge", dataDict, curPlayer) return - - -## 玩家商城购买物品 -# @param curPlayer: 玩家实例 -# @param buyItemID: 购买物品id -# @param buyItemCount: 购买物品数量 -# @param buyItemGUID: GUID -# @return: None -def DR_PlayerSupermarket(curPlayer, buyItemID, buyItemCount, buyItemGUID): - - dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), 'ItemID':buyItemID, 'ItemCount':buyItemCount, - 'ItemGUID':buyItemGUID} - - #发送封包 - SendEventPack("PlayerSupermarket", dataDict, curPlayer) - return - ## 玩家升级 # @param curPlayer: 玩家实例 @@ -455,26 +447,6 @@ #发送封包 SendEventPack("PlayerUpgrade", dataDict, curPlayer) - return - -## 玩家转生等级变更 -# @param curPlayer: 玩家实例 -# @param reincarnationLvBefore: 之前转生次数 -# @param playerLVExBefore: 之前转生等级 -# @param eventName: -# @return: None -def DR_PlayerLVExChange(curPlayer, reincarnationLvBefore, playerLVExBefore, eventName, addDataDict={}): - - dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), 'ReincarnationLv':curPlayer.GetReincarnationLv(), - 'PlayerLV':curPlayer.GetLV(), 'PlayerLVEx':curPlayer.GetLVEx(), - 'TotalExp':curPlayer.GetTotalExp(), 'ReincarnationLvBefore':reincarnationLvBefore, - 'PlayerLVExBefore':playerLVExBefore, "EventName":eventName} - - dataDict.update(addDataDict) - - #发送封包 - SendEventPack("PlayerLVExChange", dataDict, curPlayer) return ## 玩家大师等级变更 @@ -542,18 +514,6 @@ SendEventPack("LVAward", dataDict, curPlayer) return -##合服登陆奖励 -def DR_MixLoginDayAward(curPlayer, getState): - dataDict = {'PlayerID':curPlayer.GetPlayerID(), - 'PlayerName':curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), - "rewardState":getState - } - - SendEventPack("MixLoginDayAward", dataDict, curPlayer) - return - - ## 使用新手媒体卡 # @param curPlayer: 玩家实例 # @param cardStr: 卡号 @@ -597,18 +557,6 @@ dataDict["PlayerName"] = curPlayer.GetPlayerName() SendEventPack("OpenServerAward", dataDict, curPlayer) - return - -## 合服活动奖励领取情况 -# @param curPlayer: 玩家实例 -# @param dataDict: 记录信息字典 -# @return: None -def DR_MixServerAward(curPlayer, dataDict): - dataDict["PlayerID"] = curPlayer.GetPlayerID() - dataDict["AccID"] = curPlayer.GetAccID() - dataDict["PlayerName"] = curPlayer.GetPlayerName() - - SendEventPack("MixServerAward", dataDict, curPlayer) return ## GM执行命令操作 @@ -894,6 +842,13 @@ return +## 获得金钱失败 +def DR_GiveMoneyError(curPlayer, priceType, value, giveType, addDataDict): + dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), + 'AccID':curPlayer.GetAccID(), "GiveType":giveType, "GiveValue":value, "AddDataDict":addDataDict} + SendEventPack("GiveMoneyError_%s" % priceType, dataDict, curPlayer) + return + ## 获得物品 # @param curPlayer: 玩家实例 # @param eventName: 功能事件名 @@ -929,8 +884,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={}): @@ -1261,12 +1216,6 @@ SendEventPack("PlayerGetReward", dataDict, curPlayer) return -def DR_MergePlayerEvent(playerID, eventType, eventTime, eventData, opType): - # 跨服玩家记录事件流向 - dataDict = {'PlayerID':playerID, "EventType":eventType, "EventTime":eventTime, 'EventData':eventData} - SendEventPack("MergePlayerEvent_%s" % opType, dataDict) - return - ## 申请加入贵宾俱乐部 # @param curPlayer # @param hasRegister: 之前是否已报名 @@ -1435,26 +1384,6 @@ SendEventPack("CollectNPCOK", dataDict, curPlayer) return -## 玩家领取充值特惠活动奖励 -# @param curPlayer: 玩家实例 -# @param actionID: 活动id -# @param actionNum: 活动编号 -# @param itemID: 物品id -# @param itemCnt: 物品数量 -# @param isPutIn: 是否放入 -# @param prizeIndex: 奖励中的第x种奖励 -# @return -def DR_PlayerTeHuiRechargePrize(curPlayer, actionID, actionNum, itemID, itemCnt, isPutIn, prizeIndex): - #MySql不识别 True False,改成1和0 - isPutIn = 1 if isPutIn else 0 - - dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), 'ActionID':actionID, 'ActionNum':actionNum, - 'IsPutIn':isPutIn, "ItemID":itemID, "ItemCount":itemCnt, 'PrizeIndex':prizeIndex} - - SendEventPack("TeHuiRechargePrize", dataDict, curPlayer) - return - ## 领取投资回报 # @param curPlayer: 玩家实例 @@ -1494,24 +1423,6 @@ #发送封包 SendEventPack("TreasureResult", dataDict, curPlayer) - return - -## 消费VIP升级记录 -# @param curPlayer -# @param lastLV 原VIPLV -# @param curExp 当前VIP经验 -# @param addExp 增加VIP经验 -# @param costType 花费类型 -# @param costGold 花费数 -# @return: None -def DR_PlayerCostVIPLV(curPlayer, lastLV, curExp, addExp, costType, costGold): - - dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), 'VIPLv':curPlayer.GetVIPLv(), 'lastVIPLv':lastLV, - 'curExp':curExp, 'addExp':addExp, 'costType':costType, 'costGold':costGold} - - #发送封包 - SendEventPack("PlayerCostVIPLV", dataDict, curPlayer) return ## 玩家提交bug及建议 @@ -1582,11 +1493,54 @@ ## 玩家境界升级 # @return -def DR_RealmLVUp(curPlayer, realmlv, realmPoint, needRealmPoint): +def DR_RealmLVUp(curPlayer, realmlv): dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), - 'AccID':curPlayer.GetAccID(), 'realmlv':realmlv, 'curRealmPoint':realmPoint, 'costRealmPoint':needRealmPoint, + 'AccID':curPlayer.GetAccID(), 'realmlv':realmlv, 'playerlv':curPlayer.GetLV(), 'power':curPlayer.GetFightPower()} #发送封包 SendEventPack("RealmLVUp", dataDict, curPlayer) + 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 + +## 玩家周狂欢(七天巡礼) +# @return +def DR_WeekPartyPoint(curPlayer, dayIndex, point): + dataDict = {'PlayerID':curPlayer.GetPlayerID(), + 'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point} + + #发送封包 + SendEventPack("WeekPartyPoint", dataDict, curPlayer) + return +def DR_FeastWeekPartyPoint(curPlayer, dayIndex, point): + ##节日巡礼 + dataDict = {'PlayerID':curPlayer.GetPlayerID(), + 'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point} + #发送封包 + SendEventPack("FeastWeekPartyPoint", dataDict, curPlayer) return \ No newline at end of file -- Gitblit v1.8.0