#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package CrossActCTGBillboard
|
#
|
# @todo:¿ç·þÔËÓª»î¶¯ - ³äÖµÅÅÐÐ
|
# @author hxp
|
# @date 2021-01-13
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ¿ç·þÔËÓª»î¶¯ - ³äÖµÅÅÐÐ
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2021-01-13 17:00"""
|
#-------------------------------------------------------------------------------
|
|
import ShareDefine
|
import PyDataManager
|
import PlayerCompensation
|
import IpyGameDataPY
|
import GameWorld
|
import CommFunc
|
|
def OnActIDChange(cfgID, dbTemplateID, state):
|
## »î¶¯ID±ä¸ü
|
|
# ÏȽáËãÉÏÆÚ»î¶¯
|
__GiveBillboardOrderAward(cfgID, dbTemplateID)
|
|
# Èç¹ûÓÐл£¬´¦Àíл
|
if not state:
|
return
|
|
groupValue1 = cfgID
|
billboardType = ShareDefine.Def_CBT_ActCTG
|
|
billboardMgr = PyDataManager.GetCrossBillboardManager()
|
billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1)
|
billboardObj.ClearData() # ÐÂ»î¶¯ÖØÖðñµ¥Êý¾Ý
|
|
return
|
|
def __GiveBillboardOrderAward(cfgID, dbTemplateID):
|
## ½áËã°ñµ¥ÅÅÃû½±Àø
|
|
groupValue1 = cfgID
|
billboardType = ShareDefine.Def_CBT_ActCTG
|
|
# ÏȽáËãÉÏÆÚ»î¶¯
|
billboardMgr = PyDataManager.GetCrossBillboardManager()
|
billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1)
|
billboardDataCount = billboardObj.GetCount()
|
if not billboardDataCount:
|
GameWorld.Log("¿ç·þ³äÖµÅÅÐÐÊý¾ÝΪ¿Õ! billboardType=%s,cfgID=%s" % (billboardType, cfgID))
|
return
|
|
# ½áËãʱÅÅÐò²¢±£´æ°ñµ¥Êý¾ÝÁ÷Ïò
|
billboardObj.SortData()
|
billboardObj.SaveDRData()
|
|
GameWorld.Log("½áËã¿ç·þ³äÖµÅÅÐн±Àø: billboardType=%s,cfgID=%s,dbTemplateID=%s,billboardDataCount=%s"
|
% (billboardType, cfgID, dbTemplateID, billboardDataCount))
|
|
orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("CrossActCTGBillboardOrder", dbTemplateID)
|
if not orderIpyDataList:
|
return
|
|
billboardIndex = 0
|
for ipyData in orderIpyDataList:
|
orderA = ipyData.GetOrderA()
|
orderB = ipyData.GetOrderB()
|
ctgAtleast = CommFunc.RMBToCoin(ipyData.GetCTGAtleast())
|
awardItemList = ipyData.GetAwardItemList()
|
orderCountTotal = orderB - orderA + 1 # ½±ÀøÃû´ÎÊýÁ¿
|
orderCount = 0
|
|
for index in xrange(billboardIndex, billboardDataCount):
|
if orderCount >= orderCountTotal:
|
break
|
|
billboardData = billboardObj.At(index)
|
playerID = billboardData.ID
|
ctgRMB = billboardData.CmpValue
|
if ctgRMB < ctgAtleast:
|
break
|
|
realOrder = orderA + orderCount
|
paramList = [realOrder]
|
PlayerCompensation.SendMailByKey("CABillboardCTGOrder", [playerID], awardItemList, paramList, crossMail=True)
|
GameWorld.Log(" playerID=%s,°ñµ¥Ãû´Î=%s,ʵ¼ÊÃû´Î=%s,³äÖµ×ÜRMB=%s" % (playerID, index + 1, realOrder, ctgRMB))
|
|
orderCount += 1
|
billboardIndex += 1
|
|
# ½áËãÍêÇå³ý°ñµ¥Êý¾Ý
|
billboardObj.ClearData()
|
return
|
|
|
|