9391 【主干】【后端】红包主干摘取调整(去除开服红包;去除全服红包次数及权限限制;优化红包系统分类;)
8个文件已修改
325 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetRedPacket.py 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GrabFamilyRedPacketResult.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
@@ -21,6 +21,7 @@
import PlayerFamilyRedPacket
import ChPyNetSendPack
import NetPackCommon
import ShareDefine
## GM命令执行入口
@@ -31,11 +32,12 @@
def OnExec(curPlayer, paramList):
    GameWorld.DebugLog("执行GameServer->SetRedPacket: %s" % paramList)
    if not paramList:
#        GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0")
#        GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
#        GameWorld.DebugAnswer(curPlayer, "发送全服系统红包:SetRedPacket 36 红包编号 个数")
#        GameWorld.DebugAnswer(curPlayer, "全服系统红包编号:126~130")
#        GameWorld.DebugAnswer(curPlayer, "红包类型:36-全服红包;33-节日成就")
#        GameWorld.DebugAnswer(curPlayer, "---------------------------")
#        GameWorld.DebugAnswer(curPlayer, "清所有红包:SetRedPacket 0")
#        GameWorld.DebugAnswer(curPlayer, "清指定红包:SetRedPacket 0 类型A 类型B ...")
#        GameWorld.DebugAnswer(curPlayer, "发指定红包:SetRedPacket 1 红包编号 个数")
#        GameWorld.DebugAnswer(curPlayer, "设置抢红包:SetRedPacket 2 红包功能  可抢数 已抢额度")
#        GameWorld.DebugAnswer(curPlayer, "红包功能:1-开服红包;2-节日红包")
        return
    
    paramA = paramList[0]
@@ -75,20 +77,27 @@
                    continue
                NetPackCommon.SendFakePack(curPlayer, sendPack)
                
    elif paramA == 36:
    elif paramA == 1:
        redPackID = paramList[1] if len(paramList) > 1 else 0
        sendCount = paramList[2] if len(paramList) > 2 else 0
        sendCount = min(100, sendCount)
        canSendRedPacketIDList = range(126, 130 + 1) + []
        if redPackID not in canSendRedPacketIDList or not sendCount:
            GameWorld.DebugAnswer(curPlayer, "发送全服系统红包参数错误!")
        ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPackID)
        if not ipyData:
            return
        getType = ipyData.GetGetType()
        wayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getType)
        if wayType == ShareDefine.RedPackWayType_Family:
            return
        openTime = ipyData.GetPacketOpenTime() # 如果有指定发放时间的
        if openTime:
            sendCount = 1
        for _ in xrange(sendCount):
            PlayerFamilyRedPacket.CreateSystemRedPacket(redPackID)
        GameWorld.DebugAnswer(curPlayer, "成功发送红包编号:%s 共:%s个" % (redPackID, sendCount))
        
    else:
        GameWorld.DebugAnswer(curPlayer, "红包命令参数错误!")
    return
def __ResetSendState(delTypeList):
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -449,6 +449,14 @@
    RandTodayServerSystemRedPacketSendTime()
    return
def GetRedPackGetWayType(getWay):
    ## 获取红包getWay所属红包分类
    getWayTypeDict = IpyGameDataPY.GetFuncEvalCfg("RedPacketClassify", 1, {})
    for getWayType, getWayList in getWayTypeDict.items():
        if getWay in getWayList:
            return getWayType
    return ShareDefine.RedPackWayType_Family
def CheckDelRedpacketData():
    ## 检查红包删除红包,5分钟一次: 1-删除过期红包,2-删除已全部抢完的红包
    
@@ -961,7 +969,8 @@
        PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 1)
        GameWorld.DebugLog("定时发放的红包,设置已发放! redPackID=%s" % redPackID)
        
    if getType == ShareDefine.RedPackType_Server:
    getWayType = GetRedPackGetWayType(getType)
    if getWayType == ShareDefine.RedPackWayType_Server:
        isAnonymous = 1
        
    job = 0
@@ -987,11 +996,7 @@
        family = GameWorld.GetFamilyManager().FindFamily(familyID)
        if not family:
            return
        #packetCnt = min(packetCnt, family.GetCount())
#    if getType != 0:
#        commonCntLimit = IpyGameDataPY.GetFuncCfg('FamilyRedPacketCnt')
#        packetCnt = max(packetCnt, commonCntLimit)
    if outputNum < packetCnt:
        GameWorld.DebugLog("    生成新仙盟红包 红包额度不能低该红包个数!outputNum=%s,redCnt=%s" % (outputNum, packetCnt))
        return
@@ -1063,21 +1068,14 @@
    
    #֪ͨ
    OnChangeRedPacketState(family, redPacketObj, None)
    if getType == ShareDefine.RedPackType_OpenServer:
        if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket):
            PlayerControl.WorldNotify(0, 'OpenRedBag2', [playerName, data, outputNum])
            PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket, 1)
        elif data in IpyGameDataPY.GetFuncEvalCfg('OSRSuccess'):
            PlayerControl.WorldNotify(0, 'OpenRedBag3', [playerName, data, outputNum])
    if not familyID:
        #大于200额度的红包
        getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
        if str(getType) in getTypeRainDict:
            PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)])
        elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain') \
            and getType not in [ShareDefine.RedPackType_Server]:
            PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
        elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
            PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
            
    return redPacketObj
@@ -1187,9 +1185,10 @@
        GameWorld.ErrLog("领取的红包类型不一致,无法领取! reqGetWay=%s,getWay=%s" % (reqGetWay, getWay))
        return
    
    if getWay in [ShareDefine.RedPackType_OpenServer, ShareDefine.RedPackType_Server]:
    getWayType = GetRedPackGetWayType(getWay)
    if getWayType == ShareDefine.RedPackWayType_Server:
        getNumformula = IpyGameDataPY.GetFuncCompileCfg('OpenRedRacketOutNum')
    elif getWay in ShareDefine.FeastRedPackType:
    elif getWayType == ShareDefine.RedPackWayType_Feast:
        getNumformula = IpyGameDataPY.GetFuncCompileCfg('FeastRedPacket', 2)
    else:
        getNumformula = IpyGameDataPY.GetFuncCompileCfg('FamilyRedRacketOutNum')
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1933,5 +1933,7 @@
RedPackType_FeastSucc = 33 # 节日成就红包
RedPackType_Server = 36 # 全服红包
# 节日红包类型
FeastRedPackType = [RedPackType_FeastSysBig, RedPackType_FeastSysSmall, RedPackType_FeastSucc]
# 红包类型分类定义
RedPackWayType_Family = "1" # 仙盟红包
RedPackWayType_Server = "2" # 全服红包
RedPackWayType_Feast = "3" # 节日红包
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetRedPacket.py
@@ -22,6 +22,16 @@
import IpyGameDataPY
import PlayerSuccess
import ChConfig
import ShareDefine
def __Help(curPlayer):
    GameWorld.DebugAnswer(curPlayer, "---------------------------")
    GameWorld.DebugAnswer(curPlayer, "清所有红包:SetRedPacket 0")
    GameWorld.DebugAnswer(curPlayer, "清指定红包:SetRedPacket 0 类型A 类型B ...")
    GameWorld.DebugAnswer(curPlayer, "发指定红包:SetRedPacket 1 红包编号 个数")
    GameWorld.DebugAnswer(curPlayer, "设置抢红包:SetRedPacket 2 红包功能  可抢数 已抢额度")
    GameWorld.DebugAnswer(curPlayer, "红包功能:1-开服红包;2-节日红包")
    return
## GM命令执行入口
#  @param curPlayer 当前玩家
@@ -30,39 +40,44 @@
#  @remarks 函数详细说明.
def OnExec(curPlayer, paramList):
    if not paramList:
        GameWorld.DebugAnswer(curPlayer, "---------------------------")
        GameWorld.DebugAnswer(curPlayer, "清所有红包:SetRedPacket 0")
        GameWorld.DebugAnswer(curPlayer, "清指定红包:SetRedPacket 0 类型A 类型B ...")
        GameWorld.DebugAnswer(curPlayer, "发全服红包:SetRedPacket 36 红包编号 个数")
        GameWorld.DebugAnswer(curPlayer, "类型:36-全服红包;33-节日成就")
        GameWorld.DebugAnswer(curPlayer, "全服红包编号:126~130")
        GameWorld.DebugAnswer(curPlayer, "设置红包:SetRedPacket 功能  可抢数 已抢额度")
        GameWorld.DebugAnswer(curPlayer, "红包功能:1-开服红包;2-节日红包")
        __Help(curPlayer)
        return
    
    sendGameServer = False
    isSendGameServer = False
    paramA = paramList[0]
    # 重置所有红包数据
    if paramA == 0:
        sendGameServer = True
        isSendGameServer = True
        __DOResetSuccRedPack(curPlayer)
        __DoResetRedPackFunc(curPlayer, 1, None, 0)
        __DoResetRedPackFunc(curPlayer, 2, None, 0)
        
    elif paramA in [1, 2]:
        if len(paramList) == 3:
            redPackFuncType, grabCount, grabMoney = paramList
            __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney)
    # 发指定红包
    elif paramA == 1 and len(paramList) > 1:
        redPacketID = paramList[1]
        ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "不存在该红包! %s" % redPacketID)
            return
    else:
        sendGameServer = True
        getType = ipyData.GetGetType()
        if not getType:
            return
        getWayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getType)
        if getWayType == ShareDefine.RedPackWayType_Family or getType == ShareDefine.RedPackType_FeastSucc:
            if not PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID):
                GameWorld.DebugAnswer(curPlayer, "###发送红包失败,详见地图日志! %s" % redPacketID)
            return
        isSendGameServer = True
        
    if sendGameServer:
        paramStr = ""
        for param in paramList:
            paramStr += " %s" % param
        curPlayer.GameServer_GMCmd("SetRedPacket%s" % paramStr) # 发送到GameServer清除红包
    return
    # 设置抢红包
    elif paramA == 2 and len(paramList) == 4:
        redPackFuncType, grabCount, grabMoney = paramList[1:]
        __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney)
        return
    else:
        return
    return isSendGameServer
def __DOResetSuccRedPack(curPlayer):
    ## 重置红包成就发放记录,不重置进度
@@ -91,11 +106,7 @@
def __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney):
    if redPackFuncType == 1:
        if not isinstance(grabCount, int):
            grabCount = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCount)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketGrabMoney, grabMoney)
        PlayerFamilyRedPacket.NotifyOSRedPacket(curPlayer)
        pass
    elif redPackFuncType == 2:
        if not isinstance(grabCount, int):
            grabCount = IpyGameDataPY.GetFuncCfg('FeastRedPacket', 1)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py
@@ -25,7 +25,6 @@
import ShareDefine
import CommFunc
import time
#---------------------------------------------------------------------
(
@@ -39,7 +38,6 @@
## 玩家登录
def OnPlayerLogin(curPlayer):
    __NotifyGoldLimt(curPlayer)
    NotifyOSRedPacket(curPlayer)
    return
## OnDay处理
@@ -48,18 +46,22 @@
def RedPacketOnDay(curPlayer, onEventType):
    if onEventType == ShareDefine.Def_OnEventType:
        #发钻石红包额度重置
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ServerRedPacketGrabCnt, 0)
        __NotifyGoldLimt(curPlayer)
        if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyRedPacketGoldLimit):
            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)
        pass
    return
def GetRedPackGetWayType(getWay):
    ## 获取红包getWay所属红包分类
    getWayTypeDict = IpyGameDataPY.GetFuncEvalCfg("RedPacketClassify", 1, {})
    for getWayType, getWayList in getWayTypeDict.items():
        if getWay in getWayList:
            return getWayType
    return ShareDefine.RedPackWayType_Family
def OnPlayerRecharge(curPlayer, orderCoin):
    ## 玩家充值
@@ -110,20 +112,14 @@
    getType = ipyData.GetGetType()
    if not getType:
        return
    if getType == ShareDefine.RedPackType_OpenServer:
        oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
        if openServerDay >= oscDay:
            GameWorld.DebugLog('    发开服红包,活动已过,不可发送!')
            return
        isFamilyRedPacket = False
    elif getType == ShareDefine.RedPackType_FeastSucc:
    isFamilyRedPacket = False
    getWayType = GetRedPackGetWayType(getType)
    if getWayType == ShareDefine.RedPackWayType_Feast:
        if not PlayerFeastRedPacket.GetFeastRedPacketState():
            GameWorld.DebugLog('    非节日红包活动中,不可发送!')
            return
        isFamilyRedPacket = False
    elif getType == ShareDefine.RedPackType_Server:
        isFamilyRedPacket = False
    elif getWayType == ShareDefine.RedPackWayType_Server:
        pass
    else:
        if not curPlayer.GetFamilyID():
            #没家族 先存起来,等进仙盟时再补发
@@ -131,8 +127,7 @@
            return
        isFamilyRedPacket = True
        
    __DoCreatRedPacket(curPlayer, getType, ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, wishInfo, data, isFamilyRedPacket)
    return
    return __DoCreatRedPacket(curPlayer, getType, ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, wishInfo, data, isFamilyRedPacket)
## 生成红包,注意外部不可直接调用该函数
def __DoCreatRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0, isFamilyRedPacket=True):
@@ -160,18 +155,12 @@
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, goldLimit + awardNum)
        #֪ͨ
        __NotifyGoldLimt(curPlayer)
#    else:
#        commonCntLimit = IpyGameDataPY.GetFuncCfg('FamilyRedPacketCnt')
#        if packetCnt < commonCntLimit:
#            GameWorld.DebugLog('    发普通仙盟红包,数量不能少于%s!' % commonCntLimit, playerID)
#            return
        
    #通知Gameserver生成红包
    msg = str([playerID, getType, packetCnt, moneyType, awardNum, wishInfo, state, data, isFamilyRedPacket])
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "MapServer_CreatRedPacket", msg, len(msg))
    GameWorld.DebugLog('    通知Gameserver生成红包 msg=%s' % msg)
    return
    return True
#// A6 08  发家族红包 #tagCMSendFamilyRedPacket
#
@@ -204,32 +193,14 @@
        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "SendFamilyRedPacket", msg, len(msg))
    return
## 通知抢红包钻石额度
def __NotifyGoldLimt(curPlayer):
    packData = ChPyNetSendPack.tagMCFamilyRedPacketGoldLimit()
    packData.Clear()
    packData.HasSendGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0)
    packData.ServerGrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ServerRedPacketGrabCnt)
    packData.ServerGrabCnt = 0
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
## 通知抢红包次数
def NotifyOSRedPacket(curPlayer):
    packData = ChPyNetSendPack.tagMCOpenServerRedPacketInfo()
    packData.Clear()
    packData.MoneyNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketGrabMoney, 0)
    packData.GrabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
    startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketStartTime, 0)
    if not startTime:
        createRoleTime = curPlayer.GetCreateRoleTime()
        startTime = GameWorld.ChangeTimeStrToNum(createRoleTime)
    packData.StartTime = startTime
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
#// AB 12 抢红包 #tagCMGrabFamilyRedPacket
#
@@ -243,12 +214,8 @@
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    redPacketID = clientData.RedPaketID
    reqGetWay = clientData.GetWay
    if reqGetWay == ShareDefine.RedPackType_OpenServer:
        canGrabCnt = GetOSCanGrabCnt(curPlayer)
    elif reqGetWay == ShareDefine.RedPackType_FeastSucc:
    if reqGetWay == ShareDefine.RedPackType_FeastSucc:
        canGrabCnt = PlayerFeastRedPacket.GetFeastSuccRedPacketCanGrabCnt(curPlayer)
    elif reqGetWay == ShareDefine.RedPackType_Server:
        canGrabCnt = GetServerRedPackCanGrabCnt(curPlayer)
    else:
        canGrabCnt = -1
    msg = str([redPacketID, reqGetWay, canGrabCnt])
@@ -256,104 +223,6 @@
    GameWorld.DebugLog('    抢红包 redPacketID=%s,getWay=%s,canGrabCnt=%s' % (redPacketID, reqGetWay, canGrabCnt))
    return
def GetOSCanGrabCnt(curPlayer):
    #获取开服红包可抢次数
#    oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
#    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
#    if openServerDay >= oscDay:
#        return 0
    #curGrabCnt =
    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
#    createRoleTime = curPlayer.GetCreateRoleTime()
#    createRoleTimeNum = GameWorld.ChangeTimeStrToNum(createRoleTime)
#    curTime = int(time.time())
#    rangeTime = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 3)
#    initCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 2)
#    return (curTime - createRoleTimeNum)/rangeTime + initCnt - curGrabCnt
def GrabOSRedPacketResult(curPlayer, moneyNum, isSelf):
    ##抢开服红包结果
    grabNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketGrabMoney, 0)
    newGrabNum = grabNum+moneyNum
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketGrabMoney, newGrabNum)
    #广播
    needSysOSRAllMoneyList = IpyGameDataPY.GetFuncEvalCfg('OSRAllMoneySys')
    lastIndex = -1
    newIndex = -1
    for i, num in enumerate(needSysOSRAllMoneyList):
        if grabNum >= num:
            lastIndex = i
        if newGrabNum >= num:
            newIndex = i
    if newIndex != -1 and newIndex > lastIndex:
        PlayerControl.WorldNotify(0, 'OpenRedBag1', [curPlayer.GetName(), newGrabNum])
    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()))
    #֪ͨ
    NotifyOSRedPacket(curPlayer)
    return
def GetServerRedPackCanGrabCnt(curPlayer):
    #获取全服红包可抢次数
    # @return: -1为不限
    vipLVMaxGrabCntDict = IpyGameDataPY.GetFuncEvalCfg("RechargeRedPacket", 3, {})
    vipLVList = [int(vipStr) for vipStr in vipLVMaxGrabCntDict.keys()]
    vipLVList.sort()
    for vipLV in vipLVList:
        if curPlayer.GetVIPLv() <= vipLV:
            maxGrabCnt = vipLVMaxGrabCntDict[str(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
    #开服红包恢复次数
    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_OSRedPacket, tick):
        return
    oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg')
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
    if openServerDay >= oscDay:
        return
    grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0)
    limitCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4)
    if grabCnt >= limitCnt:
        return
    startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketStartTime, 0)
    if not startTime:
        newCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 2)
        createRoleTime = curPlayer.GetCreateRoleTime()
        curTime = GameWorld.ChangeTimeStrToNum(createRoleTime)
    else:
        curTime = int(time.time())
        passTime = curTime - startTime
        rangeTime = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 3)
        addCnt = passTime / rangeTime
        if addCnt <= 0:#防止测试调时间导致异常
            return
        newCnt = min(limitCnt, grabCnt+addCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, newCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, curTime)
    NotifyOSRedPacket(curPlayer)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1267,8 +1267,6 @@
    AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick)
    #成就
    PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False)
    #开服红包处理
    #PlayerFamilyRedPacket.ProcessOSRedPacket(curPlayer, tick)
    #限时抢购
    PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick)
    #地图经验
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GrabFamilyRedPacketResult.py
@@ -50,11 +50,10 @@
    #GameWorld.DebugLog("GY_Query_GrabFamilyRedPacketResult moneyType=%s, moneyNum=%s, getWay=%s, isSelf=%s" % (moneyType, moneyNum, getWay, isSelf))
    if moneyNum:
        PlayerControl.GiveMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_GiveMoney_RedPacket)
        if getWay == ShareDefine.RedPackType_OpenServer:
            PlayerFamilyRedPacket.GrabOSRedPacketResult(curPlayer, moneyNum, isSelf)
        elif getWay in ShareDefine.FeastRedPackType:
        getWayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getWay)
        if getWayType == ShareDefine.RedPackWayType_Feast:
            PlayerFeastRedPacket.GrabFeastRedPacketResult(curPlayer, moneyNum, getWay, isSelf)
        elif getWay == ShareDefine.RedPackType_Server:
        elif getWayType == ShareDefine.RedPackWayType_Server:
            PlayerFamilyRedPacket.GrabServerRedPacketResult(curPlayer, moneyNum, isSelf)
            
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1933,5 +1933,7 @@
RedPackType_FeastSucc = 33 # 节日成就红包
RedPackType_Server = 36 # 全服红包
# 节日红包类型
FeastRedPackType = [RedPackType_FeastSysBig, RedPackType_FeastSysSmall, RedPackType_FeastSucc]
# 红包类型分类定义
RedPackWayType_Family = "1" # 仙盟红包
RedPackWayType_Server = "2" # 全服红包
RedPackWayType_Feast = "3" # 节日红包