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
H ‰ec@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „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„Z/d„Z0d„Z1d„Z2d„Z3d e4fd!„ƒYZ5d"„Z6d#„Z7d$„Z8d%„Z9d&„Z:d'„Z;dgd(„Z<d)„Z=d*„Z>d+„Z?e@d,„ZAd-„ZBdd.„ZCd/„ZDd0„ZEd1„ZFd2„ZGd3„ZHd4„ZId5„ZJd6„ZKd7„ZLd8„ZMd9„ZNdS(: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#CheckResetBossKilledCntOnServerInitIs&       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.pytDoGameWorldBossOnKilledisF
                  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$2scCs¤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.pytOnQueryBossInfoNs    
 
  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"dsV                          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   
                  cCsit|ƒ}|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_DropGoodItems 
 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=HstreverseicSs|dS(Ni((R;((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=Jsids%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ÀsX$              
&!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.pytCalcGameWorldBossOnlineCnt[s>        $%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 GetSaveDatas
cCs’tj||ƒ\}}tjd|ƒi|_xYt|ƒD]K}tjƒ}|jƒ||j    |||ƒ7}|j
}||j|<q?W|S(NsLoadBossAttention cnt :%s( R+t    ReadDWORDRRRRTRRRtreadDataR(RtdatastpostdataslenR/t_tdataRÁ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDatas     
    (t__name__t
__module__RRR R¯R0R8(((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_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·RoR¸( R~t    updTeamIDt isNeedSyncMapR9R<R.RJRÁ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ìRIRQRR·RoR¸R(    R.RJRR9R<tremovePlayerIDListRÁRARÖ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRFLs"  
      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    ProceTimeR@R9R<R.RJRÁ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>RR{tGetFBIDRRìRÑRIRRR·RoR¸(
R~RBRÁt playerMapIDt playerLineIDR@R9R<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_BossRebornNeedPointtSetBossRebornNeedPointRRRWR%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_RWR%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(NRYiiiiÿÿÿÿ( R%R&RRRvRRcRRaRbRcR]R³(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntR\R™R/tpreCntRg((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR^s &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NR[iiÿÿÿÿit BossFHPoint2(RdR%R&R’RÔ(R<tnotifySecondList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRŸ0scCs*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(NRYi(R‚ttagGCBossRebornPointRRR_tPointRRaReRcR]R^t
TotalPointRWt    RebornCntR%RÆtTotalRebornCntRvRTRRR#R‘R’R“R”R•(R~R'RgR˜R™((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR³<s*       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'Ws  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_HorsePetRobBossPlayerCountes*      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
isinstanceRbRR>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__GetBossFirstKillRecDataListëscCsƒ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.pytOnGetBossFirstKillAward<s"           (ORRoRcR”R‚RRÒRR%RRÇR­R’RÊR+R>RÂRÐRRRRdRR8RCRMRGRR    RR RRRfRSR$RR#R"R©RªR«R¬R½RÂRÀRõRíRöR!R‹RtobjectRRR=RDRFRžRJR°RXRsRyRR^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     %                                         <    5                             =    '                      Y                         (        B                      
                            :