hxp
2025-06-12 edc3910a9d090e5df4deb2dbc37709a740375938
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.SetRedPacket
#
# @todo:ÉèÖúì°ü
# @author hxp
# @date 2019-01-29
# @version 1.0
#
# ÏêϸÃèÊö: ÉèÖúì°ü
#
#-------------------------------------------------------------------------------
#"""Version = 2019-01-29 16:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import PlayerControl
import PlayerFamilyRedPacket
import PlayerFeastRedPacket
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 µ±Ç°Íæ¼Ò
#  @param paramList ²ÎÊýÁбí
#  @return None or True
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def OnExec(curPlayer, paramList):
    if not paramList:
        __Help(curPlayer)
        return
    
    isSendGameServer = False
    paramA = paramList[0]
    # ÖØÖÃËùÓкì°üÊý¾Ý
    if paramA == 0:
        isSendGameServer = True
        __DOResetSuccRedPack(curPlayer)
        __DoResetRedPackFunc(curPlayer, 1, None, 0)
        __DoResetRedPackFunc(curPlayer, 2, None, 0)
        
    # ·¢Ö¸¶¨ºì°ü
    elif paramA == 1 and len(paramList) > 1:
        redPacketID = paramList[1]
        ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸúì°ü£¡ %s" % redPacketID)
            return
        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
        
    # ÉèÖÃÇÀºì°ü
    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):
    ## ÖØÖúì°ü³É¾Í·¢·Å¼Ç¼£¬²»ÖØÖýø¶È
    resetList = []
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in xrange(ipyDataMgr.GetSuccessCount()):
        succData = ipyDataMgr.GetSuccessByIndex(index)
        succID = succData.ID
        succType = succData.Type
        condition = succData.Condition
        if not succData.RedPacketID:
            continue
        if not PlayerSuccess.GetSuccFinishValue(curPlayer, succType, condition):
            continue
        #SetSuccFinishValue(curPlayer, succType, condition, 0)
        if PlayerSuccess.GetSuccHasGot(curPlayer, succID):
            PlayerSuccess.SetSuccFinish(curPlayer, succID, True)
            PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)
            resetList.append(succID)
            
    if resetList:
        PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, resetList, True)
        PlayerSuccess.Sync_SuccessInfo(curPlayer, resetList, True)
        
    return
 
def __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney):
    if redPackFuncType == 1:
        pass
    elif redPackFuncType == 2:
        if not isinstance(grabCount, int):
            grabCount = IpyGameDataPY.GetFuncCfg('FeastRedPacket', 1)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketCanGrabCnt, grabCount)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastRedPacketGrabMoney, grabMoney)
        PlayerFeastRedPacket.Sync_FeastRedPackInfo(curPlayer)
    return