hxp
2019-01-09 4f9ab4c0c2548e75a0776b27997cb7d5d2ea2a60
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
ß 5\c@sÏddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zdd„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„Z/d„Z0d e1fd!„ƒYZ2d"„Z3d#„Z4d$„Z5d%„Z6d&„Z7d'„Z8dgd(„Z9d)„Z:d*„Z;e<d+„Z=d,„Z>dd-„Z?dd.„Z@d/„ZAd0„ZBd1„ZCd2„ZDd3„ZEd4„ZFd5„ZGdS(6iÿÿÿÿ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#CheckResetBossKilledCntOnServerInit@s&       cCs³t|ƒdkrdS|d}|dkr0dS|\}}}}}}}tjƒrttj|||||ƒdS|}    t}
t|    ƒ} t|ƒ} tjd|||    || | fƒ| rÙ| rÙtj    dƒdSt
t j ƒƒ} t |ƒ}t || ||ƒ|
rGt|ƒ}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    copyMapIDtmapIDt isAddKillCnttisMapNeedShunttisAlivet
killedTimeRt befKilledCntthorsePetRobBossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilled`sD
                 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(RR2t refreshTimetbossInfo((R9s`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'RR1R,R+R-R.tlineIDtbossShuntMapIDListtisBossShuntMapR0((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(RRGR1R0tbossLineStateDict((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRDÁ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(RR1((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRõscCstjƒjtj|ƒS(N(RR^t GetDictByKeyR`Ra(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__GetKillRecordtsplitRNRtjoint SetStrValue3t    SetValue2(R\R2t
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.pyRcscCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRW((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRPs     cCsdS(N((R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"%scCs/tjƒj|ƒ}|j}t||ƒdS(N(RtGetPlayerManagertGetPlayerByIndext
BossIDListR (RYt
clientDataR't    curPlayert
bossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryBossInfoAs     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((RRtChPyNetSendPackttagGCGameWorldBossInfoRPt BossInfoListRQRRRSRTR#tGetIpyGameDatatGetMapIDR`tDef_CrossMapIDListttagBossInfoObjtBossIDRtIsAliveRct
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR7t RefreshSecondt    RefreshCDRNtBossCntRRrtGetActivePlayerCounttGetActivePlayerAtR!t    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack(RvtsyncBOSSIDListR9R?RWRYRZRtipyDataR.t bossInfoObjR2R>t playerManagerti((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR KsR                      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(NR6cstd|dˆ|dƒS(Niii(R7(R8(R9(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:™siis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s(%RtSetWorldDictKeyR`tTYPE_WorldBossProcessTickRRtDoCheckCrossBossRebornRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR;R<RQR#tIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDR~RRR…R†RNR=RR7t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExRlt'Def_Notify_WorldKey_GameWorldBossRebornRR R!( R'R•R’RR.RR2R>R‘R?R1t rebornSecond((R9s`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–R`tTYPE_WorldBossGeTuiTickRRRR;R<RR7RŸt    GeTuiBoss(R'R9R?RR2R>R1R£((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTui¹s  cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RR…R†RRR7R(RRR2R>R9R£R1((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(RQR#R›RœRRžR~R`RRtDef_FBMapID_SealDemonRR¡RlR¢(R•R’RR.R1((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^RbR`t!Def_WorldKey_OperationActionStateRltOperationActionName_BossReborntSync_BossRebornPointtSync_DogzNPCRefreshTime(Rvt    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ªRtSendCommMapServerMsgRlt#Def_Notify_WorldKey_BossShuntPlayerR;tg_bossShuntPlayerInfot&Def_Notify_WorldKey_BossShuntLineStateRKR#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 
     c    Cs#t|ƒdkrdS|\}}}}}}}tjd||||||fƒtjdƒ}    |    smdStj}
tjƒ} | j|
ƒ} |    | j    ƒkrñt
t j ƒƒ} tjddƒddd}| j dƒ}|j ƒ}| ||kr| 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ƒdS(NisZ»÷ɱBossµôÂäºÃÎïÆ·: mapID=%s,npcID=%s,killerName=%s,itemID=%s, userData=%s, weightValue=%st DropRecordNumiii<iiÿÿÿÿR6cSs|dS(Ni((R8((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:2streverseicSs|dS(Ni((R8((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:4st(RRRR#R¼Rlt-Def_UniversalGameRecType_BossDropGoodItemInfoRnRoRRRRRStGetTimetDeleteRQt    GetValue5RNtsortedtTrueR=tPlayerUniversalGameRectMapServer_UniversalGameRecR!(R&R'tplayerIDt
killerNameR.tnpcIDtitemIDtuserDatat weightValuet maxRecordCntRpRqt
recordListR9t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR•trecDatatsaveTimetcurWeightValuet
commonList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnKillBossDropGoodItemsB            
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–R`tTYPE_WorldBossOnlineCntTickRRRQR#R›RœRRžR~RtGetRefreshTimet
GetLVLimitRrRŠR‹R!RŒRRŽtGetLVtitemsRLtSetBossOnlineHeroCnt(R'tbossRebornDictR•R’RR.trefreshTimeStrt playerCntDictR”t
findPlayertfindLVtbossidtlvLimitt curOnlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCntBs>        $%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Ë¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýRyNidiiR¶isiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s(R#R}R½tabst
GetDiffPertGetNoUpdataCntRR
Rlt*Def_Notify_WorldKey_GameWorldBossOnlineCntR¼RR¡R¾R(RêtonlieCntR’tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRäis$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRRlRñ(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Ë¢ÐÂʱ¼äRyNiiitFirstDayActivePlayerCntsJ    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,yesterdayCnt=%s,refreshTime=%s(R#R}R½RáRRt Def_ServerDayRR;tg_yesterdayPlayerLVDicttvaluesR¼tevalRàR
tDef_BossRefreshTimeR@RR(    RêR2R’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(    RRrRsRtIsAddR¬R­tUpdateBossAttentiont GetPlayerID(RYRuR'RvRtisAdd((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( RRüt
RecordDataRFtcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(R    tplayeridRê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ŽRRLRRüR RzttagGCBossAttentionInfotBossListRãttagGCBossAttentionRtAddStateRNRR‰RR(R    Rvt 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(RRût    getBufferRRtCommFunct
WriteDWORD(R    tsavaDatatcntDatatcntR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt GetSaveDataïs
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    ReadDWORDRRRRQRRR treadDataRttypeRüR tlist(R    tdatastpostdataslenR$t_tdataRÎ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDataûs     
    (t__name__t
__module__R
R RR®R%R/(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR´s                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NRAii(R#R¼RRRùRËR$R(R.tbossShuntMaxServerDayRÿRH((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRs 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R;RºRR¸RlR¹(R&R'R.RGtshuntPlayerDictR6((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_WorldBossShuntInfos
  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¸RlR¹( Rvt    updTeamIDt isNeedSyncMapR6R3R.RGRÎt    shuntInfoRÐtteamIDt relatedTick((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChange"s"       
    %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ãRFRNRR¸RlR¹R(    R.RGRR6R3tremovePlayerIDListRÎR8RÐ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRC7s"  
      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;RMRR¸RlR»RKR¯R!RRºRãRËRFRR¹( R9R't    ProceTimeR7R6R3R.RGRÎR8RÐR9R:((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR™Ns,   $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ºR5RR~tGetFBIDRRãRËRFRRR¸RlR¹(
RvR9RÎt playerMapIDt playerLineIDR7R6R3R.RG((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMapks(           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;RKtkeysRzttagGCBossShuntLineStateInfotCleartBossLineStateInfoRLRãRNttagGCBossShuntLineStateRt
LineIDListt    StateListRt    LineCountRRRRrRQRŠR‹R!RŒRRŽRR( RvR‘tbossShuntLineInfoRROt
lineIDListt    stateListRGRµ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=%siR6cstd|dˆ|dƒS(Niii(R7(R8(R9(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:Ûss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(!RR^RbR`R°RlR±Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
tDef_BossRebornCntR#R$RãtDef_Boss_Func_WorldtDef_Boss_Func_HomeR)t    enumerateR;R<RRNRRR=tg_lastBossRebornTimeRt WorldNotifyR²(taddPointR´Rµt
totalPointtcurPointtupdPointt    rebornCnttkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyRwR•R?RR2R>R1tneedNotifyPointPerListtpointPertnPoint((R9s`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
RSRTR#R¼RR;RúRûRütGetFuncCompileCfgtDef_BRServerPlayerCntRRRRR²(RëRtyesterdayPlayerCnttserverActivePlayerCnt((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(NtBossRebornTotalPointiiiiÿÿÿÿ( R#R$RRRiRRWRR^R_R`RQR²(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRYR•R$tpreCntR[((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRRüs &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NROiiÿÿÿÿit BossFHPoint2(RXR#R$RRY(R9tnotifySecondList((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(RzttagGCBossRebornPointRRRStPointRR^RbR`RQRRt
TotalPointRTt    RebornCntRrRQRŠR‹R!RŒRRŽRR(RvRR[R”R•((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR²s(       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_dogzNPCRefreshTimeDictRRRzttagGCDogzNPCRefreshTimetInfoListRãR7ttagDogzTimeInfoObjtNPCIDR‡RNRtCntRRrRQRŠR‹R!RŒRRŽRR( RvtrefreshTimeDictR9RtnpcidttimeinfotlastRefreshTimet nextNeedTimet
remainTimettimeInfoR”R•((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR³3s6                    cCsŠtjƒj|ƒ}|s0tjd|ƒdS|jƒ}tjj|dƒdtj|<tjt    j
tjƒtj dtjƒdS(Ns!ÕÒ²»µ½¸ÃÏÉÃËÃû: killFamilyName=%siisÆï³èÕù¶áÏÉÃË»÷ɱBossÊýͳ¼Æ: %s( RtGetFamilyManagertFindFamilyByNametErrLogtGetIDR;R¿RLR¡RlRÀR(tkillFamilyNametfamilytfamilyID((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR%Us  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tGetFuncLimitLVRltGameFuncID_HorsePetRobBossRRt"Def_Notify_WorldKey_WorldAverageLvR7RRrRQRŠ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_HorsePetRobBossPlayerCountcs*      cCs#it_tjtjtjƒdS(N(R;R¿RR¡RlRÀ(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
isinstanceR)RR;t!g_horsePetRobBossHurtPlayerIDInfoR#R$RûRNtPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictR4t
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListRÎ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayerŒs*"         cCs't|tƒsdStjj|ƒdS(N(R›tdictR;REtupdate(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(RRrRsRzttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR;RERãttagGCFamilyBossHurtInfoR}RltDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenRNtNPCCountRR( RYRuR'RvthurtPackRÐ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(RRrRsRR}t    GetFamilyR!t
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRRt FamilyNotifyR‰tGetName(RYRuR'RvRÎRÐt    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBoss×s        %(HRRlR`RRzRRÌRR#RR¬RR R;RŸRÁRRRXRR5R@RJRDRR    RRRRRcRPR"RxR!R R¤R§R¨RªR«RÂRÞRíRäR½RR†RtobjectRRR4R;RCR™RAR¯RfRlRRRRšR²R³R%R—R™R¦R©R¼RÇ(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> sˆ                           0     $                                         
9    5                         .    '                      [                         )    ;           "