#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package Player.OpenServerActivity
|
#
|
# @todo:¿ª·þ»î¶¯
|
# @author hxp
|
# @date 2025-12-04
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ¿ª·þ»î¶¯
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2025-12-04 16:00"""
|
#-------------------------------------------------------------------------------
|
|
import DBDataMgr
|
import PlayerMail
|
import ShareDefine
|
import PlayerPreset
|
import PlayerOnline
|
import GameFuncComm
|
import IPY_GameWorld
|
import IpyGameDataPY
|
import PlayerTreasure
|
import PlayerBillboard
|
import ChPyNetSendPack
|
import PlayerControl
|
import NetPackCommon
|
import ItemControler
|
import PlayerBeauty
|
import ItemCommon
|
import GameWorld
|
import ChConfig
|
import math
|
|
# ¿ª·þ³å°ñÀàÐͶÔÓ¦¹¦ÄÜID
|
OSAFuncIDDict = {
|
ShareDefine.Def_BT_OSA_MainLevel:ShareDefine.GameFuncID_OSA_MainLevel,
|
ShareDefine.Def_BT_OSA_HeroCall:ShareDefine.GameFuncID_OSA_HeroCall,
|
ShareDefine.Def_BT_OSA_HeroTrain:ShareDefine.GameFuncID_OSA_HeroTrain,
|
ShareDefine.Def_BT_OSA_BeautyTrain:ShareDefine.GameFuncID_OSA_BeautyTrain,
|
ShareDefine.Def_BT_OSA_MinggeTrain:ShareDefine.GameFuncID_OSA_MinggeTrain,
|
}
|
|
def DoOSA_MainLevelOpen(curPlayer): UpdOSA_MainLevelBillboard(curPlayer)
|
def UpdOSA_MainLevelBillboard(curPlayer, lvID=0):
|
if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) != 1:
|
return
|
if not lvID:
|
lvID = PlayerControl.GetPassMainLevelID(curPlayer)
|
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
|
return
|
|
def DoOSA_HeroCallOpen(curPlayer): UpdOSA_HeroCallBillboard(curPlayer)
|
def UpdOSA_HeroCallBillboard(curPlayer, callCnt=0):
|
if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroCall) != 1:
|
return
|
if not callCnt:
|
callCnt = PlayerTreasure.GetHeroCallCnt(curPlayer)
|
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, callCnt)
|
return
|
|
def DoOSA_HeroTrainOpen(curPlayer): UpdOSA_HeroTrainBillboard(curPlayer)
|
def UpdOSA_HeroTrainBillboard(curPlayer):
|
if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroTrain) != 1:
|
return
|
|
osaType = ShareDefine.Def_BT_OSA_HeroTrain
|
mainBatPresetID = PlayerPreset.GetBatPresetID(curPlayer, ShareDefine.BatPreset_Main)
|
heroPresetID = PlayerPreset.GetFuncPresetID(curPlayer, mainBatPresetID, ShareDefine.FuncPreset_Hero)
|
olPlayer = PlayerOnline.GetOnlineMgr().GetOnlinePlayer(curPlayer)
|
heroPreset = olPlayer.GetHeroPreset(heroPresetID)
|
effCardDict = heroPreset.GetEffectiveCardDict()
|
|
cardScore = 0
|
curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
|
for cardInfo in effCardDict.values():
|
index = cardInfo[1]
|
if index < 0 or index >= curPack.GetCount():
|
continue
|
heroItem = curPack.GetAt(index)
|
if not heroItem or heroItem.IsEmpty():
|
continue
|
cardScore += __calcHeroCardTrainScore(heroItem)
|
|
washItemID = IpyGameDataPY.GetFuncCfg("HeroWash", 1)
|
trainItemScoreDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 1, {})
|
osaValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSAValue % osaType)
|
washScore = osaValue * trainItemScoreDict.get(str(washItemID), 0)
|
|
trainScore = cardScore + washScore
|
|
# Éϰñ»ý·Ö£º ֻȡÀúÊ·×î¸ß·Ö
|
osaBillValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSABillValue % osaType)
|
GameWorld.DebugLog("Î佫³å°ñ: trainScore=%s(%s+%s),osaValue=%s,osaBillValue=%s,mainBatPresetID=%s,heroPresetID=%s"
|
% (trainScore, cardScore, washScore, osaValue, osaBillValue, mainBatPresetID, heroPresetID))
|
if trainScore <= osaBillValue:
|
# ¿ÉÄܽµµÍ»ý·Ö£¬½µµÍʱ²»¸üаñµ¥
|
GameWorld.DebugLog(" Î佫³å°ñ»ý·ÖδÌáÉý²»¸üаñµ¥! trainScore=%s <= %s" % (trainScore, osaBillValue))
|
return
|
trainScore = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSABillValue % osaType, trainScore)
|
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroTrain, trainScore)
|
return
|
|
def __calcHeroCardTrainScore(heroItem):
|
heroID = heroItem.GetItemTypeID()
|
heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
|
if not heroIpyData:
|
return 0
|
quality = heroIpyData.GetQuality()
|
qualityIpyData = IpyGameDataPY.GetIpyGameData("HeroQuality", quality)
|
if not qualityIpyData:
|
return 0
|
|
heroLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroLV)
|
star = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
|
breakLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
|
awakeLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroAwakeLV)
|
|
# ÅàÑø»ý·Ö£¬¿ª·þÎ佫³å°ñ»áÓõ½
|
# Î佫³å°ñÔö¼Ó»ý·Ö °´ÏûºÄ²ÄÁÏËã {"ÏûºÄÎïÆ·ID":ÿ¸öÎïÆ·»ý·Ö, }£¬»ý·ÖÖ§³ÖСÊý£¬ÎïÆ·IDÖ§³ÖÅäÎ佫¾Ñéʯ¡¢Í»ÆÆÊ¯¡¢¾õÐÑʯ¡¢Ï´Á·Ê¯µÈ
|
trainItemScoreDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 1, {})
|
qualityStarScoreDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 2, {})
|
trainItemCntDict = {}
|
#GameWorld.DebugLog("Î佫ÎïÆ·ÅàÑø»ý·Ö: heroID=%s,quality=%s,heroLV=%s,star=%s,breakLV=%s,awakeLV=%s" % (heroID, quality, heroLV, star, breakLV, awakeLV))
|
# µÈ¼¶
|
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("HeroQualityLV", {"Quality":quality}, True)
|
if ipyDataList:
|
for ipyData in ipyDataList:
|
if heroLV <= ipyData.GetHeroLV():
|
break
|
costItemInfo = ipyData.GetUPCostItem()
|
if not costItemInfo:
|
continue
|
costItemID, costItemCount = costItemInfo
|
trainItemCntDict[costItemID] = trainItemCntDict.get(costItemID, 0) + costItemCount
|
#GameWorld.DebugLog(" quality=%s,heroLV=%s,%s" % (quality, heroLV, trainItemCntDict))
|
|
# Í»ÆÆ
|
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("HeroQualityBreak", {"Quality":quality}, True)
|
if ipyDataList:
|
for ipyData in ipyDataList:
|
if breakLV <= ipyData.GetBreakLV():
|
break
|
costItemList = ipyData.GetUPCostItemList()
|
if not costItemList:
|
continue
|
for costItemInfo in costItemList:
|
costItemID, costItemCount = costItemInfo[:2]
|
trainItemCntDict[costItemID] = trainItemCntDict.get(costItemID, 0) + costItemCount
|
#GameWorld.DebugLog(" quality=%s,breakLV=%s,%s" % (quality, breakLV, trainItemCntDict))
|
|
# ¾õÐÑ
|
ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("HeroQualityAwake", {"Quality":quality}, True, False)
|
if ipyDataList:
|
for ipyData in ipyDataList:
|
if awakeLV <= ipyData.GetAwakeLV():
|
break
|
costItemInfo = ipyData.GetUPCostItem()
|
if not costItemInfo:
|
continue
|
costItemID, costItemCount = costItemInfo
|
trainItemCntDict[costItemID] = trainItemCntDict.get(costItemID, 0) + costItemCount
|
#GameWorld.DebugLog(" quality=%s,awakeLV=%s,%s" % (quality, awakeLV, trainItemCntDict))
|
|
trainScore = 0
|
for costItemID, itemCnt in trainItemCntDict.items():
|
addScore = trainItemScoreDict.get(str(costItemID), 0) * itemCnt
|
trainScore += addScore
|
|
# ÐǼ¶
|
starScore = star * qualityStarScoreDict.get(str(quality), 0)
|
trainScore += starScore
|
#GameWorld.DebugLog(" trainScore=%s,starScore=%s" % (trainScore, starScore))
|
|
# Ï´Á¶ÎªÍ¨Óõģ¬ÔÚÍâ²ã×îºóÖ±½Ó¼Ó
|
return int(trainScore)
|
|
def DoOSA_BeautyTrainOpen(curPlayer): UpdOSA_BeautyTrainBillboard(curPlayer)
|
def UpdOSA_BeautyTrainBillboard(curPlayer):
|
if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_BeautyTrain) != 1:
|
return
|
# ºìÑպøÐ×ܵȼ¶
|
beautyTotalLV = PlayerBeauty.GetBeautyLVTotal(curPlayer)
|
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_BeautyTrain, beautyTotalLV)
|
return
|
|
def DoOSA_MinggeTrainOpen(curPlayer): UpdOSA_MinggeTrainBillboard(curPlayer)
|
def UpdOSA_MinggeTrainBillboard(curPlayer):
|
if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MinggeTrain) != 1:
|
return
|
osaType = ShareDefine.Def_BT_OSA_MinggeTrain
|
trainScoreList = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 4)
|
if not trainScoreList or len(trainScoreList) != 2:
|
return
|
tuiyanScore, lingyingScore = trainScoreList
|
osaValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSAValue % osaType)
|
curLingying = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MGLingying)
|
trainScore = int(osaValue * tuiyanScore + curLingying * lingyingScore)
|
GameWorld.DebugLog("Ãü¸ñ³å°ñ: trainScore=%s,osaValue=%s,curLingying=%s" % (trainScore, osaValue, curLingying))
|
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MinggeTrain, trainScore)
|
return
|
|
def AddOSAValue(curPlayer, osaType, addValue):
|
## Ôö¼Ó¿ª·þ³å°ñ»î¶¯Öµ£¬¹¦ÄÜ먦ÆôʱҲҪ¼Ó
|
if GetOSAState(curPlayer, osaType, checkFuncOpen=False) != 1:
|
return
|
osaValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSAValue % osaType)
|
updOSAValue = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSAValue % osaType, osaValue + addValue)
|
GameWorld.DebugLog("¸üпª·þ³å°ñ»î¶¯Öµ: osaType=%s,addValue=%s,updOSAValue=%s" % (osaType, addValue, updOSAValue))
|
return
|
|
def GetOSAState(curPlayer, osaType, checkFuncOpen=True):
|
## Íæ¼ÒÊÇ·ñÔÚ¿ª·þ³å°ñ»î¶¯ÖÐ
|
# @return: 0-먦Æô£»1-»î¶¯ÖУ»2-½áÊøÏÔʾÆÚ£»3-½áÊø¹Ø±ÕÆÚ
|
funcID = OSAFuncIDDict.get(osaType)
|
if not funcID:
|
return 0
|
if checkFuncOpen and not GameFuncComm.GetFuncCanUse(curPlayer, funcID):
|
#GameWorld.DebugLog("¿ª·þ³å°ñ¹¦ÄÜ먦Æô! osaType=%s,funcID=%s" % (osaType, funcID))
|
return 0
|
osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
|
startDay, endDay = osaDayDict.get(str(osaType), [0, 0])
|
serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
|
if startDay <= serverDay <= endDay:
|
#GameWorld.DebugLog("¿ª·þ³å°ñ»î¶¯ÖÐ! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
|
return 1
|
if serverDay == (endDay + 1):
|
#GameWorld.DebugLog("¿ª·þ³å°ñ½áËãÖÐ! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
|
return 2
|
#GameWorld.DebugLog("¿ª·þ³å°ñÒѽáÊø! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
|
return 3
|
|
def OnDay():
|
|
osaAwardState = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OSAAwardState)
|
serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
|
osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
|
for osaType, dayRange in osaDayDict.items():
|
osaType = int(osaType)
|
startDay, endDay = dayRange
|
if startDay > endDay:
|
continue
|
if serverDay <= endDay:
|
#GameWorld.DebugLog("¿ª·þ³å°ñδ¿ªÊ¼»ò»î¶¯ÖеIJ»´¦Àí: osaType=%s,serverDay=%s <= endDay(%s)" % (osaType, serverDay, endDay))
|
continue
|
|
# ½áËã
|
if osaAwardState & pow(2, osaType):
|
#GameWorld.DebugLog("¿ª·þ³å°ñ½±ÀøÒѽáËã¹ýÁË: osaType=%s,osaAwardState=%s" % (osaType, osaAwardState))
|
continue
|
osaAwardState |= pow(2, osaType)
|
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OSAAwardState, osaAwardState)
|
GameWorld.DebugLog("¿ª·þ³å°ñ½±Àø½áËã: osaType=%s,osaAwardState=%s,serverDay=%s" % (osaType, osaAwardState, serverDay))
|
|
if osaType == ShareDefine.Def_BT_OSA_MainLevel:
|
billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 2, {})
|
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAMainLevel", billboardAwardDict, "OSAMainLevel")
|
elif osaType == ShareDefine.Def_BT_OSA_HeroCall:
|
billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 3, {})
|
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAHeroCall", billboardAwardDict, "OSAHeroCall")
|
elif osaType == ShareDefine.Def_BT_OSA_HeroTrain:
|
billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 3, {})
|
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAHeroTrain", billboardAwardDict, "OSAHeroTrain")
|
elif osaType == ShareDefine.Def_BT_OSA_BeautyTrain:
|
billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 4, {})
|
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSABeautyTrain", billboardAwardDict, "OSABeautyTrain")
|
elif osaType == ShareDefine.Def_BT_OSA_MinggeTrain:
|
billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboardTrain", 5, {})
|
PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAMinggeTrain", billboardAwardDict, "OSAMinggeTrain")
|
|
return
|
|
|
## ------------------------------------------- ¿ª·þÇìµä ---------------------------------------------
|
|
def OnPlayerLogin(curPlayer):
|
if GetOSACelebrationState(curPlayer) == 3:
|
__autoChangeCelebrationPoint(curPlayer)
|
return
|
SyncOSACelebrationInfo(curPlayer)
|
return
|
|
def PlayerOnDay(curPlayer):
|
if GetOSACelebrationState(curPlayer) == 3:
|
__autoChangeCelebrationPoint(curPlayer)
|
return
|
return
|
|
def __autoChangeCelebrationPoint(curPlayer):
|
## »î¶¯½áÊøºó×Ô¶¯×ª»»Çìµä»ý·Ö
|
unUsePoint = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_OSAPoint)
|
if unUsePoint <= 0:
|
return
|
moneyItemID = ItemCommon.GetMoneyItemID(IPY_GameWorld.TYPE_Price_Gold_Money)
|
if not moneyItemID:
|
return
|
playerID = curPlayer.GetPlayerID()
|
oneNeedPoint = IpyGameDataPY.GetFuncCfg("OSACelebration", 3) # ¶àÉÙ»ý·Ö=1Ôª±¦
|
changeMoney = int(math.ceil(unUsePoint / float(oneNeedPoint)))
|
itemList = [[moneyItemID, changeMoney]]
|
GameWorld.DebugLog("×Ô¶¯×ª»¯Î´Ê¹ÓõÄÇìµä»ý·Ö: unUsePoint=%s,oneNeedPoint=%s,changeMoney=%s,itemList=%s"
|
% (unUsePoint, oneNeedPoint, changeMoney, itemList), playerID)
|
if PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_OSAPoint, unUsePoint, "SysClear"):
|
PlayerMail.SendMailByKey("OSACelebrationPoint", playerID, itemList)
|
return
|
|
def GetOSACelebrationState(curPlayer):
|
## Íæ¼ÒÊÇ·ñÔÚ¿ª·þÇìµä»î¶¯ÖÐ
|
# @return: 0-먦Æô£»1-»î¶¯ÖУ»2-½áÊøÏÔʾÆÚ£»3-½áÊø¹Ø±ÕÆÚ
|
#¿ª·þÇìµä£¬ºó¶Ë²»ÏÞÖÆ¹¦ÄÜÊÇ·ñ¿ªÆô
|
#funcID = ShareDefine.GameFuncID_OSA_Celebration
|
#if not GameFuncComm.GetFuncCanUse(curPlayer, funcID):
|
# #GameWorld.DebugLog("¿ª·þÇìµä¹¦ÄÜ먦Æô! funcID=%s" % (funcID))
|
# return 0
|
endDay = IpyGameDataPY.GetFuncCfg("OSACelebration", 1)
|
serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
|
if serverDay <= endDay:
|
#GameWorld.DebugLog("¿ª·þÇìµä»î¶¯ÖÐ! serverDay=%s,endDay=%s" % (serverDay, endDay))
|
return 1
|
if serverDay == (endDay + 1):
|
#GameWorld.DebugLog("¿ª·þÇìµä½áËãÖÐ! serverDay=%s,endDay=%s" % (serverDay, endDay))
|
return 2
|
#GameWorld.DebugLog("¿ª·þÇìµäÒѽáÊø! serverDay=%s,endDay=%s" % (serverDay, endDay))
|
return 3
|
|
def AddOSACelebrationPoint(curPlayer, addPoint):
|
## ÇìµäÀۼƻý·Ö
|
curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
|
updPoint = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationPoint, curPoint + addPoint)
|
GameWorld.DebugLog("Ôö¼Ó¿ª·þÇìµä»ý·Ö: addPoint=%s,curPoint=%s,updPoint=%s" % (addPoint, curPoint, updPoint))
|
SyncOSACelebrationInfo(curPlayer)
|
return
|
|
def GetOSACelebrationPointAward(curPlayer, awardPoint):
|
## ÁìÈ¡¿ª·þÇìµäÀۼƻý·Ö½×¶Î½±Àø
|
curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
|
if curPoint < awardPoint:
|
GameWorld.DebugLog("Àۼƿª·þÇìµä»ý·Ö²»×ã: curPoint=%s < %s" % (curPoint, awardPoint))
|
return
|
awardDict = IpyGameDataPY.GetFuncEvalCfg("OSACelebration", 2, {}) # {"Àۼƻý·Ö":[[ÎïÆ·ID,¸öÊý], ...], ...}
|
pointKeyList = [int(p) for p in awardDict.keys()]
|
pointKeyList.sort()
|
if awardPoint not in pointKeyList:
|
GameWorld.DebugLog("²»´æÔڸÿª·þÇìµä»ý·Ö½×¶Î½±Àø: awardPoint=%s not in %s" % (awardPoint, pointKeyList))
|
return
|
index = pointKeyList.index(awardPoint)
|
awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationAward)
|
if awardState&pow(2, index):
|
GameWorld.DebugLog("¸Ã¿ª·þÇìµä»ý·Ö½×¶Î½±ÀøÒÑÁìÈ¡: awardPoint=%s,index=%s,awardState=%s" % (awardPoint, index, awardState))
|
return
|
updState = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSACelebrationAward, awardState|pow(2, index))
|
itemList = awardDict[str(awardPoint)]
|
GameWorld.DebugLog("ÁìÈ¡¿ª·þÇìµä»ý·Ö½×¶Î½±Àø: awardPoint=%s,index=%s,awardState=%s,updState=%s,itemList=%s" % (awardPoint, index, awardState, updState, itemList))
|
ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["OSACelebration", False, {}])
|
SyncOSACelebrationInfo(curPlayer)
|
return
|
|
def SyncOSACelebrationInfo(curPlayer):
|
clientPack = ChPyNetSendPack.tagSCOSACelebrationInfo()
|
clientPack.PointTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationPoint)
|
clientPack.PointAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSACelebrationAward)
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|