#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package PlayerQQ  
 | 
#  
 | 
# @todo:QQ½±Àø  
 | 
# @author zqx  
 | 
# @date 2014-12-03  
 | 
# @version 1.3  
 | 
#  
 | 
# ÏêϸÃèÊö:   
 | 
# @change: "2016-09-13 15:00" hxp ´úÂëµ÷Õû  
 | 
# @change: "2016-09-14 03:50" xdh qzone½±Àø  
 | 
# @change: "2016-09-23 21:00" hxp Æ½Ì¨Í³Ò»Îªtencent£¬¹¦Äܽ±ÀøÍ¨¹ýpfʶ±ð  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
#"""Version = 2016-09-23 21:00"""  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
import ChConfig  
 | 
import GameWorld  
 | 
import ShareDefine  
 | 
import ReadChConfig  
 | 
import ItemControler  
 | 
import DataRecordPack  
 | 
import IPY_GameWorld  
 | 
import PlayerControl  
 | 
import ItemCommon  
 | 
import ChPlayer  
 | 
  
 | 
# ½±ÀøÀàÐͶÔÓ¦¼Ç¼key  
 | 
AwardType_KeyDict = {  
 | 
#                     ShareDefine.Def_RewardType_QQUpYellow:ChConfig.Def_PDict_QQUpYellowAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QQUpBlue:ChConfig.Def_PDict_QQUpBlueAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QQNewMan:ChConfig.Def_PDict_QQNewManAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QQDayGift:ChConfig.Def_PDict_QQDayGiftAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QzoneUp:ChConfig.Def_PDict_QzoneUpAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QzoneNewMan:ChConfig.Def_PDict_QzoneNewManAwardRecord,  
 | 
#                     ShareDefine.Def_RewardType_QzoneDayGift:ChConfig.Def_PDict_QzoneDayAwardRecord,  
 | 
                     }  
 | 
  
 | 
  
 | 
# ¶¨Òå½±ÀøÐÅÏ¢Ë÷Òý  
 | 
QQDayAwardIndexList = (  
 | 
Def_QQDayAward_YELLOW, # »Æ×ê  
 | 
Def_QQDayAward_BLUE, # À¶×ê  
 | 
Def_QQDayAward_YEAR_YELLOW, # Äê·Ñ»Æ×ê  
 | 
Def_QQDayAward_YEAR_BLUE, # Äê·ÑÀ¶×ê  
 | 
) = range(4)  
 | 
  
 | 
QQGropUpRewardDict = {  
 | 
#                      ShareDefine.Def_QQPlatVIP_Yellow:ShareDefine.Def_RewardType_QQUpYellow,  
 | 
#                      ShareDefine.Def_QQPlatVIP_Blue:ShareDefine.Def_RewardType_QQUpBlue,  
 | 
                      }  
 | 
  
 | 
def GetTencentPF(curPlayer):  
 | 
    ''' »ñÈ¡ÌÚѶƽ̨À´Ô´pf '''  
 | 
    pfValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TencentPF)  
 | 
    if pfValue <= 0:  
 | 
        return ""  
 | 
      
 | 
    if pfValue > len(ChConfig.Def_Tencent_PF_List):  
 | 
        return ""  
 | 
      
 | 
    return ChConfig.Def_Tencent_PF_List[pfValue - 1]  
 | 
  
 | 
##»ñÈ¡Æ½Ì¨ÌØÈ¨VIPÀàÐÍ  
 | 
# @param   
 | 
# @return 1-»Æ×꣬2-À¶×ê  
 | 
def GetQQPlatVIPType(curPlayer):  
 | 
    if GameWorld.GetPlatform() != "tencent":  
 | 
        return 0  
 | 
    pf = GetTencentPF(curPlayer)  
 | 
    QQLVTypeInfo = ReadChConfig.GetEvalChConfig("PlayerQQLVTypeDict")  
 | 
    for platFormList, LVType in QQLVTypeInfo.items():  
 | 
        if pf in platFormList:  
 | 
            return LVType  
 | 
    return 0  
 | 
  
 | 
##ÊÇ·ñƽ̨×êʯVIP(µÚ1λ±íʾ)  
 | 
# @param vipDataInfo: Æ½Ì¨VIPÊý¾ÝÐÅÏ¢  
 | 
# @return: 0-²»ÊÇ£» 1-ÊÇ  
 | 
def IsPlatVIP(vipDataInfo):  
 | 
    return GameWorld.GetDataByDigitPlace(vipDataInfo, 0)  
 | 
  
 | 
##ÊÇ·ñÄê·Ñ×êʯVIP(µÚ2λ±íʾ)  
 | 
# @param vipDataInfo: Æ½Ì¨VIPÊý¾ÝÐÅÏ¢  
 | 
# @return: 0-²»ÊÇ£» 1-ÊÇ  
 | 
def IsYearPlatVIP(vipDataInfo):  
 | 
    return GameWorld.GetDataByDigitPlace(vipDataInfo, 1)  
 | 
  
 | 
##ÊÇ·ñºÀ»ª°æ×êʯVIP(µÚ3λ±íʾ)  
 | 
# @param vipDataInfo: Æ½Ì¨VIPÊý¾ÝÐÅÏ¢  
 | 
# @return: 0-²»ÊÇ£» 1-ÊÇ  
 | 
def IsHighPlatVIP(vipDataInfo):  
 | 
    return GameWorld.GetDataByDigitPlace(vipDataInfo, 2)  
 | 
  
 | 
##ƽ̨×êʯVIPµÈ¼¶(µÚ4~5λ±íʾ)  
 | 
# @param vipDataInfo: Æ½Ì¨VIPÊý¾ÝÐÅÏ¢  
 | 
# @return  
 | 
def GetPlatVIPLevel(vipDataInfo):  
 | 
    return (vipDataInfo / pow(10, 3)) % 100  
 | 
  
 | 
## Í¨Öª½±ÀøÁìÈ¡¼Ç¼ÐÅÏ¢  
 | 
#  @param curPlayer  
 | 
#  @param awardType  
 | 
#  @return None  
 | 
def Sync_QQAwardGetRecord(curPlayer, awardType):  
 | 
    recordKey = AwardType_KeyDict.get(awardType)  
 | 
    if not recordKey:  
 | 
        GameWorld.DebugLog("Sync_QQAwardGetRecord() awardType(%s) not found" % awardType)  
 | 
        return  
 | 
    record = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    ChPlayer.Sync_RewardGetRecordInfo(curPlayer, awardType, record)  
 | 
    return  
 | 
  
 | 
## ÖØÖý±ÀøÁìÈ¡¼Ç¼  
 | 
#  @param curPlayer  
 | 
#  @param awardType ½±ÀøÀàÐÍ  
 | 
#  @return None  
 | 
def Sync_ResetQQAwardGetRecord(curPlayer, awardType):  
 | 
    recordKey = AwardType_KeyDict.get(awardType)  
 | 
    if not recordKey:  
 | 
        GameWorld.DebugLog("Sync_ResetQQAwardGetRecord() awardType(%s) not found" % awardType)  
 | 
        return  
 | 
    __SetQQPDictValue(curPlayer, recordKey, 0)  
 | 
    record = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    ChPlayer.Sync_RewardGetRecordInfo(curPlayer, awardType, record)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÉèÖÃQQÍæ¼Ò×ÖµäÖµ  
 | 
#  @param curPlayer  
 | 
#  @param key: ×Öµäkey  
 | 
#  @param value: ×Öµävalue  
 | 
#  @return None  
 | 
def __SetQQPDictValue(curPlayer, key, value):  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, key, value, ChConfig.Def_PDictType_QQ)  
 | 
    return  
 | 
  
 | 
## »ñÈ¡QQÍæ¼Ò×Öµä¶ÔÓ¦Öµ  
 | 
#  @param curPlayer  
 | 
#  @param key: ×Öµäkey  
 | 
#  @return Öµ  
 | 
def __GetQQPDictValue(curPlayer, key):  
 | 
    return curPlayer.NomalDictGetProperty(key, 0, ChConfig.Def_PDictType_QQ)  
 | 
  
 | 
##ÉèÖÃÁì½±¼Ç¼  
 | 
# @param curPlayer: µ±Ç°Íæ¼ÒʵÀý  
 | 
# @param recordKey: ¼Ç¼ÀàÐÍ  
 | 
# @param getIndex: ½±Àø¶ÔÓ¦µÄ¼Ç¼λ  
 | 
# @return  
 | 
def __SetAwardRecord(curPlayer, recordKey, getIndex):  
 | 
    recordValue = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    recordState = recordValue | pow(2, getIndex)  
 | 
    __SetQQPDictValue(curPlayer, recordKey, recordState)  
 | 
    return  
 | 
  
 | 
## OnDay  
 | 
#  @param curPlayer Íæ¼ÒʵÀý  
 | 
#  @return  
 | 
def OnDay(curPlayer):  
 | 
    #QQÿÈÕÀñ°üÖØÖà  
 | 
    #Sync_ResetQQAwardGetRecord(curPlayer, ShareDefine.Def_RewardType_QQDayGift)  
 | 
    #Sync_ResetQQAwardGetRecord(curPlayer, ShareDefine.Def_RewardType_QzoneDayGift)  
 | 
    return  
 | 
  
 | 
## Í¬²½QQËùÓн±Àø¼Ç¼  
 | 
#  @param curPlayer  
 | 
#  @return None  
 | 
def Sync_QQAllAwardRecord(curPlayer):  
 | 
    for key in AwardType_KeyDict.keys():  
 | 
        GameWorld.DebugLog("Sync_QQAllAwardRecord() RewardType(%s)" % (key))  
 | 
        Sync_QQAwardGetRecord(curPlayer, key)  
 | 
    return  
 | 
  
 | 
##¼ì²éÊÇ·ñÒÑÁìÈ¡  
 | 
# @param curPlayer: µ±Ç°Íæ¼ÒʵÀý  
 | 
# @param recordKey: ¼Ç¼ÀàÐÍ  
 | 
# @param getIndex: ½±Àø¶ÔÓ¦µÄ¼Ç¼λ  
 | 
# @return True-ÒÑÁìÈ¡, False-δÁìÈ¡  
 | 
def __CheckIsGetAward(curPlayer, recordKey, getIndex):  
 | 
    recordValue = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    recordState = recordValue & pow(2, getIndex)  
 | 
    if recordState > 0:  
 | 
        GameWorld.DebugLog(" recordKey=%s ÒÑÁìÈ¡!recordValue=%s,getIndex=%s,recordState=%s"   
 | 
                           % (recordKey, recordValue, getIndex, recordState))  
 | 
        return True  
 | 
    return False  
 | 
  
 | 
##¼ì²é¿É·ñÁìÈ¡  
 | 
# @param curPlayer: µ±Ç°Íæ¼ÒʵÀý  
 | 
# @param recordKey: ¼Ç¼ÀàÐÍ  
 | 
# @param qqLVType: ×êʯÀàÐÍ  
 | 
# @param getLV: ÁìÈ¡µÈ¼¶  
 | 
# @return (½±ÀøÁбí, µÈ¼¶¶ÔÓ¦Ë÷Òýλ)  
 | 
def __CheckCanGetLVAward(curPlayer, recordKey, qqLVType, getLV):  
 | 
    qqRewardDict = ReadChConfig.GetEvalChConfig("PlayerQQUpReward")  
 | 
    if qqLVType not in qqRewardDict.keys():  
 | 
        # Ã»ÓиÃ×êʯÀàÐͽ±Àø  
 | 
        GameWorld.DebugLog("¼ì²é¿É·ñÁìÈ¡QQ³É³¤Àñ°ü QQLVType = %s, not have reward" % (qqLVType))  
 | 
        return [], 0  
 | 
      
 | 
    # ¸ù¾ÝÖ°Òµ»ñÈ¡½±Àø  
 | 
    qqLVRewardDict = __GetAwardByJob(curPlayer, qqRewardDict[qqLVType])  
 | 
    getLVIndex = __GetLVRecordIndex(getLV, qqLVRewardDict)  
 | 
    if getLVIndex < 0:  
 | 
        # Ã»Óиõȼ¶ÀàÐͽ±Àø  
 | 
        GameWorld.DebugLog("¼ì²é¿É·ñÁìÈ¡QQ³É³¤Àñ°ü GetLV = %s, not have reward" % (getLV))  
 | 
        return [], 0  
 | 
      
 | 
    heroLV = curPlayer.GetLV()  
 | 
    if heroLV < getLV:  
 | 
        # µÈ¼¶²»×ã  
 | 
        GameWorld.DebugLog("¼ì²é¿É·ñÁìÈ¡QQ³É³¤Àñ°ü heroLV = %s, lv not enough" % (heroLV))  
 | 
        return [], 0  
 | 
      
 | 
    if __CheckIsGetAward(curPlayer, recordKey, getLVIndex):  
 | 
        return [], 0  
 | 
      
 | 
    return qqLVRewardDict[getLV], getLVIndex  
 | 
  
 | 
## ¸ù¾ÝÖ°Òµ»ñÈ¡½±Àø  
 | 
#  @param curPlayer£ºÍæ¼ÒʵÀý  
 | 
#  @param qqRewardDict£º½±ÀøÎïÆ·ÅäÖÃ×Öµä  
 | 
#  @return None  
 | 
def __GetAwardByJob(curPlayer, qqRewardDict):  
 | 
    infoKey = () # Ä¬ÈÏkey  
 | 
    job = curPlayer.GetJob()  
 | 
    for key in qqRewardDict.keys():  
 | 
        # Èç¹ûÍæ¼ÒÖ°ÒµÔÚÅäÖõÄkeyÀÔòȡָ¶¨µÄkeyÐÅÏ¢  
 | 
        if job in key:  
 | 
            infoKey = key  
 | 
            break  
 | 
          
 | 
    return qqRewardDict[infoKey]  
 | 
  
 | 
##»ñÈ¡µÈ¼¶½±Àø¶ÔÓ¦µÄ¼Ç¼λ  
 | 
# @param getLV: ÁìÈ¡µÈ¼¶  
 | 
# @param lvRewardDict: µÈ¼¶½±Àø×Öµä  
 | 
# @return :µÈ¼¶½±Àø¶ÔÓ¦µÄ¼Ç¼λ  
 | 
def __GetLVRecordIndex(getLV, lvRewardDict):  
 | 
    lvList = lvRewardDict.keys()  
 | 
    lvList.sort()  
 | 
    for i in range(len(lvList)):  
 | 
        if getLV == lvList[i]:  
 | 
            return i  
 | 
    return -1  
 | 
  
 | 
##»ñÈ¡QQ³É³¤½±Àø  
 | 
# @param curPlayer: µ±Ç°Íæ¼ÒʵÀý  
 | 
# @param rewardType: ½±ÀøÀàÐÍ  
 | 
# @param dataEx: ÁìÈ¡µÈ¼¶  
 | 
# @return  
 | 
def GetQQUpReward(curPlayer, rewardType, dataEx):  
 | 
    getLV = dataEx  
 | 
      
 | 
    getVIPType = GetQQPlatVIPType(curPlayer)  
 | 
    if getVIPType not in QQGropUpRewardDict or QQGropUpRewardDict[getVIPType] != rewardType:  
 | 
        GameWorld.DebugLog("»ñÈ¡QQ³É³¤½±ÀøµÄ½±ÀøÀàÐͲ»¶Ô")  
 | 
        return  
 | 
      
 | 
    # ²»ÊÇÆ½Ì¨VIP  
 | 
    vipDataInfo = curPlayer.GetOperateInfo()  
 | 
    if IsPlatVIP(vipDataInfo) <= 0:  
 | 
        return  
 | 
      
 | 
    recordKey = AwardType_KeyDict.get(rewardType)  
 | 
    # ¼ì²é¿É·ñÁìÈ¡  
 | 
    itemInfoList, getLVIndex = __CheckCanGetLVAward(curPlayer, recordKey, getVIPType, getLV)  
 | 
    if not itemInfoList:  
 | 
        GameWorld.DebugLog("can not Get QQUp LV Award!!!")  
 | 
        return  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(itemInfoList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
      
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in itemInfoList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
  
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    __SetAwardRecord(curPlayer, recordKey, getLVIndex)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, rewardType)  
 | 
      
 | 
    addDataDict = {"getVIPType":getVIPType, "getLV":getLV, "getLVIndex":getLVIndex, "itemInfoList":itemInfoList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QQUpReward", addDataDict)  
 | 
    GameWorld.DebugLog("ÁìÈ¡QQ³É³¤Àñ°ü: getVIPType=%s,getLV=%s,getLVIndex=%s,recordKey=%s"   
 | 
                       % (getVIPType, getLV, getLVIndex, recordKey))  
 | 
    return   
 | 
  
 | 
def GetQQNewManAward(curPlayer, awardType, dataEx):  
 | 
    # ÁìÈ¡QQÐÂÊÖÀñ°ü  
 | 
      
 | 
    GameWorld.DebugLog("GetQQNewManAward()")  
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    platVIPType = GetQQPlatVIPType(curPlayer)  
 | 
    getVIPType = dataEx  
 | 
    if platVIPType != getVIPType:  
 | 
        GameWorld.ErrLog("ÁìÈ¡QQÐÂÊÖÀñ°ü platVIPType(%s) != getVIPType(%s)" % (platVIPType, getVIPType), playerID)  
 | 
        return  
 | 
      
 | 
    vipDataInfo = curPlayer.GetOperateInfo()  
 | 
    if not IsPlatVIP(vipDataInfo):  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÐÂÊÖÀñ°ü Î´¿ªÍ¨»áÔ± platVIPType = %s, OperateInfo=%s" % (platVIPType, vipDataInfo), playerID)  
 | 
        return  
 | 
      
 | 
    # ÊÇ·ñÒÑÁìÈ¡  
 | 
    recordValue = __GetQQPDictValue(curPlayer, ChConfig.Def_PDict_QQNewManAwardRecord)  
 | 
    if recordValue & pow(2, getVIPType):  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÐÂÊÖÀñ°ü ÒÑÁìÈ¡! recordValue=%s,getVIPType=%s" % (recordValue, getVIPType), playerID)  
 | 
        return  
 | 
      
 | 
    awardItemDict = ReadChConfig.GetEvalChConfig("PlayerQQNewMan")  
 | 
    awardItemList = awardItemDict.get(getVIPType)  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(awardItemList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
      
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in awardItemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
      
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    updRecord = recordValue | pow(2, getVIPType)  
 | 
    __SetQQPDictValue(curPlayer, ChConfig.Def_PDict_QQNewManAwardRecord, updRecord)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, awardType)  
 | 
      
 | 
    addDataDict = {"recordValue":recordValue, "updRecord":updRecord, "getVIPType":getVIPType, "awardItemList":awardItemList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QQNewManAward", addDataDict)  
 | 
    GameWorld.DebugLog("ÁìÈ¡QQÐÂÊÖÀñ°ü getVIPType=%s,recordValue=%s,updRecord=%s" % (getVIPType, recordValue, updRecord), playerID)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÁìÈ¡QQÿÈÕÀñ°ü  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param awardType: Áì½±ÀàÐÍ  
 | 
#  @param dataEx: Ô¤Áô²ÎÊý  
 | 
#  @return  
 | 
def GetQQDayGift(curPlayer, awardType, dataEx):  
 | 
    awardIndex = dataEx  
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
      
 | 
    if awardIndex not in QQDayAwardIndexList:  
 | 
        return  
 | 
      
 | 
    getVIPType = GetQQPlatVIPType(curPlayer)  
 | 
    if getVIPType < 0:  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü ·ÇQQƽ̨ ")  
 | 
        return  
 | 
      
 | 
    vipDataInfo = curPlayer.GetOperateInfo()  
 | 
    if not IsPlatVIP(vipDataInfo):  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü Î´¿ªÍ¨»áÔ± getVIPType = %s" % getVIPType)  
 | 
        return  
 | 
      
 | 
    if awardIndex in [Def_QQDayAward_YEAR_YELLOW, Def_QQDayAward_YEAR_BLUE]:  
 | 
        if not IsYearPlatVIP(vipDataInfo):  
 | 
            GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü ·ÇÄê·Ñ!")  
 | 
            return  
 | 
      
 | 
    # ÊÇ·ñÒÑÁìÈ¡  
 | 
    recordValue = __GetQQPDictValue(curPlayer, ChConfig.Def_PDict_QQDayGiftAwardRecord)  
 | 
    if recordValue & pow(2, awardIndex):  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü ÒÑÁìÈ¡! recordValue=%s,getVIPType=%s" % (recordValue, awardIndex), playerID)  
 | 
        return  
 | 
      
 | 
    awardItemDict = ReadChConfig.GetEvalChConfig("PlayerQQDayGift")  
 | 
    awardItemList = awardItemDict.get(awardIndex)  
 | 
    if awardIndex in [Def_QQDayAward_YELLOW, Def_QQDayAward_BLUE]:  
 | 
        QQlv = GetPlatVIPLevel(vipDataInfo)  
 | 
        awardItemList = awardItemList.get(QQlv, [])  
 | 
      
 | 
    if not awardItemList:  
 | 
        GameWorld.ErrLog("ÁìÈ¡QQÿÈÕÀñ°ü ÕÒ²»µ½½±ÀøÎïÆ·! awardIndex=%s" % (awardIndex), playerID)  
 | 
        return  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(awardItemList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
  
 | 
    GameWorld.DebugLog("awardItemList=%s" % awardItemList)  
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in awardItemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
      
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    updRecord = recordValue | pow(2, awardIndex)  
 | 
    __SetQQPDictValue(curPlayer, ChConfig.Def_PDict_QQDayGiftAwardRecord, updRecord)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, awardType)  
 | 
      
 | 
    addDataDict = {"recordValue":recordValue, "updRecord":updRecord, "getVIPType":getVIPType,   
 | 
                   "awardIndex":awardIndex, "awardItemList":awardItemList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QQDayGift", addDataDict)  
 | 
    GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü getVIPType=%s,awardIndex=%s,recordValue=%s,updRecord=%s"   
 | 
                       % (getVIPType, awardIndex, recordValue, updRecord), playerID)  
 | 
    return  
 | 
  
 | 
  
 | 
#########################  
 | 
## ÊÇ·ñQQ¿Õ¼äƽ̨  
 | 
def IsQzonePlatForm(curPlayer):  
 | 
    return GetTencentPF(curPlayer) == 'qzone'  
 | 
  
 | 
##»ñÈ¡Qzone³É³¤½±Àø  
 | 
# @param curPlayer: µ±Ç°Íæ¼ÒʵÀý  
 | 
# @param rewardType: ½±ÀøÀàÐÍ  
 | 
# @param dataEx: ÁìÈ¡µÈ¼¶  
 | 
# @return  
 | 
def GetQzoneUpReward(curPlayer, rewardType, dataEx):  
 | 
    if not IsQzonePlatForm(curPlayer):  
 | 
        GameWorld.DebugLog("²»ÊÇqzoneƽ̨")  
 | 
        return  
 | 
      
 | 
    awardIndex = dataEx  
 | 
      
 | 
    QzoneLVAwardList = ReadChConfig.GetEvalChConfig("QzoneLVAward")  
 | 
    if awardIndex < 0 or awardIndex >=len(QzoneLVAwardList):  
 | 
        GameWorld.DebugLog("GetQzoneUpReward() ¼ì²éQzoneLVAward.txt awardIndex=%s"%awardIndex)  
 | 
        return  
 | 
      
 | 
    needLV, itemList = QzoneLVAwardList[awardIndex]  
 | 
      
 | 
    # ¼ì²é¿É·ñÁìÈ¡  
 | 
    if curPlayer.GetLV() < needLV:  
 | 
        GameWorld.DebugLog("GetQzoneUpReward() µÈ¼¶²»×ã%s"%needLV)  
 | 
        return  
 | 
      
 | 
    # ¼ì²éÊÇ·ñÒÑÁìÈ¡  
 | 
    recordKey = AwardType_KeyDict.get(rewardType)  
 | 
    if __CheckIsGetAward(curPlayer, recordKey, awardIndex):  
 | 
        return  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(itemList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
      
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in itemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
  
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    __SetAwardRecord(curPlayer, recordKey, awardIndex)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, rewardType)  
 | 
      
 | 
    addDataDict = {"getLV":needLV, "getLVIndex":awardIndex, "itemList":itemList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QzoneUpReward", addDataDict)  
 | 
    GameWorld.DebugLog("Qzone³É³¤½±Àø:getLV=%s,getLVIndex=%s,recordKey=%s"   
 | 
                       % (needLV, awardIndex, recordKey))  
 | 
    return   
 | 
  
 | 
## »ñÈ¡QzoneÐÂÊÖ½±Àø  
 | 
def GetQzoneNewManAward(curPlayer, awardType, dataEx):  
 | 
    if not IsQzonePlatForm(curPlayer):  
 | 
        GameWorld.DebugLog("²»ÊÇqzoneƽ̨")  
 | 
        return  
 | 
      
 | 
    # ÁìÈ¡QzoneÐÂÊÖÀñ°ü  
 | 
    GameWorld.DebugLog("GetQzoneNewManAward()")  
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
      
 | 
    # ÊÇ·ñÒÑÁìÈ¡  
 | 
    recordKey = AwardType_KeyDict.get(awardType)  
 | 
    recordValue = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    if recordValue:  
 | 
        GameWorld.DebugLog("GetQzoneNewManAward() ÒÑÁìÈ¡!", playerID)  
 | 
        return  
 | 
      
 | 
    awardItemList = ReadChConfig.GetEvalChConfig("QzoneNewManAward")  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(awardItemList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
      
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in awardItemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
      
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    __SetQQPDictValue(curPlayer, recordKey, 1)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, awardType)  
 | 
      
 | 
    addDataDict = {"awardItemList":awardItemList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QzoneNewManAward", addDataDict)  
 | 
    GameWorld.DebugLog("GetQzoneNewManAward() ÁìÈ¡³É¹¦", playerID)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÁìÈ¡QzoneÿÈÕÀñ°ü  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param awardType: Áì½±ÀàÐÍ  
 | 
#  @param dataEx: Ô¤Áô²ÎÊý  
 | 
#  @return  
 | 
def GetQzoneDayGift(curPlayer, awardType, dataEx):  
 | 
    if not IsQzonePlatForm(curPlayer):  
 | 
        GameWorld.DebugLog("²»ÊÇqzoneƽ̨")  
 | 
        return  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
  
 | 
      
 | 
    # ÊÇ·ñÒÑÁìÈ¡  
 | 
    recordKey = AwardType_KeyDict.get(awardType)  
 | 
    recordValue = __GetQQPDictValue(curPlayer, recordKey)  
 | 
    if recordValue:  
 | 
        GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü ÒÑÁìÈ¡!" , playerID)  
 | 
        return  
 | 
      
 | 
    awardItemList = ReadChConfig.GetEvalChConfig("QzoneDayAward")  
 | 
      
 | 
    # ¼ì²é±³°ü  
 | 
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)  
 | 
    if len(awardItemList) > packSpace:  
 | 
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")  
 | 
        return  
 | 
  
 | 
    # ¸øÎïÆ·  
 | 
    for itemID, itemCount, isBind in awardItemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True)  
 | 
      
 | 
    # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç  
 | 
    __SetQQPDictValue(curPlayer, recordKey, 1)  
 | 
      
 | 
    # Í¨Öª¿Í»§¶Ë  
 | 
    Sync_QQAwardGetRecord(curPlayer, awardType)  
 | 
      
 | 
    addDataDict = {"awardItemList":awardItemList}  
 | 
    DataRecordPack.DR_FuncGiveItem(curPlayer, "QzoneDayGift", addDataDict)  
 | 
    GameWorld.DebugLog("ÁìÈ¡QQÿÈÕÀñ°ü ³É¹¦" , playerID)  
 | 
    return  
 | 
  
 | 
  
 |