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
Whc@sºddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z d„Z d„Z d„Zd„Zd„Zd„Zd„Zd    „Zd
„Zd „Ziad „Zd „Zd„Zd„Zdd„Zd„Zd„Zid„Zd„Zd„Z ddd„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)dgd „Z+dS(!iÿÿÿÿNcCs
|jƒS(N(t    GetValue1(trecData((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt GetRecBossID*scCs |j|ƒS(N(t    SetValue1(Rtvalue((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt SetRecBossID+scCs
|jƒS(N(t    GetValue2(R((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytGetRecKilledTime,scCs |j|ƒS(N(t    SetValue2(RR((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytSetRecKilledTime-scCs
|jƒS(N(t    GetValue4(R((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytGetRecRefreshTime.scCs |j|ƒS(N(t    SetValue4(RR((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytSetRecRefreshTime/scCs
|jƒS(N(t    GetValue5(R((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt GetRecZoneID0scCs |j|ƒS(N(t    SetValue5(RR((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt SetRecZoneID1scCs
|jƒS(N(t GetStrValue3(R((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytGetRecKilledRecord2scCs |j|ƒS(N(t SetStrValue3(RR((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytSetRecKilledRecord3scCs|tjkrdS|tjkr[tj|}tj||||ƒ}|sQdS|jƒS|tjkr}tj|||ƒSdS(Ni(    tChConfigtDef_CrossMapIDListtDef_CrossZoneMapTableNamet IpyGameDataPYtGetIpyGameDatat    GetZoneIDtDef_CrossDynamicLineMaptPlayerFBtGetCrossDynamicLineZoneID(tmapIDt    realMapIDt    copyMapIDt    tableNamet zoneIpyData((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytGetCrossBossZoneID7s 
cCsÛ||f}|tkr t|Stjƒjtjƒ}d}xWt|jƒƒD]C}|j    |ƒ}t
|ƒ|krQt |ƒ|krQ|}PqQqQW|dkrÍ|j ƒ}t ||ƒt||ƒn|t|<|S(N(tg_bossRecDataDictt    GameWorldtGetUniversalRecMgrt GetTypeListt ShareDefinet&Def_UniversalGameRecType_CrossBossInfotNonetxrangetCounttAtRRtAddRecRR(tzoneIDtbossIDtkeytrecTypeListDatatbossRectindexR((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt__GetCrossBossRecDataHs   $   
cCs'tjƒjtj||f|ƒdS(N(R&t GetGameWorldtSetDictRtDef_WorldKey_CrossBossIsAlive(R0R1tisAlive((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt__SetCrossBossIsAlivees#cCs tjƒjtj||fƒS(N(R&R7t GetDictByKeyRR9(R0R1((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt__GetCrossBossIsAlivejsic CsHi}tjƒ}x†t|jƒƒD]r}|j|ƒ}|jƒ}|jƒ}|tjkrgq%n||kr€g||<n||}|j    |ƒq%Wt
j ƒ}t
j d||fƒ|rÍ|gng}    idd6}
t jtj|
|    ƒxK|jƒD]=\}}t
j d||fƒtj||ƒ} | sDqnxù| D]ñ} | jƒ} |rl|gn    | jƒ}    g}xx|D]p}t| |ƒ}t|ƒ}t|ƒ}t|ƒ}t| |ƒ}g}|j    | ||||||gƒq…W|r%i|d6}
t jtj|
|    ƒqKt
j d|| fƒqKWqWdS(sP Í¬²½¿ç·þBoss»î¶¯Êý¾Ýµ½×Ó·þÎñÆ÷
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    s=ͬ²½¸ø×Ó·þ¿ç·þbossÐÅÏ¢: crossZoneName=%s,syncServerGroupID=%stInitOKt BossInfoTypes    mapID=%s, bossIDList=%st BossInfoLists$ûÓпç·þbossÐÅÏ¢! mapID=%s,zoneID=%sN(RtIPY_DataR,tGetBOSSInfoCounttGetBOSSInfoByIndextGetMapIDtGetNPCIDRtDef_CrossZoneTypeNametappendR&tGetCrossZoneNametLogt CrossRealmMsgtSendMsgToClientServerR)tCrossServerMsg_CrossBossInfotitemstCrossRealmPlayert&GetCrossZoneIpyDataListByServerGroupIDRtGetServerGroupIDListR6RR RR=(t serverGroupIDtcrossMapBossIDListDictt
ipyDataMgrtitipyDataRR1t
bossIDListt crossZoneNametserverGroupIDListt bossInfoDicttzoneIpyDataListR#R0t bossInfoListt bossRecDatat
killedTimet refreshTimet killedRecordR:t killerExInfo((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt$Sync_CrossBossInitDataToClientServernsN     
        & cCs-t|||ƒ}tjd||||||fƒ|s?dSd}ttjƒƒ}t||ƒ}    t|    ||ƒt|||ƒt||||    ƒ}
t    j
||ƒ} | dkr½dS| j ƒ} t |    ƒ} ||g}||||
| ||gg}idd6|d6}tjtj|| ƒdS(NsT»÷ɱ¿ç·þboss: zoneID=%s,bossID=%s,mapID=%s,realMapID=%s,copyMapID=%s,killerIDList=%sitOnKilledR?R@(R$R&RItintttimeR6t__SetKilledRecordR;tSetBossRefreshTimeRNtGetCrossZoneIpyDataByZoneIDR+RPRRJRKR)RL(R1tkillPlayerNameRR R!t killerIDListR0R:R]R\R^R#RXR_R`R[RY((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytDoCrossBossOnKilled¢s*        cCs‹t|||ƒ}tjd||||||fƒ|s?dSt||ƒ|kr‡t|||ƒ|r‡t||i||6ƒq‡ndS(NsS¿ç·þboss״̬±ä¸ü: zoneID=%s,bossID=%s,isAlive=%s,mapID=%s,realMapID=%s,copyMapID=%s(R$R&RIR=R;tSendClientServerCrossBossState(R1R:RR R!R0((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytDoCrossBossStateChangeÀs    cCsStj||ƒ}|dkrO|jƒ}||g}tjtj||ƒndS(N(RNRgR+RPRJRKR)tCrossServerMsg_CrossBossState(RR0t bossStateDictR#RXt    stateInfo((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRkÏs    cCs‡t|ƒ}|r!|jdƒng}|jd||fƒt|ƒdkrZ|d=ndj|ƒ}t||ƒt||ƒdS(Ns|s%s_%sii(RtsplitRGtlentjoinRR    (R\R]t
playerNameR_tkilledRecordList((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyReØs 
  cCsltjd|ƒ}|sdSt|jƒƒ}t||ƒt||||ƒtjd|||fƒ|S(sÉèÖÃbossË¢ÐÂʱ¼ätBOSSInfois8    ÉèÖÃbossË¢ÐÂʱ¼ä: zoneID=%s,bossID=%s,refreshTime=%s(RRtevaltGetRefreshTimeR t__UpdateBossRefreshListR&tDebugLog(R0R1R]R\RUR^((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRfås cs¤x[tjD]P}||dkr
||dkr
|rC||d<n|rV||d<nPq
q
Wttjƒƒ‰tjjd‡fd†ƒtjdtjƒdS(NiiiiR2cstd|dˆ|dƒS(Niii(tmax(tasd(tcurTime(s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt<lambda>ûss'    PyGameData.g_sortBOSSRefreshList=%s(t
PyGameDatatg_sortBOSSRefreshListRcRdtsortR&Ry(R0R1R]R^tbossInfo((R|s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRxòs   c    s×ttjƒƒ‰tjs tjƒ}tjƒ}xKt|j    ƒƒD]7}|j
|ƒ}|j ƒ}|j ƒ}|t jkrˆqFn|jƒ}| sF|dkr­qFnt j|}t|d|ƒsÓqFnx§tt|d|ƒƒƒD]‰}t|d|ƒ|ƒ}    |    jƒ|kr'qðn|    jƒ}
t|
|ƒ} t| ƒ} t| ƒ} tjj|| | |
|gƒqðWqFWtjjd‡fd†ƒni}xñtjD]æ}|\}} } }
}t|
|ƒ}|ræq°ntd| ˆ| ƒ}|dkr Pnd}t|
||ƒ||
f}||krHi||<n||}|||<tjtj|
|fdƒtjd|
|| |fƒq°Wx6|jƒD](\}}|\}}
t ||
|ƒq§WdS(    Nt0s
Get%sCounts Get%sByIndexR2cstd|dˆ|dƒS(Niii(Rz(R{(R|(s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyR}siisH    Í¨ÖªMapServerÖØÉú: zoneID=%s,bossID=%s,killedTime=%s,rebornSecond=%s(!RcRdR~RR&RHRRAR,RBRCRERDRRFRwthasattrtgetattrRR6RR RGR€R=RzR;tSendMapServerMsgExR)t,Def_Notify_WorldKey_GameWorldBossRebornCrossRyRMRk(ttickRWRSRTRUR1RtrefreshTimeStrt zoneTypeNameR#R0R\R]R^tzoneMapBossStateDictRR:t rebornSecondR2Rn((R|s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytDoCheckCrossBossRebornÿs`          #   '    
 
! cCsmt||ƒrtSt||ƒ}t|ƒ}t|ƒ}ttjƒƒ}td|||ƒ}|dkS(Ni(R=tTrueR6RR RcRdRz(R0R1R\R]R^R|R‹((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytGetCrossBossIsAliveOrCanReborn<s  cCs tƒdS(N(t__SendMapServerAliveCrossBoss(((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pytOnCrossMapServerInitOKGsc
CsCtjƒ}tjƒ}x$ttjƒjƒƒD]
}tjƒj|ƒ}|jƒ}|jƒ}|t    j
kryq1nt    j
|}t |d|ƒsŸq1nx™tt |d|ƒƒƒD]{}t |d|ƒ|ƒ}|jƒ|króq¼n|j ƒ}t||ƒ}    |    sq¼ntjtj||fdƒq¼Wq1WdS(Ns
Get%sCounts Get%sByIndexi(R&RHRRAR,RBRCRERDRRFRƒR„RR=R…R)R†(
RWRSRTRUR1RR‰R#R0R:((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRKs*     # %cCst|ƒt|ƒdS(N(tSync_CrossBossInfot__LoginNotifyKillCrossBoss(t    curPlayer((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt OnPlayerLoginfs
 
c    Cs¦|jddƒ}|jdgƒ}tjd|ƒ|dkrmtjƒjtjƒ}|jƒiadSg}x|D]}|\}}}}    }
} } t    ||ƒ} t
| |ƒt | |    ƒt | |
ƒt ||| ƒ|j|ƒ| súqzn| \}}xˆ|D]€}tjƒj|ƒ}|s\ttjƒƒ}|||gtj|<q nt||gƒ}|jddd|t|ƒƒq WqzWtd|ƒdS(NR?tR@s+ÊÕµ½¿ç·þͬ²½µÄ¿ç·þbossÐÅÏ¢: bossInfoType=%sR>it CrossKillBoss(tgetR&RyR'R(R)R*tClearR%R6R    R RR;RGtGetPlayerManagertFindPlayerByIDRcRdR~tg_unNotifyKillCrossBossDicttstrtMapServer_QueryPlayerResultRqR‘R+(RYt bossInfoTypeR[R3tsyncBOSSIDListRR0R1R]R^R_R:R`R\RiRtplayerIDtkillertkillTimetmsgInfo((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRLks< 
       ' cCsÈ|jƒ}|tjkrdStjj|ƒ\}}}ttjƒƒ}||}|dkrvtjd|ƒdSt||gƒ}|j    ddd|t
|ƒƒtj d|||f|ƒdS(Nixs,³¬¹ý120ÃëÉÏÏß²»´¦Àí£¬Ö÷ҪΪÁË·ÀË¢ÉÏÏß¼ñÎïÆ·!iR–s;ÉÏÏß²¹Í¨Öª»÷ɱ¿ç·þboss: passSeconds=%s, mapID=%s, bossID=%s( t GetPlayerIDR~R›tpopRcRdR&RyRœRRqRI(R“R R¢RR1R|t passSecondsR£((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyR’—s 
 cCs†|\}}tjd||fƒg}x@|jƒD]2\}}t|||ƒ|r6|j|ƒq6q6W|r‚td|ƒndS(Ns=ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄ¿ç·þboss״̬: zoneID=%s, bossStateDict=%s(R&RyRMR;RGR‘R+(R£R0RntaliveBossIDListR1R:((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyRm§s cCstjtjƒƒ}tjƒjtjƒ}tjƒ}g|_    xt
|j ƒƒD]ý}|j |ƒ}t |ƒ}|s‚qUn|rš||kršqUnt|ƒ}t|ƒ}    t|ƒ}
tjƒ} || _t||ƒ| _t|ƒ| _t| jƒ| _td|
||    ƒ| _|
| _|j    j| ƒt|j    ƒdkrUPqUqUW|j    scdSt|j    ƒ|_|sítjƒ} x†t
| jƒƒD]L} | j | ƒ}|dkrÁqšnt"j#|ƒrÖqšnt$j%||ƒqšWn#t"j#|ƒrdSt$j%||ƒdS(Niiú(&R&tChangeTimeStrToNumtGetCrossServerTimeStrR'R(R)R*tChPyNetSendPackttagGCGameWorldBossInfoR@R,R-R.RRRR ttagBossInfoObjtBossIDR=tIsAliveRt
KillRecordRqt    RecordLenRzt RefreshSecondt    RefreshCDRGtBossCntR™tGetActivePlayerCounttGetActivePlayerAtR+t PlayerControltGetIsTJGt NetPackCommont SendFakePack(R“RŸR|R3RR5RR1R0R]R^t bossInfoObjt playerManagerRT((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyR‘¹sP                        (,RR&RRªRNR¶R¸RJR)R~RRdRRRR    R R RRRRR%R$R6R;R=RaRjRlRkReRfRxRŒRŽRRR”RLR’RmR+R‘(((s\E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBoss.pyt<module>sT                                                                     4                            =                     ,