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
#!/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
 
## GMÃüÁîÖ´ÐÐÈë¿Ú
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param paramList ²ÎÊýÁбí
#  @return None or True
#  @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-½ÚÈÕºì°ü")
        return
    
    sendGameServer = False
    paramA = paramList[0]
    # ÖØÖÃËùÓкì°üÊý¾Ý
    if paramA == 0:
        sendGameServer = 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)
            return
    else:
        sendGameServer = True
        
    if sendGameServer:
        paramStr = ""
        for param in paramList:
            paramStr += " %s" % param
        curPlayer.GameServer_GMCmd("SetRedPacket%s" % paramStr) # ·¢Ë͵½GameServerÇå³ýºì°ü
    return
 
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:
        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)
    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