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
z`c@s)ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Z d „Z!d„Z"d„Z#dd„Z$d„Z%dgd„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d „Z5d!e6fd"„ƒYZ7d#„Z8d$„Z9d%„Z:d&„Z;d'„Z<d(„Z=dgd)„Z>d*„Z?d+„Z@d,„ZAeBd-„ZCd.„ZDdd/„ZEd0„ZFd1„ZGd2„ZHd3„ZId4„ZJd5„ZKd6„ZLd7„ZMd8„ZNd9„ZOd:„ZPdS(;iÿÿÿÿNicCsþg}d}t|ƒ}tj|ƒ}||krNtjd||fƒdStjd||fƒxq||D]e}x\|D]T}t|ƒ}t|ƒ}|dkr­q}nt|dƒtjd||fƒq}WqpWtj    ||ƒtjd|ƒdS(NtResetBossKilledCntVers,ÒѾ­ÖØÖùýboss±»»÷ɱ´ÎÊý!curVer=%s,maxVer=%ss*¿ªÊ¼ÖØÖÃboss±»»÷ɱ´ÎÊý!curVer=%s,maxVer=%sis/    ÖØÖÃboss±»»÷ɱ´ÎÊý: bossID=%s,Òѱ»É±´ÎÊý=%ss    ÖØÖóɹ¦: maxVer=%s(
tlentPlayerDBGSEventtGetDBGSTrig_ByKeyt    GameWorldtDebugLogtLogt__GetBossRecDataByIDt__GetKilledCntt__SetKilledCnttSetDBGSTrig_ByKey(t resetVerInfot
resetDBKeytmaxVertcurVertresetBossIDListtbossIDt bossPrizeRect    killedCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#CheckResetBossKilledCntOnServerInitJs&       cCsÏt|ƒdkrdS|d}|dkr0dS|\}}}}}}}}    tj|ƒ}tjƒr‰tj||||||    ƒdSt}
t|ƒ} t    |ƒ} tj
d||||| | fƒ| rè| rètj dƒdSt t j ƒƒ} t|ƒ}t|| ||ƒ|
rVt|ƒ}t||dƒtj d||fƒn|r“t|dƒt|| ƒtd|gƒt|ƒntjddƒ}||kr¾t|ƒnt||    ƒdS(Nisk»÷ɱÊÀ½çboss DoGameWorldBossOnKilled...bossID=%s,hurtValue=%s,mapID=%s,tick=%s,isMapNeedShunt=%s,isAlive=%ssPÐèÒª·ÖÁ÷µÄµØÍ¼boss±»»÷ɱ£¬µ«Êǵ±Ç°bossÈ«¾Ö״̬ΪËÀÍö״̬£¬²»ÔÙ¸üÐÂboss»÷ɱÐÅÏ¢£¡is5    addBossKillCnt: killPlayerName=%s,befKilledCnt=%stFairyGrabBossID(RtPlayerFBtGetRecordMapIDRt IsCrossServert    CrossBosstDoCrossBossOnKilledtFalsetIsMapNeedBossShuntt __GetIsAliveRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotNonetSendMapServerBossKilledCntt IpyGameDataPYtGetFuncEvalCfgtOnFamilyKillHorsePetRobBosstOnBossFirstKill(tmsgListttickRtkillPlayerNamet    hurtValuetisNotifytmapIDt    realMapIDt    copyMapIDt killerIDListt isAddKillCnttisMapNeedShunttisAlivet
killedTimeRt befKilledCntthorsePetRobBossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilledjsF
                  cs”xKtjD]@}||dkr
|r3||d<n|rF||d<nPq
q
Wttjƒƒ‰tjjd‡fd†ƒtjdtjƒdS(Niiitkeycstd|dˆ|dƒS(Niii(tmax(tasd(tcurTime(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<lambda>¦ss'    PyGameData.g_sortBOSSRefreshList=%s(t
PyGameDatatg_sortBOSSRefreshListRRtsortRR(RR5t refreshTimetbossInfo((R<s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshLists  c CsSt|ƒdkrdS|\}}}}}tj|ƒ}tjƒrctj|||||ƒdS|}tjd|||||fƒ|dkr™dStj    dƒ}||k}    t
|ƒ}
|sÙt |||ƒn|    rõt ||||
ƒn|t |ƒkr't||ƒtd|gƒn|rO|tjkrOtjj|ƒndS(Nis?ÊÀ½çboss״̬±ä¸ü: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%st    BossShunt(RRRRRRtDoCrossBossStateChangeRR%R&RtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRR R"R#R>tg_familyOwnerBossInfotpop( R)R*RR4R.R/R0tlineIDtbossShuntMapIDListtisBossShuntMapR3((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnGameWorldBossStateChangeªs0      cCs™|dkrdStjj|iƒ}|j|ƒ|kr>dS|||<|tj|<|s_dS|tjkrtjj|ƒntjdtjƒdS(Ns    ·ÖÁ÷BossÏß·״̬±ä¸ü: %s(R#R>tg_bossShuntLineStatetgettg_bossShuntStateChangeBosstappendRR(RRJR4R3tbossLineStateDict((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRGÏs 
 cCs”tƒ}d}xEt|jƒƒD]1}|j|ƒ}|jƒ|kr"|}Pq"q"W|dkrtjd|ƒ|jƒ}|j    |ƒn|S(Ns)ÊÀ½çboss id=%s Î´ÕÒµ½ÒÑÓмǼ£¡Ìí¼ÓмǼ(
t__GetBossPrizeRecDataR#txrangetCounttAtt    GetValue1RRtAddRect    SetValue1(RtrecTypeListDatatbossRectindextuniversalRecData((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRås      cCs|j|ƒdS(N(t    SetValue3(trecR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR    ús cCs
|jƒS(N(t    GetValue3(R_((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRýscCs!tjƒjtj||ƒdS(N(Rt GetGameWorldtSetDicttChConfigtDef_WorldKey_BossIsAlive(RR4((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR scCstjƒjtj|ƒS(N(RRat GetDictByKeyRcRd(R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR
scCsªt|ƒ}|r!|jdƒng}|rJ|jd|||fƒn|jd||fƒt|ƒdkr}|d=ndj|ƒ}|j|ƒ|j|ƒdS(Ns|s%s_%s_%ss%s_%sii(t__GetKillRecordtsplitRQRtjoint SetStrValue3t    SetValue2(R_R5t
playerNameR,t
killRecordtkillRecordList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRs 
  cCs
|jƒS(N(t GetStrValue3(R_((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRf$scCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRZ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRS,s     cCsdS(N((R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR$3scCs¤tjƒj|ƒ}|j}|s?t|ƒtj|ƒdS|d}tjd|ƒ}|sedS|j    ƒ}|t
j kr“tj||ƒn t||ƒdS(NitBOSSInfo( RtGetPlayerManagertGetPlayerByIndext
BossIDListR"RtSync_CrossBossInfoR%tGetIpyGameDatatGetMapIDRctDef_CrossMapIDList(R\t
clientDataR*t    curPlayert
bossIDListRtipyDataR.((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryBossInfoOs    
 
  cCs,ttjƒƒ}tjƒ}tƒ}g|_x.t|jƒƒD]}|j|ƒ}|j    ƒ}|spqCn|rˆ||krˆqCnt
j d|ƒ}|s¦qCn|j ƒ}    |    t jkrÇqCntjƒ}
||
_t|
jƒ|
_t|ƒ|
_t|
jƒ|
_|jƒ} t|
jƒ} td| || ƒ|
_| |
_|jj|
ƒqCW|jsndSt|jƒ|_|stjƒ} x“t| j ƒƒD]Y}| j!|ƒ}|dks¥|j#ƒ rÙq¥nt$j%|ƒrîq¥nt&j'||ƒq¥Wn#t$j%|ƒrdSt&j'||ƒdS(NRui((RRtChPyNetSendPackttagGCGameWorldBossInfoRSt BossInfoListRTRURVRWR%RzR{RcR|ttagBossInfoObjtBossIDRtIsAliveRft
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR:t RefreshSecondt    RefreshCDRQtBossCntRRvtGetActivePlayerCounttGetActivePlayerAtR#t    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack(R~tsyncBOSSIDListR<RBRZR\R]RR€R.t bossInfoObjR5RAt playerManagerti((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"esV                          c stjtj|ƒsdStjƒr6tj|ƒdSttjƒƒ‰t    ˆ|ƒt
ˆƒt j sNxÄt tjƒjƒƒD]ª}tjƒj|ƒ}|jƒ}|jƒ}|tjkrÉqnt|ƒ}|jƒ}| s|dkrúqn|jƒ}t|ƒ}t j j|||gƒqWt j jd‡fd†ƒng}    xªt j D]Ÿ}
|
\}}}t|ƒ} | r‹q^ntd|ˆ|ƒ} | dkr²Pnt|dƒ|    j|ƒtjtj |dƒtj!d||| fƒq^W|    rt"d|    ƒndS(Nt0R9cstd|dˆ|dƒS(Niii(R:(R;(R<(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=¹siis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s($RtSetWorldDictKeyRctTYPE_WorldBossProcessTickRRtDoCheckCrossBossRebornRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR>R?RTR%tIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDR{R|RtGetRefreshTimeRŠR‹RQR@RR:R tSendMapServerMsgExRot'Def_Notify_WorldKey_GameWorldBossRebornRR"R#( R*R™R€RR.RtrefreshTimeStrR5RAR–RBR4t rebornSecond((R<s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossReborn¡sP   
                  cCsdS(N((R*((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTuiÙscCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RRŠR‹RRR:R(RRR5RAR<R¨R4((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossIsAliveOrCanRebornïs    cCs˜x‘ttjƒjƒƒD]w}tjƒj|ƒ}|jƒ}|jƒ}|tjkraqnt    |ƒ}|syqnt
j t j |dƒqWdS(Ni(RTR%R R¡R¢R£R{RcR|RRR¥RoR¦(R™R€RR.R4((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBossüs   cCstj|ƒt|ƒtjƒj|ƒtdƒrCt|ƒntj    ƒ}|j
t j t jƒ}|r{t|ƒndS(Ni(Rt OnPlayerLoginR"t PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRRaReRct!Def_WorldKey_OperationActionStateRotOperationActionName_BossReborntSync_BossRebornPoint(R~t    gameWorldtstate((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR­ s 
    cCs‰tjƒrtjƒdStƒtƒtdƒrctjtj    t
j ƒtjtj t
j ƒnt
jr…tjtjt
jƒndS(Ni(RRRtOnCrossMapServerInitOKR$R¬RtSendCommMapServerMsgRot#Def_Notify_WorldKey_BossShuntPlayerR>tg_bossShuntPlayerInfot&Def_Notify_WorldKey_BossShuntLineStateRNt"g_familyKillHorsePetRobBossCntDictR¥t0Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnMapServerInitOKs 
     cCsI|d}tjƒj|ƒ}|r8|jƒ|d<nt||ƒdS(Nii(RRvtFindPlayerByIDtGetNametOnKillBossDropGoodItem(R)R*tplayerIDR~((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCrossServerMsg_DropGoodItem/s 
 c
CsÍt|ƒdkrdS|\
}}}}}}}}    }
} tjd||||||    |
fƒtjdƒ} | sydStjƒrÑ|
sdStj||
ƒ} | s«dS| jƒ}t    j
t j ||ƒdSt j }tjƒ}|j|ƒ}| |jƒkrUttjƒƒ}tjddƒddd}|jdƒ}|jƒ}|||krr|jdƒqUg}xWt|jƒƒD]C}|j|ƒ}|jƒ}|jƒ}|j|||gƒq‹W|jd|    |gƒt|d    d
„d tƒ}|d }|jd    d „ƒ|rU|dddkrU|j|ddƒqUntjd||d|||||    g|d|
| f|gƒ|||||||
| |g    }tj dd|ƒdS(Ni
sl»÷ɱBossµôÂäºÃÎïÆ·: mapID=%s,npcID=%s,killerName=%s,itemID=%s, userData=%s, weightValue=%s, serverGroupID=%st DropRecordNumiii<iiÿÿÿÿR9cSs|dS(Ni((R;((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=bstreverseicSs|dS(Ni((R;((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=dsids%s|%st
DropRecord(!RRRR%t
GetFuncCfgRtCrossRealmPlayert"GetCrossZoneIpyDataByServerGroupIDtGetServerGroupIDListt CrossRealmMsgtSendMsgToClientServerRoRÃt-Def_UniversalGameRecType_BossDropGoodItemInfoRqRrRURRRVtGetTimetDeleteRTt    GetValue5RQtsortedtTrueR@tPlayerUniversalGameRectMapServer_UniversalGameRecR#R’t WorldNotify(R)R*RÂt
killerNameR.RJtnpcIDtitemIDtuserDatat weightValuet serverGroupIDtplayerLVt maxRecordCntt zoneIpyDatatserverGroupIDListRsRtt
recordListR<t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR™trecDatatsaveTimetcurWeightValuet
commonList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÁ8sX$              
&!cCsçtjtj|ƒsdStjƒr)dStjdƒi}xttjƒj    ƒƒD]s}tjƒj
|ƒ}|j ƒ}|j ƒ}|tj krqUn|jƒ}d|krU|jƒ||<qUqUWi}tjƒ}xÇt|jƒƒD]³}|j|ƒ}    |    dksñ|    jƒ r%qñntj|    ƒr:qñn|    jƒ}
x[|jƒD]M\} } | d|
ko~| dknrS|j| dƒd|| <qSqSWqñWtjd|ƒx'|jƒD]\} } t| | ƒqÆWdS(NsÊÀ½çbossÔÚÏßÈËÊýͳ¼Æt    onlineCntiis#    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þÔÚÏßÈËÊý %s(RR›RctTYPE_WorldBossOnlineCntTickRRRTR%R R¡R¢R£R{R|R¤t
GetLVLimitRvRRR#R‘R’R“tGetLVtitemsROtSetBossOnlineHeroCnt(R*tbossRebornDictR™R€RR.R§t playerCntDictR˜t
findPlayertfindLVtbossidtlvLimitt curOnlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCntus>        $%cCsßtjd|ƒ}|sdSt|ƒ\}}| sYt||ƒd||jƒkrh|}d}n1||jƒkr‰|}d}n|}|d7}|d|}tjtj    ||ƒt
j d||||fƒdS(s ÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýRuNidiisiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s( R%Rzt__GetBossOnlineHeroCnttabst
GetDiffPertGetNoUpdataCntRR
Rot*Def_Notify_WorldKey_GameWorldBossOnlineCntRR(RótonlieCntR€tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRîœs +        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRRoRû(Rót    beforeNumRüRþ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR÷³sc        Cs&tjd|ƒ}|sdSt|ƒd}|jƒ}tjtjƒ}|dkr½|r½t|ƒdkr½tgtj    j
ƒD]0}|d|ko¦|dknrd^qƒ}ntj dƒ}t |j ƒƒ}tjtj||ƒt|||ƒtjd||||fƒdS(sÉèÖÃbossË¢ÐÂʱ¼äRuNiiitFirstDayActivePlayerCntsJ    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,yesterdayCnt=%s,refreshTime=%s(R%tGetIpyGameDataNotLogR÷RëRRt Def_ServerDayRR>tg_yesterdayPlayerLVDicttvaluesRÇtevalR¤R
tDef_BossRefreshTimeRCRR(    RóR5R€RétLVLimitt openServerDaytlvt yesterdayCntRA((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR!¹s $OcCstjtj|ƒS(s»ñÈ¡bossË¢ÐÂʱ¼ä(RRR(Ró((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR‹ÌscCsJtjƒj|ƒ}|j}|j}tjƒj|jƒ||ƒdS(N(    RRvRwR†tIsAddR®R¯tUpdateBossAttentiont GetPlayerID(R\R}R*R~RtisAdd((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnAttentionBossÙs
        tBossAttentionManagercBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(tbossAttentionDict(tself((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__init__çs    cCs|jS(N(R(R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossAttentionDictëscCs||jkr•|j|}t|jƒ}|r>|||<n|j|dƒ|sq|jƒ|jj|ƒqót|ƒ|_t|jƒ|_n^|sŸdStj    ƒ}|jƒ||_
ti||6ƒ|_t|jƒ|_||j|<t j d|||fƒdS(Nis/¸üÐÂBOSS¹Ø×¢¼Ç¼ playerid=%s,bossid=%s,isAdd=%s( RRt
RecordDataRItcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RtplayeridRóRtbossAttentionDatat
recordDictt bossAttention((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRïs*  
 
     cCsÐtj|ƒrdS|jj|jƒƒ}|s5dSt|jƒ}tjƒ}g|_    xN|j
ƒD]@\}}tj ƒ}t |ƒ|_ ||_|j    j|ƒqfWt|j    ƒ|_tj||ƒdS(N(R’R“RRORRRR‚ttagGCBossAttentionInfotBossListRíttagGCBossAttentionRR†tAddStateRQRRŽR”R•(RR~t attentionDatat bttentionDicttpackDataRótaddStateRB((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR° s           cCswd}d}d}x1|jjƒD] }|d7}||jƒ7}q"Wtjd|t|ƒfƒtj||ƒ|S(Ntiis SaveBossAttention cnt :%s len=%s(RRt    getBufferRRRtCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR&((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt GetSaveData!s
cCs’tj||ƒ\}}tjd|ƒi|_xYt|ƒD]K}tjƒ}|jƒ||j    |||ƒ7}|j
}||j|<q?W|S(NsLoadBossAttention cnt :%s( R,t    ReadDWORDRRRRTRRRtreadDataR(RtdatastpostdataslenR0t_tdataRÂ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameData-s     
    (t__name__t
__module__RRRR°R1R9(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRås                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NRDii(R%RÇRRRRÒR&R(R.tbossShuntMaxServerDayR
RK((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR>s 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R>RºRR¸RoR¹(R)R*R.RJtshuntPlayerDictR9((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_WorldBossShuntInfoIs
  c Csâtjs dS|jƒ}t}xtjjƒD]Œ\}}|\}}xq|jƒD]c\}}|\}    }
} ||
krqTn||d<t}tjd|||    ||
| |fƒqTWq/W|rÞtjt    j
tjƒndS(NisbBoss·ÖÁ÷Íæ¼Ò¶ÓÎé±ä¸ü:mapID=%s,lineID=%s,npcID=%s,playerID=%s,teamID=%s,relatedTick=%s,updTeamID=%s( R>Rºt    GetTeamIDRRíRÒRRR¸RoR¹( R~t    updTeamIDt isNeedSyncMapR9R=R.RJRÂt    shuntInfoR×tteamIDt relatedTick((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChangeQs"       
    %c    Csá||f}|tjkrdStj|}g}xM|jƒD]?\}}|d}||kr?|j|ƒ|j|ƒq?q?W|s›tjj|ƒn|rÝtjtjtjƒtj    d||||tjfƒndS(NisP    Çå³ýbossÏß··ÖÁ÷Íæ¼Ò: mapID=%s,lineID=%s,bossID=%s,removePlayerIDList=%s, %s(
R>RºRíRIRQRR¸RoR¹R(    R.RJRR9R=tremovePlayerIDListRÂRBR×((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRFfs"  
      c CsOtjrK|ddkrKtjtjtjƒtdtjƒgt_n|ddkr_dSd}t    }x¾tj
j ƒD]­\}}|\}}xy|j ƒD]k\}}    |    \}
} } | s || |krØq nt }|j |ƒtjd|||
|| fƒq W|s{tj
j |ƒq{q{W|rKtjtjtj
ƒndS(Niii
i ¿sFBoss·ÖÁ÷ÒÆ³ý³¬Ê±Íæ¼Ò:mapID=%s,lineID=%s,npcID=%s,playerID=%s,teamID=%s(R>RPRR¸RoR»RNR±R#RRºRíRÒRIRR¹( R<R*t    ProceTimeRAR9R=R.RJRÂRBR×RCRD((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRž}s,   $c
Cstjs dS|jƒ}|jƒ}|jƒ}|jƒ}t}xŸtjjƒD]Ž\}}|\}}    ||kr‰||    kr‰qSn||krSt}|j    |ƒt
j d||    ||fƒ|sátjj    |ƒqáqSqSW|rt
j t jtjƒndS(NsJÇÐÍ¼ÒÆ³ýÆäËûµØÍ¼Ïß·boss·ÖÁ÷Íæ¼Ò: mapID=%s,lineID=%s,playerID=%s,teamID=%s(R>RºR?RR{tGetFBIDRRíRÒRIRRR¸RoR¹(
R~RCRÂt playerMapIDt playerLineIDRAR9R=R.RJ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMapšs(           c Cs§|stjjƒ}ntjƒ}|jƒg|_x¯|D]§}tjj|iƒ}g}g}x4|jƒD]&\}}|j    |ƒ|j    |ƒqrWtj
ƒ}    ||    _ ||    _ ||    _ t|    j ƒ|    _|jj    |    ƒq>Wt|jƒ|_|s€tjƒ}
x“t|
jƒƒD]Y} |
j| ƒ}|dks |jƒ rTq ntj|ƒriq ntj||ƒq Wn#tj|ƒr“dStj||ƒdS(N(R>RNtkeysR‚ttagGCBossShuntLineStateInfotCleartBossLineStateInfoRORíRQttagGCBossShuntLineStateR†t
LineIDListt    StateListRt    LineCountRURRvRTRRR#R‘R’R“R”R•( R~R–tbossShuntLineInfoRRRt
lineIDListt    stateListRJR¶t bossLineStateR˜R™((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR±¶s@ 
                    cCstjtjdƒtƒdS(Ni(RR
tDef_BossRebornCntR´(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytBossRebornOnDayExÞscsøtjƒ}|jtjtjƒ}|s<tjdƒdS|jtjƒ}|s`t    ƒ}n|swtjdƒdSt
j t
j ƒ}t jddƒ}|rÂ||krÂtjd|ƒdSt
j t
jƒ}|||}t
jt
j|ƒ|||kr‰t
jt
j |dƒt jddiƒ}g}    xH|jƒD]:\}
} | tjtjgkrnqDn|    t|
ƒ7}    qDWtjd|    ƒg} xttjƒD]n\} }|\}}}||    krÖq©nt|ƒ}|rîq©nd    }|||gtj| <| j|ƒq©Wttjƒƒ‰tjjd
‡fd †ƒtjd | ƒˆatj tj!tjttjƒƒƒndt jd ƒ}xR|D]J}||d}||koÊ|knrŸt"j#d    d|gƒPqŸqŸWt$ƒdS(Ns Ôö¼Óboss¸´»îµã »î¶¯Î´¿ªÆôs" Ôö¼Óboss¸´»îµã Ã»ÓÐ×ܵãÊý£¡£¡£¡£¡tBossRebornTotalPointis( boss¸´»îÒÑ´ïµ½×î´ó´ÎÊý! maxRebornCnt=%sitKillBossCntLimitscanRebornBossIDList=%siR9cstd|dˆ|dƒS(Niii(R:(R;(R<(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=ss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(%RRaReRcR²RoR³Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRRXR%RÇRtDef_BossRebornPointR
R&RítDef_Boss_Func_WorldtDef_Boss_Func_Hometlistt    enumerateR>R?RRQRRR@tg_lastBossRebornTimeR¥t(Def_Notify_WorldKey_ActionBossRebornSignR’RÕR´(taddPointRµR¶t
totalPointt    rebornCntt maxRebornCnttcurPointtupdPointtkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyRR™RBRR5RAR4tneedNotifyPointPerListtpointPertnPoint((R<s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPointäsh      ) cCs·tjtjdƒtjtjdƒtjdƒ}tgtjj    ƒD]}||krHd^qHƒ}t
tj ddƒƒ}tjtj |ƒt jd|ƒtƒtƒdS(NitServerActivePlayerCntiis;    boss¸´»î»î¶¯¿ªÆôʱÉèÖÃ×òÈÕ»îÔ¾ÈËÊýyesterdayPlayerCnt=%s(RR
R`RXR%RÇRR>RRRtGetFuncCompileCfgtDef_BRServerPlayerCntRRR_R´(RôR tyesterdayPlayerCnttserverActivePlayerCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytResetBossRebornPoint&s4c    Csùtjdƒ}tjddƒ}tjtjƒ}t|ƒd}x`t|ƒD]R\}}|dkrndn ||d}||ko“|knrP|}PqPqPW|t|ƒkrÂ|dn||}tjƒj    t
j |ƒ|rõt ƒn|S(NRZiiiiÿÿÿÿ( R%R&RRRwRRdRRaRbRcR^R´(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntR\R™R0tpreCntRh((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR_7s &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NR\iiÿÿÿÿit BossFHPoint2(ReR%R&R’RÕ(R<tnotifySecondList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRŸJscCs*tjƒ}tjtjƒ|_tjƒjt    j
ƒ}|sKt ƒ}n||_ tjtj ƒ|_tjddƒ|_tjƒ}|sx“t|jƒƒD]Y}|j|ƒ}|dks£|jƒ r×q£ntj|ƒrìq£ntj||ƒq£Wn#tj|ƒrdStj||ƒdS(NRZi(R‚ttagGCBossRebornPointRRR`tPointRRaReRcR^R_t
TotalPointRXt    RebornCntR%RÇtTotalRebornCntRvRTRRR#R‘R’R“R”R•(R~R(RhR˜R™((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR´Vs*       cCsŠtjƒj|ƒ}|s0tjd|ƒdS|jƒ}tjj|dƒdtj|<tjt    j
tjƒtj dtjƒdS(Ns!ÕÒ²»µ½¸ÃÏÉÃËÃû: killFamilyName=%siisÆï³èÕù¶áÏÉÃË»÷ɱBossÊýͳ¼Æ: %s( RtGetFamilyManagertFindFamilyByNametErrLogtGetIDR>R¼ROR¥RoR½R(tkillFamilyNametfamilytfamilyID((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR'qs  cCs,ttjddƒƒ}tjtjƒ}tjtj    ƒ}t
|||ƒ}d}t j ƒ}x‘t |jƒƒD]}}|j|ƒ}|dkst|jƒ r¨qtntj|ƒr½qtn|jƒsÏqtn|jƒ|krçqtn|d7}qtWt jtj|ƒt jd|||||fƒdS(NRiiis]ͬ²½Æï³èÕù¶áÓÐЧ²ÎÓëÈËÊý: playerCount=%s,minLV=%s,funcLimitLV=%s,curWorldLV=%s,diffWorldLV=%s(RR%RÇR’tGetFuncLimitLVRotGameFuncID_HorsePetRobBossRRt"Def_Notify_WorldKey_WorldAverageLvR:RRvRTRRR#R‘R“t GetFamilyIDRìR¥t.Def_Notify_WorldKey_HorsePetRobBossPlayerCountR(t diffWorldLVt funcLimitLVt
curWorldLVtminLVt playerCountR˜R™Rñ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt(SyncMapServer_HorsePetRobBossPlayerCounts*      cCs#it_tjtjtjƒdS(N(R>R¼RR¥RoR½(tisOpen((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnHorsePetRobBossActionChangežs    c
CsGtjdt|ƒƒt|tƒ r=t|ƒdkr=dS|\}}|tj|<tjdtjƒtj    ddƒ}x!|D]}|tjkrƒdSqƒWtj    ddƒ}g}x[tjj
ƒD]J}xA|j
ƒD]3}x*|D]"}    |    |krè|j |    ƒqèqèWqÛWqÈWtjd|ƒt j d||ƒit_dS(NsÆï³èÕù¶ábossÉËÑªÍæ¼Òͬ²½: %sisÉËÑªÍæ¼Ò»ã×Ü: %sRis+½áËãÆï³èÕù¶á²ÎÓë½±Íæ¼Ò: joinPlayerIDList=%stFairyGrabBossJoin(RRRt
isinstanceRcRR>t!g_horsePetRobBossHurtPlayerIDInfoR%R&RRQtPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictR7t
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListRÂ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayer¨s*"         cCs't|tƒsdStjj|ƒdS(N(RœtdictR>RHtupdate(R ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_FamilyOwnerBossInfoÆsc Cs tjƒj|ƒ}tjƒ}g|_x¸tjjƒD]§\}}|\}}}    }
tj    ƒ}||_
|t j |_ |t j |_|t j |_|t j |_|    |_|
|_t|jƒ|_|jj|ƒq:Wt|jƒ|_tj||ƒdS(N(RRvRwR‚ttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR>RHRíttagGCFamilyBossHurtInfotNPCIDRotDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenRQtNPCCountR”R•( R\R}R*R~thurtPackR×thurtInfotcurHPtmaxHPt firstFamilyIDtfirstFamilyName((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryAllFamilyBossHurt×s$                  cCs·tjƒj|ƒ}|jƒ}|j}|jƒ}|dkrFdS|j|ƒ}|dkredS|jƒt    j
krŽtj d|ƒdSt j |jƒd|jƒ|gƒdS(NsÆÕͨ³ÉÔ±ÎÞ·¨ÕÙ¼¯£¡tFairyGrabBossHelp(RRvRwRR®t    GetFamilyR#t
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRR’t FamilyNotifyRŠRÀ(R\R}R*R~RÂR×t    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBossós        %cCstjƒjtjƒS(N(RRqRrRot&Def_UniversalGameRecType_BossFirstKill(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__GetBossFirstKillRecDataListscCsƒtƒ}d}xEt|jƒƒD]1}|j|ƒ}|jƒ|kr"|}Pq"q"W|dkr|jƒ}|j|ƒn|S(N(RÊR#RTRURVRWRXRY(RRZtbossFirstKillRecR\R]((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__GetBossFirstKillRecDataByID    s      cCs³tjddƒ}tjtjƒd}||krItjd|ƒdS| sW| r[dStjd|ƒ}|swdSt|ƒ}|sdS|j    ƒ}|rºtjd||fƒdSg}tj
ƒ}xQ|D]I}    |j |    ƒ}
|
sôqÓnt j |
ƒ} |j| |
jƒgƒqÓW|s*dS|jdtƒg|D]} | d^qA} |jtjƒƒ|jdj| ƒƒtjd||jƒ|gƒtjd|ƒdS(    NtOSCBossFirstKillis³¬¹ý¿ª·þÌì(%s), ²»¿ª·ÅÊ×ɱ»î¶¯!t BOSSFirstKillsÒѾ­Ê×ɱ¹ýÁË! bossID=%s, %sRÅs,tBossFirstKillMail(R%RÇRRRRRRRÌt GetStrValue2RvR¿t
PlayerTeamt__GetPlayerTeamLVRQRÀR@RÒt SetStrValue2tGetCurrentDataTimeStrRiRhRžRŸtGetServerFirstKillPlayerAwardRÓtSendUniversalGameRecSingleR#(RR1tmaxOSDayR
R€t    fkRecDatatfirstKillTimeStrtkillPlayerListt    playerMgrRÂtplayert    teamMemLVtnameInfotfkPlayerNameList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR(sD     c
CsÍtjƒj|ƒ}|j}|j}tjd|ƒ}|sCdS|dkr˜t|ƒ}|sedS|jƒ}|s˜tj    d||j
ƒƒdSnt ||gƒ}    |j ddd|    t |    ƒƒdS(NRÎis5Boss»¹Î´Ê×ɱ£¬²»ÄÜÁìÈ¡bossÊ×ɱ¹«¹²ºì°ü½±Àø! bossID=%st BossFirstKill(RRvRwR®t    AwardTypeR%RRÌRÐRRRtMapServer_QueryPlayerResultR(
R\R}R*R~Rt    awardTypeR€RØRÙR ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnGetBossFirstKillAwardVs"           (QRRoRcR”R‚RRÓRžR%RRÈR®R’RËR,R>t PlayerGeTuiRÃRÑRRRReRR8RCRMRGRR    RR RRRfRSR$RR#R"R©RªR«R¬R­R¾RÃRÁRöRîR÷R!R‹RtobjectRRR>RERFRžRKR±RYRtRzRR_RŸR´R'R˜RšR§RªR¾RÈRÊRÌR(Rä(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> sš                               3     %                                         <    8                                 =    '                      Y                         (        B                      
                            :