cehua_wcy
2018-08-30 4db69559139f368ea15756c94aa5a7ef4352fcdb
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
Hý‡[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 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„Z/de0fd „ƒYZ1d!„Z2d"„Z3d#„Z4d$„Z5d%„Z6d&„Z7dgd'„Z8d(„Z9d)„Z:e;d*„Z<d+„Z=dd,„Z>d-„Z?d.„Z@d/„ZAd0„ZBd1„ZCdS(2iÿÿÿÿ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&       c Csšt|ƒdkrdS|d}|dkr0dS|d}|d}|d}t|ƒdkrj|dnt}t|ƒdkrŒ|dnd}t|ƒ}t|ƒ}    tjd||||||    fƒ|rë|     rëtjdƒdSttjƒƒ}
t    |ƒ} t
| |
||ƒ|rYt | ƒ} t | | dƒtjd    || fƒn|r–t |dƒt||
ƒtd|gƒt|ƒndS(
Niiiiiisk»÷ɱÊÀ½çboss DoGameWorldBossOnKilled...bossID=%s,hurtValue=%s,mapID=%s,tick=%s,isMapNeedShunt=%s,isAlive=%ssPÐèÒª·ÖÁ÷µÄµØÍ¼boss±»»÷ɱ£¬µ«Êǵ±Ç°bossÈ«¾Ö״̬ΪËÀÍö״̬£¬²»ÔÙ¸üÐÂboss»÷ɱÐÅÏ¢£¡s5    addBossKillCnt: killPlayerName=%s,befKilledCnt=%s(RtTruetNonetIsMapNeedBossShuntt __GetIsAliveRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotSendMapServerBossKilledCnt( tmsgListttickRtkillPlayerNamet    hurtValuet isAddKillCnttisNotifytmapIDtisMapNeedShunttisAlivet
killedTimeRt befKilledCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilled`s<
 
 
 
""             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(RR(t refreshTimetbossInfo((R.s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshListŒs  cCs:t|ƒdkrdS|d}|d}t|ƒdkrF|dnd}t|ƒdkrh|dnd}tjd|||||fƒ|dkrždSt|ƒ}|sÃt|||ƒn|rÜt|||ƒn|t|ƒkrt||ƒt    d|gƒn|r6|t
j kr6t
j j |ƒndS(NiiiisPÊÀ½çboss DoGameWorldBossOnReborn...mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%s( RRRRRtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRRRR0tg_familyOwnerBossInfotpop(RR RR'R%tlineIDR&((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnReborns(
 
""    cCsÎ|dkrdStjj|gƒ}|rG||krG|j|ƒn'| rj||krj|j|ƒndS|tj|<|s”tjj|ƒn|tjkr¶tjj|ƒntj    dtjƒdS(Ns    bossÒÑËÀÍöÏß·±ä¸ü: %s(
RR0tg_bossShuntDeadLinetgettremovetappendR9tg_bossShuntDeadLineChangeBossRR(RR:R'tbossDeadLineList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR7½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__GetBossPrizeRecDataRtrangetCounttAtt    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(RN((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRîscCs!tjƒjtj||ƒdS(N(Rt GetGameWorldtSetDicttChConfigtDef_WorldKey_BossIsAlive(RR'((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRôscCstjƒjtj|ƒS(N(RRPt GetDictByKeyRRRS(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__GetKillRecordtsplitR?Rtjoint SetStrValue3t    SetValue2(RNR(t
playerNameR"t
killRecordtkillRecordList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRs 
  cCs
|jƒS(N(t GetStrValue3(RN((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRUscCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRI((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRBs     cCsdS(N((R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR$sc CsÚttjƒƒ}tjƒ}tƒ}g|_xæt|jƒƒD]Ò}|j|ƒ}|j    ƒ}|spqCn|rˆ||krˆqCntj
ƒ}||_ t |j ƒ|_ t|ƒ|_t|jƒ|_|jƒ}    t|j ƒ}
td|
||    ƒ|_|jj|ƒqCWt|jƒ|_|s³tjƒ} x–td| jƒƒD]Y} | j| ƒ}|dksS|jƒ r‡qSntj|ƒrœqSnt j!||ƒqSWn#tj|ƒrÆdSt j!||ƒdS(Ni("RRtChPyNetSendPackttagGCGameWorldBossInfoRBt BossInfoListRCRDRERFttagBossInfoObjtBossIDRtIsAliveRUt
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR,t RefreshSecondR?tBossCntRtGetPlayerManagertGetActivePlayerCounttGetActivePlayerAtRt    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack( t    curPlayertsyncBOSSIDListR.R4RIRKRLRt bossInfoObjR(R3t playerManagerti((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR<sD                 c sÅtjtj|ƒsdSttjƒƒ‰tˆ|ƒtˆƒtj    sëx~t
t j ƒj ƒƒD]d}t j ƒj|ƒ}|jƒ}t|ƒ}|jƒ}t|ƒ}tj    j|||gƒqdWtj    jd‡fd†ƒng}x·tj    D]¬}|\}}}t|ƒ}    |    r(qûntd|ˆ|ƒ}
|
dkrOPntj|ƒt|dƒ|j|ƒtjtj|dƒtjd|||
fƒqûW|rÁtd|ƒndS(NR+cstd|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( RtSetWorldDictKeyRRtTYPE_WorldBossProcessTickRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR0R1txranget IpyGameDataPYtIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDRRlRmR?R2RR,t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExR^t'Def_Notify_WorldKey_GameWorldBossRebornRRR( R R|tipyDataRRR(R3RyR4R't rebornSecond((R.s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossRebornns@ 
                 cCstjtj|ƒsdSttjƒƒ}xktjD]`}|\}}}t|ƒ}|rbq5nt    d|||ƒ}|s…q5nt
j ||ƒq5WdS(Ni( RR}RRtTYPE_WorldBossGeTuiTickRRR0R1RR,R‡t    GeTuiBoss(R R.R4RR(R3R'RŒ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTuis cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RRlRmRRR,R(RRR(R3R.RŒR'((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossIsAliveOrCanReborn±s    cCs•xŽttjƒjƒƒD]t}tjƒj|ƒ}|jƒ}t|ƒ}|sXqn|jƒ}|tj    krt
j t j |dƒqqWdS(Ni(RR‚RƒR„R…R†RtGetMapIDRRtDef_FBMapID_SealDemonRR‰R^RŠ(R|R‹RR'R%((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBoss¾s   cCsrt|ƒtjƒj|ƒtdƒr6t|ƒntjƒ}|jt    j
t j ƒ}|rnt |ƒndS(Ni(Rt PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRRPRTRRt!Def_WorldKey_OperationActionStateR^tOperationActionName_BossReborntSync_BossRebornPoint(Rxt    gameWorldtstate((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt OnPlayerLoginÍs
    cCs†tƒtƒtdƒrItjtjtjƒtjtj    tj
ƒnt j ddƒ}t |ƒd}tjtj||ƒdS(NitDogzFBRefreshCfgi(RR”RRtSendCommMapServerMsgR^t#Def_Notify_WorldKey_BossShuntPlayerR0tg_bossShuntPlayerInfot%Def_Notify_WorldKey_BossShuntDeadLineR<R‚t
GetFuncCfgt__GetBossOnlineHeroCntR‰t%Def_Notify_WorldKey_BossOnlineHeroCnt(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ÿÿÿÿR+cSs|dS(Ni((R-((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR/    streverseicSs|dS(Ni((R-((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR/ st(RRRR‚R¤R^t-Def_UniversalGameRecType_BossDropGoodItemInfoR`RaRDRRREtGetTimetDeleteRt    GetValue5R?tsortedRR2tPlayerUniversalGameRectMapServer_UniversalGameRecR(RR tplayerIDt
killerNameR%tnpcIDtitemIDtuserDatat weightValuet maxRecordCntRbRct
recordListR.t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR|trecDatatsaveTimetcurWeightValuet
commonList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnKillBossDropGoodItemësB            
cCsUtjtj|ƒsdStjdƒi}xlttjƒjƒƒD]R}tjƒj    |ƒ}|j
ƒ}|j ƒ}d|krE|j ƒ||<qEqEWi}tj ƒ}xÇt|jƒƒD]³}|j|ƒ}|dksÀ|jƒ rôqÀntj|ƒr    qÀn|jƒ}    x[|jƒD]M\}
} | d|    koM| dknr"|j|
dƒd||
<q"q"WqÀWtjd|ƒtjƒ} x| jƒD]q} | tj}    x[|jƒD]M\}
} | d|    koì| dknrÁ|j|
dƒd||
<qÁqÁWq¡Wtjd|ƒx'|jƒD]\}
}t|
|ƒq4WdS(NsÊÀ½çbossÔÚÏßÈËÊýͳ¼ÆR§iis#    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þÔÚÏßÈËÊý %ss)    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þ¼°¿ç·þÔÚÏßÈËÊý %s(RR}RRtTYPE_WorldBossOnlineCntTickRRR‚RƒR„R…R†tGetRefreshTimet
GetLVLimitRpRqRrRRsRtRutGetLVtitemsR=t MergePlayertGetMergeServerOnlinePlayerInfotvaluestDef_MSOLPlayer_LVtSetBossOnlineHeroCnt(R tbossRebornDictR|R‹RtrefreshTimeStrt playerCntDictR{t
findPlayertfindLVtbossidtlvLimittmergeServerOnlinePlayerDictt
playerInfot curOnlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCntsB      $%  $%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Ë¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýtBOSSInfoNidiiRŸisiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s(R‚tGetIpyGameDataR¥tabst
GetDiffPertGetNoUpdataCntRR
R^t*Def_Notify_WorldKey_GameWorldBossOnlineCntR¤RR‰R¦R(RÓtonlieCntR‹tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÍDs$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRR^RÞ(RÓt    beforeNumRßRá((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¥]scCsƒtjd|ƒ}|sdSt|ƒd}t|jƒƒ}tjtj||ƒt|||ƒt    j
d|||fƒdS(sÉèÖÃbossË¢ÐÂʱ¼äRÙNis:    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,refreshTime=%s( R‚RÚR¥tevalRÅRR
tDef_BossRefreshTimeR5RR(RÓR(R‹R§R3((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRcscCstjtj|ƒS(s»ñÈ¡bossË¢ÐÂʱ¼ä(RRRæ(RÓ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRmpscCsJtjƒj|ƒ}|j}|j}tjƒj|jƒ||ƒdS(N(    RRptGetPlayerByIndexRhtIsAddR•R–tUpdateBossAttentiont GetPlayerID(RKt
clientDataR RxRtisAdd((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( RïRåt
RecordDataR9tcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RðtplayeridRÓ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(RtRuRïR=RêRåRóRdttagGCBossAttentionInfotBossListRÈttagGCBossAttentionRhtAddStateR?RRoRvRw(RðRxt attentionDatat bttentionDicttpackDataRÓtaddStateR4((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(RïRË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(Rt    ReadDWORDRRRïRR÷RøRôtreadDataRùttypeRåRótlist(RðtdatastpostdataslenR t_tdataR³((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDataÐs     
    (t__name__t
__module__RñRòRéR—R R(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRî‰s                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(Nt    BossShuntii(R‚R¤RRt Def_ServerDayRtGetFuncEvalCfgtFalse(R%tbossShuntMaxServerDayt openServerDaytbossShuntMapIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRäs 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R0R¢RR R^R¡(RR R%R:tshuntPlayerDictR+((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( R0R¢t    GetTeamIDRRÈRRRR R^R¡( Rxt    updTeamIDt isNeedSyncMapR+R R%R:R³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(
R0R¢RÈR9R?RR R^R¡R(    R%R:RR+R tremovePlayerIDListR³R%Rµ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR6 s"  
      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(R0R@RR R^R£R<R˜RRR¢RÈRR9RR¡( R.R t    ProceTimeR$R+R R%R:R³R%RµR&R'((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR#s,   $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(R0R¢R"RêR’tGetFBIDRRÈRR9RRR R^R¡(
RxR&R³t playerMapIDt playerLineIDR$R+R R%R:((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMap@s(           cCsU|stjjƒ}ntjƒ}|jƒg|_x]|D]U}tjƒ}||_tjj    |gƒ|_
t |j
ƒ|_ |jj |ƒq>Wt |jƒ|_|s.tjƒ}x“t|jƒƒD]Y}|j|ƒ}|dksÎ|jƒ rqÎntj|ƒrqÎntj||ƒqÎWn#tj|ƒrAdStj||ƒdS(N(R0R<tkeysRdttagGCBossShuntLineStateInfotCleartBossLineStateInfottagGCBossShuntLineStateRhR=t DeadLineListRt DeadLineCountR?RDRRpRRqRrRRsRtRuRvRw(RxRytbossShuntLineInfoRt bossLineStateR{R|((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR˜\s2 
           cCsBtjƒ}|jtjtjƒ}|s<tjdƒdS|jtjƒ}|s`t    ƒ}n|swtjdƒdSt
j t
j ƒ}|||}t
j t
j |ƒ|||krÓtjddiƒ}g}x<|jƒD].\}}    |    d krqân|t|ƒ7}qâWtjd|ƒg}
xttjƒD]n\} } | \} }}| |krhq;nt| ƒ}|r€q;nd}| ||gtj| <|
j| ƒq;Wtjd|
ƒttjƒƒandtjdƒ}xR|D]J}||d    }||ko|knrétjdd
|gƒPqéqéWtƒdS( Ns Ôö¼Óboss¸´»îµã »î¶¯Î´¿ªÆôs" Ôö¼Óboss¸´»îµã Ã»ÓÐ×ܵãÊý£¡£¡£¡£¡tKillBossCntLimitiiscanRebornBossIDList=%ss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(ii(RRPRTRRR™R^RšRt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
R‚RRÈRt    enumerateR0R1RR?RRtg_lastBossRebornTimeRtt WorldNotifyR›(taddPointRœRt
totalPointtcurPointtupdPointtkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyt
bossIDListR|R4RR(R3R'tneedNotifyPointPerListtpointPertnPoint((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPoint~sV        cCs¤tjtjdƒtjdƒ}tgtjjƒD]}||kr5d^q5ƒ}t    tj
ddƒƒ}tjtj |ƒt j d|ƒtƒtƒdS(NitServerActivePlayerCntiis;    boss¸´»î»î¶¯¿ªÆôʱÉèÖÃ×òÈÕ»îÔ¾ÈËÊýyesterdayPlayerCnt=%s(RR
R=R‚R¤RR0tg_yesterdayPlayerLVDictRËRåtGetFuncCompileCfgtDef_BRServerPlayerCntRRR<R›(RÔtlvtyesterdayPlayerCnttserverActivePlayerCnt((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‚RRRRQRR>RRPRQRRR;R›(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRKR|R tpreCntRB((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR<Ãs &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NR9iiÿÿÿÿit BossFHPoint2(R?R‚RRtR@(R.tnotifySecondList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR€ÖscCstjƒ}tjtjƒ|_tjƒjt    j
ƒ}|sKt ƒ}n||_ tj ƒ}|sÙx“t|jƒƒD]Y}|j|ƒ}|dksy|jƒ r­qyntj|ƒrÂqyntj||ƒqyWn#tj|ƒrìdStj||ƒdS(N(RdttagGCBossRebornPointRRR=tPointRRPRTRRR;R<t
TotalPointRpRRqRrRRsRtRuRvRw(RxRRBR{R|((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR›âs&       c
Csf|\}}|r'tjƒj|ƒnd}|r>| r>dS|sHdStjƒ}g|_xH|jƒD]:\}}tjƒ}||_    ||_
|jj |ƒqjWt |jƒ|_ |s?tjƒ}x“t|jƒƒD]Y}    |j|    ƒ}|dksß|jƒ rqßntj|ƒr(qßntj||ƒqßWn#tj|ƒrRdStj||ƒdS(N(RRptFindPlayerByIDRRdttagGCDogzNPCRefreshTimetInfoListRÈttagDogzTimeInfoObjtNPCIDRnR?RtCntRRqRrRsRtRuRvRw(
RR³trefreshTimeDictRxRtnpcidtrTimettimeInfoR{R|((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytSync_DogzNPCRefreshTimeùs6 !                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ÉËÑªÍæ¼Ò»ã×Ü: %stFairyGrabBossIDis+½áËãÆï³èÕù¶á²ÎÓë½±Íæ¼Ò: joinPlayerIDList=%stFairyGrabBossJoin(RRRõt
isinstanceRRR0t!g_horsePetRobBossHurtPlayerIDInfoR‚RRËR?tPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictthorsePetRobBossIDListt
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListR³((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayers*"         cCs't|tƒsdStjj|ƒdS(N(RntdictR0R8tupdate(Rr((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_FamilyOwnerBossInfo8sc 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(RRpRçRdttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR0R8RÈttagGCFamilyBossHurtInfoReR^tDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenR?tNPCCountRvRw( RKRëR RxthurtPackRµthurtInfotcurHPtmaxHPt firstFamilyIDtfirstFamilyName((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryAllFamilyBossHurtIs$                  cCs®tjƒj|ƒ}|jƒ}|j}|jƒ}|dkrFdS|j|ƒ}|dkredS|jƒt    j
krŽtj d|ƒdSt j |jƒd|gƒdS(NsÆÕͨ³ÉÔ±ÎÞ·¨ÕÙ¼¯£¡tFairyGrabBossHelp(RRpRçRêRet    GetFamilyRt
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRRtt FamilyNotifytGetID(RKRëR RxR³Rµt    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBosses        (DRR^RRRvRdRR±RpR‚RÉR÷R•RtRR0R‡R•RR?RR*R5R;R7RR    RRRRRURBRRRRRR‘R”RžR¨RÃRØRÍR¥RRmRítobjectRîRR!R(R6RR.R˜RMRURR<R€R›RkRzR}RR›(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> s€                           ,                                          2    /                         .    +                       [                         "    6              !