| | |
| | | import GameWorld
|
| | | import ChConfig
|
| | | import PlayerControl
|
| | | import ReadChConfig
|
| | | import OpenServerCampaign
|
| | | import MixServerCampaign
|
| | | import PlayerSuccess
|
| | | import GameFuncComm
|
| | | import EventReport
|
| | |
|
| | |
| | | def BillboardOnLogin(curPlayer):
|
| | | # 上线默认同步排行榜
|
| | | UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故上线不再同步
|
| | | |
| | | curSign = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign)
|
| | | |
| | | playerSign = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ReUpdBillboardSign)
|
| | | |
| | | if playerSign == curSign:
|
| | | GameWorld.DebugLog("玩家登录检查是否重新同步排行榜!标记相同不同步curSign=%s" % curSign)
|
| | | return
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ReUpdBillboardSign, curSign)
|
| | | GameWorld.DebugLog("玩家登录重新同步排行榜!更新同步标记lastSign=%s,curSign=%s" % (playerSign, curSign))
|
| | | |
| | | # 如果是合服充值活动记录时机,则同步一次排行榜
|
| | | mixServerRechargeType = ShareDefine.Def_MixCampaign_Type_RechargeRank
|
| | | if MixServerCampaign.IsNeedSaveMixServerCampaignRecordData(mixServerRechargeType):
|
| | | mixRecordDataType = ShareDefine.Def_MixCampaign_Type_RechargeCnt
|
| | | mixRecordDataKey = ChConfig.Def_PDict_MixServerCampaign_RecordData % mixRecordDataType
|
| | | mixRecordData = curPlayer.NomalDictGetProperty(mixRecordDataKey, 0, ChConfig.Def_PDictType_OpenServerCampaign)
|
| | | UpdateMixServerRechargeRankBillboard(curPlayer, mixRecordData)
|
| | | else:
|
| | | GameWorld.DebugLog("非合服充值活动记录时机,不同步!")
|
| | | |
| | | # 特惠充值排行
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | actionNumKey = ShareDefine.Def_Notify_WorldKey_DayAction_RechargeRank
|
| | | actionNum = gameWorld.GetGameWorldDictByKey(actionNumKey)
|
| | | if actionNum:
|
| | | curTotalGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TeHui_RechargeRankTotalGold, 0,
|
| | | ChConfig.Def_PDictType_TeHuiAction)
|
| | | curTotalGold = max(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TeHui_RechargeRankTotalGoldEx, 0,
|
| | | ChConfig.Def_PDictType_TeHuiAction), curTotalGold)
|
| | | actionID = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DayAction_ID % actionNumKey)
|
| | | UpdateRechargeRankBillboard(curPlayer, actionID, actionNum, curTotalGold)
|
| | | else:
|
| | | GameWorld.DebugLog("非特惠充值排行活动时机,不同步!")
|
| | | |
| | | GameWorld.DebugLog("玩家登录重新同步排行榜!OK!")
|
| | | return
|
| | |
|
| | | ##合服首次上线强制更新一次排行榜
|
| | |
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdCostRankBillboard', \
|
| | | sendMsg, len(sendMsg))
|
| | | return
|
| | |
|
| | | ## 更新合服累计充值活动排行榜
|
| | | # @param playerID: 玩家ID
|
| | | # @return: |
| | | def UpdateMixServerRechargeRankBillboard(curPlayer, value):
|
| | | # if GameWorld.IsGM(curPlayer):
|
| | | # #GM不上榜
|
| | | # return
|
| | | |
| | | mixServerRechargeBillLimit = ReadChConfig.GetEvalChConfig("MixServerRechargeBillLimit")
|
| | | GameWorld.DebugLog(" 更新合服累计充值活动排行榜 value=%s,limit=%s" |
| | | % (value, mixServerRechargeBillLimit), curPlayer.GetPlayerID())
|
| | | # 未达到上榜条件
|
| | | if value < mixServerRechargeBillLimit:
|
| | | return
|
| | | |
| | | #排行榜需要数据[玩家ID, 玩家名字, 玩家职业, 击杀数]
|
| | | playerID = curPlayer.GetID()
|
| | | playerName = curPlayer.GetName()
|
| | | playerOpInfo = curPlayer.GetOperateInfo()
|
| | | playerJob = curPlayer.GetJob()
|
| | | fightPower = curPlayer.GetFightPower()
|
| | | familyName = curPlayer.GetFamilyName()
|
| | | sendMsg = '%s' % ([playerID, playerName, playerOpInfo, playerJob, fightPower, familyName, value]) |
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdMSRechargeRankBillboard', \
|
| | | sendMsg, len(sendMsg))
|
| | | return
|
| | |
|
| | | ##更新玩家充值排行榜
|
| | | # @param curPlayer 玩家实例
|
| | |
| | | sendMsg, len(sendMsg))
|
| | | return
|
| | |
|
| | | ## 更新合服战盟击杀boss活动排行榜
|
| | | # @param playerID: 玩家ID
|
| | | # @return: |
| | | def UpdateMixServerFamilyKillBossBillboard(curPlayer, value):
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | if not familyID:
|
| | | return
|
| | | #排行榜需要数据[玩家ID]
|
| | | playerID = curPlayer.GetID()
|
| | | # playerName = curPlayer.GetName()
|
| | | # playerOpInfo = curPlayer.GetOperateInfo()
|
| | | # playerJob = curPlayer.GetJob()
|
| | | # fightPower = curPlayer.GetFightPower()
|
| | | # familyName = curPlayer.GetFamilyName()
|
| | | sendMsg = '%s' % ([value])
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, 'UpdMSFamilyKillBossBillboard', \
|
| | | sendMsg, len(sendMsg))
|
| | | return
|