hxp
2019-01-29 5300950136a7d0556945fbd0cb953b331ee79f2c
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
#!/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 ChConfig
import PlayerFamilyRedPacket
import IpyGameDataPY
import PlayerSuccess
 
## GMÃüÁîÖ´ÐÐÈë¿Ú
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param paramList ²ÎÊýÁбí
#  @return None or True
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def OnExec(curPlayer, paramList):
    if not paramList:
        GameWorld.DebugAnswer(curPlayer, "ÖØÖúì°ü:SetRedPacket 0")
        GameWorld.DebugAnswer(curPlayer, "SetRedPacket ºì°ü¹¦ÄÜ  ¿ÉÇÀ¸öÊý ÒÑÇÀ¶î¶È")
        GameWorld.DebugAnswer(curPlayer, "ºì°ü¹¦ÄÜ: 1-¿ª·þºì°ü£»2-½ÚÈÕºì°ü")
        return
    
    # ÖØÖÃËùÓкì°üÊý¾Ý
    if len(paramList) == 1 and paramList[0] == 0:
        __DOResetSuccRedPack(curPlayer)
        __DoResetRedPackFunc(curPlayer, 1, None, 0)
        __DoResetRedPackFunc(curPlayer, 2, None, 0)
        curPlayer.GameServer_GMCmd("SetRedPacket 0") # ·¢Ë͵½GameServerÇå³ýºì°ü
        return
    
    if len(paramList) == 3:
        redPackFuncType, grabCount, grabMoney = paramList
        __DoResetRedPackFunc(curPlayer, redPackFuncType, grabCount, grabMoney)
        return
    
    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_OSRedPacketCanGrabCnt, grabCount)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketGrabMoney, grabMoney)
    return