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
†Ù5\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ƒ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.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(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.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((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 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(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 
     cCsI|d}tjƒj|ƒ}|r8|jƒ|d<nt||ƒdS(Nii(RRrtFindPlayerByIDtGetNametOnKillBossDropGoodItem(R&R'tplayerIDRv((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ÿÿÿÿR6cSs|dS(Ni((R8((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:DstreverseicSs|dS(Ni((R8((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR:Fstt
DropRecord(RRRR#R¼Rt CrossRealmMsgtSendMsgToClientServerRlRÇt-Def_UniversalGameRecType_BossDropGoodItemInfoRnRoRRRRRStGetTimetDeleteRQt    GetValue5RNtsortedtTrueR=tPlayerUniversalGameRectMapServer_UniversalGameRecR!Rt WorldNotify(R&R'RÆt
killerNameR.tnpcIDtitemIDtuserDatat weightValuet serverGroupIDt maxRecordCntRpRqt
recordListR9t    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–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.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Ë¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý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ì~s$+        
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( RRt
RecordDataRFtcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RtplayeridRòR tbossAttentionDatat
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ŽRRLR RRRzttagGCBossAttentionInfotBossListRëttagGCBossAttentionRtAddStateRNRR‰RR(RRvt 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    ReadDWORDRRRRQRRRtreadDataRttypeRRtlist(RtdatastpostdataslenR,t_tdataRÆ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDatas     
    (t__name__t
__module__RRR R®R-R7(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÉs                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NRAii(R#R¼RRRRÓR$R(R.tbossShuntMaxServerDayRRH((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR$s 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R;RºRR¸RlR¹(R&R'R.RGtshuntPlayerDictR6((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¸RlR¹( Rvt    updTeamIDt isNeedSyncMapR6R;R.RGRÆ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ëRFRNRR¸RlR¹R(    R.RGRR6R;tremovePlayerIDListRÆR@RØ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRCLs"  
      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    ProceTimeR?R6R;R.RGRÆR@RØRARB((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 R~tGetFBIDRRëRÓRFRRR¸RlR¹(
RvRARÆt playerMapIDt playerLineIDR?R6R;R.RG((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;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_HomeR1t    enumerateR;R<RRNRRR=tg_lastBossRebornTimeRRÖR²(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
R[R\R#R¼RR;RRRtGetFuncCompileCfgtDef_BRServerPlayerCntRRRZR²(RóRtyesterdayPlayerCnttserverActivePlayerCnt((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$RRRpRR_RR^R_R`RYR²(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRYR•R,tpreCntRb((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRZs &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NRWiiÿÿÿÿit BossFHPoint2(R`R#R$RRÖ(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(RzttagGCBossRebornPointRRR[tPointRR^RbR`RYRZt
TotalPointR\t    RebornCntRrRQRŠR‹R!RŒRRŽRR(RvR%RbR”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_dogzNPCRefreshTimeDictRRRzttagGCDogzNPCRefreshTimetInfoListRëR7ttagDogzTimeInfoObjtNPCIDR‡RNRtCntRRrRQRŠR‹R!RŒRRŽRR( RvtrefreshTimeDictR9R%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¿RLR¡RlRÀ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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_HorsePetRobBossPlayerCountxs*      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
isinstanceR1RR;t!g_horsePetRobBossHurtPlayerIDInfoR#R$RRNtPlayerCompensationt 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(RRrRsR R„t    GetFamilyR!t
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRRt FamilyNotifyRRÄ(RYRuR'RvRÆRØt    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBossìs        %(JRRlR`RRzRRÔR¤R#RR¬RRÌR(R;RŸRÈRRR`RR5R@RJRDRR    RRRRRcRPR"RxR!R R¤R§R¨RªR«RÂRÇRÅRõRìR½RR†RtobjectRRR<RCRCR™RIR¯RmRsRRZRš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    '                      [                         )    ;           "