hxp
2021-04-14 9ed7a50c30881fd97a44c9fef82e1e4d97fcdff8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py
@@ -48,6 +48,7 @@
    if onEventType == ShareDefine.Def_OnEventType:
        #发钻石红包额度重置
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ServerRedPacketGrabCnt, 0)
        __NotifyGoldLimt(curPlayer)
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
@@ -57,6 +58,34 @@
            sendCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCnt+sendCnt)
            NotifyOSRedPacket(curPlayer)
    return
def OnPlayerRecharge(curPlayer, orderRMB):
    ## 玩家充值
    todayCoin = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AllCoinToday)
    # 每日首充红包
    if todayCoin - orderRMB * 100 == 0:
        dayFirstRedPacketID = IpyGameDataPY.GetFuncCfg("RechargeRedPacket", 1)
        GameWorld.DebugLog("每日首充红包: dayFirstRedPacketID=%s" % dayFirstRedPacketID)
        if dayFirstRedPacketID:
            CreatRedPacketByID(curPlayer, dayFirstRedPacketID)
    #else:
    #    GameWorld.DebugLog("非每日首充: todayCoin=%s" % todayCoin)
    # 单笔充值红包
    rmbRedPacketID = 0
    rmbRedPackIDDict = IpyGameDataPY.GetFuncEvalCfg("RechargeRedPacket", 2, {})
    rmbList = rmbRedPackIDDict.keys()
    rmbList.sort()
    for rmb in rmbList:
        if orderRMB <= rmb:
            rmbRedPacketID = rmbRedPackIDDict[rmb]
            break
    if rmbRedPacketID:
        GameWorld.DebugLog("单笔充值红包: orderRMB=%s,rmbRedPacketID=%s" % (orderRMB, rmbRedPacketID))
        CreatRedPacketByID(curPlayer, rmbRedPacketID)
    return
def CreatCacheRedPacktet(curPlayer):
@@ -91,6 +120,8 @@
        if not PlayerFeastRedPacket.GetFeastRedPacketState():
            GameWorld.DebugLog('    非节日红包活动中,不可发送!')
            return
        isFamilyRedPacket = False
    elif getType == ShareDefine.RedPackType_Server:
        isFamilyRedPacket = False
    else:
        if not curPlayer.GetFamilyID():
@@ -141,7 +172,7 @@
    return
#// A6 08 发家族红包 #tagCMSendFamilyRedPacket
#// A6 08  发家族红包 #tagCMSendFamilyRedPacket
#
#struct     tagCMSendFamilyRedPacket
#{
@@ -149,8 +180,8 @@
#    DWORD        RedPacketID;    // 红包ID,没有发0
#    WORD        PacketCnt;    // 红包数量
#    WORD        MoneyNum;    //金钱数量
#    WORD        WishLen;            //祝福语长度
#    char        Wish[NameLen];        //size=WishLen
#    char        Wish[33];        //祝福语
#    BYTE        IsAnonymous;    //是否匿名
#};
## 发家族红包
def OnSendFamilyRedPacket(index, clientData, tick):
@@ -159,6 +190,7 @@
    packetCnt = clientData.PacketCnt
    moneyNum = clientData.MoneyNum
    wishInfo = clientData.Wish
    isAnonymous = clientData.IsAnonymous
    if not redPacketID:
        #主动发的钻石红包 vip限制
        if not PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FamilyGoldPack):
@@ -167,7 +199,7 @@
        __DoCreatRedPacket(curPlayer, ShareDefine.RedPackType_GoldPacket, IPY_GameWorld.TYPE_Price_Gold_Money, moneyNum, packetCnt, State_NoGot, wishInfo)
    else:
        # 注意:该函数发放的是已创建的红包,该操作只是把该红包开放给玩家可抢
        msg = str([curPlayer.GetPlayerID(), redPacketID, packetCnt])
        msg = str([curPlayer.GetPlayerID(), redPacketID, packetCnt, isAnonymous])
        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "SendFamilyRedPacket", msg, len(msg))
    return
@@ -178,6 +210,7 @@
    packData = ChPyNetSendPack.tagMCFamilyRedPacketGoldLimit()
    packData.Clear()
    packData.HasSendGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
    packData.ServerGrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
@@ -213,11 +246,13 @@
        canGrabCnt = GetOSCanGrabCnt(curPlayer)
    elif reqGetWay == ShareDefine.RedPackType_FeastSucc:
        canGrabCnt = PlayerFeastRedPacket.GetFeastSuccRedPacketCanGrabCnt(curPlayer)
    elif reqGetWay == ShareDefine.RedPackType_Server:
        canGrabCnt = GetServerRedPackCanGrabCnt(curPlayer)
    else:
        canGrabCnt = -1
    msg = str([redPacketID, reqGetWay, canGrabCnt])
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "GrabFamilyRedPacket", msg, len(msg))
    GameWorld.DebugLog('    抢红包 getWay=%s,canGrabCnt=%s' % (reqGetWay, canGrabCnt))
    GameWorld.DebugLog('    抢红包 redPacketID=%s,getWay=%s,canGrabCnt=%s' % (redPacketID, reqGetWay, canGrabCnt))
    return
@@ -264,6 +299,33 @@
    NotifyOSRedPacket(curPlayer)
    return
def GetServerRedPackCanGrabCnt(curPlayer):
    #获取全服红包可抢次数
    # @return: -1为不限
    vipLVMaxGrabCntDict = IpyGameDataPY.GetFuncEvalCfg("RechargeRedPacket", 3, {})
    vipLVList = vipLVMaxGrabCntDict.keys()
    vipLVList.sort()
    for vipLV in vipLVList:
        if curPlayer.GetVIPLv() <= vipLV:
            maxGrabCnt = vipLVMaxGrabCntDict[vipLV]
            if not maxGrabCnt:
                return -1
            todayGrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
            return max(0, maxGrabCnt - todayGrabCnt)
    return 0
def GrabServerRedPacketResult(curPlayer, moneyNum, isSelf):
    ##抢全服红包结果
    if isSelf:
        return
    grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ServerRedPacketGrabCnt, grabCnt + 1)
    __NotifyGoldLimt(curPlayer)
    return
def ProcessOSRedPacket(curPlayer, tick):
    return
    #开服红包恢复次数