hwj35
2025-06-16 12bfd1cd414e0fa14310a800df8288a844d6489f
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
218
219
220
221
222
223
224
225
Ûâ¾gc @s ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZdZdZdZedZdZdZdZdZd    Zd    ZdZd
Zd Zd efd „ƒYZdefd„ƒYZ defd„ƒYZ!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(e)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d „Z1d!„Z2d"„Z3d#„Z4d$„Z5d%„Z6d&„Z7d'„Z8d(„Z9d)„Z:d*„Z;d+„Z<d,„Z=d-„Z>d.d/„Z?de)e)eAddddddd0„
ZBd1„ZCdddd2„ZDddd3„ZEddd4„ZFd5„ZGdddd6„ZHd7„ZId8„ZJd9„ZKddd:„ZLd    d;„ZMdS(<iÿÿÿÿNi2idit    MoveSpeedtEndTimetHelpTickiitMineAreaAwardGetTicktNeighborAreaRefreshTicktDBPyMineAreaAwardManagercBs,eZd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(tplayerAreaAwardDict(tself((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt__init__?s    cCsF|j}||jkr(i|j|<n|j|}|||j<dS(N(tPlayerIDRtGUID(Rt    awardDatatplayerIDt    awardDict((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytAddPlayerAreaAwardCs       cCsŽd}d}d}xH|jjƒD]7}x.|jƒD] }|d7}||jƒ7}q5Wq"Wtjd|t|ƒfƒtj||ƒ|S(Ntiis'Save DBPyMineAreaAward count :%s len=%s(Rtvaluest    getBuffert    GameWorldtLogtlentCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR R ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt GetSaveDataLs
cCs‰tj||ƒ\}}tjd|ƒi|_xPt|ƒD]B}tjƒ}|jƒ||j    |||ƒ7}|j
|ƒq?W|S(Ns Load DBPyMineAreaAward count :%s( Rt    ReadDWORDRRRtxrangetPyGameDataStructttagDBPyMineAreaAwardtcleartreadDataR(RtdatastpostdataslenRt_R ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytLoadPyGameDataZs     
(t__name__t
__module__RRRR%(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR<s                tDBPyMineAreaRecordManagercBs,eZd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(tplayerMineRecordListDict(R((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRls    cCsF|j}||jkr(g|j|<n|j|}|j|ƒ|S(N(R    R)tappend(Rt
recordDataR t
recordList((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytAddPlayerRecordps       cCsˆd}d}d}xB|jjƒD]1}x(|D] }|d7}||jƒ7}q/Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRiis(Save DBPyMineAreaRecord count :%s len=%s(R)RRRRRRR(RRRRR,R+((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRys 
cCs‰tj||ƒ\}}tjd|ƒi|_xPt|ƒD]B}tjƒ}|jƒ||j    |||ƒ7}|j
|ƒq?W|S(Ns!Load DBPyMineAreaRecord count :%s( RRRRR)RRttagDBPyMineAreaRecordRR R-(RR!R"R#RR$R+((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR%‡s     
(R&R'RR-RR%(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR(is                tDBPyMineAreaItemManagercBs}eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zdddd    „Z    d
„Z
d „Z d „Z d „Z RS(cCs|jƒdS(N(tClear(R((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR™s
cCs^i|_g|_i|_g|_g|_g|_g|_g|_i|_i|_    dS(N(
tplayerMineItemDicttallMineItemByEndTimeListtpullingItemListDicttfreeSuperItemListtendSelfItemListtendRobItemListtrealAreaPlayerIDListtfackAreaPlayerIDListtviewAreaPlayerIDDicttneighborIDListDict(R((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR0s                                        cCsL||jkrg|j|<n|j|}||krH|j|ƒndS(N(R9R*(Rt viewPlayerIDt areaPlayerIDtviewPlayerIDList((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytAddViewAreaPlayerID«s   cCs:x3|jjƒD]"}||kr|j|ƒqqWdS(N(R9Rtremove(RR;R=((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytDelViewAreaPlayerID²s cCsn||jkrg|j|<n|j|}||krH|j|ƒn||jkrj|jj|ƒndS(N(R3R*R4R?(RR t mineItemDatatpullingItemList((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytAddPlayerPullingItem¸s  cCsL||jkrg|j|<n|j|}||krH|j|ƒndS(N(R3R?(RR RARB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytRemovePlayerPullingItemÂs   cCsŸ||jkr"|jj|ƒn|jrA|j|j|ƒn|jr`|j|j|ƒn||jkr‚|jj|ƒn|j||j|jƒdS(s~Çå³ý¿óÎ½öÇå³ýÊý¾Ý£¬¶ÔÏó±£Áô£¬Çå³ýºó MineID Îª0
        @param mineItemData: PyGameDataStruct.tagDBPyMineAreaItem()
        N(R2R?R    RDt RobPlayerIDR4t InitMineItemtIndex(RRA((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt ClearMineItemÊs        iRcCs–|jƒ||_||_||_||_ttjƒƒ|_d||_t    |jƒ|_
t |t dƒt |t dƒt |tdƒdS(Ns%si(RR    RGtMineIDtMineTypetintttimetUpdTimetPositionRtPosLentsetattrtMineItemAttr_EndTimetMineItemAttr_MoveSpeedtMineItemAttr_HelpTick(RRAR tindextmineIDtmineTypetposition((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRFÙs
                 cCs||jkri|j|<n|j|}||krE||}n6tjƒ}|j|||ƒ|||<|j|ƒ|S(sœ»ñÈ¡Íæ¼Ò¸£µØ¿óÎï
        @param playerID: ¸£µØÍæ¼ÒID
        @param index: ¿óÎïËùÔÚ¸£µØË÷Òý
        @return: PyGameDataStruct.tagDBPyMineAreaItem()
        (R1RttagDBPyMineAreaItemRFtAddMineAreaPlayerID(RR RTtitemDictRA((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt GetMineItemês    
 cCsW|tkr1||jkrS|jj|ƒqSn"||jkrS|jj|ƒndS(N(tDef_FakeAreaCountR7R*R8(RR ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRYýs  cCsŽd}d}d}xH|jjƒD]7}x.|jƒD] }|d7}||jƒ7}q5Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRiis&Save DBPyMineAreaItem count :%s len=%s(R1RRRRRRR(RRRRRZRA((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRs
c
CsÌtj||ƒ\}}tjd|ƒ|jƒx‹t|ƒD]}}tjƒ}|jƒ||j    |||ƒ7}|j
}|j }||j kr¦i|j |<n|j |}    ||    |<q@Wt ƒ|S(NsLoad DBPyMineAreaItem count :%s(RRRRR0RRRXRR R    RGR1tOnLoadMineItemOK(
RR!R"R#RR$RAR RTRZ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR%s
 
         (R&R'RR0R>R@RCRDRHRFR[RYRR%(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR/–s                    
                
    cCstjƒrdSdS(N(Rt IsCrossServer(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt    DoOnDayEx+s cCs|jƒ}t||ƒdS(N(t GetPlayerIDt__DoMineItemRefresh(t    curPlayerR ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytDoMineAreaFuncOpenNs  cCs›tjƒrdS|jƒ}tjƒ}||jkrYtj|t|gggƒƒnt    |ƒtj
ƒ}|j j |iƒ}|r—t |ƒndS(N(RR^R`t PyDataManagertGetDBPyMineAreaItemManagerR1t NetPackCommont SendFakePackt__GetMineAreaInfoPacktSyncPullingAreaMineInfotGetDBPyMineAreaAwardManagerRtgettSyncMineAwardAward(RbR t mineItemMgrtawardMgrR ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt OnPlayerLoginTs   "
  c
Cs©tjƒrdSttjddƒƒ}tjƒ}x`|jjƒD]O\}}g}x
|D]}||kr‚|j    |ƒq]n||}| s|j
r°|j    |ƒq]n|j }|j }|j }    |j}
|j|ƒ|tkr| r|
r||jkr|jj    |ƒn|r6|j||ƒn|    rU|
rU|j|    |ƒnt|ƒq]W|rDtjd||fƒt|d|ƒqDqDWtƒtƒdS(Nt MineAreaBaseis9Æô¶¯Ä¬Èϲ¹³ä¿ÕλÖÃÎïÆ·: areaPlayerID=%s,emptyIndexList=%strefreshIndexList(RR^tranget IpyGameDataPYt
GetFuncCfgRdReR1titemsR*RIRJt WorkerCountREtRobWorkerCountRYtMineType_SuperR4RCt__RefreshMineItemSpeedtDebugLogRat__SortMineItemt__MakeFackArea( RqRmR<RZtemptyIndexListRTRARVt workerCountt robPlayerIDtrobWorkerCount((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR]is@     
                  ) cCs°tjƒ}t|jƒtkr%dStt|jƒ}d}xk|dkr«|tkr«|d7}||jkrxqAnt|dtƒrAtjd|ƒ|d8}qAqAWdS(NiitisNotifysÐÂÔö¸£µØ¼ÙÈË: %s(    RdReRR1R\RatFalseRRz(Rmt needFackCountt fackPlayerID((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR|•s 
cCs,tjƒ}|jjdtjtƒƒdS(Ntkey(RdReR2tsorttoperatort
attrgetterRQ(Rm((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR{¥s c CsC|j}|j}|j}tj|jtƒ}| s>| rB|S|j}|j}| rf| rf|St    |t
dƒ}|s‚|S||j }    |    dks¢| r¦|S||kr¸dnd}
||    |
} t t d|| ƒtƒ} d| |_t|jƒ|_||_ tjd||||||||    | | f
ƒ| S(Niiÿÿÿÿis%ssŒ¸üпóÎï×ø±ê: playerID=%s,index=%s,mineID=%s,curWorkerCount=%s,robWorkerCount=%s,curPos=%s,moveSpeed=%s,passSeconds=%s,moveDist=%s,updPos=%s(R    RGRIRtToFloatRNtDef_PositionMidRvRwtgetattrRRRMtmintmaxtDef_PositionMaxRRORz( RAtcurTimeR RTRUtcurPostcurWorkerCountR€t    moveSpeedt passSecondstmoveDirtmoveDisttupdPos((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt__RefreshMineItemPositionªs2                              &c
Cs¦|j}|j}|j}| s)| r-dStj|jtƒ}tjƒj    }|j
}|j }| r±| r±t |t dƒt |tdƒ||kr­|j|ƒndStjd||||||fƒ|j}    |j}
t||||    ||
ƒ} | s dS| \} } |j}|| }tjdtj|ƒ| tj|ƒfƒt |t |ƒt |t| ƒ||kr’|j|ƒn|r¢tƒntS(Nis^¸üпóÎïʱ¼äËÙ¶È: playerID=%s,index=%s,mineID=%s,curWorkerCount=%s,robWorkerCount=%s,curPos=%ss(    updTime=%s,needSeconds=%s,endTime=%s(R    RGRIRR‰RNRŠRdReR2RvRwRPRQRRR?Rzt WorkerStatetRobWorkerStatet__calcMineItemSpeedRMtChangeTimeNumToStrR*R{tTrue(RAtisSortR RTRURR2R‘R€tcurWorkerStatetrobWorkerStatetretR’t needSecondstupdTimetendTime((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRyÈsD                                      
    # 
c Cs2| r| rd Stjd|ƒ}|s.dS|jƒ}||krLdnd}|dkrz|}    |}
||} } nt|}    |}
||} } tjddƒ} tjddƒ}tjddƒ}|
t| ƒkró| t| ƒdn| |
}| t|ƒkr#|t|ƒdn || d}d}| dkrz| t|ƒkri|t|ƒdn || d}nt|    ||||ƒ}|dkr¦dS|    t|ƒ}d|d    |d    d
|d
f}tj    d ||||||fƒtj    d ||    |||||||f    ƒ||fS(Nit MineAreaItemiÿÿÿÿitMineAreaWorkCalciis%02d:%02d:%02dii<s_    mineID=%s,curPos=%s,curWorkerCount=%s,curWorkerState=%s,robWorkerCount=%s,robWorkerState=%ssl    moveDir=%s,dist=%s,itemWeight=%s,baseTime=%s,workRatio=%s,battleRatio=%s,needSeconds=%s(%s),moveSpeed=%s(ii(ii(
RstGetIpyGameDatat GetItemWeightRŽtGetFuncEvalCfgRRKtfloatRRz(RURR‘RžR€RŸtipyDatat
itemWeightR”tdistt workerStateR~tbatWorkerCounttworkerStateTimeListtworkerCountRatioListtworkerBattleRatioListtbaseTimet    workRatiot battleRatioR¡R’tneedHms((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRšòs@  
 04 7 #        #cCs tƒdS(N(t__Process_SysRefresh(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnProcessOnMinute!scCs›tjddƒ}|sdStjƒ}|j|jg}||krJdStjdt|ƒƒtj    ƒ}x'|j
j ƒD]}t |dt ƒq}WdS(NtMineAreaSysRefreshis¸£µØÏµÍ³¶¨Ê±Ë¢ÐÂ! %stisSys(RsR¨Rt GetServerTimethourtminuteRtstrRdReR1tkeysRaRœ(tsysRefreshHMListtdayTimet curHourMinuteRmR ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR¶&s   cCsbtjƒ}t|jtjddƒ|ƒt|jtjddƒ|ƒt|ƒt|ƒdS(NR¸ii(    RdRet__Process_EndItemRefreshR5RsRtR6t__Process_SuperItemt__Process_MineItemByEndTimeList(RttickRm((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnMineItemTimeProcess5s  
 
c    CsÝ|s
dSt|ƒ}d}xº|dkrØ|t|ƒkrØ|d8}||}| sa|jrt|j|ƒqn|j}|||kr‘Pn|j}|j}t|d|gƒrË|j|ƒqn|d7}qWdS(NiiRq(RRItpopRMR    RGRa(    t endItemListt    refreshCDRtdoCountRTRARMR<t    itemIndex((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÂ?s( !
 
              c
Cstjƒ}|j}|sdStjddƒ}t|ƒ}d}xÌ|dkr|r|d8}||}| s…|js…|jr˜|j|ƒqFn|j    }|||krµPn|j
}|j }    t j d||    fƒ|j|ƒt||||    ƒt||    gƒqFWdS(NtMineAreaSuperItemiis*³¬¼¶ÎïÆ·¹ýÆÚ! areaPlayerID=%s,itemIndex=%s(RdReR4RsRtRRvRwRÇRMR    RGRRzRHt__OnEndSelfItemtSyncMineAreaItemInfo(
RRmR4tsuperItemExistSecondsRÊRTRARMR<RË((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÃXs.      
 
              cCsàtjƒj}|sdSd}t|ƒ}x®|dkrÛ|rÛ|d8}||}t|tdƒ}||krvPnt|j|j|ƒ}|dkr¿|t|ƒkrØ|j
|ƒqØq.|t kr.|d7}q.q.WdS(Nii( RdReR2RR‹RQt__EndMineItemByTimeR    RGtNoneRÇR‚(RR2RTRÊRAR£R ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÄus$ 
 
   c CsRtjƒ}|j||ƒ}|j}|s1dSd}g}t||ƒ}|dkrj|}    |j}n2|tdkr˜|j}    |j}|    g}nt    St
j d|ƒ}
|
s¸dSt j ƒ} ttjƒƒ| _t| jƒ| _|    | _ttjƒƒ| _|| _|| _|| _tjƒj| ƒtjƒj|    ƒ} | r_t| ƒntjd||||    fƒ|j |ƒt!|    t"|||ƒ||    kr(t!|t#|    ||ƒt$|    |dƒt%||    dƒt
j&ddƒdkr |j'j(|ƒq;t)|dt    d|gƒnt*||||ƒt+||g|ƒt,S(    NiR¤sI¸ù¾Ýʱ¼ä½áÊøÎïÆ·: areaPlayerID=%s,itemIndex=%s,mineID=%s,awardPlayerID=%sR¸iiRRq(-RdReR[RIR—RvRŽRERwR‚RsR¦RRR½tuuidtuuid1R
RtGUIDLenR    RKRLt    AwardTimet AreaPlayerIDRjRRtGetPlayerManagertFindPlayerByIDRlRzRHtAddMineItemRecordtMineAreaRecordType_PulltMineAreaRecordType_BeRobbedt DecRobValuet AddRobValueRtR6R*RaRÍRÎRœ( R<RËRRmRARUtuseWorkerCounttnotifyPlayerIDListExRt awardPlayerIDRªR t awardPlayer((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRЋsZ                                        cCsHtjddƒdkr+|jj|ƒnt|dtd|gƒdS(NR¸iiRRq(RsRtR5R*RaR‚(RmRAR<RË((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÍÏscCsŠ|tkrdStjƒ}||_||_||_||_||_tj    ƒ}|j
|ƒ}t |ƒt kr†|j dƒndS(Ni(R\RR.R    t
RecordTypet TagPlayerIDRIt
RecordTimeRdtGetDBPyMineAreaRecordManagerR-Rt Def_RecordMaxRÇ(R t
recordTypet tagPlayerIDRURR+t    recordMgrR,((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÙ×s                       c Cs\tjƒ}|jtj|tƒ}|s>tjd|ƒdSd}|jt    j
gƒ}tjd||f|ƒtjd||ƒx¥t |ƒD]—\}}|\}    }
|
|kr¾q”n|    |8}    tjd||    f|ƒ|    dkrþ|j |ƒn|    |
g||<|    }|j t    j
|tƒPq”W|jt    j
gƒ}tjd||ƒ|S(NsûÓежԸ£µØ¼Ç¼!is,¼õÉÙÓë¶Ô·½µÐ¶ÔÖµ: tagPlayerID=%s,decValue=%ss    bef robValueList=%ss     tagPlayerID=%s,¸üежÔÖµ=%ss    aft robValueList=%s(RdtGetDBPlayerRecDataManagertGetPlayerRecDataFirstt ShareDefinet Def_PlayerRecType_MineAreaRecordR‚RRztGetUserDataByKeytChConfigtDef_RecDataKey_RobValueListt    enumerateRÇtSetUserDataByKeyRœ( R RètdecValuet playerRecMgrt
robRecDatat setRobValuet robValueListRTt robValueInfotrobValuetpID((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÜés0   
 c CsF|tkrdStjd||f|ƒd}tjƒ}|jtj|tƒ}|j    t
j gƒ}tjd||ƒxLt |ƒD]>\}}|\}    }
|
|kr´qŠn|j |ƒ|    }PqŠW||7}tjd||f|ƒ|jd||gƒ|jt
j |ƒ|j    t
j gƒ}tjd||ƒ|S(Nis,Ôö¼ÓÓë¶Ô·½µÐ¶ÔÖµ: tagPlayerID=%s,addValue=%ss    bef robValueList=%ss     tagPlayerID=%s,¸üежÔÖµ=%ss    aft robValueList=%s(R\RRzRdRêRëRìRíRœRîRïRðRñRÇtinsertRò( R RètaddValueRöRôRõR÷RTRøRùRú((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÝs,     
cCs‡|tkrgStjƒ}|jtj|tƒ}|s>gSg}|jtj    gƒ}x'|D]}|\}}|j
|ƒq`W|S(N( R\RdRêRëRìRíR‚RîRïRðR*(R RôRõt    robIDListtrPlayerRobValueListRøR$Rú((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytGetRobPlayerIDList$s    cCs„|tkriStjƒ}|jtj|tƒ}|s>iSi}|jtj    gƒ}x$|D]}|\}}|||<q`W|S(N(
R\RdRêRëRìRíR‚RîRïRð(R RôRõt robValueDictRþRøRùRú((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytGetRobValueDict3s    cCs2|dks|dkr.t|||||ƒSdS(Nii(t__OnMineHelpRequest(RbtmapIDt
funcLineIDRèt    valueList((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnTurnFightRequestBsc    Cs8|dks|dkr4t|||||||ƒSdS(Nii(t__OnMineHelpOver(RbRRRèRtfightRett awardItemList((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnTurnFightOverJscCs†|jƒ}| s%t|ƒdkr9tjd|ƒdS|d}|d}|dkr€||kr³tjd||ƒdSn3|dkr³||kr³tjd||ƒdSntjƒ}|j||ƒ}    |    j}
|
sôtj    |dƒdS|    j
} | s| |kr$tj    |dƒdStj ƒj ƒ} t |    tdƒ} | rr| | d    krrtjd
|ƒdSt|    t| ƒtS( NisûÓÐÖ¸¶¨valueList!iis²»ÄܰïÖú×Ô¼º! areaPlayerID=%ss-²»ÊÇ×Ô¼ºµÄ¸£µØ£¬ÎÞ·¨×Ô¼ºÇý¸Ï! areaPlayerID=%stMineDisappearedtMineHelpFinishedi'sÒѾ­ÓÐÆäËûÈËÔÚ°ïÖúÖÐ!(R`RRRzRdReR[RIt PlayerControlt
NotifyCodeREt GetGameWorldtGetTickR‹RSRPRœ(RbRRRèRR R<RËRmRARURRÅthelpTick((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRRs> 
 
             cCsT|jƒ}|jƒ}|d}    |d}
|d} tjƒ} | j|    |
ƒ} t| tdƒ| sndS| j}|rŸ||krŸt||    |
dƒn|dkr@t    j
t    j |ƒƒ}|j ddƒ}t    j
t    j |    ƒƒ}|j ddƒ}t jd|g|||gƒt jd|    gg||gƒn|dkrPdStS(NiitouttNameRt MineHelpAwardt MineHelpReqOK(R`tGetNameRdReR[RPRSREt__DoCancelPulltPlayerViewCachetGetCachePropDataDictt FindViewCacheRktPlayerCompensationt SendMailByKeyRœ(RbRRRèRRR    R thelpPlayerNameR<RËtisWinRmRARt robCacheDictt robPlayerNamet areaCacheDicttareaPlayerName((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR{s.  
 
 
      " c     Cs |jƒ}|jƒ}tjd||f|ƒ|s<dS|\}}d}|dkrot|||ƒ}n–|dkr©|\}}t||d|ddd|ƒn\|dkrÅt||ƒn@|d    krtjƒj    ƒ}d \}    }
t
|||    |
ƒn|dkrdS||gS( Ns&MapServer_MineArea mapID=%s,msgList=%stPulltMineItemRefreshtisSupert    queryTypeict
queryValuetMineAreaAwardGetOKtMineRobRefreshii(ii( t GetRealMapIDR`RRzRÑt __DoPullItemRat__DoMineAreaAwardGetOKRRtSyncNeighborAreaInfo( RbtmsgListRR tmsgTypetdataMsgR R%RÅR&R'((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytMapServer_MineArea§s*      "    c     Cs#|\}}}}}}|dks<|tjddƒkrQtjd|ƒdS|dkr}|syt|||dƒndStjd||||||f|ƒtjƒ}    |    j||ƒ}
|
j    } | sîtjd||f|ƒdS|
j
t kr*||kr*tjd||f|ƒdSntj d    | ƒ} | sFdS| j ƒ} tjdd
ƒ}| t|ƒkr„|| dn|d }d}|    jj|gƒ}x |D]˜}|j|krÚ|j|krÚq°n|j|krù||j7}q°|j|kr°||j7}|j|krHtjd ||jf|ƒdSq°q°W||}t|||ƒ}|dkr•tjd |||f|ƒdSttjƒƒ}t|
|ƒ|r˜tj|
jtƒ}||krü|}|}|
j}|
j}n|
j}|
j}|}|}t | |||||ƒ}|s?dS|\}}|r”t!j"ƒ}||_||_#||_||_$t%j&||ƒndSg}||kr¿||
_||
_n$||
_||
_||
_|g}||
_'|    j(||
ƒt)|
t*ƒt+||g|ƒ|gS(NiRpis&²»´æÔڸø£µØÎïÆ·Î»ÖÃË÷Òý! itemIndex=%stcancelsfÇëÇ󸣵ØÀ­ÎïÆ·! areaPlayerID=%s,itemIndex=%s,workerCount=%s,workerState=%s,workerTotal=%s,isPreview=%ss:¸Ã¸£µØÎ»ÖÃûÓпóÎÎÞ·¨À­È¡! areaPlayerID=%s,itemIndex=%ss6¸£µØ³¬¼¶ÎïÆ·£¬½ö×Ô¼º¿ÉÀ­! areaPlayerID=%s,itemIndex=%sR¤iiÿÿÿÿsF²»ÄÜͬʱÇÀ½Ùͬ¸öÈ˶à¸öÎïÆ·! ÒѾ­ÔÚÇÀ¸£µØÎ»ÖÃ: areaPlayerID=%s,index=%ssBûÓй¤ÈË¿ÉÅÉDz! atWorkCount=%s,workerTotal=%s,assignWorkerCount=%s(,RsRtRtErrLogRRzRdReR[RIRJRxR¦t    GetItemLVR¨RR3RkR    RGRvRERwRŒRKRLR—R‰RNRŠR™R˜RštChPyNetSendPackttagGCMineItemPullPreviewRett    ItemIndext NeedSecondsRfRgRMRCRyRœRÎ( R RbR0R<RËR~R­t workerTotalt    isPreviewRmRARURªtitemLVtitemLVWorkerMaxListt    assignMaxt atWorkCountRBt pullItemDatatfreeWorkerCounttassignWorkerCountRRR‘RžR€RŸR R$R¡t
clientPackRß((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR+Ès¢$            *   
                                                             Rc
Cs>tjƒ}|j||ƒ}|j}|s1dSg}|jtkri|j|ƒt||||ƒnŠtt    j    ƒƒ}t
||ƒ||kr©d|_ d|_ n$d|_ d|_d|_|g}||_|j||ƒt|tƒt||g|ƒtjƒj|ƒ}    |    r:t|    d||gƒndS(NitMineAreaCancelPull(RdReR[RIRJRxRHRÍRKRLR—RvR˜RERwR™RMRDRyRœRÎRR×RØtMapServer_QueryPlayerResult(
R R<RËtreasonRmRARURßRRb((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR,s4                                  c  Cs4tjd|||f|ƒ|s/|s/|rOtjd|||f|ƒnd} |tkrÉ|rˆ|jƒ|krˆ|jƒ} n*tjtj|ƒƒ} | jddƒ} tjd| |ƒn| st    dt
j t j ƒƒ} tjd| |ƒng} g}tjƒ}xñt|jƒƒD]Ý}|j|ƒ}|jƒ}|jƒ}|rq| |krqq,n|r||jƒkrq,n|r§||kr§q,n|jƒ}|rÏ|j||gƒn|rá|jƒn    |jƒ}|r,| j||gƒq,q,W| r| rdStjƒ}tjd    d
ƒ}d}d}i}|spttjd    dƒƒ}nx|D]‡}|j||ƒ}|jr°|jsw|j r°qwnd}t"}|rù||krùtj#|ƒ}|r|d7}t$}qntj#| ƒ}|sqwn|jƒ}|jƒ}|rQt%t&dt    d|ƒƒ}nt'j(t)|t)|ƒ}|j*||||||ƒ|t$krµ||j+krµ|j+j|ƒni|d 6|d 6|d 6|d6||<tjd|||||f|ƒqwW|r0|r0t,||j-ƒd|    d|
ƒn|S(sºˢи£µØÎïÆ·
    @param areaPlayerID: ¸£µØÍæ¼ÒID£¬¿ÉÄÜÊǼÙÈË
    @param areaPlayer: ¸£µØÍæ¼ÒʵÀý
    @param isSuper: ÊÇ·ñ³¬¼¶Ë¢Ð£¬Ä¬ÈÏË¢1¸öʱЧÂú¼¶ÎïÆ·£¬Ä¬ÈÏ×Ô¼º¿É²É£¬È¡ÏûºóÏûʧ£¬Ê±¼äµ½Ã»²ÉÒ²Ïûʧ
    @param refreshIndexList: Ö¸¶¨Ö»Ë¢Î»ÖÃË÷ÒýÁÐ±í£¬Ã»ÓÐÖ¸¶¨ÔòֻˢпÉˢеÄ
    @param setPosition: Ö¸¶¨×ø±êλÖã¬Ã»ÓÐÖ¸¶¨ÔòËæ»ú
    @param setItemLV: Ö¸¶¨Ö»Ë¢Ä³¸öµÈ¼¶ÎïÆ·£¬Ã»ÓÐÖ¸¶¨ÔòËæ»ú
    @param setMineID: Ö¸¶¨Ö»Ë¢Ä³¸öID£¬Ã»ÓÐÖ¸¶¨ÔòËæ»ú
    s5ˢи£µØÎïÆ·: refreshIndexList=%s,isSys=%s,isSuper=%ss,    setPosition=%s,setItemLV=%s,setMineID=%sitLVs    È¡Íæ¼ÒµÈ¼¶ playerLV=%sis    È¡ÊÀ½çµÈ¼¶ playerLV=%sNRpit
randMineIDRWRVR;s<    index=%s,randMineID=%s,position=%s,mineType=%s,itemLV=%sR&R'(.RRzR\R`tGetLVRRRRkRtPlayerDBGSEventtGetDBGSTrig_ByKeyRìt"Def_Notify_WorldKey_WorldAverageLvRstIPY_DataRrtGetMineAreaItemCounttGetMineAreaItemByIndext    GetMineIDt
GetLimitLVR4tGetRefreshWeightSuperR*tGetRefreshWeightSystGetRefreshWeightRdReRtR[RIRvRwRÑtMineType_NormaltGetResultByWeightListRxRŒRŽtrandomtrandintRŠRFR4RÎR¾( R<t
areaPlayerR¹R%RRqt setPositiont    setItemLVt    setMineIDR&R'tplayerLVt tagCacheDicttrandWeightListtrandWeightListSupert
ipyDataMgrRTRªRUtlimitLVtweightRmtrandDistt
superCountt superCountMaxt refreshDictRAt randIpyDataRVRGR;RW((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRaTsˆ         
   &' "c
CsZtjƒj|ƒ}|jƒ}|j}|j}|dkrÔ|dkrQ|n|}tjƒ}||jkr‡tj    d|ƒdS||kr¦|j
||ƒnt |ggg||ƒ}    t j ||    ƒn‚|dkrót|||ƒnc|dkrd}t||||ƒn;|dkr=tjƒj|ƒn|dkrVt|ƒndS(Niis²»´æÔڸø£µØ! areaPlayerID=%siiii(RR×tGetPlayerByIndexR`t    QueryTypet
QueryValueRdReR1RzR>RhRfRgtSyncSocialAreaInfoR-R@tSyncAreaRecord(
RTt
clientDataRÅRbR R&R'R<RmRB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnMineAreaViewÂs0                 cCs¿|s
dSg}tjƒ}|tkr8|j|ƒnt|ƒ}|rW||7}nx9|jjƒD](\}}    ||    krg|j|ƒqgqgWx<|D]4}
|j||
ƒ} | jrš|j| jƒqšqšW||j    krõ||j    |7}n|r||7}n|sdSt
||ggd|d|ƒ} t j ƒ} xyt |ƒD]k}|tkrdqLn| j|ƒ}|dksL|jƒ r’qLntj|ƒr§qLntj|| ƒqLWdS(sÄij¸ö¸£µØÎïÆ·±ä¸üʱͬ²½£¬»áͬ²½¸øÏà¹ØÍæ¼Ò
    @param areaPlayerID: ¸£µØÍæ¼ÒID£¬¿ÉÄÜÊǼÙÈË
    @param mineIndexList: ÐèҪͬ²½µÄ¿óÎïË÷Òý
    @param notifyPlayerIDListEx: ¶îÍâÐèҪ֪ͨµÄÍæ¼ÒIDÁбí
    NR&R'(RdReR\R*RÿR:RuR[RER9RhRR×tsetRØRÑt    GetInitOKR tGetIsTJGRfRg(R<t mineIndexListRßR&R'tnotifyPlayerIDListRmtrobPlayerIDListR tneighborIDListRTRARBt playerManagerRb((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRÎésD           !  c    Csl|jƒ}t|ƒ}t|ƒ}g|D]}|gg^q+}t||||ƒ}tj||ƒdS(N(R`RÿRRhRfRg(    RbR&R'R t socialIDListRR<t areaMineListRB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRk s   cCs|jƒ}|}tjƒ}|jj|gƒ}|}|r¤tjddƒd}    |    r›||jtƒ|    krˆt    j
d|ƒdS|j t|ƒng}n|jj|gƒ}|sËt j |jƒt j |jƒ|j|j}
||
kr |
j|ƒnx*|D]"} | |
kr|
j| ƒqqWtjddƒ} |jƒ} tjddƒ}x)|D]!\}}| |kro|} qoqoW|
|  }||j|<t    jd| | |f|ƒng|D]}|gg^qÒ}t|||ƒ}tj||ƒdS(    Nt MineAreaRobiièsÖÜÎ§Ëæ»ú¸£µØË¢ÐÂCDÖУ¡it MineAreaRob2is0Ë¢ÐÂÖÜÎ§Ëæ»ú¸£µØ: realmLV=%s,neighborCount=%s,%s(R`RdReR:RkRsRtt GetDictByKeyRRRtSetDictRVtshuffleR7R8R?tGetOfficialRankR¨RzRhRfRg(RbRÅR&R'R t    isRefreshRmRutneighborIDListBefRÉtareaPlayerIDListt neighborIDBeft neighborCounttrealmLVtofficialNeighborCountListtneedRLVtnCountR<RxRB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR-*sH            
  c
Csë|jƒ}tjƒ}||jkr+dS|j|}|sBdSi}xJ|D]B}|j}||krwg||<n||}|j|jƒqOWg}x-|jƒD]\}}|j||gƒq¨Wt|ƒ}    t    j
||    ƒdS(N( R`RdReR3R    R*RGRuRhRfRg(
RbR RmRBt pullIndexDictRAR<t    indexListRxRB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRiUs(          
 cCsÆtjƒ}tjƒ}||_||_g|_xz|D]r\}}tjƒ}||_|t    kr÷t
j t
j |ƒƒ}    |    j ddƒ|_|    j ddƒ|_|    j ddƒ|_|    j ddƒ|_|rë|j |dƒnd|_ng|_|s!ttjddƒƒ}nxf|D]^}
|j||
ƒ} tjƒ} |
| _| j| _| j| _| j| _| j| _t| jƒ| _d    t | t!dƒ| _"t| j"ƒ| _#t | t$dƒ| _%| j&| _&| j'| _'| j(| _(| j'rvt
j t
j | j'ƒƒ} | j ddƒ| _)| j ddƒ| _*| j ddƒ| _+| j ddƒ| _,n|jj-| ƒq(Wt|jƒ|_.|jj-|ƒq:Wt|jƒ|_/|S(
s² »ñȡͬ²½¸£µØÏêϸÐÅÏ¢°ü
    @param areaMineList: [[areaPlayerID, mineIndexList], ...] °´Ö¸¶¨¸£µØID˳ÐòÁбí»ñÈ¡£¬mineIndexListΪ¿Õʱͬ²½¸Ã¸£µØÈ«²¿ÎïÆ·£¬·ñÔòֻͬ²½Ö¸¶¨Ë÷ÒýÎïÆ·
    RRtJobitFacetFacePicRpis%s(0RdReR5ttagGCMineAreaInfoRiRjtAreaListt tagGCMineAreaR    R\RRRRkt
PlayerNameRŠR‹RŒtRobValuet MineItemListRrRsRtR[t tagGCMineItemRGRIRJRMRNRROR‹RRRtSpeedLenRQRRvRERwt RobPlayerNametRobJobtRobFacet
RobFacePicR*t    MineCountt    AreaCount(RxR&R'RRmRBR<RrtareaInfot    cacheDictRTRAtmineItemR((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRhmsX                    $                     cCsU|jƒ}tjƒ}|jj|gƒ}tjƒ}g|_xê|D]â}tjƒ}|j    |_    |j
|_
|j |_ |j |_ ||j
kr|j
t krtjtj|j
ƒƒ}|jddƒ|_|jddƒ|_|jddƒ|_|jddƒ|_n|jj|ƒqIWt|jƒ|_tj||ƒdS(NRRRŠiR‹RŒ(R`RdRåR)RkR5ttagGCMineAreaRecordInfotAreaRecordListttagGCMineAreaRecordRâRãRäRIR\RRRt TagPlayerNametTagJobtTagFacet
TagFacePicR*Rt RecordCountRfRg(RbR RéR,RBtrecDatat
recordInfoR]((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRl s*             c    Cs{tjƒj|ƒ}|jƒ}||jtƒdkrNtjd|ƒdStjƒ}|j    j
|iƒ}|s‰tjd|ƒdSi}g}x¼|j ƒD]®\}    }
|
j } |
j } |
j} |
j}tjd| ƒ}|sðq¢n|jƒ}|jƒ}|jƒ}|j
|dƒ|||<|j| | || |||gƒq¢W|jt|ƒt|d|gƒdS(Ni's½áË㸣µØ½±ÀøÇëÇóCDÖУ¡sµ±Ç°¸£µØÍæ¼ÒûÓдýÁìÈ¡½±Àø£¡R¤itMineAreaAwardGet(RR×RhR`R{RRzRdRjRRkRuRIRÕRvRÖRsR¦t    GetItemIDt GetItemCountR4R*R|RD(RTRmRÅRbR RnR t awardItemDictt awardInfoListR
R RUt    awardTimeR~R<RªtitemIDt    itemCountR;((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pytOnMineAreaAwardGet¾s8                     &cCsŽ|jƒ}|\}}|jtdƒtjƒ}|jj|iƒ}|sSdStjdt    |ƒ|ƒi|j|<t
|d|ƒdS(Nis¸£µØ½áËã½±ÀøOK: %si( R`R|RRdRjRRkRRzRRl(RbR0R R$R    RnR ((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyR,ás    cCsStjƒ}||_|r-t|ƒ|_nt|jƒ|_tj||ƒdS(N(    R5ttagGCMineAreaAwardInfot    AwardTypeR½t    AwardInfoRtAwardLenRfRg(Rbt    awardTypeR    RB((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRlòs     cCsRt|||gƒ}|jddd|t|ƒƒtjd||jƒƒdS(NitMineAreas¸£µØ·¢ËÍMapServer: %s(R½RDRRRR`(RbR&t    queryDataR t    resultMsg((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyRDýs(NRïRRfRdR5RRRRIR RsRìRR‡RVRLRÒR\RæRŽRŠRRRQRSRTRxRÚRÛRRtobjectRR(R/R_RcRoR]R|R{R—R‚RyRšR·R¶RÆRÂRÃRÄRÐRÍRÙRÜRÝRÿRRR
RRR1R+RRÑRœRaRnRÎRkR-RiRhRlR°R,RlRD(((sdE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMineArea.pyt<module>s’                 
--•    #            ,             *    /            
                D                                    )    ,    !    d ('n    '7
+    3        #