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
:Egc@szddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZedƒ\ZZZd„Zd„Zd„Zd„Zd„Zd„Zd    d
„Zd „Zd „Zd „Zd„Zd„Zd„Z d„Z!d„Z"d„Z#gd„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d    d    dd    dd    d„Z*d„Z+d„Z,d„Z-e.d„Z/d „Z0d!„Z1d"„Z2d#„Z3d$„Z4d    dd%„Z5d    d    d    dd&„Z6d'„Z7d(„Z8e9d)„Z:d*„Z;d+„Z<d,„Z=d-„Z>dS(.iÿÿÿÿNic
CsQtjdƒ}tjƒ}t|jƒ}g}d\}}}d}x‹||krÒ|jrÒ|d7}|jd}tj|jƒ}    |    |kr–Pn|d7}|jjdƒ}
|
j    } |
j
} |
j j ƒ} | |j kr9|j | }xGt|ƒD]6\}}| |j
krü|d7}|j|ƒPqüqüWnx“| D]‹}||jkr[q@n|j|}x`t|ƒD]R\}}| |j
kru|d7}|j|ƒ||krÃ|j|ƒnPququWq@WqHWtjƒ}x6|D].} |j| ƒ}|ræt|dtƒqæqæW|rMtjd|||||t|jƒfƒndS(NiùÿÿÿiitisForces€ÒƳý¹ýÆÚµÄδÍê½á¸ÐлÊý¾Ý: doCount=%s,maxDoCount=%s,removeCountTotal=%s,delNoThanksCount=%s,delUnGetThanksCount=%s,remainCount=%s(iii(t    GameWorldtGetDatetimeByDiffDayst PyDataManagertGetPlayerAssistThanksPyManagertlentallAssistThanksListtChangeStrToDatetimetTimeStrtpoptPlayerIDtGUIDtAssistPlayerDicttkeystplayerThanksDictt    enumeratetassistPlayerThanksDicttappendtGetPlayerManagertFindPlayerByIDtSyncCanGetAssistThanksGiftCounttTruetDebugLog(t timeoutDatetassistThanksMgrt
maxDoCounttsyncPlayerIDListtremoveCountTotaltdelNoThanksCounttdelUnGetThanksCounttdoCounttthankst
thanksDatet    popThankstplayerIDR tassistPlayerIDListtplayerThanksListtitassistPlayerIDtassistThanksListt    playerMgrt assistPlayer((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytRemoveOutofdateAssistThanks+sX 
 
         
 
        &cCs€|jƒ}tj|ƒ}|r|tjƒj|ƒ r|tj|ƒ}idd6||gd6}tjt    j
||gƒndS(NtResetPlayerAssistt    queryTypet    queryData( t GetPlayerIDt PlayerControltGetAssistTagPlayerIDRRRtGetPlayerServerGroupIDt CrossRealmMsgtSendMsgToClientServert ShareDefinetCrossServerMsg_CrossAssist(t    curPlayerR"t tagPlayerIDt serverGroupIDtsendMsg((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnPlayerLoginCrossServercs c CsÛt|ƒ|jƒ}|jƒ}tjƒ}||jkrê|j|}gg}}xU|D]M}d|_|js†|j|ƒq^|r^||jkr^|j|ƒq^q^W|rÔt    j
|t |ƒ|gƒn|rêt |ƒqêng}xQ|j jƒD]@}|jrqn|jr3|j|kr3qn|j|ƒqW|rctj|t |ƒƒn||jkr×|j|}|j}    tjd|    |ƒtj||    ƒtjƒ}
|j|
_tj||
ƒndS(Nis#·ÇÍÑ»úÉÏÏߣ¬¼ÌÐøÐ­Öú!tagPlayerID=%s(Rt GetFamilyIDR.RtGetPlayerAssistPyManagertplayerAssistDictt OffLineTimetFamilyIDRt PlayerFamilytSendFamilyFakePacktGetAssistInfoListPacktSyncServerAssistt allAssistDicttvaluest NetPackCommont SendFakePacktplayerAssistingDictR
RRR/tSetAssistTagPlayerIDtChPyNetSendPackttagGCAssistingInfoR t
AssistGUID( R6tfamilyIDR"t    assistMgrtplayerAssistListtserverAssistListtfamilyAssistListt    assistObjtsyncAssistListR7t
assistPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyt OnPlayerLoginosF
                         cCsô|jƒ}tj|ƒr.tj|dƒntjƒ}|jƒ}||jkrYdS|j|}x‡|D]}|jr‚qmnt    t
j
ƒƒ|_ |j s°t |jƒn(|rØ||j krØt||jƒntjd|jƒqmWdS(Nis.Íæ¼ÒÏÂÏߣ¬ÔÝʱ´ÓЭÖúÁбíÒÆ³ýÍæ¼Ò·¢²¼µÄЭÖú: %s(R;R/R0RIRR<R.R=tIsSaveDBtintttimeR>R?tSyncServerClearAssistR tSyncFamilyClearAssistRR(R6RMRNR"RORR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyt OnLeaveServer£s$             cCsªtjƒ}||jkre|j|}x:|ddd…D]"}|jr<t|dtƒq<q<Wn||jkr¦|j|}|jr¦t|||dtƒq¦ndS(Niÿÿÿÿt LeaveFamily(RR<R=R?tOnCancelPlayerRequestAssistRRHtOnCancelPlayerAssist(RMt leavePlayerIDt leavePlayerRNRORR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnPlayerLeaveFamily½s           cCsª|jƒrdS|jƒ}tjƒ}||jkr;dS|j|}x[|ddd…D]F}tj|jƒ}|r\|jƒt    j
kr\t |dt ƒq\q\WdS(Niÿÿÿÿt    LeaveTeam( t    GetTeamIDR.RR<R=RtGetMaptMapIDt GetMapFBTypetChConfigtfbtTeamR]R(R6R"RNRORRtgameMap((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnPlayerTeamChangeÒs    icCsØt|d|ƒt|ddƒt|d|ƒt|ddƒt|ddƒt|ddƒt}|jrxt}n<|j}tj|ƒ}|r´|jƒtj    kr´t
}nt|d|ƒt|d    gƒdS(
NRVtObjIDit ServerGroupIDR>tFacetFacePict
AssistTypetAssistPlayerIDList( tsetattrtAssistType_UnknowntNPCIDtAssistType_BossReRRdRfRgRhtAssistType_TeamFB(tdbDatatisSaveDBR8t
assistTypetassMapIDRi((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnInitAssistDataås                 cCs?t|ddƒt|ddƒt|diƒ|jrr|jjdƒrr|jjdƒrrt|jƒ|_n|jj|ƒ|jsÐ|j    }||j
kr³g|j
|<n|j
|}|j|ƒnxh|jj ƒD]W\}}d|krþqàn||j krg|j |<n|j |}|j|ƒqàWdS(NRmiRnR s{s}tIsGet( Rqt AssistPlayert
startswithtendswithtevalR RRt ThanksStateR
RtitemsR(t    thanksMgrRvR"R$R&tassistPlayerInfotassistPlayerThanksList((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnInitAssistThanksDataús(-           cCs(t|jƒ|_t|jƒ|_dS(N(tstrR R|RtAssistPlayerLen(Rv((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnSaveAssistThanksDatascCsWtjƒj|ƒ}|j}tjƒ}||jkrNtjd|ƒdS|j|}|jt    krndS|j
|j ƒkr”tjdƒdS|j t jk}|r¯n&|j|jƒkrÕtjdƒdS|jƒ}|j }    |j}
tj|ƒ} | s dS| jƒt jkr}|    t jkrBtj|ƒ} n |jƒ} ||    ksf| |
kr}tj|dƒdSn|rí|j
} |j ƒ}|jƒ}tj|| ƒ}idd6||||gd6}tjt j!|ƒdStj|    ƒ}|sdS|jƒt j"krF|j#ƒ}|rFt$j%|||ƒqFnt&||ƒdS(Ns²»´æÔÚ¸ÃЭÖú!assistGUID=%ss ²»ÄÜЭÖú×Ô¼º!s·ÇͬÃËÍæ¼Ò²»ÄÜЭÖú!t AssistFBLimittStartAssistBossR,R-('RRtGetPlayerByIndexRLRR<RDRRoRtR
R.ReRgtDef_CrossMapIDListR?R;tGetMapIDtLineIDRdRftfbtNulltDef_FBMapID_SealDemonR/tGetFBFuncLineIDtGetFBIDt
NotifyCodetGetNamet PlayerFriendtIsFriendR2tSendMsgToCrossServerR4tClientServerMsg_CrossAssistRhtGetTeamt
PlayerTeamtDoPlayerLeaveTeamtSetPlayerStartAssistBoss(tindext
clientDatattickR6t
assistGUIDRNRRt isCrossBosst playerMapIDtmapIDtlineIDt    playerMapt playerLineIDR7R&tassistPlayerNametisFriendR9ttagMaptcurTeam((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnStartAssistBoss%s`                           cCs¶tjƒj|ƒ}|j}|jƒ}tjƒ}||jkrYtjd|ƒdS|j|}||j    kr–tjd||j    f|ƒdSt
||jƒ|dt ƒdS(NsûÓÐÔÚЭÖúÖУ¬ÎÞÐèÈ¡Ïû!s7·ÇÕýÔÚЭÖúÖеÄGUID£¬²»ÄÜÈ¡Ïû!assistGUID=%s,assisting=%st ClientCancel( RRR‹RLR.RR<RHRR R^R(RRžRŸR6R R"RNRR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnCancelAssistBossis       c Csö|j}|j}|j}|j}|j}|j}tjƒj|ƒ}|sftj    d|ƒdS|j
ƒ|krtj    d|ƒdS|j ƒ}    t j ƒ}
|    |
jkrì|
j|    } || jkrìt||    | dtƒqìn||
j|    <|    |jkr|jj|    ƒntj    d|||||f|    ƒtj||ƒ|j ƒ} |jƒ} tj|d| gƒ|jƒ}|jƒ}tj| |ƒ}tjƒ}|d|| | ||||||||g }tjtj|ƒdS(Ns#Íæ¼ÒÒÑÀëÏߣ¬ÎÞ·¨Ð­Öú!tagPlayerID=%ss5Ä¿±êÍæ¼ÒÒѲ»ÔÚÇëÇóЭÖúµÄµØÍ¼£¬ÎÞ·¨Ð­Öú!tagPlayerID=%stStartNewAssistBosss=¿ªÊ¼Ð­Öú: tagPlayerID=%s,mapID=%s,lineID=%s,npcID=%s,objID=%st AssistStarttStart(R R
ReRŽRsRkRRRRRR.RR<RHR^RRpRR/RIR”R“RcR•R–tGetServerGroupIDtSendMapServerMsgExR4tDef_Notify_WorldKey_AssistBoss(R6RRR R7R£R¤tnpcIDtobjIDt    tagPlayerR"RNt assistingObjR&R§t tagPlayerNamet    tagTeamIDR¨R8t
assistData((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRœysF                                     -cCs"|\}}}}tjƒ}||jkr…tjd|ƒdt}}    idd6|||    gd6}
tjtj    |
|gƒdS|j|} | j
t kr¥dS| j |krÅtj dƒdStjƒj|ƒ} | rj| jƒ} | j}| j}tj| ƒ}|sdS|jƒtjkrj| jƒ}| |ksP||krgtj| dƒdSqjn| j }| j}| j}| j}| j}tjƒj|ƒ}|s×tjd|ƒt| d    tƒdS|jƒ|krþtj d
|ƒdS||jkrE|j|}||jkrEt| ||d tƒqEn| |j|<|| j krt| j j!|ƒntj d |||||f|ƒ| r°tj"| |ƒntj|d |gƒ|j#ƒ}|j$ƒ}|d|||||||||||g }tj%tj&|ƒdS(Ns²»´æÔÚ¸ÃЭÖú!assistGUID=%stAssistGUIDNotExisttCancelPlayerRequestAssistR,R-s ²»ÄÜЭÖú×Ô¼º!R‰s#Íæ¼ÒÒÑÀëÏߣ¬ÎÞ·¨Ð­Öú!tagPlayerID=%stCrossPlayerOfflines5Ä¿±êÍæ¼ÒÒѲ»ÔÚÇëÇóЭÖúµÄµØÍ¼£¬ÎÞ·¨Ð­Öú!tagPlayerID=%sR®s=¿ªÊ¼Ð­Öú: tagPlayerID=%s,mapID=%s,lineID=%s,npcID=%s,objID=%sR¯R°('RR<RDRtLogRR2R3R4R5RoRtR
RRRRReRŽRdRfRgRR’R/R“RsRkR]RHR R^RpRRIR”RcR²R³(R8R,R-R R&R§R¨RNtreasont isGameServerR9RRR)R¢R£R¤R¥R¦R7R´RµR¶R·R¸R¹Rº((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytClientServerMsg_StartAssistBoss¯sr              
                            -cCs |\}}}}tjƒrXidd6|||gd6}tjtj||gƒdStjƒj|ƒ}|swdStj    ƒ}||_
t j ||ƒdS(NtAddAssistBossPlayerOKR,R-( Rt IsCrossServerR2R3R4R5RRRJRKRLRFRG(R-R R&R7R8R9R)RT((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnAddAssistBossPlayerOKýs      c
Cs|\}}}tjƒj|ƒ}|s.dStjƒ}||jkr^tjd|ƒdS|j|}tj||ƒ||j    krÂ|j    |}||j
krÂt |||dt ƒqÂn||j    |<||j krñ|j j|ƒntjƒ}    ||    _tj||    ƒdS(Ns²»´æÔÚ¸ÃЭÖú!assistGUID=%sR®(RRRRR<RDRR/RIRHR R^RRpRRJRKRLRFRG(
R,R-R R&R7R)RNRRR·RT((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyt$CrossServerMsg_AddAssistBossPlayerOKs*         c    CsÓ|s dn    |jƒ}|s$dn    |jƒ}|\}}tjd|||f|ƒ|dkrvt||ƒdS|dkrt|ƒdS|dkrA|\}}}    }
} tjƒ} || jkr=| j|} xa| D]V}|j    |krà|j
|krà|j |    krà|j |
kràt || tƒPqàqàWndS|dkræ|\}}}    }
} tjƒ} || jkrâ| j|}|j    |krâ|j
|krâ|j |    krâ|j |
krât|||| tƒqândS|dkrt|ƒdS|dkrt|ƒdS|d    kr7t||ƒdS|d
krƒ|\}}}tjd |||f|ƒtj||ƒdS|d krÏ|\}}} tjd ||| f|ƒtj|dƒdSdS(Nis7ÊÕµ½µØÍ¼Ð­ÖúÐÅÏ¢: familyID=%s,queryType=%s,queryData=%stRequestAssistBossRÂtOnCancelBossRequestAssisttOnCancelBossAssisttOnBossAssistOvertOnFBAssistOvertRequestAssistTeamFBtOnStartAssistTeamFBs3    ¿ªÊ¼Ð­Öú¸±±¾: mapID=%s,lineID=%s,tagPlayerID=%stOnCancelAssistTeamFBs.    ¿ªÊ¼Ð­Öú¸±±¾: mapID=%s,lineID=%s,reason=%s(R.R;RR¾t__DoRequestAssistBossRÄRR<R=ReRŽRsRkR]tFalseRHR^t__DoBossAssistOvert__DoFBAssistOvert__DoRequestAssistTeamFBRR/RI(R6tmsgListRŸR"RMR,R-R£R¤R´RµR¿RNRORRR7((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytMapServer_PlayerAssistLogic.s`    
    <    < 
 
    cCsb|s
dSt|||gƒ}|jddd|t|ƒƒtjd|jƒ||fƒdS(Nit PlayerAssists=ЭÖúÐÅÏ¢·¢ËÍ MapServer: playerID=%s,queryType=%s,queryData=%s(R†tMapServer_QueryPlayerResultRRRR.(R6R,R-tresultt    resultMsg((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytQueryPlayerResult_PlayerAssist|s  c
Cs"tjƒ}|jƒ}| r*| r*dS|\}}}}}}    |jƒ}
d} t} tjƒ} |
| jkrò| j|
}xm|D]b}|j    t
kr¤q‰n||j ksÑ||j ksÑ||j krät|dtƒn|} Pq‰Wn| s"t} t| |||||d|    ƒ} n| s,dStj|dƒd}| sgt|jdƒddƒ}n|jd|ƒ|dd}|rÜ| j}idd    6||||||
||gd
6}tjtj||    gƒnBtj|t| gƒƒtj|d ||jƒ|||gƒdS( NtRequestNewAssistBossR8tAssistRequestOKitAssistBossRequestCountiçiRÆR,R-sAssistBossRequest%s( RRÃR;R.tNoneRÏRR<R=RoRtRsRŽRkR]Rt__AddNewAssistR/R“tmint GetDictByKeytSetDictR R2R3R4R5R@RARBt FamilyNotifyR”(R6R-t isCrossServerRMR£R¤R´RµtnpcLVR8R"t reqAssistObjt addNewAssistRNRORRt requestCountt    notifyNumR R9((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR΄sH      -$    ,)c    Cs~|\}}}}}}}}    tjƒj|ƒ}
|
s=dSd} t} tjƒ} || jkrá| j|}xm|D]b}|jt    kr“qxn||j
ksÀ||j ksÀ||j krÓt |dtƒn|} PqxWn| st} t| |
||||d|    ƒ} ntjd|||||| |    f|ƒ| sDdSt| gƒtjdd||
jƒ|||gƒdS(NRÚR sUÊÕµ½¿ç·þÇëÇóЭÖúboss: %s mapID=%s,lineID=%s,npcID=%s,objID=%s,addNewAssist=%s,GUID=%sisAssistBossRequest%s(RRRRÝRÏRR<R=RoRtRsRŽRkR]RRÞR¾RCR/t WorldNotifyR”(R,R-R£R¤R´RµRäR"RèR R6RåRæRNRORR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyt CrossServerMsg_RequestAssistBoss¹s4   -$      )cCsÆ|d}|d}|dkr1t||ƒdS|dkrNt||ƒdS|dkrkt||ƒdS|dkrˆt||ƒdS|dkr¥t||ƒdS|dkrÂt||ƒdSdS(    NR,R-RÆRÂR¼tCancelPlayerAssisttBossAssistOverR+(RêRÅt(CrossServerMsg_CancelPlayerRequestAssistt!CrossServerMsg_CancelPlayerAssisttCrossServerMsg_BossAssistOvert CrossServerMsg_ResetPlayerAssist(tmsgDataRŸR,R-((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR5ßs*
 
            cCs8|d}|d}|dkr4t|||ƒdSdS(NR,R-RŠ(RÁ(R8RñRŸR,R-((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR˜s 
 
 c CsŠ|jƒ}|sdS|\}}|jƒ}d}t}tjƒ}||jkrÃ|j|}    x^|    D]S}
|
jtkr„qin||
j    ks¢||
j
krµt |
dt ƒn|
}PqiWn|sçt }t ||||ƒ}n|sñdStj|t|gƒƒtj|dƒd} |sEt|jdƒddƒ} n|jd| ƒ| dd} tj|d| |jƒ|gƒdS(NtRequestNewAssistTeamFBRÛitAssistFBRequestCountiçisAssistFBRequest%s(R;R.RÝRÏRR<R=RoRuReRŽR]RRÞR@RARBR/R“RßRàRáRâR”( R6R-RMR£R¤R"RåRæRNRORRRçRè((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRÒs>      #tc
    CsŽ|sttjƒƒ}n|tjk}
|
r6dn    |jƒ} |jƒ} tjƒ} || _    | | _
| | _ |j ƒ| _ |jƒ| _|jƒ| _|jƒ| _|| _|| _|| _|| _t|ƒ| _t| ||    ƒ|| _|jƒ| _|jƒ| _| |j |<| |j!krGg|j!| <n|j!| }|j"| ƒt#j$d| ||||||f| ƒ| S(Nis\    Ôö¼ÓÐÂЭÖúÇëÇó: familyID=%s,mapID=%s,lineID=%s,npcID=%s,objID=%s,exData=%s,assistGUID=%s(%R†tuuidtuuid1RgRŒR;R.tPyGameDataStructt tagDBAssistR R?R
R”t
PlayerNametGetJobtJobtGetLVtLVtGetOfficialRanktRealmLVReRŽRstExDataRt    ExDataLenRzRktGetFaceRmt
GetFacePicRnRDR=RRR(RNR6R£R¤R´RµtexDataRwR R8t crossAssistRMR"RRRO((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRÞ>s<                                          cCsúg}xÉ|D]Á}tjƒ}|j|_|j|_|j|_|j|_|j|_|j|_|j    |_    |j
|_
|j |_ |j |_ |j |_ |j|_t|jƒ|_|j|ƒq Wtjƒ}||_t|ƒ|_|S(N(RJttagGCAssistInfoR RLR
RùRûRýRÿRmRnReRŽRsRRRRttagGCAssistInfoListtAssistInfoListtCount(RQt
assistListRRt
assistInfot infoListPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRBes*                   c
Cs|j}|j}|j}|j}|j}|j}|j}    |j}
|j} t    j
d|||    |
|||| fƒt j ƒ} || j kr™dS| j j|ƒ|| jkrä| j|} || krä| j|ƒqän|tkrŒt    jƒ}xœ|jddd…D]r}|jj|ƒ|| jkr| j|}|j|kr…|j|ƒ}t|||||dtƒq…qqWn|tkr›n|r±t||ƒnt    jƒrü| rüidd6|||gd6}tjtj|| gƒndS(súÈ¡ÏûÍæ¼ÒЭÖú - ·¢²¼·½
    MapServer ´¥·¢È¡Ïû
    1. ¹¥»÷ÁËÁíÒ»Ö»boss
    2. ÖØÐ·¢²¼ÁËÁíÒ»ÌõЭÖúboss/×é¶Ó¸±±¾
    3. ½øÈëЭÖú״̬£¬¼´±¾À´ÔÚ´òͬһֻboss£¬ºóÃæÖ±½Ó¸ÄΪЭÖú
    4. Í˳öÁË·¢²¼Ð­ÖúµØÍ¼
    
    GameServer ´¥·¢È¡Ïû
    5. ±»Ìß/Í˳öÏÉÃË
    shÈ¡Ïû·¢²¼µÄЭÖúÇëÇó: mapID=%s,lineID=%s,npcID=%s,objID=%s,reason=%s,isGameServer=%s, %s, serverGroupID=%sNiÿÿÿÿtisNotifyR¼R,R-(R R
R?RoReRŽRsRkRlRRRR<RDR    R=tremoveRtRRpRHRR^RÏRuRZRÃR2R3R4R5(RRR¿RÀR R"RMRxR£R¤R´RµR8RNROR(t assPlayerIDR·t    assPlayerR9((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR]~sH                                                ) c    Csc|\}}}tjƒ}||jkr.dS|jj|ƒ}|j}|j}tjd||||f|ƒ||jkr­|j|}    ||    kr­|    j    |ƒq­n|t
krUtj ƒ}
x|j ddd…D]r} |j j    | ƒ| |j krÜ|j | } | j|krN|
j| ƒ} t| | |||dtƒqNqÜqÜWnt|ƒdS(NsDÊÕµ½¿ç·þÈ¡ÏûЭÖúbossÇëÇó: %s assistGUID=%s,reason=%s,isGameServer=%siÿÿÿÿR (RR<RDR    R
RoRR¾R=RRtRRpRHR RR^RÏRY(R,R-R R¿RÀRNRRR"RxROR(RR·R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRí¿s.               )
c
Cs5|j}|j}|j}|j}    |j}
|j} |j} tjd|||    |
| |||f|ƒt    j
ƒ} || j kr™| j j |ƒn||j kr»|j j|ƒn|rB|jdƒ}tj|dƒtjƒ}||_|r |tdƒn||_t|jƒ|_||_tj||ƒn|jtkrÑ|r…|d||    | |
g}tjtj|ƒn|rã|rãtj ƒj!|ƒ}|rÎtj"|d|j#ƒgƒqÎqãn|jt$krãntj%ƒr1| r1idd6||||gd6}t&j'tj(|| gƒnd    S(
sÈ¡ÏûÍæ¼ÒЭÖú - Ð­Öú·½
    MapServer ´¥·¢È¡Ïû
    1. ¹¥»÷ÁËÁíÒ»Ö»boss
    2. Í˳öÁ˵±Ç°Ð­ÖúµÄЭÖúµØÍ¼
    
    GameServer ´¥·¢È¡Ïû
    3. ÖØÐÂЭÖúÁËÁíÒ»ÌõЭÖúboss/×é¶Ó¸±±¾
    4. ±»Ìß/Í˳öÏÉÃË
    5. Ö÷¶¯µãÈ¡Ïû
    
        ÆäËû£¬·¢²¼·½È¡Ïû·½Ê½
    6. ·¢²¼·½È¡ÏûÁË·¢²¼µÄЭÖú
    s[È¡ÏûЭÖú: tagPlayerID=%s,mapID=%s,lineID=%s,npcID=%s,objID=%s,reason=%s,isGameServer=%s, %stRequestPlayerCancel_itCancelt AssistCancelRëR,R-N()R R
ReRŽRsRkRlRRRR<RHR    RpRR}R/RIRJttagGCAssistOvertIsTagPlayerReasonRtReasont    ReasonLenRLRFRGRoRtR²R4R³RRR“R”RuRÃR2R3R5(t cancelPlayertcancelPlayerIDRRR¿RÀR R R7R£R¤R´RµR8RNtisTagPlayerReasontoverPackRºR¶R9((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR^ásJ                                #           % cCs„|\}}}}tjƒ}||jkr1dStjd||||f|ƒtjƒj|ƒ}|spdStj|dƒdS(Ns@ÊÕµ½¿ç·þÈ¡ÏûÍæ¼ÒЭÖú: %s assistGUID=%s,reason=%s,isGameServer=%si(    RR<RDRR¾RRR/RI(R,R-R R¿RÀRRNR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRî$s  cCsY|\}}tjd||f|ƒtjƒj|ƒ}|sEdStj|dƒdS(Ns0ÊÕµ½¿ç·þÖØÖÃÍæ¼ÒЭÖú: playerID=%s,tagPlayerID=%si(RR¾RRR/RI(R,R-R"R7R6((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRð6s c Cs«|\}}}}}}}tjƒ}tjƒ}    xø|D]ð}
|
|    jkrUq:n|    j|
} xÅ| D]½} | j|kri| j|kri| j|kri| j|krit    | dt
ƒ|r"|
|kr"||
} | j }idd6||||
|| gd6}t j tj||gƒnPqiqiWq:W| s<| r@dS|rJdStjƒ}xN|jƒD]@\}} |j|ƒ}|sŠqcnt||||| |ƒqcWdS(NRìR,R-(RRÃRR<R=ReRŽRsRkR]RÏRlR2R3R4R5RRRtAddNewAssistThanks(R-R£R¤R´RµtnoAssistPlayerIDListtassistAwardItemIDtassistAwardResultRãRNtnoAssistPlayerIDRORRtassistPlayerDictR8R9R(R"R6((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRÐDs6     <
    &  cCs|\}}}}}}tjd|||||f|ƒtjƒ}|j|ƒ}    |    s`dSt|    |||||ƒ|g}t|    d|ƒxw|jƒD]i\}
} |j|
ƒ} | sÆqŸnd| krØqŸn| d} | d}| |g}t| d|ƒqŸWdS(NsZÊÕµ½¿ç·þbossЭÖú½áÊø: mapID=%s,lineID=%s,npcID=%s,assistAwardItemID=%s,assistPlayerDict=%stCrossNoAssistPlayerAwardt AssistMoneyR–tCrossAssistPlayerAward(RR¾RRRRÙR(R,R-R£R¤R´R RR!R(R6R&R R)t assistMoneyR¨((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRïis*          
 
 c
CsÎ|\}}}}}tjƒ}||jkr4dS|j|}x@|D]8}|j|krH|j|krHt|dtƒPqHqHW| s’| r–dStjƒj    |ƒ}    |    rÊt
|    ||||ƒndS(Nt FBAssistOver( RR<R=ReRŽR]RÏRRRR(
R-R£R¤R RR!RNRORRR6((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRьs   c
CsZ|jƒ}tjƒ}ttjƒƒ|_||_|jƒ|_    ||_
|j ƒ|_ |j ƒ|_|jƒ|_|jƒ|_||_||_||_||_t|ƒ|_tjƒ|_tjƒ|_t|ƒ|_t|jƒ|_t j!ƒ}    t"|    |ƒ|j#ƒ|_$|j%ƒ|_&tj'd|||||f|ƒdS(Ns=Ôö¼ÓЭÖú¸Ðл: itemID=%s,mapID=%s,lineID=%s,npcID=%s,exData=%s((R.R÷ttagDBAssistThanksR†RõRöR tItemIDR;R?R
R”RùRúRûRüRýRþRÿReRŽRsRRRRtGetDailyDateStrt DailyDateStrtGetCurrentDataTimeStrRR|R‡RRR…RRmRRnR(
R6titemIDR£R¤R!R´RR"t    newThanksR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR¢s2                            #cCstjƒ}tjƒ}xÃ|jƒD]µ\}    }
d} |jj|    gƒ} xg| D]_} || jksS|| jkr}qSn|    | j    kr’qSn| j    |    }|jddƒ} PqSW| |
d<tj
d|| f|    ƒq%Wtj
d||f|j ƒƒt |||||||ƒdS(NitTodayGiftCounts1»ñÈ¡½ñÈÕ½ÓÊܸÐл´ÎÊý: itemID=%s,TodayGiftCount=%ss2AddNewAssistThanksEx itemID=%s,assistPlayerDict=%s( RR)RRRRtgetR*R(R RR.R(R6R,R!R£R¤R´RR*RR&tassistPlayerInfoDictR.R„RtinfoDict((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytAddNewAssistThanksExÁs$    
 cCsàtjƒj|ƒ}|j}|j}|jƒ}tjƒ}d}||j    krgtj
d|ƒn7|j    |}    x'|    D]}
||
jkr{|
}Pq{q{W|s»tj
d||ƒntj d||f|ƒ|r?t j ƒ} |s|| _d| _tj|| ƒdS|j| _|j| _|j| _|j| _|j| _|j| _g| _x²|jjƒD]¡\} } d| kr’qtnt jƒ}| |_| d|_| d|_| d|_| d|_| jd    d
ƒ|_| jd d
ƒ|_ | jj!|ƒqtWt"| jƒ| _#tj|| ƒdSt$j%d |ƒ}|s[dS|g}t&|d |ƒ|s~dSd|_'|    j(|ƒtjƒ}x9|jj)ƒD](} |j*| ƒ}|r°t+|ƒq°q°WdS(NsÍæ¼ÒûÓпÉʹÓõÄЭÖú¸ÐлÀñºÐ!s Íæ¼ÒûÓиÃЭÖú¸ÐлÀñºÐ!itemID=%ss+Íæ¼ÒʹÓÃЭÖú¸ÐлÀñºÐ!itemID=%s,isPreview=%si¤yRùRûRýRÿRmiRntAssistThanksGifttUseAssistThanksGifti(,RRR‹R(t    IsPreviewR.RRRÝRtErrLogRRJttagGCUseAssistThanksGiftPreviewReRFRGRŽRsRRtAssistPlayerListR RttagGCAssistPlayerInfoR
RùRûRýRÿR/RmRnRRtAssistPlayerCountt IpyGameDataPYtGetIpyGameDataRÙR€RR RR(RRžRŸR6R,t    isPreviewR"Rt    useThanksR$Rt previewPackR&R0RƒtipyDataR-R(R)((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnUseAssistThanksGiftæsx                                                   cCsštjƒj|ƒ}|j}|jƒ}tjƒ}||jkrYtjd|ƒdS|j|}d}x!|D]}    |    j
rs|    }PqsqsW|sªtjd|ƒdS|j }
t j d|
ƒ} | sÏdS||jkrâdS|j|} | jddƒ} | | jƒkrdnd}tjd|
|||jf|ƒ|rtjƒ}|j |_ |j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_t |jƒ|_!|j"|_"||_#t$j%||ƒdSd| d<t&}x-|jj'ƒD]}d|kr?t(}Pq?q?W|rštjd    |ƒ||j)krš|j)j*|ƒqšn|j*|ƒ| d}xd|D]\}    |j|    jks¸|j |    j krèq¸n||    jkrýq¸n|    j|} || d<q¸Wt+|t&ƒ|jtj,ƒk}|rtt j-d
|j|jƒrtt.j/||
|ƒqtn|
|||g}t0|d |ƒdS( Ns!Íæ¼ÒûÓпɽÓÊÕ¸ÐлµÄЭÖú¸ÐлÀñºÐ!s#ÕÒ²»µ½Íæ¼Ò¿É½ÓÊÕ¸ÐлµÄЭÖú¸ÐлÀñºÐ!R3R.iisH½ÓÊÕЭÖú¸ÐлÀñÎï: itemID=%s,isPreview=%s,isExtraAward=%s,DailyDateStr=%sR{s#    ËùÓÐÈ˶¼¸ÐлÁË£¬ÒƳý¸ÃЭÖú¸Ðл!t FBHelpBattletGetAssistThanksGift(1RRR‹R5R.RRRR6RÝR€R(R;R<R R/tGetAssistAwardCountRR*RJttagGCGetAssistThanksGiftPreviewR
RùRûRýRÿRmRnReRŽRsRRRRt
ExtraAwardRFRGRRERÏRRRR)tGetIpyGameDataNotLogtPlayerFBHelpBattletUpdateGetThanksGiftCountDictRÙ(RRžRŸR6R=R"RR„t    getThanksRR,R@R0ttodayGiftCountt isExtraAwardR?tisAllGett
playerDicttupdateTodayGiftCounttisCurDailyDateR-((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytOnGetAssistThanksGift7s’                                       
 
 $  cCs |jƒ}tjƒ}||jkr+dS|j|}d}x$|D]}|jrE|d7}qEqEW| rw| rwdStjƒ}||_tj    ||ƒdS(Nii(
R.RRRR€RJt tagGCCanGetAssistThanksGiftCountt CanGetCountRFRG(R6RR"RR„t canGetCountRt    countPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyR’s             cCs›|jƒ}|sdStjƒ}g}xL|jjƒD];}|j s8||jks8|jrfq8n|j|ƒq8W|sdStj    |t
|ƒƒdS(N( R;RR<RDRER?R>RRFRGRB(R6RMRNRQRR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pytSyncFamilyAssist§s  "cCs)tjƒ}||_tj||ƒdS(N(RJttagGCClearAssistRLR@RA(RMR t    clearPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRZ·s     cCs©tjtjƒ}t|ƒ}tjƒ}xxt|jƒƒD]d}|j    |ƒ}|dkrdq=n|j ƒ|kr|q=ntj |ƒr‘q=nt j||ƒq=WdS(N(R/tGetFuncLimitLVR4tGameFuncID_PenglaiBossRBRRtxrangetGetActivePlayerCounttGetActivePlayerAtRÝRütGetIsTJGRFRG(R
t funcLimitLVt
clientPackt playerManagerR%tplayer((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRC¾s   cCs²tjƒ}||_tjtjƒ}tjƒ}xxt    |j
ƒƒD]d}|j |ƒ}|dkrmqFn|j ƒ|kr…qFntj|ƒršqFntj||ƒqFWdS(N(RJRWRLR/RYR4RZRRR[R\R]RÝRüR^RFRG(R RXR_RaR%Rb((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyRYÎs       (?R•RR;RFR2R÷RHRJR/R@R4RšRRgRõRXtrangeRrRtRuR*R:RUR[RaRjRzR…RˆR«R­RœRÁRÄRÅRÔRÙRÎRêR5R˜RÒRÞRBR]RíRR^RîRðRÐRïRÑRR2RARQRÏRRVRZRCRY(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerAssist.pyt<module>sr                    8         4                         D        6    N            N     5    &    &         ,'        A    " C            %    #    %    Q    [