hxp
2019-01-04 079eb9849089a55127d2408d8832dd5ee148f10d
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
xì"\c@sÃddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zdd„Zd„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/d e0fd!„ƒYZ1d"„Z2d#„Z3d$„Z4d%„Z5d&„Z6d'„Z7dgd(„Z8d)„Z9d*„Z:e;d+„Z<d,„Z=dd-„Z>dd.„Z?d/„Z@d0„ZAd1„ZBd2„ZCd3„ZDd4„ZEd5„ZFdS(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|d}|d}|d}t|ƒdkrj|dnt}t|ƒdkrŒ|dnd}t|ƒ}t|ƒ}    tjd||||||    fƒ|rë|     rëtjdƒdStt    j    ƒƒ}
t
|ƒ} t | |
||ƒ|rYt | ƒ} t | | dƒtjd    || fƒn|r–t|dƒt||
ƒtd|gƒt|ƒntjd
dƒ} || krÁ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=%stFairyGrabBossID(RtTruetNonetIsMapNeedBossShuntt __GetIsAliveRRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotSendMapServerBossKilledCntt IpyGameDataPYtGetFuncEvalCfgtOnFamilyKillHorsePetRobBoss(tmsgListttickRtkillPlayerNamet    hurtValuet isAddKillCnttisNotifytmapIDtisMapNeedShunttisAlivet
killedTimeRt befKilledCntthorsePetRobBossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilled_sB
 
 
 
""               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((R3s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshListŽs  c    CsXt|ƒdkrdS|d}|d}t|ƒdkrF|dnd}t|ƒdkrh|dnd}tjd|||||fƒ|dkrždStjdƒ}||k}t|ƒ}|sÞt|||ƒn|rút||||ƒn|t    |ƒkr,t
||ƒt d|gƒn|rT|t j krTt j j|ƒndS(Niiiis?ÊÀ½çboss״̬±ä¸ü: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%st    BossShunt(RRRRR R!RtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRRRR5tg_familyOwnerBossInfotpop(    R#R$RR+R)tlineIDtbossShuntMapIDListtisBossShuntMapR*((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(RR5tg_bossShuntLineStatetgettg_bossShuntStateChangeBosstappendRR(RR@R+R*tbossLineStateDict((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=½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(RU((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(RRWt GetDictByKeyRYRZ(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__GetKillRecordtsplitRGRtjoint SetStrValue3t    SetValue2(RUR,t
playerNameR&t
killRecordtkillRecordList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRs 
  cCs
|jƒS(N(t GetStrValue3(RU((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR\scCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRP((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRIs     cCsdS(N((R((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR!scCs/tjƒj|ƒ}|j}t||ƒdS(N(RtGetPlayerManagertGetPlayerByIndext
BossIDListR(RRt
clientDataR$t    curPlayert
bossIDList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryBossInfo=s     c 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| ƒ}|dks\|jƒ rq\ntj |ƒr¥q\nt!j"||ƒq\Wn#tj |ƒrÏdSt!j"||ƒdS(Ni(#RRtChPyNetSendPackttagGCGameWorldBossInfoRIt BossInfoListRJRKRLRMttagBossInfoObjtBossIDRtIsAliveR\t
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR1t RefreshSecondt    RefreshCDRGtBossCntRRktGetActivePlayerCounttGetActivePlayerAtRt    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack( RotsyncBOSSIDListR3R9RPRRRSRt bossInfoObjR,R8t playerManagerti((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRGsF                     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(NR0cstd|dˆ|dƒS(Niii(R1(R2(R3(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4‰siis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s( RtSetWorldDictKeyRYtTYPE_WorldBossProcessTickRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR5R6txrangeR tIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDRRzR{RGR7RR1t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExRet'Def_Notify_WorldKey_GameWorldBossRebornRRR( R$R‰tipyDataRRR,R8R†R9R+t rebornSecond((R3s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossRebornzs@ 
                 cCstjtj|ƒsdSttjƒƒ}xktjD]`}|\}}}t|ƒ}|rbq5nt    d|||ƒ}|s…q5nt
j ||ƒq5WdS(Ni( RRŠRYtTYPE_WorldBossGeTuiTickRRR5R6RR1R“t    GeTuiBoss(R$R3R9RR,R8R+R˜((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTui©s cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RRzR{RRR1R(RRR,R8R3R˜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’RtGetMapIDRYtDef_FBMapID_SealDemonRR•ReR–(R‰R—RR+R)((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBossÊs   cCs|t|ƒtjƒj|ƒtdƒr6t|ƒntjƒ}|jt    j
t j ƒ}|rnt |ƒnt|ƒdS(Ni(Rt PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRRWR[RYt!Def_WorldKey_OperationActionStateRetOperationActionName_BossReborntSync_BossRebornPointtSync_DogzNPCRefreshTime(Rot    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||ƒtjr¤tjtjtjƒndS(NitDogzFBRefreshCfgi(RR RRtSendCommMapServerMsgRet#Def_Notify_WorldKey_BossShuntPlayerR5tg_bossShuntPlayerInfot&Def_Notify_WorldKey_BossShuntLineStateRDR 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ÿÿÿÿR0cSs|dS(Ni((R2((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4streverseicSs|dS(Ni((R2((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4st(RRRR R±Ret-Def_UniversalGameRecType_BossDropGoodItemInfoRgRhRKRRRLtGetTimetDeleteRŽt    GetValue5RGtsortedRR7tPlayerUniversalGameRectMapServer_UniversalGameRecR(R#R$tplayerIDt
killerNameR)tnpcIDtitemIDtuserDatat weightValuet maxRecordCntRiRjt
recordListR3t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR‰trecDatatsaveTimetcurWeightValuet
commonList((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnKillBossDropGoodItemüsB            
c Cs¶tjtj|ƒ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|ƒx'|jƒD]\}
} t|
| ƒq•WdS(NsÊÀ½çbossÔÚÏßÈËÊýͳ¼ÆR¶iis#    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þÔÚÏßÈËÊý %s(RRŠRYtTYPE_WorldBossOnlineCntTickRRŽR RRR‘R’tGetRefreshTimet
GetLVLimitRkRR€RRR‚RƒtGetLVtitemsREtSetBossOnlineHeroCnt( R$tbossRebornDictR‰R—RtrefreshTimeStrt playerCntDictRˆt
findPlayertfindLVtbossidtlvLimitt curOnlineCnt((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCnt*s4      $%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
Ret*Def_Notify_WorldKey_GameWorldBossOnlineCntR±RR•R³R(RÞtonlieCntR—tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRØLs$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRReRç(RÞt    beforeNumRèRê((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR²esc        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Ë¢ÐÂʱ¼äRâNiiitFirstDayActivePlayerCntsJ    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,yesterdayCnt=%s,refreshTime=%s(R RãR²RÕRRt Def_ServerDayRR5tg_yesterdayPlayerLVDicttvaluesR±tevalRÔR
tDef_BossRefreshTimeR:RR(    RÞR,R—R¶tLVLimitt openServerDaytlvt yesterdayCntR8((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRks $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(    RRkRlRvtIsAddR¡R¢tUpdateBossAttentiont GetPlayerID(RRRnR$RoRtisAdd((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
RecordDataR?tcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(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(R‚RƒRþRERúRòRRrttagGCBossAttentionInfotBossListR×ttagGCBossAttentionRvtAddStateRGRR~R„R…(RÿRot attentionDatat bttentionDicttpackDataRÞtaddStateR9((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ŽRRRtreadDataRttypeRòRtlist(RÿtdatastpostdataslenRt_tdataRÂ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDataÞs     
    (t__name__t
__module__RRRùR£RR%(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRý—s                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NR;ii(R R±RRRïRR!tFalse(R)tbossShuntMaxServerDayRõRA((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRòs 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R5R¯RR­ReR®(R#R$R)R@tshuntPlayerDictR0((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( R5R¯t    GetTeamIDR(R×RRRR­ReR®( Rot    updTeamIDt isNeedSyncMapR0R*R)R@RÂt    shuntInfoRÄtteamIDt relatedTick((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChanges"       
    %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(
R5R¯R×R?RGRR­ReR®R(    R)R@RR0R*tremovePlayerIDListRÂR/RÄ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR<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(R5RFRR­ReR°RDR¤RR(R¯R×RR?RR®( R3R$t    ProceTimeR.R0R*R)R@RÂR/RÄR0R1((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRŒ1s,   $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(R5R¯R,RúRžtGetFBIDR(R×RR?RRR­ReR®(
RoR0RÂt playerMapIDt playerLineIDR.R0R*R)R@((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMapNs(           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(R5RDtkeysRrttagGCBossShuntLineStateInfotCleartBossLineStateInfoRER×RGttagGCBossShuntLineStateRvt
LineIDListt    StateListRt    LineCountRKRRkRŽRR€RRR‚RƒR„R…( RoR†tbossShuntLineInfoRRHt
lineIDListt    stateListR@Rªt bossLineStateRˆR‰((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¤js@ 
                    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=%siR0cstd|dˆ|dƒS(Niii(R1(R2(R3(s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4¾ss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(!RRWR[RYR¥ReR¦Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
tDef_BossRebornCntR R!R×tDef_Boss_Func_WorldtDef_Boss_Func_HomeRt    enumerateR5R6RRGRRR7tg_lastBossRebornTimeR‚t WorldNotifyR§(taddPointR©Rªt
totalPointtcurPointtupdPointt    rebornCnttkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyRpR‰R9RR,R8R+tneedNotifyPointPerListtpointPertnPoint((R3s`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
RJRKR R±RR5RðRñRòtGetFuncCompileCfgtDef_BRServerPlayerCntRRRIR§(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(NtBossRebornTotalPointiiiiÿÿÿÿ( R R!RRR`RRNRRWRXRYRHR§(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRRR‰RtpreCntRR((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRIßs &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NRFiiÿÿÿÿit BossFHPoint2(ROR R!R‚RP(R3tnotifySecondList((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(RrttagGCBossRebornPointRRRJtPointRRWR[RYRHRIt
TotalPointRKt    RebornCntRkRŽRR€RRR‚RƒR„R…(RoRRRRˆ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(R5tg_dogzNPCRefreshTimeDictRRRrttagGCDogzNPCRefreshTimetInfoListR×R1ttagDogzTimeInfoObjtNPCIDR|RGRtCntRRkRŽRR€RRR‚RƒR„R…( RotrefreshTimeDictR3RtnpcidttimeinfotlastRefreshTimet nextNeedTimet
remainTimettimeInfoRˆR‰((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¨s6                    cCsŠtjƒj|ƒ}|s0tjd|ƒdS|jƒ}tjj|dƒdtj|<tjt    j
tjƒtj dtjƒdS(Ns!ÕÒ²»µ½¸ÃÏÉÃËÃû: killFamilyName=%siisÆï³èÕù¶áÏÉÃË»÷ɱBossÊýͳ¼Æ: %s( RtGetFamilyManagertFindFamilyByNametErrLogtGetIDR5R´RER•ReRµR(tkillFamilyNametfamilytfamilyID((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"8s  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‚tGetFuncLimitLVRetGameFuncID_HorsePetRobBossRRt"Def_Notify_WorldKey_WorldAverageLvR1RRkRŽRR€RR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_HorsePetRobBossPlayerCountFs*      cCs#it_tjtjtjƒdS(N(R5R´RR•ReRµ(tisOpen((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnHorsePetRobBossActionChangees    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
isinstanceRRR5t!g_horsePetRobBossHurtPlayerIDInfoR R!RñRGtPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictR.t
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListRÂ((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayeros*"         cCs't|tƒsdStjj|ƒdS(N(R’tdictR5R>tupdate(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(RRkRlRrttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR5R>R×ttagGCFamilyBossHurtInfoRtRetDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenRGtNPCCountR„R…( RRRnR$RothurtPackRÄ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(RRkRlRúRtt    GetFamilyRt
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRR‚t FamilyNotifyR€tGetName(RRRnR$RoRÂRÄt    curFamilyt    curMember((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBossºs        %(GRReRYR„RrRRÀR”R RR¡R‚RR5R“R¸RRORR/R:RCR=RR    RRRRR\RIRRqRRR™RœRR R«R·RÒRáRØR²RR{RütobjectRýRR+R2R<RŒR8R¤R]RcR(RIRR§R¨R"RŽRRR R³R¾(((s`E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> s†                          /     "                                         
3    /                         .    "                      [                         )    ;           "