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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    ìfc@s2ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZedƒ\ZZZZdZdZd„Zd„Zdd)d„ƒYZd    d*d
„ƒYZd d+d „ƒYZd d„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#dd„Z%dd„Z&d„Z'd„Z(d„Z)d„Z*dd„Z+d„Z,d„Z-d „Z.d!„Z/d"„Z0ed dd#d#d$„Z1d%„Z2d&„Z3d'„Z4de5d(„Z6dS(,iÿÿÿÿNisRedPacketSend_%stRedPacketSystemDayCountcCsÑ|j|jƒ|j|jƒ|j|jƒ|j|j|jdƒ|j    |j
ƒ|j |j ƒd|j |j|j|jf}|j|ƒ|jd|jt|jƒfƒ|j|jƒdS(s ºì°üÔݶ¨ÓÐЧÆÚ24Сʱ£¬¹ýÌìÇå³ý¹ýÆÚµÄºì°ü£¬Èç¹ûÊÇÍæ¼Ò·¢·ÅµÄ·µ»¹Î´ÁìÈ¡µÄ»õ±Ò
            ÉÏÏßͬ²½ËùÓкì°üÐÅÏ¢£¬ºì°ü±ä»¯ÊµÊ±¹ã²¥È«·þÔÚÏßÍæ¼Ò
    i
s %s|%s|%s|%ss%s|%sN(tSetTimet
createTimet    SetValue1t redPacketIDt    SetValue2tfamilyIDt    SetValue3t    moneyTypet
moneyValuet    SetValue4tstatet    SetValue5tcalcTimetplayerIDt
playerNamet    playerJobtgetWayt SetStrValue1t SetStrValue2t    packetCnttintt isAnonymoust SetStrValue3twish(trecDatat redPacketObjt    strValue1((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt__SaveRedpacketRecData/s" #cCs|j|jƒ|j|jƒ|j|jƒ|j|jƒ|j|j    ƒ|j
|j ƒ|j d|j |jfƒdS(Ns%s|%s(RRRRRRR
RR tgetMoneyRRRtfacetfacePic(RtgrabObj((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt__SaveRedpacketRecGrabDataJs
t RedPacketGrabcBseZd„ZRS(cCsL||_||_d|_d|_d|_d|_d|_d|_dS(Nit(RRRRRRRR(tselfRR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt__init__`s                                (t__name__t
__module__R%(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR"]st RedPacketDatacBseZd„ZRS(cCs‹||_d|_d|_d|_d|_d|_d|_d|_d|_d|_    d|_
d|_ d|_ d|_ i|_dS(NiR#(RRRR    R RR RRRRRRRtgrabDict(R$R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR%ns                                                             (R&R'R%(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR(kst RedPacketMgrcBsheZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z RS( sl ºì°ü»º´æ¹ÜÀíµÈ
    Í¨ÖªÍæ¼Òºì°üÂß¼­:
    ÓÉÓÚ¸Õ¿ª·þʱºì°ü´ó¸ÅÂÊ»á±È½Ï¶à£¬ºì°üµÄ½»»¥¼°½»²æÍ¨ÖªÒ²Ïà¶Ô±È½ÏÃܼ¯£¬ËùÒÔ×öЩÓÅ»¯£¬²»¶ÔËùÓкì°ü´¦Àí
    ½«ºì°ü·ÖΪºì°ü×ܿ⼰֪ͨ¸øÍæ¼ÒµÄ²¿·Öºì°ü£¬¼ÙÉ赱ǰËùÓкì°ü×ÜÊýΪ500¸ö£¬±ê¼ÇΪ T ¸ö
    ¿ÉÅäÖÃÏÞÖÆÍ¨Öª¸øÍæ¼Ò¿É²Ù×÷µÄºì°ü¸öÊýÈçֻ֪ͨ20¸ö£¬±ê¼ÇΪ M ¸ö£¬¿ÉÊÓΪÈȺì°ü£¬µ± M Ïû»¯Íêºó¿É¸½¼Ó֪ͨ  N ¸ö
    
    Í¨ÖªÍæ¼ÒµÄºì°ü×é³É£º 
    ·ÇÏÉÃ˺ì°ü£º ¹éÊôÍæ¼ÒµÄ먦·Åºì°üA + ²»ÏÞÖÆÍ¨Öª¸öÊýµÄºì°üB + ÏÞÖÆÍ¨Öª¸öÊýµÄºì°üC£»  ²»°üº¬ÆäËûÍæ¼Ò먦·ÅµÄ
        ÏÉÃ˺ì°ü£º ËùÓÐÍæ¼ÒδÁìÈ¡¹ýµÄÇÒδȫ²¿ÁìÍêµÄºì°ü£¬°üº¬ÆäËûÍæ¼Ò먦·ÅµÄ
        
    Èç¹û (A + B) >= M ÁË£¬Ôò²»ÐèÒªÔÙ¸½¼Ó֪ͨ C 
    cCs:i|_i|_i|_i|_i|_g|_dS(N(tallRedPacketDicttfamilyRedPacketDicttplayerNosendRedPacketIDInfotplayerCanGetRedPacketIDInfotactiveRedPacketIDInfotnotifyAllServerRedPacketIDList(R$((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR%Žs                        cCsKd}||jkr%|j|}n"|rGt|ƒ}||j|<n|S(N(tNoneR+R((R$Rt    createNewR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytGetRedPacketObj£s cCsL||jkrg|j|<n|j|}||krH|j|ƒndS(N(R,tappend(R$RRtfamilyRedpacketIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytAddFamilyRedPacketID­s   cCsA||jkrdS|j|}||kr0dS|j|ƒtS(N(R,tremovetTrue(R$RRR5((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDelFamilyRedPacketID¶s   cCso||jkri|j|<n|j|}||krEg||<n||}||krk|j|ƒndS(N(R-R4(R$RRRtplayerNosendRedPacketTypeIDInfotplayerNosendRedPacketTypeIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytAddPlayerNosendRedPacketIDÀs   
 cCs[||jkrdS|j|}||kr0dS||}||krJdS|j|ƒtS(N(R-R7R8(R$RRRR:R;((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDelPlayerNosendRedPacketIDÌs  
  cCsL||jkrg|j|<n|j|}||krH|j|ƒndS(N(R/R4(R$RRtredPacketIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytAddActiveRedPacketIDÙs   cCsA||jkrdS|j|}||kr0dS|j|ƒtS(N(R/R7R8(R$RRR>((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDelActiveRedPacketIDâs   cCsz|s
dS||jkr)i|j|<n|j|}||krOg||<n||}||krv|j|ƒ|SdS(N(R.R4(R$RRRtredPacketTypeIDInfoR>((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytAddPlayerCanGetRedPacketIDìs   
  cCs[||jkrdS|j|}||kr0dS||}||krJdS|j|ƒ|S(N(R.R7(R$RRRRAR>((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDelPlayerCanGetRedPacketIDûs  
  ( R&R't__doc__R%R3R6R9R<R=R?R@RBRC(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR*s         
            
                      
    R#cCs¤tƒ}|r#tjd|ƒntjdt|jƒ|jjƒfƒx=|jjƒD],\}}tjd|t|ƒ|fƒq\Wtjd|jƒx=|j    jƒD],\}}tjd|t|ƒ|fƒq°Wx]|j
jƒD]L\}}x=|jƒD]/\}}tjd||t|ƒ|fƒq    WqðWx]|j jƒD]L\}}x=|jƒD]/\}}tjd||t|ƒ|fƒqiWqPWdS(Ns    === %s ===s    ËùÓкì°ü:count=%s,=%ss$    ÏÉÃ˺ì°ü:familyID=%s,count=%s,%ss    È«·þÈ«²¿Ï·¢ºì°ü=%ss*    È«·þ¹«¹²»îÔ¾ºì°ü:getWay=%s,count=%s,%ss8    È«·þ¸öÈË먦·Åºì°ü:playerID=%s,getWay=%s,count=%s,%ss8    È«·þ¸öÈË¿ÉÁìÈ¡ºì°ü:playerID=%s,getWay=%s,count=%s,%s( tGetRedpacketMgrt    GameWorldtDebugLogtlenR+tkeysR,titemsR0R/R-R.(tsignt redPacketMgrRt    redIDListRRt    redIDInfo((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytPrintRedPacketData    s     )$$++cCs.tj}|dkr*tƒ}|t_n|S(N(t
PyGameDatatg_redPacketMgrR1R*(RL((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyREs
          cCsÚtƒ}tjƒ}tjddƒ}|jtjƒ}tjd|j    ƒƒx/t
|j    ƒƒD]}|j |ƒ}|j ƒ}|t kr–qcn|jƒ}|jƒ}|j|tƒ}    ||    _|jƒ|    _|jƒd|    _|jƒd|    _|j ƒ|    _|jƒ|    _|jƒjdƒ}
|
\} } } }tj| ƒ|    _| |    _tj| ƒ|    _ tj|ƒ|    _!|j"ƒjdƒ}tj|dƒ|    _#t$|ƒdkrÒtj|dƒnd|    _%|j&ƒ|    _'|    j} |    j!}|r|j(||ƒqcn|t)kr=|j*| ||ƒqcn||kr_|j+j,|ƒqcn|t-krc|j.||ƒqcqcW|jtj/ƒ}tjd|j    ƒƒx(t
|j    ƒƒD]}|j |ƒ}|jƒ}|jƒ} |j|t0ƒ}    |    s    q¾n|j"ƒjdƒ}t1|| ƒ}|jƒ|_ |jƒ|_|j ƒ|_|jƒ|_2t$|ƒdkrŽtj|dƒnd|_3t$|ƒdkr¼tj|dƒnd|_4||    j5| <q¾WdS(Nt RedPacketSysis¼ÓÔØºì°üÐÅϢͨÓüǼ: count=%si
s|is$¼ÓÔØºì°üÇÀ¼Ç¼ÐÅϢͨÓüǼ: count=%s(6RERFtGetUniversalRecMgrt IpyGameDataPYtGetFuncEvalCfgt GetTypeListt ShareDefinet1Def_UniversalGameRecType_FamilyRedPacketAllRecordtLogtCounttxrangetAtt    GetValue4tState_HasAllGott    GetValue1t    GetValue2R3R8RtGetTimeRt    GetValue3RR    R t    GetValue5R t GetStrValue1tsplittToIntDefRRRRt GetStrValue2RRHRt GetStrValue3RR6t State_NoSendR<R0R4t State_NoGotR?t2Def_UniversalGameRecType_FamilyRedPacketGrabRecordtFalseR"RRRR)(RLtuniversalRecMgrtnotifyLimitTypeListt
recordListtindexRR RRRt strValue1ListRRtjobRt strValue2ListtgrabRecordListR ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt OnServerStart"sz                 .             ..c
Cstƒ}tjƒ}|jtjƒ|jtjƒ}|jtjƒ|jtjƒ}d}d}xŒ|jj    ƒD]{}|j
t krqun|j ƒ}t ||ƒ|d7}x:|jj    ƒD])}|j ƒ}    t|    |ƒ|d7}qÃWquWtjd|ƒtjd|ƒdS(Niis±£´æºì°üÐÅϢͨÓüǼ: count=%ss$±£´æºì°üÇÀ¼Ç¼ÐÅϢͨÓüǼ: count=%s(RERFRStDeleteRWRXRVRkR+tvaluesR R^tAddRecRR)R!RY(
RLtrecMgrt recDataListtgrabRecDataListtredPacketCountt grabRecCountRRR t grabRecData((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt OnServerClose{s*       
  c Csttj|ƒs`tƒ}|jƒ}i|j|<tjddƒ}tjddƒ}x|D]ý}g|j||<|jj    |gƒ}|s”q\n|j
j    |iƒj    |gƒ}|t |ƒ}|dkr×q\ng}    xh|D]`}
|j |
t ƒ} | sqän|| jkrqän|    j|
ƒ|d8}|dkräPqäqäW|    |j||<q\Wnt|dtƒdS(NRRiiitisLogin(t PlayerControltGetIsTJGREt GetPlayerIDR.RTRUt
GetFuncCfgR/tgetR-RHR3RlR)R4tNotifyRedPacketInfoR8( t    curPlayerRLRRntmaxNotifyCountRtnowActiveRedPacketIDListt nosendIDListtaddCounttplayerCanGetIDListRR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt OnPlayerLogin™s:       !   
 cCs,|jƒ}tƒ}|jj|dƒdS(N(RƒRER.tpopR1(R‡RRL((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt OnLeaveServerÁs     cCstjtdƒtƒdS(Ni(tPlayerDBGSEventtSetDBGSTrig_ByKeytDBKey_RedPacketSystemDayCountt&RandTodayServerSystemRedPacketSendTime(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDoOnDayÈscCsItjddiƒ}x*|jƒD]\}}||kr"|Sq"WtjS(NtRedPacketClassifyi(RTRURJRWtRedPackWayType_Family(RtgetWayTypeDictt
getWayTypet
getWayList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytGetRedPackGetWayTypeÍs
 cCs    ttjƒƒ}tjddƒd}i}g}i}i}tƒ}x]|jjƒD]L}|j}|tkrwn||j    |krqYn|j
}    |j }
|j } |j } |    |jkrÖ|jj|    ƒn|tkrp|
rp| tjkrptg|jjƒD]} | j^q
ƒ}|j}|j}||}|dkrp|rp|j|
dƒ|||
<qpn| r¼|j| |    ƒ| |krŸg|| <n|| }|j|    ƒqYn|tkr|j|
| |    ƒ|
|krôg||
<n||
}|j|    ƒqYn|j| |    ƒ|    |jkrC|jj|    ƒnxR|jjƒD]A}| |krkqSn|| }|    |kr‡qSn|j|    ƒqSW|j|    ƒqYW|rëx9|jƒD](\}
}t j!d|
ggg|ƒq¼Wnt"j#ƒ}xÜ|jƒD]Î\} }t"j$ƒj%| ƒ}|s/dSt&j'ƒ}||_(t)|ƒ|_*x|t+|j,ƒƒD]h}|j-|ƒ}|j.|j/ƒƒ}|dksf|j1ƒ sft2j3|ƒr¾qfnt4j5||ƒqfWqWx‹|jƒD]}\}
}|j.|
ƒ}|dksã|j1ƒ sãt2j3|ƒr,qãnt&j'ƒ}||_(t)|ƒ|_*t4j5||ƒqãW|rt&j'ƒ}|j6ƒ||_(t)|ƒ|_*xjt+|j7ƒƒD]S}|j8|ƒ}|dks«|j1ƒ s«t2j3|ƒrîq«nt4j5||ƒq«WndS(NRRiiiit RedPackBack(9RttimeRTR„RER+RwR R^R RRRRRŽRWtRedPackType_GoldPackettsumR)RRR    R…R9R4RiR=R@R0R7R.RJtPlayerCompensationt SendMailByKeyRFtGetPlayerManagertGetFamilyManagert
FindFamilytChPyNetSendPackttagGCRedPacketDeltDelRedPacketIDRHtCntR[tGetCounttGetAttFindPlayerByIDRƒR1t    GetInitOKRR‚t NetPackCommont SendFakePacktCleartGetActivePlayerCounttGetActivePlayerAt(t
curTimeNumt    rangeTimet backMoneyDicttdelRedPacketIDListtdelFamilyRedPacketInfotdelNosendRedPacketInfoRLRR RRRRR toutNumRt
totalMoneyt remainMoneytdefFamilyRedPacketIDListtplayerNosendRedPacketIDListt
typeIDDicttredpacketIDListtmoneyNumt playerManagert    delIDListtfamilytsendPacktit notifyMemberR‡RŠ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytCheckDelRedpacketDataÕs®                         !+        
   
 
 
 #      ((      
    (cCs°|j}||krdStƒ}|j}|j}|j}|j}tjd|||||fƒi|g|6}    |rÉ|tt    gkr§|j
|j ƒ|ƒq)|t kr)|j ||ƒq)n`|tkr|sßdS|dkr)|j|||ƒq)n%|tjddƒkrxd}    |t krS||jkru|jj|ƒquq)||jkr)|jj|ƒq)n±|t    kr£|t    kr)|j|||ƒ|j|||ƒ|j||ƒtjddƒ}
xÅ|jjƒD]±\} } | |krqèn| j|gƒ} || kr*qèn|jj| iƒ}|j|gƒ}t|ƒt| ƒ}||
kryqèn|j| ||ƒ|g|    | <qèWq)n†|t kr%|t kr)|j||ƒ|jj|gƒ}x?|jj ƒD]+} t!| ||ƒ}|rð||    | <qðqðWq)ndS|g}tj"ƒ}|rÃxet#|j$ƒƒD]e}|j%|ƒ}|j&|j'ƒƒ}|dksW|j(ƒ sWt)j*|ƒr¯qWnt+||ƒqWWné|    dkr9xÚt#|j,ƒƒD]P}|j-|ƒ}|dksâ|j(ƒ sât)j*|ƒr%qânt+||ƒqâWnsxp|    jƒD]b\} }| s^qFn|j&| ƒ}|dksF|j(ƒ sFt)j*|ƒr›qFnt+||ƒqFWdS(NsOºì°ü״̬±ä¸ü´¦Àí: redPacketID=%s,ownerID=%s,familyID=%s,beforeState=%s,state=%sRRii(.R RERRRRRFRGRiRjR6tGetIDR^R9R1R<RTRUR0R7R4R=RBR?R„R.RJR…R-RHR@R/RItDoPlayerReductCanGetRedPacketR¡R[R¨R©RªRƒR«RR‚R†R¯R°(RÁRt beforeStateR RLRRtownerIDRtnotifyPlayerDictRˆRt typeRedIDDictRMtnosendTypeRedIDDicttnosendRedIDListt
totalCountR‰tnotifyRedIDListtsyncRedPacketListR¿RÃRÄtplayer((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytOnChangeRedPacketStateUsž                                             ( ((c Cs1|j}|j}tƒ}|dkr?|jj|gƒ}n|j|||ƒ}|dkrddS|spdn|d}||kr•|j|ƒnd}xŒt|dt    |ƒƒD]q}    ||    }
|j
|
t ƒ} | sãqµn|| j krøqµn|
|krµ|j |||
ƒr&||
gSqµqµW|gS(Niiÿÿÿÿi(RRRER1R/R…RCRpR[RHR3RlR)RB( RRR‰RRRLt canGetIDListt lastCanGetIDt
checkIndexRÃtnewCanGetRedIDtnewRedPacketObj((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyRÇÈs*              ! 
 cCs‚|}tƒ}||jkr"dS|jj|ƒ}x0|D](}||jkr;|jj|ƒq;q;Wtjd||fƒdS(Ns%½âÉ¢ÏÉÃËɾ³ýÏÉÃ˺ì°ü! familyID=%s, %s(RER,RŽR+RFRG(t delfamilyIDRRLR5R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDelRedPackByFamilyIDæs     cCsº|s
dS|jƒ}tjd||fƒ|dksK|t|ƒkrftjd||fƒdSxM||D]A}tjd|ƒtjt|ƒrqtjt|dƒqqqqWdS(Ns6ÖØÖýÚÈÕºì°ü·¢·Å״̬: dayRedPackIDList=%s, dayIndex=%sisDµ±Ç°½ÚÈÕÌìË÷ÒýûÓÐÅäÅäÖÃϵͳºì°üID! dayRedPackIDList=%s, dayIndex=%ss&    ÖØÖýÚÈÕºì°ü·¢·Å״̬: redPackID=%s(    tGetRedPacketIDListRFRYRHtErrLogRtGetDBGSTrig_ByKeytDBKey_RedPacketSendR‘(tipyDatatdayIndextdayRedPackIDListt    redPackID((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytOnResetFeastRedPacketøs c Cs¹d}tjtjƒd}tj|ƒ}|rI|d|krI|dSg}tjƒ}tjd|ƒtjƒ}xt    |j
ƒƒD]ð}|j |ƒ}|j ƒ}|j ƒ}    |    sÄq‹ntjjd|    tjƒ}
|
j|jks‹|
j|jks‹|
j|jkrq‹nd} |jƒ} | rN|
tjd| ƒ
} n|j||
| gƒtjd||    fƒq‹Wtj|||gƒ}tjdƒtjd    ƒ|dS(
NtTodayRedPacketByTimeiis9===== ¼ÓÔØ½ñÌìϵͳ¶¨Ê±·¢·Åºì°üÐÅÏ¢ ===== openServerDay=%ss%s:00tminutess2    Ôö¼Ó±¾ÈÕ¶¨Ê±·¢·Åϵͳºì°üÐÅÏ¢: redPackID=%s, %ss±¾ÈÕϵͳ¶¨Ê±·¢·ÅµÄºì°ü¼ÓÔØÍê±Ï!s==============================================================(RRÜt Def_ServerDayRTt GetConfigExRFt GetServerTimeRYtIPY_DataR[tGetFamilyRedPackCounttGetFamilyRedPackByIndexRÆtGetPacketOpenTimetdatetimetstrptimetChConfigtTYPE_Time_FormattyeartmonthtdayR1tGetValidMinutest    timedeltaR4t SetConfigEx( tkeyt openServerDaytTodayRedPacketByTimeInfotredPacketByTimeListt
serverTimet
ipyDataMgrRpRÞRát openTimeStrt openDateTimet endDateTimet validMinutes((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt__GetTodayRedPacketByTimeList s8    6   cCs‘tƒtƒ}|sdStjƒ}xd|D]\}|\}}}||ks-|rf||krfq-ntjt|ƒrq-nt|ƒq-WdS(N(tCheckSendServerSystemRedPacketRRFRçRRÜRÝtCreateSystemRedPacket(ttodayRedPacketByTimeListRútredPacketOpenInfoRáRýRþ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytOnRedPacketMinuteProcess4s      c    CsH|s
dStj|ƒ\}}tjƒ}||_||_|jƒ|_|jƒ|_    g|_
xK|j ƒD]=}tj ƒ}||_ t|j ƒ|_|j
j|ƒqqWt|j
ƒ|_|s4tjƒ}xkt|jƒƒD]D}|j|ƒ}|dksé|jƒ rqéntj||ƒqéWntj||ƒdS(N(RFtGetOperationActionDateStrR¤ttagGCFeastRedPacketInfot    StartDatetEndtDatet
GetLVLimittLimitLVt GetResetTypet    ResetTypetRedPacketDayListRÚttagGCFeastRedPacketDaytRedPacketIDListRHtRedPacketCountR4t RedPacketDaysR¡R[R¯R°R1R«R¬R­(    RÞR‡t startDateStrt
endDateStrt    feastPackR>tdayInfoR¿RÃ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytSync_FeastRedPacketMs0                   cCsg}tjtƒ}tjddƒ}|s1dStd||ƒ}tjd|||fƒ|dkr÷tjddƒ\}}tj    ƒ}|j
|j |j }}}    t j |||    |ƒ}
|dkr÷t j |||    ƒt jddƒ} nt j |||    |ƒ} | |
j} | |} tjd|
ƒtjd| ƒtjd    | | fƒ|
}xt|ƒD]~}tjd
| d
ƒ}|t jd |ƒ}||krÀ|j|ƒntjd |||fƒ|t jd | ƒ7}qrWntjd |ƒtjd|ƒ|S(NtServerSysRedPacketiisYËæ»úÉú³É·¢·ÅÈ«·þϵͳºì°üʱ¼ä! maxCount=%s,sysRedPackketSendCountToday=%s,needSendCount=%sitdayss    startDateTime=%ss    endDateTime=%ss!    totalSeconds=%s,aveSeconds=%si<tsecondss2    Ëæ»úÆðʼʱ¼ä=%s,randSeconds=%s,Ëæ»ú·¢·Åʱ¼ä=%ss    sendTimeList=%stServerSystemRedPacketSendTime(RRÜR’RTR„tmaxRFRYRURçRðRñRòRìRôRR[trandomtrandintR4Rõ(t sendTimeListtsysRedPackketSendCountTodaytmaxCountt needSendCountt    startHourtendHourRúRðRñRòt startDateTimeRþt totalSecondst
aveSecondstnextStartDateTimet_t randSecondstrandSendDateTime((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR“ps@       ( 
 cCsLtjdƒ}|dkr'tƒ}n|s1dStjƒ}|d}|j|jkr,|j|jkr,|jdƒtj    ddƒ}tj
|ƒ}|s£dSt |ƒt j tƒd}t jt|ƒtjd||fƒtjddƒ}||krHtjdgƒtjd|ƒqHn||krH|jdƒndS(NRiRiis>·¢·ÅÈ«·þϵͳºì°ü: redPackID=%s, sysRedPackketSendCountToday=%ss0    ½ñÈÕÈ«·þϵͳºì°üÒѾ­È«²¿·¢ÍêÁË£¡ maxCount=%s(RTRæR1R“RFRçthourtminuteRŽRUtGetResultByRandomListRRRÜR’R‘RYR„Rõ(RRút nextSendTimetrandSysRedPacketListRáR R!((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR™s0   
$ 
  cCs.tjd|ƒ}|sdS|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}|rqtjd|ƒnd}d}t
}    |jƒr·t j t |dƒtjd|ƒnt|ƒ}
|
tjkrÛd}nd} d} d} d}d}t||| | | |||||    d|d|ƒ
dS(    Nt FamilyRedPacks%s:00iis(¶¨Ê±·¢·ÅµÄºì°ü£¬ÉèÖÃÒÑ·¢·Å! redPackID=%sR#t sysCreateTimeR(RTtGetIpyGameDatat
GetGetTypet GetMoneyTypet GetMoneyNumt GetPacketCntRëRFtChangeTimeStrToNumR1RjRR‘RÝRGRšRWtRedPackWayType_Servert__SaveNewRedRecord(RáRÞtgetTypeRt    outputNumRtopenTimeR2RR R˜RrtjobRankRRRÁ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyRÃs0           1cCs÷|\    }}}}}}}}}    tjƒj|ƒ}
|
s@dS|    sUd} d} n+|
jƒ} tjƒj| ƒ} | s€dS||kr§tjd||fƒdS|
jƒ} d}|
j    ƒ}t
| ||| |||||||d|ƒ dS(NisC    Éú³ÉÐÂÏÉÃ˺ì°ü ºì°ü¶î¶È²»Äܵ͸úì°ü¸öÊý£¡outputNum=%s,redCnt=%stdata( RFR¡RªR1t GetFamilyIDR¢R£RGtGetJobtGetNameR:(tmsgListRR;RRR<twishStrR R?tisFamilyRedPacketR‡RRÁRrR>R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytMapServer_CreatRedPacketãs&!        .c CsÜ| s| s| rdStjd|ƒ}|s5dS|jƒ}|jƒ}|jƒ}|jƒ}|j|ƒ}|s˜tjd|||fƒdS|j    ƒ}    d}
|j
ƒ} t ||| |    |
|||dƒ    dS(sÍⲿ½Ó¿Ú£¬Éú³ÉÏÉÃËкì°üNR1sEÏÉÃËûÓиóÉÔ±, ÎÞ·¨·¢·ÅÏÉÃ˺ì°ü!familyID=%s,playerID=%s,redPackID=%si( RTR3R4R5R6RÆt
FindMemberRFRÛRARBR:( RÁRRáRÞR;RR<RtmemberRrR>R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytCreatNewFamilyRedPacketús$      "ic CsÔd}tj|ƒd}|tjkr1d}ntj||ƒ|rS|jƒnd}ttjƒƒ}tƒ}|j    |t
ƒ}||_ ||_ ||_ ||_|    |_| r¿| n||_||_||_||_||_||_||_| |_|
|_i|_tjd||||||||    | f    ƒt||dƒ|sÐtjddiƒ}t |ƒ|krŸt!j"d|t |ƒƒqÐ|tj#dƒkrÐt!j"dd|gƒqÐn|S(NtFamilyRedPacketIDiis}Éú³Éеĺì°ü: familyID=%s,redPacketID=%s,ownerID=%s,getType=%s,moneyType=%s,outputNum=%s,packetCnt=%s,state=%s,isAnonymous=%stOpenServerRedPacketRainit OSRedpackSfx($RRÜRîtDef_UpperLimit_DWordR‘RÆRRœRER3R8RRRR    R RR RRRRRRRR)RFRYRÒR1RTRUtstrRt WorldNotifyR„(RÁRÉRRrR>R;RR<RR RDR2R?RtDB_RedPacketIDRRR±RLRtgetTypeRainDict((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR:sD                                                                    #c Cs‚|\}}}}tjƒj|ƒ}|s1dStƒ}|j|tƒ}|sVdS|j}|j}    tj    di|    d6ƒ}
|
s‹dS|
j
ƒrÛt j |t jƒsÀtjd|ƒdS||krû||_qûn ||krûtjd|ƒdS|j} t|_||_t|ƒ|_ttjƒƒ|_|jdkrRd} n|jƒ} | dkrndSt| || ƒdS(sH¿ª·Åºì°ü¿ÉÁìÈ¡£¬¸Ãºì°üÒÑ´æÔÚ£¬Ö»ÊÇ״̬δ·¢·Å£¬ÓɹéÊôÍæ¼Ò×ÔÓÉÑ¡Ôñ·¢·Åʱ»úNR1tGetTypes    ·¢ÏµÍ³ÔùË͵ĺì°ü È¨ÏÞ²»×㣡s    ·¢ÏµÍ³ÔùË͵ĺì°ü ²»ÊDZ¾ÈË£¡i(RFR¡RªRER3RlRRRTtGetIpyGameDataByConditiont GetLeaderOwnt PlayerFamilytGetPlayerHasFamilyPowRît#Def_PurviewDictKey_CanSendRedPacketRGR RjRRRRœR RR1t    GetFamilyRÒ( RCRRRRR‡RLRtownIDRRÞRÈRÁ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytSendFamilyRedPacketCsD                                 c Cs|\}}}tƒ}|j|tƒ}|sAtjdƒdS|jƒ}|j}|}    |tgkrtjd|ƒdS|j    }
|
r­|j
ƒ} | dkr³dSnd} |j } |j } |j}|j}||krtjd|ƒt|||ƒdStg|jƒD]}|j^qƒ}| |}t|ƒ|ksW|dkr£tjd|ƒ|tkrt|_t| ||    ƒnt|||ƒdS|t|ƒ}|j}|j}||k}| r|dkr|dkrtjdƒdS||kr(tjd||fƒdSt|ƒ}|tjkrUtjd    ƒ}n3|tjkrytjd
d ƒ}ntjd ƒ}|d kr t|ƒn|}t ||ƒ}||8}tjd||||f|ƒt!||ƒ}|j"ƒ|_#|j$ƒ|_%|j&ƒ|_'|j(ƒ|_)| |_ ||_|||<t|ƒ|ksd|dkr€t|_t| ||    ƒnP|tj*dd ƒkrÀt+||ƒ}|rÐt,||ƒqÐnt,||gƒt|||ƒt-| |||gƒ}|j.ddd|t|ƒƒ|S(Ns ºì°ü²»´æÔÚ£¡s    ¸Ãºì°ü»¹Î´·¢ËÍ£¡s    ¸ÃÍæ¼ÒÒÑÇÀ¹ý´Ëºì°ü£¡is    ºì°üÒѱ»ÇÀÍ꣡iÿÿÿÿs    ÇÀ¿ª·þºì°ü£¬´ÎÊý²»×㣡£¡s6ÁìÈ¡µÄºì°üÀàÐͲ»Ò»Ö£¬ÎÞ·¨ÁìÈ¡! reqGetWay=%s,getWay=%stOpenRedRacketOutNumtFeastRedPacketitFamilyRedRacketOutNumisE    ¸ÃÍæ¼ÒÇÀµ½ºì°ü: redPacketID=%s,getWay=%s,getMoney=%s,remainNum=%sRRtGrabFamilyRedPacketResult(/RER3RlRFRÛRƒR RiRGRRXR1RR    RR)t__NotifyGrabRedPacketInfoRžRwRRHR^RÒRRRšRWR9RTtGetFuncCompileCfgtRedPackWayType_FeasttevaltminR"RARRBRtGetFaceRt
GetFacePicRRURÇR†RNtMapServer_QueryPlayerResult(R‡RCRt    reqGetWayt
canGrabCntRLRRR RÈRt    curFamilyRR¸RtgrabRecordDictR R·t    remainNumtremainPacketCntRtowerIDtisSelfR˜t getNumformulaRRÏtresult((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pytDoGrabFamilyRedPacketps˜                                 (
                 
            
    cCsÏtjƒ}|jƒ||_g|_x~|jƒD]p}tjƒ}|j|_t    |jƒ|_
|j |_ |j |_|j|_|j|_|jj|ƒq5Wt    |jƒ|_tj||ƒdS(s֪ͨÇÀºì°üÐÅÏ¢N(R¤ttagGCFamilyRedPacketGrabInfoR®t RedPacketIDtGrabInfoRwttagFGrabRedPacketInfoRtNameRHtNameLenRtPlayeJobRtFaceRtFacePicRtMoneyNumR4RZR¬R­(R‡RRjRÂR tgrabInfo((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR_Ùs  
              cCs\tj|ƒrdStƒ}t|dkƒ}|dkrùg}|jƒ}|jƒ}|rj|jƒnd}||jj    |gƒ7}||j
7}x-|j j    |iƒj ƒD]}||7}q²Wx0|j j    |iƒj ƒD]}||7}qâWn| r
|r
dSg}    |jƒ}tj|ƒ}
xÖ|D]Î} |j| tƒ} | sVq2n| jr}|
r}| j|
kr}q2q}n| j} || jkržt} n|r¼| ttgkr¼q2ntjtj| jƒƒ}tjƒ}|jƒ| j|_ | j|_!| j"rdn| j#|_$t%|j$ƒ|_&| j'|_(| j)|_*|j    ddƒ|_+|j    ddƒ|_,| j-|_.| j/|_0| j1|_2| |_3| j4|_5t| j"ƒ|_6| j7|_8t%|j8ƒ|_9|    j:|ƒt%|    ƒdkr2Pq2q2W|    sdStj;ƒ}|jƒ||_<|    |_=t%|j=ƒ|_>t?j@||ƒdS(NiR#RyRziú(ARR‚RERR1RƒRXRÆR,R…R0R-RwR.RUtGetPlayerJoinFamilyTimeR3RlRR R R)t State_HasGotR^tPlayerViewCachetGetCachePropDataDictt FindViewCacheRR¤ttagFRedPacketInfoR®RRstPlayerIDRRRvRHRwRtTimeRRxRyRzRt    MoneyTypeR    R{RtGetWaytStateRt    PacketCntt IsAnonymousRtWishtWishLenR4ttagGCFamilyRedPacketInfotIsAllt RedPacketInfoRZR¬R­(R‡tsyncRedPacketIDListR€RLtisAllRRÁRRMt redPacketInfotjoinFamilyTimeRRR t tagCacheDictt
packetInfoRÂ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyR†ìs~        ""                    
               
        ((((7RFRWR¬RTR¤RŸRRRRURPRîRìRRœtrangeRiRjR~R^RÝR’RR!R"R(R*RORERuRRRR”RšRÅR1RÒRÇRÙRâRRRR“RRRFRIR:RZRqR_RlR†(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFamilyRedPacket.pyt<module>s`                       ˆ         Y        (                € s             )     #    )    *             0    -    i