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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
´Ìaec
@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZedƒ\ZZZZZdZdZdZdZedƒ\Z Z!edƒ\Z"Z#Z$dZ%de&fd    „ƒYZ'dd
„Z(d „Z)d „Z*d „Z+d„Z,d„Z-d„Z.ddddej/e0d„Z1d„Z2gddddej/e0d„Z3d„Z4d„Z5d„Z6d„Z7ddddej/e0dd„Z8dd„Z9dej:d„Z;d„Z<d„Z=d„Z>ddd „Z@d!„ZAd"„ZBggddddej/ddd#„    ZCdddddd$„ZDdddej/d%„ZEd&„ZFddddej/e0d'„ZGd(„ZHiddd)„ZId*„ZJd+„ZKdd,„ZLd-„ZMd.„ZNd/„ZOd0„ZPd1„ZQd2„ZReSd3„ZTd4„ZUd5„ZVe0d6„ZWd7„ZXd8„ZYd9„ZZd:„Z[d;„Z\dd<„Z]d=„Z^dS(>iÿÿÿÿNiiiiitCompensationRequestStatet CrossPersonalCompensationManagercBs#eZd„Zd„Zd„ZRS(cCs i|_dS(N(tplayerMailDict(tself((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt__init__Ps    cCsŽd}d}d}xH|jjƒD]7}x.|jƒD] }|d7}||jƒ7}q5Wq"Wtjd|t|ƒfƒtj||ƒ|S(Ntiis2Save DBCrossPersonalCompensation count :%s, len=%s(Rtvaluest    getBuffert    GameWorldtLogtlentCommFunct
WriteDWORD(RtsavaDatatcntDatatcnttmailDicttmailObj((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt GetSaveDataUs
c
Cs»tj||ƒ\}}tjd|ƒx‹t|ƒD]}}tjƒ}|jƒ||j|||ƒ7}|j    }|j
}||j krœi|j |<n|j |}    ||    |<q6W|S(Ns*Load DBCrossPersonalCompensation count :%s( R t    ReadDWORDRR    txrangetPyGameDataStructttagDBCrossPersonalCompensationtcleartreadDatatPlayerIDtGUIDR(
RtdatastpostdataslenRt_RtplayerIDtguidR((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytLoadPyGameDatabs 
         (t__name__t
__module__RRR!(((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRMs         cCshtjƒ}|jjƒ}|s%dS|r4|gng}idd6|d6}tjtj||ƒdS(sN Í¬²½Óпç·þÓʼþµÄÍæ¼ÒIDµ½×Ó·þ
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    NtAddtIDTypet PlayerIDList(t PyDataManagert#GetCrossPersonalCompensationManagerRtkeyst CrossRealmMsgtSendMsgToClientServert ShareDefinetCrossServerMsg_MailPlayerIDList(t serverGroupIDt crossMailMgrtaddMailPlayerIDListtserverGroupIDListtdataMsg((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt$Sync_CrossMailPlayerIDToClientServerts cCsÇ|d}|d}x¬|D]¤}|dkrU|tjkrtjj|ƒqqn|dkr|tjkrvqndtj|<tjƒj|ƒ}| s|jƒ r²qnt|ƒqqWdS(NR%R&tDelR$i(t
PyGameDatatg_crossMailPlayerDicttpopRtGetPlayerManagertFindPlayerByIDt    GetInitOKtRequestToGetCrossMail(R2tidTypet playerIDListRtplayer((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR-‚s 
 
    cCsŠ|jƒ}|tjkrdStj|}tjƒjƒ}||dkrRdS|tj|<idd6|d6}tjtj    |ƒdS(Ni0utGettCMDR(
t GetPlayerIDR5R6Rt GetGameWorldtGetTickR*tSendMsgToCrossServerR,tClientServerMsg_MailContent(t    curPlayerRtlastTickttickR2((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR;˜s   cCs"tjd||fƒ|d}|d}|jdgƒ}tjƒ}||jkr\dS|j|}|dkr’d}g}    xé|jƒD]Û\}
} t| |ƒrât| |ƒ} || dkrâtj    d|
ƒqŽqânt
| ||ƒi
| j d6| j d    6| j d
6| jd 6| jd 6| jd 6| jd6| jd6| jd6| jd6} |    j| ƒqŽW|    rtjtj|    |gƒqnŒ|dkrx.|D]&}
|j|
dƒtj||
ƒq¥W|s|jj|dƒidd6|gd6}tjtj||gƒqndS(Ns2ÊÕµ½×Ó·þÍæ¼Òͬ²½¸öÈËÓʼþÃüÁî: serverGroupID=%s, %sR@RtGuidListR?tSyncTicki0us7¶Ìʱ¼äÄÚÖØ¸´ÇëÇóÁìÈ¡µÄÓʼþ²»Í¬²½£¬·ÀÖ¹ÖØ¸´·¢·Å! GUID=%sRt    LimitTimetTexttItemInfotDetailtGoldt    GoldPapertSilvert MoneySourcetGetOKR4R%R&(RR    tgetR'R(RtitemsthasattrtgetattrtDebugLogtsetattrRRRKRLRMRNRORPRQRRtappendR*R+R,tCrossServerMsg_MailContentR7tNonetDataRecordPacktDR_GiveCompensationSuccessR-(R.tmsgDataRHtreqCMDRtguidListR/RtSyncTickAttrKeyt getMailListR RtgetTickt crossMailDictR2((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRE¦sD
 
       !   c Cs¾i}xf|D]^}|jddƒ}|jddƒ}| s | rKq ntjd||ƒt|jddƒƒ}|jddƒ}|jd    dƒ}tj|jd
ƒƒ}tj|jd ƒƒ}    tj|jd ƒƒ}
tj|jd ƒtjƒ} |jddƒ} t|||g||||    |
| | ƒ
||krTg||<n||} | j|ƒq WxH|j    ƒD]:\}} idd6|d6| d6}t
j t j |ƒq|WdS(NRRRisÊÕµ½¿ç·þ¸öÈËÓʼþÄÚÈÝ£º%sRMs[]RKRLRORPRQRRRNRSR@RI(RTRR    tevaltToIntDeftChConfigtDef_GiveMoney_MailtAddPersonalItemRZRUR*RDR,RE(RctplayerGetGUIDInfoRRRtaddItemDictListRKRLtgoldt    goldPapertsilvert moneySourcetdetailRaR2((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR[Ôs0 (  
c    Cs¸g}    tjƒ}
xo|D]g} ttjƒƒ} tjƒ} | | _| | _|| _    || _
t | j
ƒ| _ || _ || _|| _tj|dtƒ| _t | jƒ| _|| _t | jƒ| _|| _| |
jkri|
j| <|    j| ƒn|
j| }| || <i    |d6|d6|d6|d6|d6t |ƒd6|d6|d    6td
6}tj|| ||ƒqW|    r´id d 6|    d 6}tjtj |ƒndS(Nt ensure_asciiRKRLRORPRQt ItemListLenRNRRt    CrossMailR$R%R&(!R'R(tstrtuuidtuuid1RRRRRKRLR
tTextLenRORPRQtjsontdumpstFalseRMtItemLenRNt    DetailLenRRRRZtTrueR]tDR_AddPersonalCompensationR*R+R,R-(RlR&RKRLRmRnRoRqRpR0R/RRRRtaddDictR2((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt__AddPlayerCrossMailös<                                         
&%cCsdt|ƒsdStjƒ}|d|_|d|_|jddƒ|_|jddƒ|_|S(NtItemIDtCountt IsAuctionItemitUserDataR(t__checkMailItemDicttIPY_GameServertIpyCompensationItemR‚RƒRTtIsBindR…(t curItemDictt curItemData((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytMakeCompensationItem!s    Rc CsPttj|ƒƒ} | jdƒd} t||| |||||||    |
ƒ S(Ns.i(RuRtGetDatetimeByDiffDaystsplittSendPersonalItemMail( ttitletcontenttgetDaysR=t addItemListRmRnRoRqRpt    crossMailt    limitTime((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalItemMailEx1scCsÈ|\
}}}}}}}}}    }
t|ƒ} t|ƒ} t|ƒ} t|ƒ}t|ƒ}t|ƒ}t|ƒ}d}d}ttj|ƒƒ}|jdƒd}xt|ƒD]\}}|sÑq¹n| | krç||ng}| | kr||ng}|| kr||nd}|| kr;||nd}|| krW||nd}|| krs||nd}d|t|ƒf}t||||||||d|d|    d|
ƒq¹WdS(    NRis.is!<MailTemplate>%s</MailTemplate>%sRqRpR”(R
RuRRRŽt    enumerateR(tbatchMailInfoListt mailTypeKeytbatchPlayerIDListtbatchAddItemListtbatchParamListt    batchGoldtbatchGoldPapert batchSilvert batchDetailRpR”t lenPlayerIDtlenItemtlenParamtlenGoldt lenGoldPapert    lenSilvert    lenDetailRR’R•tiR=R“t    paramListRmRnRoRqR‘((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalItemMailBatch7s0$       5c
Csˆ|stj}ntjd||||||||fƒd}
d|tj|dtƒf} t|
| d||||||||    ƒ S(NsqSendMailByKey %s, playerIDList=%s, addItemList=%s, paramList=%s, gold=%s, goldPaper=%s, silver=%s, moneySource=%sRs!<MailTemplate>%s</MailTemplate>%sRri(R,tDefaultLackSpaceMailTypeRRXRyRzR{R–( R™R=R“R©RmRnRoRqRpR”RR‘((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt SendMailByKeyVs      cCsO|d}|d}|jdgƒ}|jdgƒ}t||||ƒdS(Nt MailTypeKeytPlayertItemtParam(RTR¬(R_R™R=R“R©((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytCrossServerMsg_SendMail`s 
 
cCs§t|tƒpt|tƒs"dSt|tƒp=t|tƒsDdSt|tƒpnt|tƒpnt|tƒsudS|tjksŸ|tjksŸ|dkr£dStS(Niÿ(t
isinstancetinttlongtboolR,tDef_UpperLimit_DWordR~(titemIDt    itemCountt isAuctionItem((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt__checkMailItemIDCountis-*cCsot|tƒsdSd|ks+d|kr/dS|d}|d}|jddƒ}t|||ƒskdS|S(NR‚RƒR„i(R²tdictRTRº(RŠR·R¸R¹((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR†us
 
cCs'g}x|D] }t|tƒrKt|ƒs8tgfS|j|ƒq nt|tƒsit|tƒrt|ƒdkst|ƒdkr|d \}}t|ƒdkr¹|dnd}t|||ƒsÛtgfSi}||d<||d<||d<|j|ƒq tgfSq Wt    |fS(NiiiR‚RƒR„(
R²R»R†R{RZtlistttupleR
RºR~(R“RltitemInfoR·R¸R¹t addItemDict((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt__checkMailItemList‚s&  
 B"
 
 
 
c Cs|s
dStjƒ} | s)| |kr>tjd|ƒdSt|ƒ\} }| s‰tjd|||||||||    |
f
ƒdSt|tjƒ}t|tjƒ}t|tjƒ}tj    dƒ}t
dt t j t|ƒt|ƒƒƒƒ}xt|ƒD]}|dkr-d\}}}n||}ttjƒƒ}t|||||!||t||| ƒ|||||    |
ƒ q    W|S(NRsC¹¦ÄÜ·¢·ÅÎïÆ·²¹³¥/½±ÀøÓʼþ£¬Áìȡʱ¼äÒѳ¬Ê±£¬Ä¬Èϲ»Ìí¼Ó£¡LimitTime=%ss‰·¢Ë͸öÈËÓʼþ´íÎó: title=%s,content=%s,playerIDList=%s,addItemList=%s,gold=%s,goldPaper=%s,silver=%s,detail=%s,moneySource=%s,crossMail=%stMailMaxItemCntii(iii(RtGetCurrentDataTimeStrRXRÀtErrLogtminR,R¶t IpyGameDataPYt
GetFuncCfgtmaxR³tmathtceilR
tfloatRRuRvRwRjt GetMailText(RR‘R•R=R“RmRnRoRqRpR”tmailTypet curServerTimetisOKRltperMailItemCnttmailCntR¨t
startIndexR((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRŸs2     &. 
c    CsNtjƒrdSttjƒƒ}t||tjƒ|t|||ƒƒdS(N(Rt IsCrossServerRuRvRwtPyAddPersonalCompensationRÂRË(RRR‘R•RÌR((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalAsTextMailÅs  cCsd||||fS(Ns%s<$_$>%s<$_$>%s<$_$>%s((RR‘RÌtsender((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRËÍscCs|d|d|S(Ni@Bi †((t
checkStatet limitLVTypetlimitLV((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytGetEntireCompensationInfoÑscCs3|d}|d}||dd}|||fS(Ni †i@B((tmailInfoRØRÖR×((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytParseEntireCompensationInfoÓs
 
cCs#g}tjƒ}d}d}|j|ƒ}tjd|ƒxÞt|ƒD]Ð}|j||ƒ}|jjdƒ}t|ƒdkrqKn|d \}    }
} t|ƒdkrÅtj    |dƒnd} || kr|| kr| | j
|ƒt|ƒ| j
|ƒ!}
d} n|j } g}|j | ƒ}x]t|ƒD]O}|j | |ƒ}|j}|smq@n|j||j|j|jgƒq@W|j|| ƒ}i | d6|jd    6|jd
6|jd 6|    d 6|
d 6| d6|d6| d6|jd6|jd6|d6}|j|ƒqKW|S(s¸öÈ˲¹³¥Óʼþ²éѯ
    s<MailTemplate>s</MailTemplate>s QueryCompensationPersonalInfo %ss<$_$>iiRRRORPRQtSendertTitletContenttRecStatetMailTypet
CreateTimeRKtItemList(RtGetCompensationMgrtGetPersonalCompensationCountRXRtPersonalCompensationAtRLRŽR
RgtindexRt FindItemCountt
FindItemAtR‚RZRƒR‰R…tFindPlayerRecStateRORPRQRáRK(RtretListtcompensationMgrttempSignt tempSignEndtcurPersonalCountR¨t compensationt contentListRÕRR‘RÌRtitemListtcurGUIDItemCounttcurItemR·trecStatetinfoDict((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytQueryCompensationPersonalInfoÙs> +)            &(#i
c     Cstjƒ}g}|rYt||j|ƒdd|||ƒ}    |    rU|j|    ƒn|S|rld|}n|rd|}n|jƒ}
xpt|
ƒD]b} |j| ƒ} t|| |||||ƒ}    |    s×q˜n|j|    ƒt|ƒ|kr˜Pq˜q˜W|S(sÈ«·þ²¹³¥Óʼþ²éѯ
    Rs %s 00:00:00s %s 23:59:59(    RRãt__GetQueryCompensationInfoDicttFindEntireCompensationRZtGetEntireCompensationCountRtAtEntireCompensationR
( tfromDatettoDateR t searchTitlet searchContentt searchStatetmaxCountRëRêRõt    entireCntR¨Rï((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytQueryCompensationInfos* '    c Cs | s|j rdS|r.|j|kr.dS|rG|j|krGdS|jjdƒ}t|ƒdkrodS|d \}}    }
t|ƒdkr§tj|dƒnd} |rÃ||    krÃdS|rÙ||
krÙdSt|jƒ\} } }|dkr || kr dS|j}g}|j
|ƒ}xct |ƒD]U}tj ƒj ||ƒ}|j}|skq8n|j||j|j|jgƒq8Wi|d6| d6| d6|d6| d6|jd    6|jd
6|jd 6|jd 6|d 6|    d6|
d6|jd6|jd6|jd6|d6}|S(Ns<$_$>iiRt
CheckStatet LimitLVTypetLimitLVRàRORPRQt    PlayerJobRÜRÝRÞt OnlyServerIDRáRKRâ(RRáRLRŽR
RRgRÛtPlayerLVR\RçRRãRèR‚RZRƒR‰R…RORPRQRtServerIDRK(RëRïRûRüRýRþRÿRðRÕRR‘RÌRÖR×RØRRñRòR¨RóR·tcompensationDict((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR÷$s@+        &&)c Csfg}g}tjƒ}x8|D]0}|j|ƒ}| s|j|krPqn|dkr§|j|ƒ|j|ƒ|j|ƒtjd|ƒtj    |dƒn›|dkr|j
}t |ƒ\}}    }
t t |    |
ƒ} |j|| ƒtjd|||| fƒ|t krB|j|ƒtj    |dƒqBnq|j|ƒqWtjƒ} xt| jƒƒD]ì} | j| ƒ}|dksr|jƒ srtj|ƒrµqrng}xŠ|D]‚}t||tƒ\}}|tkròqÂn|j|j|j|jf\}}}}|j}|j||||||fƒqÂW|rrt ||ƒqrqrW|S(shÈ«·þÓʼþ²Ù×÷¹ÜÀí
    @param operGUIDList: ´ý²Ù×÷µÄÓʼþGUIDÁбí
    @param operation: 1-ͨ¹ý£»2-ɾ³ý
    isɾ³ýÈ«·þÓʼþ: GUID=%stDeleteisBÈ«·þÓʼþÉóºËͨ¹ý: GUID=%s,mailInfo=%s,checkState=%s,updMailInfo=%stCheckOKN(!RRãRøRtDeleteEntireCompensationtDeleteCompensationItemtDeleteRecByGUIDR    R]tDR_EntireCompensationRRÛRÙt CheckState_OKtSetEntireCompensationPlayerLVRZR8RtGetActivePlayerCounttGetActivePlayerAtR\R:t PlayerControltGetIsTJGtCheckRequestCompensationR{tUnknow_CompensationTypeRLRORPRQRátSyncQueryCompensationResult(t operGUIDListt    operationt
okGUIDListtsuccessGUIDListRëRRïRÚRÖR×RØt updMailInfot playerManagerR¨R>t
notifyListtcompensationTypetcurEntireRequireRLRmRnRot
createTime((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytEntireCompensationOperNsR                  (  *    #c  Csb| s|dkrdSt|ƒ\} }| s\tjd|||||||    |
fƒdSt|tjƒ}t|tjƒ}t|tjƒ}| s­ttjƒƒ} nttj    |ƒƒ}|j
dƒd}t j }d}d|t j|dtƒf}d}t|||ƒ}d}d}t| ||||t||| |ƒ||||    |ƒ dS(    s¸ ·¢ËÍÈ«·þÓʼþ
    @param mailTypeKey: ÓʼþÄ£°åkey
    @param getDays: ÓÐЧÌìÊý
    @param limitLV: ÁìÈ¡×îµÍµÈ¼¶ÏÞÖÆ
    @param limitLVType: µÈ¼¶²»×ãµÄÉý¼¶ºóÊÇ·ñ¿ÉÁì 0-²»¿É£¬1-¿ÉÒÔ
    iNst·¢ËÍÈ«·þÓʼþ´íÎó: mailTypeKey=%s,addItemList=%s,paramList=%s,gold=%s,goldPaper=%s,silver=%s,detail=%s,moneySource=%ss.Rs!<MailTemplate>%s</MailTemplate>%sRri(RÀRRÃRÄR,R¶RuRvRwRRŽRhtDef_Mail_SenderSysRyRzR{RÙt AddEntireItemRË(R™R’RØR×R“R©RmRnRoRqRpRRÌRÎRlR•RÕRR‘RÖRÚRtserverID((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendEntireMailˆs0             $c  Cs‘tjƒrdSx:|D]2} t| ƒ} | s3dStjƒj|| ƒqWtjƒ} t|tjƒ}t|tjƒ}t|tjƒ}tjƒj    || ||||||||
ƒ
t
|ƒ\}}}i |d6|d6|d6|d6|d6|d6|d6|d    6|d
6|d 6|    d 6}|t kr7d nd}t j |||ƒt||||d||ƒtjdƒ}tjƒ}xt|jƒƒD]ï}|j|ƒ}|dksš|jƒ sštj|ƒrÝqšn|tkrtj|jƒƒ}||krqšqnt||tƒ\}}|tkr=qšn|j|j |j!|j"f\}}}}t#|||| |||fgƒqšWdS(sW
    @param mailInfo: GetEntireCompensationInfo µÄ·µ»ØÖµ, Ä¿Ç°ÔÝ´æ×ֶΠPlayerLV ÖÐ
    NRKRRRRRLRORPRQRâRNR$t
AddToCheckt    TestAccID($RRÒRŒRãtAddCompensationItemRÂRÄR,R¶tAddEntireCompensationItemRÛRR]Rt__WriteSendMailOKEventR\t ReadChConfigtGetEvalChConfigR8RRRR:RRt CheckState_NotGetPlatformAccIDtGetAccIDRR{RRLRORPRQR(RRlRKRÚRRLRmRnRoRqR'R¿R‹R#RÖR×RØR€t    eventNamet testAccIDListRR¨R>t playerAccIDR!R"((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR&´sF    -& (       *&c    
Csìtjƒj|ƒ}    tjƒj|ƒ}
tjdƒ} |
| d} tjd|
| f|ƒ| dkrNtjd| |ƒt    |ƒ} g}xgt
| ƒD]Y}| s°Pn| j dƒ}tjƒj ||ƒ}|j |kr |j|j ƒq q WxN|D]C}t||dƒtjd||ƒ|    rt|    |dƒqqWn|tj}t|tjƒ}t|tjƒ}t|tjƒ}tjƒj|||||||||ƒ    |tjkrètj|}|j|ƒndS(NtMailDefaultCountis+ÐÂÔö¸öÈËÓʼþ: totalCount=%s,maxMailCount=%sis'¸öÈËÓʼþ´ïµ½ÉÏÏÞ£¬ÐèҪɾ³ý£¡delCount=%stMaxCountLimiits(    DeletePersonalCompensation GUID = %s(RR8R9RãRäRÅRÆRXR    tGetPlayerDelMailGUIDListRR7tFindPersonalCompensationRRZtClearPersonalCompensationtNotifyCompensationResultRhtDef_GiveMoney_UnknownRÄR,R¶tAddPersonalCompensationR5tg_playerDelMailGUIDDict(RRRáRKRLRmRnRoRpRFt
totalCountt maxMailCounttdelCountt delGUIDListtdelGUIDsRtdelGUIDtcurIpyPersonalDataR RÌRa((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRÓês>     cCsÐ|tjkrÅg}tjƒj|ƒ}xEt|ƒD]7}tjƒj||ƒ}|j|j|j    gƒq7W|j
ƒg}x0|D](\}}||kr‰|j|ƒq‰q‰W|tj|<ntj|S(N( R5R>RRãRäRRåRZRáRtsort(Rt timeGUIDListRîR¨tcurMailRBRR ((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR8s
 c  Cs”tjƒr;|
r7t|||||||||    ƒ    ndStjd||fƒx:|D]2} t| ƒ} | sudStjƒj|| ƒqYWi} tjƒ}x’|D]Š}t|||||||||    ƒ    tj    ƒj
|ƒ}|r¨t |||||||fgƒ|j ƒ|j ƒg| |jƒ<q¨q¨Wi|d6|d6|d6|d6|d6t|ƒd6|d6|    d    6}tj||||ƒdS(
Ns5Compensation### AddPersonalItem GUID:%s ItemDict:
%s RKRLRORPRQRsRNRR(RRÒRRXRŒRãR+RÂRÓR8R9RtGetNametGetLVR2R
R]R(RRlR&RKRLRmRnRoRqRpR”R¿R‹tonlinePlayerInfoR#RRFR€((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRj)s, %    "")&cCs†|s
dSi}|\}}}}tjd|t|ƒfƒx*|D]"}|d|dg||d<qFWt|||||ƒdS(NsÓʼþÀëÏßÍæ¼ÒDBÐÅÏ¢: GUID=%s, %st
PlayerNametLVtAccID(RR    RuR-(t resultSetListtextendValueListtplayerInfoDictRRlRKRLt
resultDict((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytFindDBResult_SendMailUs  cCsdS(N((RRlRKRLRQtplayerLVt    playerJob((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR-cs5cCs#tjƒj|ƒ}t|ƒdS(N(RR8tGetPlayerByIndextNotifyPlayerCompensation(Ræt
clientDataRHRF((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnQueryPlayerCompensationžscCs't|ƒt|ƒ}t||ƒdS(N(R;tSeekPlayerCompensationR(RFR ((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRW¤s
  cCs¸tjƒj||ƒtjƒj||ƒtjƒj|ƒdkr]tjƒj|ƒn|tjkr˜tj|}||kr˜|j|ƒq˜n|r´t    j
|||ƒndS(Ni( RRãtDeletePersonalCompensationtDeletePlayerCompensationRectGetPersonalCountByGUIDRR5R>tremoveR]tDR_DelPersonalCompensation(t curPlayerIDtcurGUIDR3Ra((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR:«s  cCs+|d|}tjƒj|||ƒdS(Ni
(RRãt AddPlayerRec(R`Rt
prizeStatet    readStatetstate((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt SetPrizeState½scCstjƒj||ƒdS(Ni
(RRãRé(R`R((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytGetPrizeGetStateÂsc CsP|jƒ}tjjƒ}g}tjƒj|ƒ}x]t|ƒD]O}tjƒj||ƒ}|j|j    |j
|j |j |j |jfƒqCWtjƒjƒ}|jƒ}|jƒ}    tj|jƒƒtjdƒk}
xet|dddƒD]M}tjƒj|ƒ} t| jƒ\} } }| tkrI|
sIqûqIntjƒj|| j    ƒ}|d}|d}|ttfkrqûntjj| jtj ƒ}||krß|t!krßt"|| j    t|ƒqûn| t#kr|j$ƒ| j krt"|| j    t|ƒqûn||    krS| t#krût"|| j    t|ƒqûqûn| j%dkr©|jƒ}| j%t&d|ƒ@dkr©t"|| j    t|ƒqûq©n| j'ræ| j'tj(|ƒkræt"|| j    t|ƒqûnt)|kr|t*krt"|| j    t)|ƒn|j| j    | j
| j | j | j | jfƒqûW|S(    NR*iiÿÿÿÿi
iii(iÿÿÿÿi(+tGetIDtdatetimettodayRRãRäRRåRZRRLRáRORPRQRùtGetJobRJR1R2R.R/RúRÛRR0Rét Disable_Statet    Del_StatetstrptimeRKRhtTYPE_Time_Formatt Unknown_StateRftLimitLVType_NottGetCreateRoleTimeRtpowR    tGetPlayerServerIDt Enable_Statet    Yet_State(RFR`tcurTimetallListRîR¨REtcurEntireCounttcurJobtcurLVt isTestAccIDt
curRequireRÖR×RØtstatesRdtcurStateR•((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRZÉs^   $     
 
!       !cCs»tjƒ}|jƒx||D]t\}}}}}}tjƒj|ƒ}    tjƒ}
||
_||
_||
_    t
|ƒ|
_ ||
_ ||
_ ||
_tjƒj|jƒ|ƒ} | dtkrÕt|
_n | d|
_xŠt|    ƒD]|} tjƒj|| ƒ} tjƒ}| j|_| j|_| j|_| j|_t
| jƒ|_|
jj|ƒqïWt
|
jƒ|
_|jj|
ƒqWt
|jƒ|_tj||ƒdS(Ni
( tChPyNetSendPackttagGCQueryCompensationResulttClearRRãRçttagGCCompensationPackRRáRLR
RxRORPRQRéRARvtIsReadRRèttagGCCompensationItemR‚RƒR‰R…t UserDataLentItemsRZtPackListt NetPackCommont SendFakePack(RFR tsendPackRRLRáRmRnRoRòtsubPacktresStateRæRót subPackItem((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRs< 
                                cCsÃ|jƒ}g}tjƒ}x‡|D]}|j||ƒ}|j|krs|j|ƒ}|j|krsq%qsn|j|j|j|j    |j
|j |j fƒq%W|s²dSt ||ƒdS(N(RARRãR9RRøRRZRLRáRORPRQR(RFtnotifyGUIDListR`R RëRtfindCompensation((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt!SyncQueryCompensationResultByGUID6s        c    Csøtjdƒ|j}tjƒj|ƒ}|s5dS|jtƒrUtjdƒdS|jtdƒ|j}tjd||fƒt    ||ƒ\}}|t
ks­| rÎ|jtdƒtjdƒdSt ||||||ƒtjdƒdS(Ns*Compensation### OnMGRequestCompensation insCompensation### already requestis=Compensation### OnMGRequestCompensation myPlayerID %s GUID %sis0Compensation### OnMGRequestCompensation no founds+Compensation### OnMGRequestCompensation out( RRXRR8R9t GetDictByKeytDef_RequestStatetSetDictRRRtSendGMRequestCompensationResult(    t
routeIndextmapIDt curPackDataRHt
myPlayerIDRFRR!R"((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnMGRequestCompensationKs$           
cCs›|jƒ}tjƒj||ƒ}|d}|d}|tttfkrWtdfS|r‘tjƒj    ||ƒ}|j
|kr‘t |fSntjƒj |ƒ}|j |krÕtjƒj||ƒtdfSt|jƒ\}    }
} |    tkr0tj|jƒƒtjdƒk} | s0tdfSntjj|jtjƒ} tjjƒ}| |krt|krt||t|ƒtdfSt|kr¥t|fS|j ƒ}| |kré|
t!krßt||t|ƒntdfS|j"ƒ}|j#dkr@|j#t$d|ƒ@dkr@t||t|ƒtdfSn|j%r~|j%tj&|ƒkr~t||t|ƒtdfSt||t|ƒt|fS(Ni
R*iÿÿÿÿiii(iÿÿÿÿi('RhRRãRéRlRvRmRR\R9RtPersonal_CompensationTypeRøRR\RÛRR0R1R2R.R/RiRnRKRhRoRjRpRfRutEntire_CompensationTypeRJRqRkRRsR    Rt(RFRt isPersonnalR`R~RdRtcurPersonalCompensationR"RÖR×RØR|R•RwR{Rz((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRpsR 
 
 
 
 $ 
 
 
  !
cCs‹|j|j|j|j|jf\}}}}    }
|tkrH|jnd} tjƒ} |j    ƒ| _
|| _ || _ |
| _|| _t |ƒ| _|| _|| _|    | _| | _tjƒj|ƒ} xŠt| ƒD]|}tjƒj||ƒ}tjƒ}|j|_|j|_|j|_|j|_t |jƒ|_| jj|ƒqâWt | jƒ| _tj||| ƒdS(Ni(RLRORPRQRáR›tTypetChGameToMapPyPackttagGMRequestCompensationResultRhRtCompensationTypeRR
RxRRRRãRçRRèttagGMCompensationItemR‚RƒR‰R…R†R‡RZR‰tSendPyPackToMapServer(R–R—RFRR!R"RLRmRnRoR#RpR‹RòR¨RóRŽ((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR•¸s6 '                                      cCsj|j}tjƒj|ƒ}|s(dS|j}|j}|jtdƒ|jrft    |||ƒndS(Ni(
RRR8R9RR¢R”R“tResulttGiveCompensationSuccess(R–R—R˜RHR™RFRR¢((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnMGGiveCompensationResultÝs                cCs|jƒ}t||ttƒtj||ƒ|sIt||gƒdSt||dƒ|tkr|t||t    tƒdS|t
kr™t ||ƒdSdS(Ni( RhRfRvtRead_State_YesR]R^R‘R;RœRmR›R:(RFRR¢tisDelR`((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR¦ïs    cCsëtjjƒ}g}tjƒjƒ}xst|ƒD]e}tjƒj|ƒ}tjj|jt    j
ƒtj ddƒ}||kr4|j |j ƒq4q4WxG|D]?}tjƒj|ƒtjƒj|ƒtjƒj|ƒq¤WdS(Ntdaysi(RiRjRRãRùRRúRnRKRhRot    timedeltaRZRR RR(RwtneedClearGUIDListRR¨R"R•R((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytClearUpEntireCompensations+  cCsÖd}d}tjjƒ}g}tjƒjƒ}x^t|ƒD]P}tjƒj|ƒ}|j}||kr=||kr=t||j    |j
ƒr=||j |ƒt |ƒ|j |ƒ!}t jddƒ}    ||    kr=|j|j
|j    gƒtjƒj|j
ƒ}
|
r@|
jƒr@t|
|j    dƒq@q@q=ntjj|jtjƒtjddƒ} | |kr@|j|j
|j    gƒq@q@Wtjdt |ƒƒx$|D]\} } t| | dƒq²WdS(    Ns<MailTemplate>s</MailTemplate>tMailSetiRªis$ClearUpPersonalCompensation count=%stTimeout(RiRjRRãtGetAllPersonalCompensationCountRtAtAllPersonalCompensationRLtCheckCanDelCompensationRRRæR
RÅtGetFuncEvalCfgRZR8R9R:R;RnRáRhRoR«R    R:(RìRíRwR¬tallCntR¨RHtmailTextttempKeytnotClearMailKeyListR>R•RR((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytClearUpPersonalCompensation#s0    0)     +  cCstƒtƒdS(N(R¸R­(((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytClearUpTimeOutCompensationIsc    Cs×tjƒj|ƒ}|j}|jƒ}tjƒj||ƒ}|j|kr|tjƒj|ƒ}|j|kr|dSntjƒj    ||ƒ}|dt
kr¨dSt
d|d}tjƒj |||ƒdS(Ni
( RR8RVRRhRãR9RRøRéR¨Rb(    RæRXRHRFRR`RžR"R((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnReadCompensationZs     cCs–tjƒj|ƒ}|j}|jƒ}tjƒj||ƒ}|j|kr¯t|||ƒs‹tj    d||ƒt
||dƒdSt ||dƒt
||dƒdStjƒj |ƒ}|j|krçt
||dƒdStjƒj |ƒ}|j|kr‚t|||ƒsEtj    d||ƒt
||dƒdSt ||ttjƒj||ƒdƒt
||dƒdSt
||dƒdS(Ns¸Ã¸öÈËÓʼþ²»¿Éɾ³ý: %sit    ClientDelis¸ÃÈ«·þÓʼþ²»¿Éɾ³ý: %si
(RR8RVRRhRãR9RR²RXR;R:RøRfRmRé(RæRXRHRFRR`RžR"((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnDelCompensation{s4     )cCs^|r"t||ƒtkr"tSn|js=|js=|jrAtStjƒj    |ƒrZtStS(N(
RgRvR~RORPRQR{RRãRç(RRR((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR²¦scCs2tjƒ}||_||_tj||ƒdS(N(R€ttagGCDelCompensationResultRR¥R‰RŠ(RFRtresultt
sendMCPack((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR;¶s         (_RRhR,R‡R R‰R R€RR*R]R.t PlayerDBOpert EventReportRÅRR'R5RiRvRÈRytrangeRpRlRuRvRmRR0RqtLimitLVType_Cant Read_State_NoR¨RœR›RR“tobjectRR3R-R;RER[RRŒRiR{R–RªR¬R±RºR†RÀRRÔR%RËRÙRÛRöR\RR÷R$R(R&RÓR8RjRSR-RYRWR:RfRgRZRR‘RšR~RR•R§R¦R­R¸R¹RºR¼R²R;(((saE:\Git\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt<module>sª                          '             .    "    +                                           %             ,    *    :!,5(        +    ;                     L    !        % H    %             &        !    +