ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py
@@ -46,32 +46,59 @@
## OnDay处理
#  @param curPlayer
#  @return None
def RedPacketOnDay(curPlayer):
    #发钻石红包额度重置
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
    __NotifyGoldLimt(curPlayer)
def RedPacketOnDay(curPlayer, onEventType):
    if onEventType == ShareDefine.Def_OnEventType:
        #发钻石红包额度重置
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
        __NotifyGoldLimt(curPlayer)
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
        if openServerDay < oscDay:
            grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
            sendCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCnt+sendCnt)
            NotifyOSRedPacket(curPlayer)
    return
def CreatCacheRedPacktet(curPlayer):
    #加入仙盟后,发放待发的红包
    ipyMgr = IpyGameDataPY.IPY_Data()
    for i in xrange(ipyMgr.GetFamilyRedPackCount()):
        ipyData = ipyMgr.GetFamilyRedPackByIndex(i)
        redPacketID = ipyData.GetID()
        if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID):
            CreatRedPacketByID(curPlayer, redPacketID)
            GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 0)
    return
def CreatRedPacketByID(curPlayer, redPacketID, state=State_NoSend, data=0):
    #根据红包ID生成红包
    ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID)
    if not ipyData:
        return
    DoCreatFamilyRedPacket(curPlayer, ipyData.GetGetType(), ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data)
    return
## 生成红包
def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0):
#    if not curPlayer.GetFamilyID():
#        #没家族
#        return
    getType = ipyData.GetGetType()
    if getType == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketType'):
        oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
        if openServerDay >= oscDay:
            GameWorld.DebugLog('    发开服红包,活动已过,不可发送!')
            return
    else:
        if not curPlayer.GetFamilyID():
            #没家族 先存起来,等进仙盟时再补发
            GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 1)
            return
    DoCreatFamilyRedPacket(curPlayer, getType, ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data)
    return
## 生成红包
def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0):
    playerID = curPlayer.GetPlayerID()
    packetCnt = min(packetCnt, awardNum)
    
@@ -81,7 +108,11 @@
        if awardNum + goldLimit > familyRedPacketGoldLimit:
            GameWorld.DebugLog('    主动发仙盟钻石红包,额度已超%s,不可发送!' % familyRedPacketGoldLimit, playerID)
            return
        if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, awardNum):
            curBourseMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
            GameWorld.Log(" 不能发钻石红包 no enough bourse money! priceCount=%s,curBourseMoney=%s"
                              % (awardNum, curBourseMoney), playerID)
            return
        if not PlayerControl.PayMoney(curPlayer, moneyType, awardNum, ChConfig.Def_Cost_FamilyRedPacket):
            return
        
@@ -209,8 +240,8 @@
    if not isSelf: #抢自己的红包不扣次数
        grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, max(0, grabCnt-1))
        if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4):
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time()))
#        if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4):
#            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time()))
    
    
    #֪ͨ
@@ -218,6 +249,7 @@
    return
def ProcessOSRedPacket(curPlayer, tick):
    return
    #开服红包恢复次数
    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_OSRedPacket, tick):
        return