hxp
2019-06-22 d0f5f9922f17f5bff4288173f18a9ed827d95db8
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
@@ -18,6 +18,8 @@
import PlayerFamilyRedPacket
import ShareDefine
import GameWorld
import IpyGameDataPY
import PlayerDBGSEvent
## GM命令执行入口
@@ -29,21 +31,61 @@
    if not paramList:
        return
    
#    GameWorld.DebugAnswer(curPlayer, "重置所有红包领取:SetRedPacket 0")
#    GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0 0")
#    GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
    paramA = paramList[0]
    paramB = paramList[1] if len(paramList) > 1 else None
    # 重置所有红包数据
    if len(paramList) == 1 and paramList[0] == 0:
        GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录")
    if paramA == 0:
        PlayerFamilyRedPacket.g_allRecordDict = {}
        PlayerFamilyRedPacket.g_grabDataDict = {}
        PlayerFamilyRedPacket.g_redPackCountDict = {}
        
        recordType = ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord
        universalRecMgr = GameWorld.GetUniversalRecMgr()
        universalRecMgr.Delete(recordType)
        # 清除所有类型红包
        if paramB == 0:
            universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
            __ResetSendState([])
            GameWorld.DebugAnswer(curPlayer, "清除所有类型红包OK!")
        # 清除指定类型红包
        elif paramB:
            delTypeList = paramList[1:]
            allRecordList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
            delCount = 0
            for index in xrange(allRecordList.Count()):
                universalRecData = allRecordList.At(index - delCount)
                strValue1 = universalRecData.GetStrValue1()
                strValue1List = strValue1.split('|')
                getWay = int(strValue1List[3])
                if getWay not in delTypeList:
                    continue
                allRecordList.Delete(index)
                delCount += 1
            __ResetSendState(delTypeList)
            GameWorld.DebugAnswer(curPlayer, "清除指定类型红包OK!%s,条数:%s" % (delTypeList, delCount))
        # 清除抢的记录
        universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord)
        PlayerFamilyRedPacket.NotifyRedPacketInfo(curPlayer)
        GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录OK!")
        return
    
    
    return
def __ResetSendState(delTypeList):
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in xrange(ipyDataMgr.GetFamilyRedPackCount()):
        ipyData = ipyDataMgr.GetFamilyRedPackByIndex(index)
        if delTypeList and ipyData.GetGetType() not in delTypeList:
            continue
        redPackID = ipyData.GetID()
        if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID):
            PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerFamilyRedPacket.DBKey_RedPacketSend % redPackID, 0)
    return