cehua-TT
2019-01-14 ea4f0268501847eb74cee670288e6ec6c47a75e7
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
Ší;\c@säddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Z dd„Z!d„Z"dgd„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d „Z2d!e3fd"„ƒYZ4d#„Z5d$„Z6d%„Z7d&„Z8d'„Z9d(„Z:dgd)„Z;d*„Z<d+„Z=e>d,„Z?d-„Z@dd.„ZAdd/„ZBd0„ZCd1„ZDd2„ZEd3„ZFd4„ZGd5„ZHd6„ZIdS(7iÿÿÿÿ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#CheckResetBossKilledCntOnServerInitAs&       cCs¹t|ƒdkrdS|d}|dkr0dS|\}}}}}}}}    tjƒrztj||||||    ƒdS|}
t} t|
ƒ} t|ƒ} tjd|||
|| | fƒ| rß| rßtj    dƒdSt
t j ƒƒ}t |ƒ}t ||||ƒ| rMt|ƒ}t||dƒtj    d||fƒn|rŠt|dƒt||ƒtd|gƒt|ƒntjddƒ}||krµt|ƒndS(Nisk»÷ɱÊÀ½çboss DoGameWorldBossOnKilled...bossID=%s,hurtValue=%s,mapID=%s,tick=%s,isMapNeedShunt=%s,isAlive=%ssPÐèÒª·ÖÁ÷µÄµØÍ¼boss±»»÷ɱ£¬µ«Êǵ±Ç°bossÈ«¾Ö״̬ΪËÀÍö״̬£¬²»ÔÙ¸üÐÂboss»÷ɱÐÅÏ¢£¡is5    addBossKillCnt: killPlayerName=%s,befKilledCnt=%stFairyGrabBossID(RRt IsCrossServert    CrossBosstDoCrossBossOnKilledtFalsetIsMapNeedBossShuntt __GetIsAliveRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotNonetSendMapServerBossKilledCntt IpyGameDataPYtGetFuncEvalCfgtOnFamilyKillHorsePetRobBoss(tmsgListttickRtkillPlayerNamet    hurtValuetisNotifyt    realMapIDt    dataMapIDt    copyMapIDt killerIDListtmapIDt isAddKillCnttisMapNeedShunttisAlivet
killedTimeRt befKilledCntthorsePetRobBossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilledasD
                 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(RR3t refreshTimetbossInfo((R:s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshList‘s  c CsKt|ƒdkrdS|\}}}}}tjƒrTtj|||||ƒdS||}}tjd|||||fƒ|dkr‘dStjdƒ}    ||    k}
t|ƒ} |sÑt    |||ƒn|
rít
|||| ƒn|t |ƒkrt ||ƒt d|gƒn|rG|tjkrGtjj|ƒndS(Nis?ÊÀ½çboss״̬±ä¸ü: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%st    BossShunt(RRRRtDoCrossBossStateChangeRR#R$RtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRRR R!R<tg_familyOwnerBossInfotpop( R&R'RR2R,R+R-R/tlineIDtbossShuntMapIDListtisBossShuntMapR1((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnGameWorldBossStateChangežs.       cCs™|dkrdStjj|iƒ}|j|ƒ|kr>dS|||<|tj|<|s_dS|tjkrtjj|ƒntjdtjƒdS(Ns    ·ÖÁ÷BossÏß·״̬±ä¸ü: %s(R!R<tg_bossShuntLineStatetgettg_bossShuntStateChangeBosstappendRR(RRHR2R1tbossLineStateDict((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyREÂ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(RR2((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRöscCstjƒjtj|ƒS(N(RR_t GetDictByKeyRaRb(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__GetKillRecordtsplitRORtjoint SetStrValue3t    SetValue2(R]R3t
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.pyRdscCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRX((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRQs     cCsdS(N((R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"&scCs/tjƒj|ƒ}|j}t||ƒdS(N(RtGetPlayerManagertGetPlayerByIndext
BossIDListR (RZt
clientDataR't    curPlayert
bossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryBossInfoBs     cCsttjƒƒ}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|
ƒqCWt|jƒ|_|søtjƒ} x“t| j ƒƒD]Y}| j!|ƒ}|dks˜|j#ƒ rÌq˜nt$j%|ƒráq˜nt&j'||ƒq˜Wn#t$j%|ƒr dSt&j'||ƒdS(NtBOSSInfoi((RRtChPyNetSendPackttagGCGameWorldBossInfoRQt BossInfoListRRRSRTRUR#tGetIpyGameDatatGetMapIDRatDef_CrossMapIDListttagBossInfoObjtBossIDRtIsAliveRdt
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR8t RefreshSecondt    RefreshCDROtBossCntRRstGetActivePlayerCounttGetActivePlayerAtR!t    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack(RwtsyncBOSSIDListR:R@RXRZR[RtipyDataR/t bossInfoObjR3R?t playerManagerti((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR LsR                      c stjtj|ƒsdStjƒr6tj|ƒdSttjƒƒ‰t    ˆ|ƒt
ˆƒt j s)xŸt tjƒjƒƒD]…}tjƒj|ƒ}|jƒ}|jƒ}|tjkrÉqnt|ƒ}|jƒ}t|ƒ}t j j|||gƒqWt j jd‡fd†ƒng}x·t j D]¬}    |    \}}}t|ƒ}
|
rfq9ntd|ˆ|ƒ} | dkrPntj|ƒt|dƒ|j|ƒtjt j!|dƒtj"d||| fƒq9W|rÿt#d|ƒndS(NR7cstd|dˆ|dƒS(Niii(R8(R9(R:(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR;šsiis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s(%RtSetWorldDictKeyRatTYPE_WorldBossProcessTickRRtDoCheckCrossBossRebornRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR<R=RRR#tIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDRR€RR†R‡ROR>RR8t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExRmt'Def_Notify_WorldKey_GameWorldBossRebornRR R!( R'R–R“RR/RR3R?R’R@R2t rebornSecond((R:s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossReborn…sL   
                  cCs­tjtj|ƒsdStjƒr)dSttjƒƒ}xktjD]`}|\}}}t    |ƒ}|rrqEnt
d|||ƒ}|s•qEnt j ||ƒqEWdS(Ni( RR—RatTYPE_WorldBossGeTuiTickRRRR<R=RR8R t    GeTuiBoss(R'R:R@RR3R?R2R¤((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTuiºs  cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RR†R‡RRR8R(RRR3R?R:R¤R2((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossIsAliveOrCanRebornÏs    cCs¶x¯ttjƒjƒƒD]•}tjƒj|ƒ}|jƒ}|jƒ}|tjkraqnt    |ƒ}|syqn|jƒ}|tj
krt j t j|dƒqqWdS(Ni(RRR#RœRRžRŸRRaR€RtDef_FBMapID_SealDemonRR¢RmR£(R–R“RR/R2((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBossÜs    cCs‰tj|ƒt|ƒtjƒj|ƒtdƒrCt|ƒntj    ƒ}|j
t j t jƒ}|r{t|ƒnt|ƒdS(Ni(Rt OnPlayerLoginR t PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRR_RcRat!Def_WorldKey_OperationActionStateRmtOperationActionName_BossReborntSync_BossRebornPointtSync_DogzNPCRefreshTime(Rwt    gameWorldtstate((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¬îs 
 
cCsÂtjƒrtjƒdStƒtƒtdƒrctjtj    t
j ƒtjtj t
j ƒntjddƒ}t|ƒd}tjtj||ƒt
jr¾tjtjt
jƒndS(NitDogzFBRefreshCfgi(RRRtOnCrossMapServerInitOKR"R«RtSendCommMapServerMsgRmt#Def_Notify_WorldKey_BossShuntPlayerR<tg_bossShuntPlayerInfot&Def_Notify_WorldKey_BossShuntLineStateRLR#t
GetFuncCfgt__GetBossOnlineHeroCntR¢t%Def_Notify_WorldKey_BossOnlineHeroCntt"g_familyKillHorsePetRobBossCntDictt0Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt(Rt    onlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnMapServerInitOKÿs 
     cCsI|d}tjƒj|ƒ}|r8|jƒ|d<nt||ƒdS(Nii(RRstFindPlayerByIDtGetNametOnKillBossDropGoodItem(R&R'tplayerIDRw((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCrossServerMsg_DropGoodItems 
 c    Cs‡t|ƒdkrdS|\}}}}}}}}    tjd|||||||    fƒtjdƒ}
|
ssdStjƒr¦|    s‰dStjtj    ||    gƒdStj
} tj ƒ} | j | ƒ} |
| j ƒkr*ttjƒƒ}tjddƒddd}| jdƒ}|jƒ}|||krG| jdƒq*g}xWt| j ƒƒD]C}| j|ƒ}|jƒ}|jƒ}|j|||gƒq`W|jd||gƒt|d    d
„d tƒ}|d }|jd    d „ƒ|r*|dddkr*| j|ddƒq*ntjd| |||||g|d|gƒ||||||g}tjdd|ƒdS(Nisl»÷ɱBossµôÂäºÃÎïÆ·: mapID=%s,npcID=%s,killerName=%s,itemID=%s, userData=%s, weightValue=%s, serverGroupID=%st DropRecordNumiii<iiÿÿÿÿR7cSs|dS(Ni((R9((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR;DstreverseicSs|dS(Ni((R9((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR;Fstt
DropRecord(RRRR#R½Rt CrossRealmMsgtSendMsgToClientServerRmRÈt-Def_UniversalGameRecType_BossDropGoodItemInfoRoRpRSRRRTtGetTimetDeleteRRt    GetValue5ROtsortedtTrueR>tPlayerUniversalGameRectMapServer_UniversalGameRecR!RŽt WorldNotify(R&R'RÇt
killerNameR/tnpcIDtitemIDtuserDatat weightValuet serverGroupIDt maxRecordCntRqRrt
recordListR:t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR–trecDatatsaveTimetcurWeightValuet
commonList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÆsP             
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ÔÚÏßÈËÊýͳ¼ÆRÂiis#    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þÔÚÏßÈËÊý %s(RR—RatTYPE_WorldBossOnlineCntTickRRRRR#RœRRžRŸRR€tGetRefreshTimet
GetLVLimitRsR‹RŒR!RRŽRtGetLVtitemsRMtSetBossOnlineHeroCnt(R'tbossRebornDictR–R“RR/trefreshTimeStrt playerCntDictR•t
findPlayertfindLVtbossidtlvLimitt curOnlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCntWs>        $%cCstjd|ƒ}|sdSt|ƒ\}}| sYt||ƒd||jƒkrh|}d}n1||jƒkr‰|}d}n|}|d7}|d|}tjtj    ||ƒ|tj
ddƒkrðt j tj ||ƒnt jd||||fƒdS(    s ÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýRzNidiiR·isiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s(R#R~R¾tabst
GetDiffPertGetNoUpdataCntRR
Rmt*Def_Notify_WorldKey_GameWorldBossOnlineCntR½RR¢R¿R(RótonlieCntR“tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRí~s$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRRmRú(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Ë¢ÐÂʱ¼äRzNiiitFirstDayActivePlayerCntsJ    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,yesterdayCnt=%s,refreshTime=%s(R#R~R¾RêRRt Def_ServerDayRR<tg_yesterdayPlayerLVDicttvaluesR½tevalRéR
tDef_BossRefreshTimeRARR(    RóR3R“RÂtLVLimitt openServerDaytlvt yesterdayCntR?((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(    RRsRtR‚tIsAddR­R®tUpdateBossAttentiont GetPlayerID(RZRvR'RwRtisAdd((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
RecordDataRGtcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RtplayeridRóRtbossAttentionDatat
recordDictt bossAttention((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR Òs*  
 
     cCsÊtj|ƒrdS|jj|jƒƒ}|s5dSt|jƒ}tjƒ}g|_    xH|j
ƒD]:\}}tj ƒ}||_ ||_ |j    j|ƒqfWt|j    ƒ|_tj||ƒdS(N(RŽRRRMR RRR{ttagGCBossAttentionInfotBossListRìttagGCBossAttentionR‚tAddStateRORRŠRR‘(RRwt attentionDatat bttentionDicttpackDataRótaddStateR@((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¯ïs               cCskd}d}d}x1|jjƒD] }|d7}||jƒ7}q"Wtjd|ƒtj||ƒ|S(NRËiisSaveBossAttention cnt :%s(RRt    getBufferRRtCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR$((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt GetSaveDatas
cCsºtj||ƒ\}}tjd|ƒi|_xt|ƒD]s}tjƒ}|jƒ||j    |||ƒ7}|j
}t t |j ƒƒtkr¨||j|<q?|jƒq?W|S(NsLoadBossAttention cnt :%s(R)t    ReadDWORDRRRRRRRRtreadDataRttypeRRtlist(RtdatastpostdataslenR-t_tdataRÇ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDatas     
    (t__name__t
__module__RRR R¯R.R8(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÉs                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NRBii(R#R½RRRRÔR$R(R/tbossShuntMaxServerDayRRI((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR$s 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R<R»RR¹RmRº(R&R'R/RHtshuntPlayerDictR7((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_WorldBossShuntInfo/s
  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¹RmRº( Rwt    updTeamIDt isNeedSyncMapR7R<R/RHRÇt    shuntInfoRÙtteamIDt relatedTick((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChange7s"       
    %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ìRGRORR¹RmRºR(    R/RHRR7R<tremovePlayerIDListRÇRARÙ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRDLs"  
      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<RNRR¹RmR¼RLR°R!RR»RìRÔRGRRº( R:R't    ProceTimeR@R7R<R/RHRÇRARÙRBRC((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRšcs,   $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>R RtGetFBIDRRìRÔRGRRR¹RmRº(
RwRBRÇt playerMapIDt playerLineIDR@R7R<R/RH((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<RLtkeysR{ttagGCBossShuntLineStateInfotCleartBossLineStateInfoRMRìROttagGCBossShuntLineStateR‚t
LineIDListt    StateListRt    LineCountRSRRsRRR‹RŒR!RRŽRRR‘( RwR’tbossShuntLineInfoRRPt
lineIDListt    stateListRHR¶t bossLineStateR•R–((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR°œs@ 
                    cs™tjƒ}|jtjtjƒ}|s<tjdƒdS|jtjƒ}|s`t    ƒ}n|swtjdƒdSt
j t
j ƒ}|||}t
j t
j |ƒ|||kr*t
j t
jƒ}t
j t
j|dƒtjddiƒ}g}xH|jƒD]:\}    }
|
tjtjgkr5q n|t|    ƒ7}q Wtjd|ƒg} xttjƒD]n\} } | \}}}||krqpnt|ƒ}|rµqpnd}|||gtj| <| j|ƒqpWttjƒƒ‰tjjd‡fd†ƒtjd    | ƒˆandtjd
ƒ}xR|D]J}||d }||kok|knr@tjdd |gƒPq@q@Wt ƒdS( Ns Ôö¼Óboss¸´»îµã »î¶¯Î´¿ªÆôs" Ôö¼Óboss¸´»îµã Ã»ÓÐ×ܵãÊý£¡£¡£¡£¡itKillBossCntLimitscanRebornBossIDList=%siR7cstd|dˆ|dƒS(Niii(R8(R9(R:(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR;ðss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(!RR_RcRaR±RmR²Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
tDef_BossRebornCntR#R$RìtDef_Boss_Func_WorldtDef_Boss_Func_HomeR2t    enumerateR<R=RRORRR>tg_lastBossRebornTimeRŽR×R³(taddPointRµR¶t
totalPointtcurPointtupdPointt    rebornCnttkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyRxR–R@RR3R?R2tneedNotifyPointPerListtpointPertnPoint((R:s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPointÅs^           cCs·tjtjdƒtjtjdƒtjdƒ}tgtjj    ƒD]}||krHd^qHƒ}t
tj ddƒƒ}tjtj |ƒt jd|ƒtƒtƒdS(NitServerActivePlayerCntiis;    boss¸´»î»î¶¯¿ªÆôʱÉèÖÃ×òÈÕ»îÔ¾ÈËÊýyesterdayPlayerCnt=%s(RR
R\R]R#R½RR<RRRtGetFuncCompileCfgtDef_BRServerPlayerCntRRR[R³(RôR    tyesterdayPlayerCnttserverActivePlayerCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytResetBossRebornPoints4c    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(NtBossRebornTotalPointiiiiÿÿÿÿ( R#R$RRRqRR`RR_R`RaRZR³(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRZR–R-tpreCntRc((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR[s &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NRXiiÿÿÿÿit BossFHPoint2(RaR#R$RŽR×(R:tnotifySecondList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR›$scCstjƒ}tjtjƒ|_tjƒjt    j
ƒ}|sKt ƒ}n||_ tjtj ƒ|_tjƒ}|sîx“t|jƒƒD]Y}|j|ƒ}|dksŽ|jƒ rÂqŽntj|ƒr×qŽntj||ƒqŽWn#tj|ƒrdStj||ƒdS(N(R{ttagGCBossRebornPointRRR\tPointRR_RcRaRZR[t
TotalPointR]t    RebornCntRsRRR‹RŒR!RRŽRRR‘(RwR&RcR•R–((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR³0s(       c Csftj}|sdSttjƒƒ}tjƒ}g|_xk|jƒD]]\}}|\}}td|||ƒ}tj    ƒ}    ||    _
||    _ |jj |    ƒqGWt |jƒ|_|s?tjƒ}
x“t|
jƒƒD]Y} |
j| ƒ}|dksß|jƒ rqßntj|ƒr(qßntj||ƒqßWn#tj|ƒrRdStj||ƒdS(Ni(R<tg_dogzNPCRefreshTimeDictRRR{ttagGCDogzNPCRefreshTimetInfoListRìR8ttagDogzTimeInfoObjtNPCIDRˆRORtCntRRsRRR‹RŒR!RRŽRRR‘( RwtrefreshTimeDictR:R&tnpcidttimeinfotlastRefreshTimet nextNeedTimet
remainTimettimeInfoR•R–((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR´Hs6                    cCsŠtjƒj|ƒ}|s0tjd|ƒdS|jƒ}tjj|dƒdtj|<tjt    j
tjƒtj dtjƒdS(Ns!ÕÒ²»µ½¸ÃÏÉÃËÃû: killFamilyName=%siisÆï³èÕù¶áÏÉÃË»÷ɱBossÊýͳ¼Æ: %s( RtGetFamilyManagertFindFamilyByNametErrLogtGetIDR<RÀRMR¢RmRÁR(tkillFamilyNametfamilytfamilyID((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR%js  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ŽtGetFuncLimitLVRmtGameFuncID_HorsePetRobBossRRt"Def_Notify_WorldKey_WorldAverageLvR8RRsRRR‹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_HorsePetRobBossPlayerCountxs*      cCs#it_tjtjtjƒdS(N(R<RÀRR¢RmRÁ(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
isinstanceR2RR<t!g_horsePetRobBossHurtPlayerIDInfoR#R$RROtPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictR5t
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListRÇ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayer¡s*"         cCs't|tƒsdStjj|ƒdS(N(R£tdictR<RFtupdate(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(RRsRtR{ttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR<RFRìttagGCFamilyBossHurtInfoR…RmtDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenROtNPCCountRR‘( RZRvR'RwthurtPackRÙ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(RRsRtR R…t    GetFamilyR!t
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRRŽt FamilyNotifyR‘RÅ(RZRvR'RwRÇRÙt    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBossìs        %(JRRmRaRR{RRÕR¥R#RR­RŽRÍR)R<R RÉRRRaRR6RARKRERR    RRRRRdRQR"RyR!R R¥R¨R©R«R¬RÃRÈRÆRöRíR¾RR‡RtobjectRRR=RDRDRšRJR°RnRtRR[R›R³R´R%RŸR¡R®R±RÄRÎ(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> sŒ                            0     $                                         
9    5                                 9    '                      [                         )    ;           "