hwj35
2025-06-23 aa0f971ae9a59f0fd98d57b6c1d1663a270be92c
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
J    ìfc@s€ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZdfd„ƒYZdfd„ƒYZd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zdeed„Zd„Zd„Z ed„Z!dS(iÿÿÿÿNt HurtValueObjcBsqeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z RS( s2 ÉËѪ¶ÔÏ󣬿ÉÄÜÊÇÍæ¼Ò¡¢¶ÓÎéµÈ£¬Ö§³ÖЭÖúÐÅÏ¢µÈ
    cCs4d|_tj|_d|_d|_d|_dS(Nit(t_HurtValueObj__hurtIDtChConfigtDef_NPCHurtTypePlayert_HurtValueObj__hurtTypet_HurtValueObj__hurtNamet_HurtValueObj__hurtValuet_HurtValueObj__isFriend(tself((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__init__,s                  cCs|jS(N(R(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt
GetValueID4scCs ||_dS(N(R(R    thurtID((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt
SetValueID5scCs|jS(N(R(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetValueType6scCs ||_dS(N(R(R    thurtType((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt SetValueType7scCs|jS(N(R(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetHurtName8scCs ||_dS(N(R(R    thurtName((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt SetHurtName9scCs|jS(N(R(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetHurtValue:scCs ||_dS(N(R(R    t    hurtValue((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt SetHurtValue;scCs|jS(N(R(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetIsFriend<scCs ||_dS(N(R(R    tisFriend((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt SetIsFriend=s(t__name__t
__module__t__doc__R
R R RRRRRRRR(((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR(s                                        tPlayerHurtListcBsIeZdZd„Zd„Zd„Zdd„Zdd„Zd„Ze    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zded„Zdeed„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Ze    d„Z d „Z!d!„Z"d"„Z#d#„Z$RS($s3 ÉËѪÁбí, ÀàËÆ IPY_GameObj.IPY_PlayerHurtList
    cCsŒtjd||ƒ||_||_||_tj|ƒ|_i|_i|_i|_    g|_
i|_ d|_ i|_ t|_dS(Ns³õʼ»¯NPCÉËѪÁбíʵÀý!i(t    GameWorldtDebugLogtlineIDtobjIDtnpcIDt FindNPCByIDtcurNPCt$_PlayerHurtList__noAssitPlayerIDDictt#_PlayerHurtList__assistPlayerIDDictt_PlayerHurtList__hurtPlayerDictt_PlayerHurtList__hurtSortListt_PlayerHurtList__hurtDictt"_PlayerHurtList__assistAwardItemIDt"_PlayerHurtList__assistAwardResulttFalset    logDetail(R    R R!R"((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR
Cs                                            cCsVtjd|j|jƒg|_i|_x$|jjƒD]}|jdƒq;WdS(NsClearÖØÖÃNPCÉËѪ!i(    RRR"R R(R)R'tvaluesR(R    thurtObj((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytClearUs         cCsk|jjƒ}|rgtjƒjƒ}||j|j|j||j|j    g}t
j dd|ƒndS(NitOnBossAssistOver( R%tkeysRtGetMaptGetMapIDR R"R!R*R+t PlayerAssisttQueryGameServer_PlayerAssist(R    tnoAssistPlayerIDListtmapIDt    queryData((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnDelete`s *RcCs•d}||f}||jkr„tjd||f|j|jƒtƒ}|j|ƒ|j|ƒ|j    |ƒ||j|<n|j|}|S(Ns'Ìí¼ÓÉËѪÁбí¶ÔÏó: hurtID=%s,hurtType=%s(
tNoneR)RRR"R RR RR(R    R RRR/thurtKey((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__GetHurtTypeObjks #        cCs…d}||jkr^tjd||f|j|jƒtƒ}|j|ƒ||j|<n|j|}|r|j|ƒn|S(Ns'Ìí¼ÓÉËÑªÍæ¼Ò: playerID=%s,playerName=%s(    R;R'RRR"R RR R(R    tplayerIDt
playerNamet
hurtPlayer((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__GetHurtPlayerys#      c    CsR||krdS||jks.||jkrUtjd||f|j|jƒdStjd||||f|j|jƒ||jkr¹tjd|j|jƒ|j|dƒn|j|}||krâ|j|ƒn||j    |<|j
||ƒ}|j |ƒtjd|j|j|jƒtjd|j    |j|jƒdS(NsSÐÂÔöЭÖúÍæ¼ÒÒì³££¬²»´æÔڸ󣹿ÉËÑªÍæ¼Ò£¬ÎÞ·¨Ð­ÖúËû!assistPlayerID=%s,tagPlayerID=%ssGÐÂÔöЭÖúÍæ¼Ò: assistPlayerID=%s,tagPlayerID=%s,tagTeamID=%s,isFriend=%ssÔ­À´Îª³£¹æÍæ¼Ò£¬ÐèÒªÏÈɾ³ý£¡tBecomeAssistPlayers!    self.__noAssitPlayerIDDict=%ss     self.__assistPlayerIDDict=%s( R%R'RtErrLogR"R Rt DelHurtPlayertappendR&t_PlayerHurtList__GetHurtPlayerR(    R    tassistPlayerIDtassistPlayerNameRt tagPlayerIDt tagPlayerNamet    tagTeamIDtassistPlayerIDListtassistHurtPlayer((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytAddAssistPlayerˆs(                c    Cs3||jkrdStjd|||f|j|jƒ||jkr |j|ƒ|jj|gƒ}tjd||j|jƒx2|ddd…D]}|j|d||ƒq›W|rðtj    ƒj
ƒ}||j|j|j |g}t j |d|ƒqðnå||jkrð|j|ƒ|jj|dƒ}||jkr¡|j|}||kr¡|j|ƒtjd||j|f|j|jƒq¡n|rðtj    ƒj
ƒ}||j|j|j |g}t j |d|ƒqðn|jj|ƒ|js/tjd    |j|jƒ|jƒndS(
Ns5ɾ³ýÉËÑªÍæ¼Ò: playerID=%s,reason=%s,isMapServerDel=%ss7    Êdz£¹æÍæ¼Ò£¬Í¬Ê±É¾³ýЭÖúÍæ¼Ò: assistPlayerIDList=%siÿÿÿÿsRequestPlayerCancel_%stOnCancelBossRequestAssistisB    ÊÇЭÖúÍæ¼Ò£¬É¾³ýЭÖú¹ØÏµ: tagPlayerID=%s,assistPlayerIDList=%stOnCancelBossAssistsûÓÐÉËÑªÍæ¼ÒÁË!(R'RRR"R R%t _PlayerHurtList__ClearPlayerHurttpopRDR3R4R!R5R6R&tremoveR0(    R    R>treasontisMapServerDelRLRGR8R9RI((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyRD¨s>&         '     cCs…||jkrtS|j|ƒ}|jƒr2tS||jkr|j|}x0|D]%}|j|ƒ}|jƒrUtSqUWntS(N(R'R,RFRtTrueR%(R    R>R@RLRGt assHurtPlayer((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt HaveHurtValueßs     cCs©||jkrq|j|ƒ}i}|j|}x-|D]%}|j|ƒ}|jƒ||<q8W|jƒ|fS||jkrŸ|j|ƒ}|jƒifSdifS(Ni(R%RFRR&(R    R>R@tassistPlayerHurtDictRLRGRW((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytGetPlayerHurtDetailòs  cCs|jS(N(R%(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytGetNoAssitPlayerIDDictscCs|jS(N(R&(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytGetAssistPlayerIDDictscCs ||jkS(N(R%(R    R>((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytIsNoAssistPlayerscCs ||jkS(N(R&(R    R>((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytIsAssistPlayer scCsŒ||jkr)|j||krRtSn)||jkrR|j||krRtSnx3|jjƒD]"}||krb||krbtSqbWtS(N(R&RVR%R.R,(R    R>RItassPlayerIDList((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytIsAssistRelationscCsn||jkrdS|jƒ}|rOtjd|||f|j|jƒdS|j||ƒ}|jtj    ƒ|j
|ƒd}|tj f}    |    |j krÃ|j j |    ƒ}
|
jƒ}ntjd|||f|j|jƒ|r`|j|tj    |ƒ} | jƒ} | |} | j| ƒtjd| || f|j|jƒ|j|ƒn|jƒdS(s£ ÉËÑªÍæ¼Ò¼ÓÈë¶ÓÎé
                                ¸öÈËÉ˺¦²¢Èë¶ÓÎéÉ˺¦£¬¸öÈËËùÓÐЭÖúÍæ¼ÒÉ˺¦ÖØÐÂͳ¼Æ£¬±íÏÖÔÚЭÖúÉ˺¦ÅÅÐаñ£¬Ð­ÖúÍæ¼ÒÖ®ºóµÄÉ˺¦¼ÆÈë¶ÓÎéÉ˺¦
        Ns8Íæ¼Ò½øÈëʱÒÑÓжÓÎé!playerID=%s,befTeamID=%s,newTeamID=%sisA³£¹æÉËÑªÍæ¼Ò¼ÓÈë¶ÓÎé: playerID=%s,playerTotalHurt=%s,newTeamID=%ssU    ¸öÈË×ÜÉËѪ²¢ÈëжÓÎéÉËѪ: teamHurtValue=%s,playerTotalHurt=%s,updTeamHurtValue=%s(R%t    GetTeamIDRRCR"R RFRRtDef_NPCHurtTypeTeamR RR)RRRRt_PlayerHurtList__GetHurtTypeObjRt _PlayerHurtList__UpdHurtTeamNametSort(R    R>R?t    befTeamIDtnewTeamttickt    newTeamIDR@tplayerTotalHurtt playerHurtKeyt playerHurtObjt teamHurtObjt teamHurtValuetupdTeamHurtValue((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnHurtPlayerEnterTeam's4 &      
     
cCs†||jkrdS|j|ƒ}|jtjƒ|j|ƒ|jƒ}|jj|gƒ}x-|D]%}|j|ƒ}||jƒ7}qgWtj    d|||f|j
|j ƒ|sÀdS|tj f}    |    |j krM|j |    }
|
jƒ} td| |ƒ} |
j| ƒtj    d| || f|j
|j ƒ|j|ƒn|j|tj|jƒƒ} | j|ƒ|jƒdS(s ÉËÑªÍæ¼ÒÍ˳ö¶ÓÎé
                                Ô­¶ÓÎéÉ˺¦²»±ä£¬¸öÈ˼°ËùÓÐЭÖúÍæ¼ÒÉ˺¦ÖØÐ¼ÆË㣬ЭÖúÍæ¼ÒÖ®ºóµÄÉ˺¦¼ÆÈë¸öÈËÉ˺¦£»
                              ÀëÏß±»ÌßÀë¶ÓµÄÇé¿öЭÖúÍæ¼Ò¿É¼ÌÐøÐ­ÖúÊä³ö²¢»ñµÃЭÖú½±Àø£¬É˺¦¼ÆÈë¸öÈË£¬µ«ÊÇÀëÏßÍæ¼ÒÎÞ·¨»ñµÃ¹éÊô
        NsC³£¹æÉËÑªÍæ¼ÒÀ뿪¶ÓÎé: playerID=%s,playerTotalHurt=%s,leaveTeamID=%sisK    Ô­¶ÓÎéÉ˺¦¿Û³ý: teamHurtValue=%s,playerTotalHurt=%s,updTeamHurtValue=%s(R%RFRRRR RtgetRRR"R RbR)tmaxRRdRcRRe(R    R>t leaveTeamIDRhR@RjRLRGRMt teamHurtKeyRmRnRot
newHurtObj((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnHurtPlayerLeaveTeamRs6               
c    Cs |j|tjƒ}d}tjƒ}tj|ƒ}xœ|D]”}||jkrXq=n|j|ƒ}|ssq=n|j    ƒ}|j
ƒt j krÂ|j |ƒtjd||j|jƒdS|s=|}q=q=W|r|j |ƒtjd||j|jƒndS(NRs(    ¸üжÓÎéÃû³Æ£¬Ê¹Óöӳ¤Ãû³Æ!teamID=%ss(    ¸üжÓÎéÃû³Æ£¬Ê¹ÓöÓÔ±Ãû³Æ!teamID=%s(RcRRbRtGetMapCopyPlayerManagert
PlayerTeamtGetMapTeamPlayerIDListR%tFindPlayerByIDt GetPlayerNamet    GetTeamLVt IPY_GameWorldt    tmlLeaderRRR"R (    R    tteamIDt hurtTeamObjtupdNametcopyPlayerManagertmapTeamPlayerIDListt memPlayerIDtplayerR?((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__UpdHurtTeamNames*       icCs€d}|j||ƒ}||jkrk|j|}|j|ƒ}|jƒ}    |jƒ|jƒ}
} n|r„|tj}
} n|tj}
} |j| ƒ|j    |
ƒ||j
krêg|j
|<t j d||j |jƒn|j|
| |r|    n|ƒ} | jƒ} | |}| j|ƒ| dkoC|dk}|jƒ|}|j|ƒ|so|r||jƒndS(NisÐÂÔö³£¹æÍæ¼Ò: atkPlayerID=%s(RFR&RR RRRbRRR R%RRR"R RcRRRe(R    t atkPlayerIDtatkNametvaluet    atkTeamIDtisSortRIt atkHurtPlayert tagHurtPlayerRJR RR/tbefValuetupdValuet    isNewHurttupdAtkHurtValue((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytAddPlayerHurtValuešs2      ! 
    i¸ cCs6|j}|p||_|sP|rP||jtjƒ|krP|j|ƒSn|jtj|ƒi}|j|jƒƒ}x|j    j
ƒD]þ}|\}    }
|jrÃt j d|    |
fƒn|    sÏqŽn|
tj krd} |    } |j| ||ƒrŒ| || <qŒqŽ|
tjkrŽ|    } tj| ƒ} |jrVt j d| | fƒnx3| D](}|j|||ƒr]| ||<q]q]WqŽqŽW|jr³t j dt|ƒƒnt jƒjƒ}tj|ƒrê|j|||ƒn|jƒ|r|jƒn|jgk}|jtj|ƒ|j|ƒS(Ns    hurtID=%s, hurtType=%sis%    teamID=%s, mapTeamPlayerIDList=%ss    hurtPlayerDict=%s(R$R-t GetDictByKeyRt Def_NPC_Dict_LastRefreshHurtTickt$_PlayerHurtList__GetAtkObjByHurtListtSetDicttGetRefreshPosAttGetCurRefreshPointIndexR)R2RtLogRt-_PlayerHurtList__UnAssistPlayerHurtValidLogicRbRxRytstrR3R4t    NPCCommontIsMapNeedBossShuntt!_PlayerHurtList__UpdBossShuntInfoRet"_PlayerHurtList__DoGiveAssistAwardR(tDef_NPC_Dict_InHurtProtect(R    RhtrefreshIntervaltisDeadt checkCanDeadR$thurtPlayerDictt refreshPointR<R RRR>Rƒt teamPlayerIDR8tisInHurt((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytRefreshHurtListÆsL    "              
 cCsbt}|g|jj|gƒ}x9|D]1}|j|||ƒrMt}q)|j|ƒq)W|S(N(R,R%Rqt"_PlayerHurtList__IsPlayerHurtValidRVRQ(R    R>R¥RhtvalidtcheckPlayerIDListt checkPlayerID((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__UnAssistPlayerHurtValidLogicýs     c
Csô||jkr0|jr,tjd|ƒntS|j|ƒ}|jƒ}|sr|jrntjd|ƒntStjƒj|ƒ}|r”||j    krt
j ||j tƒstj d||j|jƒ|jrútjd||j|jƒntSn|jƒrz|jƒ s0t
j||j ƒ rztj d||j|jƒ|jrvtjd||j|jƒntStj|ƒdks¤|jƒtjkr%|jtjƒ}tjƒ|tjdd    ƒkr%tj d
||j|jƒ|jrtjd ||j|jƒntSn|j|jƒ|j ƒ|ƒstj d ||j|jƒ|jrŒtjd ||j|jƒntSt!St"j#|ƒ}t"j$|ƒ}    | sÀ|     r
tj d||j|jƒ|jrtj d||j|jƒntS||tj%krytj d|||f|j|jƒ|jrutj d|||f|j|jƒntS|j|    d|    d    |ƒsìtj d||    f|j|jƒ|jrètj d||    f|j|jƒntSt!StS(Ns0        playerID=%s not in self.__hurtPlayerDicts!        playerID=%s not hurtValues1·ÇЭÖúÉËÑªÍæ¼ÒûÓй¥»÷boss´ÎÊý£¬²»¼Æ£¡playerID=%ss9        ·ÇЭÖúÉËÑªÍæ¼ÒûÓй¥»÷boss´ÎÊý£¬²»¼Æ£¡playerID=%ss!ÉËÑªÍæ¼Ò²»¿É¼û£¬²»¼Æ£¡playerID=%ss)        ÉËÑªÍæ¼Ò²»¿É¼û£¬²»¼Æ£¡playerID=%sit BossHurtValueis.ÉËÑªÍæ¼ÒËÀÍö³¬¹ýÉËѪ±£»¤Ê±³¤£¬²»¼Æ!playerID=%ss6        ÉËÑªÍæ¼ÒËÀÍö³¬¹ýÉËѪ±£»¤Ê±³¤£¬²»¼Æ!playerID=%ss)ÉËÑªÍæ¼Ò²»ÔÚboss·¶Î§ÄÚ£¬²»¼Æ£¡playerID=%ss1        ÉËÑªÍæ¼Ò²»ÔÚboss·¶Î§ÄÚ£¬²»¼Æ£¡playerID=%ss1ÉËÑªÍæ¼Ò²»ÔÚ±¾µØÍ¼»òÒѳ¤¾ÃÀëÏߣ¬²»¼Æ£¡playerID=%ss9        ÉËÑªÍæ¼Ò²»ÔÚ±¾µØÍ¼»òÒѳ¤¾ÃÀëÏߣ¬²»¼Æ£¡playerID=%ss@ÉËѪÀëÏßÍæ¼Ò³¬¹ý±£»¤Ê±³¤£¬²»¼Æ£¡playerID=%s,tick=%s,leaveTick=%ssH        ÉËѪÀëÏßÍæ¼Ò³¬¹ý±£»¤Ê±³¤£¬²»¼Æ£¡playerID=%s,tick=%s,leaveTick=%ss9ÉËѪÀëÏßÍæ¼Ò²»ÔÚ±£»¤ÇøÓòÄÚ£¬²»¼Æ£¡playerID=%s,leavePos=%ssA        ÉËѪÀëÏßÍæ¼Ò²»ÔÚ±£»¤ÇøÓòÄÚ£¬²»¼Æ£¡playerID=%s,leavePos=%s(&R'R-RR™R,RFRRwRzR%t AttackCommontCheckKillNPCByCntR$RR"R t    GetInitOKt
GetVisibletCheckSightLeveltGameObjtGetHPtGetPlayerActionR}tpaDietNomalDictGetPropertyRtDef_Player_Dict_DeadTimettimet IpyGameDataPYt
GetFuncCfgt$_PlayerHurtList__GetIsInRefreshPointtGetPosXtGetPosYRVt PlayerControltGetPlayerLeaveServerTicktGetPlayerLeaveServerPostDef_PlayerOfflineProtectTime(
R    R>R¥RhR@RR…tdeadTimet    leaveTicktleavePos((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__IsPlayerHurtValid
sn              /     *"     !          &    )#    &c Cs||jkrdS|j|ƒ}|jƒ}|s8dS|jdƒ||jkr‹|j|}|j|ƒ}|jƒ}|jƒ}n|jƒ}|jƒ}tjd||||f|j    |j
ƒ||f}||j krëdS|j ||ƒ}    |    jƒ}
t d|
|ƒ} |    j| ƒtjd|||
| f|j    |j
ƒ| sk|j j|ƒn.||jkr™|tjkr™|j|ƒndS(Nis@    Çå³ýÍæ¼ÒÉËѪ: playerID=%s,hurtValue=%s,hurtID=%s,hurtType=%ss?    ¿Û³ýÉËѪ¸üÐÂ: hurtID=%s,hurtType=%s,befValue=%s,updValue=%s(R'RFRRR&R RRRR"R R)RcRrRRR%RRbRd( R    R>R@RRIRR RR<R/RŽR((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__ClearPlayerHurtSs<                   cCsOd\}}}|j}|j|jƒƒ}|jrStjdt|jƒƒnxìt    |jdƒD]Ø\}}|j
ƒ}    |j ƒ}
|jr­tjd|    |
fƒng} |
t j krç|jj|    gƒ} |    g| } n|
t jkrf|    } tj| ƒ}xX|D]J}||jkr-qn| j|ƒ|jj|gƒ} | j| ƒqWnqfi}d}x;| D]3}tj|tjƒ}|d kr°d||<qyntj|ƒdksÚ|jƒtjkrêd||<qyn|jƒ s
tj||ƒ rd||<qyn|j|j ƒ|j!ƒ|ƒsKd||<qyn||j"krjd    ||<qyn|j"|}|j#ƒ}||kry|}||
|    }}}qyqyW|jrÜtjd
||t$|ƒfƒn|rï|||fS|dkr|rtjd |ƒn|jrftjd ||    |
|fƒqfqfW|||fS(sµÚÒ»¸ö¿É¹¥»÷µÄ×î´óÉËѪ¶ÔÏó£¬Ò²ÊÇʵ¼ÊµÄ¹éÊôÕß»ò¶ÓÎé
        ÒòÎªÍæ¼ÒÉËѪµôÏß¡¢ËÀÍöÓÐÒ»¶¨Ê±¼äµÄ±£Áô»úÖÆ£¬¹Ê×î´óÉËѪ²»Ò»¶¨Êǿɹ¥»÷Ä¿±ê(¹éÊôÕß)
        ×¢Òâ: ¸Ã¹æÔò±ØÐëÓë×îÖÕËã¹éÊôµÄ¹æÔòÒ»Ö£¬²»È»¿ÉÄܵ¼Ö¹éÊô´íÂÒ
        @return: atkPlayer, hurtType, hurtID
        is__GetAtkObjByHurtList: %sis    hurtID=%s,hurtType=%stnonetdeads"no visible or sightLevel differentsnot in boss areasno hurts6    atkHurtType=%s,atkHurtID=%s,playerDisableReason=%ss8bossËÀÍöʱ£¬µÚÒ»ÃûÍŶÓûÓйéÊôȨ! playerDisableReason=%ssH    ÍŶÓûÓйéÊôȨ! rank=%s,hurtID=%s,hurtType=%s,playerDisableReason=%sN(Nii(%R;R$R—R˜R-RR™tlenR(t    enumerateR RRRR%RqRbRxRyREtextendtGetObjR}t    gotPlayerR´RµR¶R·R²R¯R³R½R¾R¿R'RR›(R    R¢t    atkPlayert atkHurtTypet    atkHurtIDR$R¥trankR/R Rt playerIDListRLRRƒR¦tplayerDisableReasont maxHurtValueR>R…R@R((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__GetAtkObjByHurtListst                  
*
 
!
 
       #         c
Csõ|s3|jr/tjd||j|jƒntS||jƒ|jƒkr§||jƒ|jƒkr§||jƒ|jƒkr§||jƒ|jƒkr§t    S|jrñtjd|||jƒ|jƒ|jƒf|j|jƒntS(Ns        not refreshPoint=%ssL        not in refreshPoint curPosX=%s,curPosY=%s,rPosX=%s,rPosY=%s,rDict=%s(
R-RR™R"R R,R¾t GetMoveDistR¿RV(R    tcurPosXtcurPosYR¥((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__GetIsInRefreshPointÖs             8cCs5|j}|j}||f}tjj|iƒ}t}x |jƒD]\}    }
|
\} } } | |krsqFn|    |kr||    }|| krÑ||dg||    <t}tj    d|    || |f|ƒqX| rX||dg||    <t}tj    d|    || |f|ƒqXqF| sF|| |g||    <t}tj    d|    || |f|ƒqFqFWx¬|jƒD]ž\}    } |    |krº|| dg||    <t}tj    d|    || f|ƒqi||    d|kri|| dg||    <t}tj    d|    || f|ƒqiqiW|r1|tj|<t
j ||ƒndS(NisRboss·ÖÁ÷ -> Íæ¼Ò¶Ô¸ÃbossµÄÉ˺¦±ä¸ü¶ÓÎé!playerID=%s,npcID=%s,teamID=%s,newTeamID=%ssZboss·ÖÁ÷ -> Íæ¼Ò¶Ô¸ÃbossµÄ¹ØÁª×´Ì¬×ªÎªÉ˺¦×´Ì¬!playerID=%s,npcID=%s,teamID=%s,newTeamID=%ssWboss·ÖÁ÷ -> Íæ¼Ò²»ÔÚ¸ÃbossÉËѪÖУ¬ÉèÖÃΪ¹ØÁª×´Ì¬!playerID=%s,npcID=%s,teamID=%s,tick=%ss=boss·ÖÁ÷ -> ÐÂÔöÍæ¼Ò¶ÔbossÉ˺¦!playerID=%s,npcID=%s,teamID=%ss=boss·ÖÁ÷ -> É˺¦×ªÒƵ½±¾bossÉÏ!playerID=%s,npcID=%s,teamID=%s( R"R t
PyGameDatatg_bossShuntPlayerInfoRqR,titemsRVRRRœtGameServer_WorldBossShuntInfo(R    R8R¤RhR"R tkeytshuntPlayerDictt shuntChangeR>t    shuntInfotbossIDRt relatedTickRi((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__UpdBossShuntInfoçsN           
               $ c    Csi|_d\}}tjddiƒ}tjtjƒjƒƒ}t|ƒ|krp|t|ƒ\}}nŒtjdƒ}tj    ||j
ƒ}|dkr¤dStjddiƒ}t|ƒ|krætj d||j
ƒdS|t|ƒ\}}| s
| r%tj d||j
ƒdS||_ tjƒj|ƒ}tj d    |j
|jƒtjƒ}    x!|jjƒD]\}
} | s­tj d
|
|j
|jƒqxn|    j|
ƒ} i} x=| D]5}|j|ƒ}|jƒs tj d ||j
|jƒqÉn|    j|ƒ}|sEtj d ||j
|jƒqÉn|jƒ}tj}tj||||ƒ}tj d ||||f|j
|jƒ|tjkr½tj|dƒnoidtj6tj i||6ƒtj!6gtj"6}tj#||tj$|ƒd|ƒ|j%tj&ddt'ƒ| rÉ|j(t)j*|ƒ}i    |j+ƒd6|j,ƒd6|j-ƒd6|j.ƒd6|d6|d6|d6|j/ƒd6|j0ƒd6| |<|j+ƒ| j+ƒ||j1j-ƒ|j
g}tj2|j3ƒd|ƒqÉqÉW| s| r3tj d|
|j
|jƒqxntj4ƒs{tj d|
|j
|jƒt5j6| |ddggƒn| |j|
<qxWdS(s Ö´ÐÐЭÖú½±ÀøÂß¼­
        it AssistAwarditKillBossCntLimitNis¸ÃbossûÓÐЭÖú¶îÍâ½±Àø!index=%ss%¸Ã¸±±¾»òbossûÓÐЭÖú¶îÍâ½±Àø!mapID=%ssÖ´ÐÐЭÖú½±ÀøÂß¼­s'·¢²¼·½Ã»Óз¢²¼Ð­Öú£¬²»´¦Àí: playerID=%ss+ЭÖú·½Ã»ÓÐÊä³ö£¬²»¸ø½±Àø: assistPlayerID=%ss9ЭÖú·½ÀëÏß»ò²»ÔÚ±¾µØÍ¼£¬²»¸ø»îÔ¾Áî½±Àø: assistPlayerID=%ssRЭÖú·½¸ø»îÔ¾Áî½±Àø: assistPlayerID=%s,assistMoney=%s,isFriend=%s,addAssistMoney=%st AssistSuccessi't
PlayerNametJobtLVtRealmLVtTodayGiftCountt AssistMoneytIsFriendtFacetFacePictAssistBossFinishs=·¢²¼·½ÀëÏß»òÎÞÓÐЧЭÖúÍæ¼ÒÔÚÏߣ¬²»¸ø¸ÐлÀñºÐ½±Àø: playerID=%ss!·¢²¼·½¸ø¸ÐлÀñºÐ½±Àø: playerID=%s(ii(7R+R»tGetFuncEvalCfgtFBCommontGetRecordMapIDRR3R4R›tGetDictValueByKeyR"R;RR*tGetMapFBTypeByMapIDR RwR%RÞRzRFRRt ShareDefinetTYPE_Price_FamilyActivityR5tAddTodayAssistMoneyR}tfbtNullRÀt
NotifyCodet Over_isAssisttGetJsonMoneyListt
Over_moneyt Over_itemInfot NotifyFBOvertGetFBFuncLineIDt Sync_TimeTickt tttLeaveMapRVR¸RtDef_PDict_GetThanksGiftCountR{tGetJobtGetLVtGetOfficialRanktGetFacet
GetFacePicR$t FamilyNotifyt GetFamilyIDt IsCrossServert ItemControlertGivePlayerItemOrMail(R    t
liheItemIDt assistMoneytmapAssistGiftDictR8tkillBossCntLimitDicttindextbossAssistGiftDicttfbTypeR‚R>RLtnoAssistPlayertassistAwardPlayerDictRGRMt assistPlayerRtassistMoneyTypetaddAssistMoneytoverDictttodayGiftCountt notifyParam((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__DoGiveAssistAwards€                       ' "!-  cCs<|jƒ|jƒkrdS|jƒ|jƒkr8dSdS(Niiiÿÿÿÿ(R(R    thurtObjAthurtObjB((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt__CmpHurtValuems
cCs¦t|jjƒd|jdtƒ|_|s1dS|jjƒ|jjƒ}|sWdSg}x|jD]„}|j    ƒ}|s…qgnt
j ƒ}|j ƒ|_ |jƒ|_|jƒ|_|tj|_|tj|_|j|ƒqgWt
jƒ}|j|_||_t|ƒ|_|j}i}    tjƒ}
xe|D]]} |
j | ƒ} | sbqAn| j!|ƒswqAn| |jkr| } n"| |jkrA|j| } nqA| |    krl|j| }g}xŒ|D]„}|j"|ƒ}|j    ƒ}|sq×nt
j#ƒ}|j ƒ|_$|jƒ|_%|tj|_|tj|_|j|ƒq×W||    | <n|    | }||_&t|ƒ|_'t(j)| |ƒqAWdS(Ntcmptreverse(*tsortedR)R.t_PlayerHurtList__CmpHurtValueRVR(R%R2R&RtChPyNetSendPackttagMCBossHurtValueR tHurtIDRtHurtTypeRtHurtNameRùtDef_PerPointValuet    HurtValuet HurtValueExREttagMCBossHurtValueRankInfoR!tObjIDt HurtValueListRËt    HurtCountR$RRwRzt CanSeeOtherRFttagMCBossHurtValueAssisttPlayerIDRêtAssistHurtValueListtAssistHurtCountt NetPackCommont SendFakePack(R    tisSynctsyncPlayerIDListt hurtValueListR/Rt hurtValueObjtbossHurtInfoPackR$tassistHurtValueListDictR‚R>R…tassTagPlayerIDRLtassistHurtValueListRGRWt assHurtValuetassHurtValueObj((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyReusp'                        
    cCs t|jƒS(N(RËR((R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetHurtCountºscCs |j|S(N(R((R    R((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt    GetHurtAt»scCs|js dS|jdS(Ni(R(R;(R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytGetMaxHurtValue½scCsdS(N((R    ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytGetLastTimeHurtValue¾s(%RRRR
R0R:RcRFRNRVRDRXRZR[R\R]R^R`RpRvRdR,R’R¨RšR©RQR•R½RžRŸR'ReRERFRGRH(((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR?sB                     7                                +    -    ,7         I    .    U        4    R     E            cCsdtjƒr|jƒ}x`tjjƒD]O}|j|ƒsL|j|ƒr(tjd|j    |ƒ|j
|dƒPq(q(WdS|j ƒ}tj ƒj ƒ}|jtjƒ}|jtjƒ}|jƒ}xtjjƒD]}|j|ƒs|j|ƒrÝ|tjkr1||kr1||jkr1qÝntjd|j    |ƒ|j
|dƒPqÝqÝWdS(Ns'Íæ¼ÒÀ뿪¿ç·þ, É¾³ýbossÉËÑªÍæ¼Ò!npcID=%st
LeaveCrosss'Íæ¼ÒÀ뿪µØÍ¼, É¾³ýbossÉËÑªÍæ¼Ò!npcID=%stLeaveMap(RRt GetPlayerIDRÜt g_npcHurtDictR.R]R^RR"RDR4R3t GetMapFBTypeR“RtDef_PlayerKey_ChangeMapIDtDef_PlayerKey_ChangeLineIDR}RüR (t    curPlayerR>thurtListR8tmapTypet changeMapIDt changeLineID((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnPlayerLeaveMapÁs*    *cCsn|s
dS|jƒ}xQtjjƒD]@}|j|ƒr&tjd|j|ƒ|j|dƒPq&q&WdS(s Íæ¼Ò¸üÐÂÁËеÄЭÖú¶ÔÏóÍæ¼ÒID
        ÐèÒª Çå³ý±¾µØÍ¼ÖÐÍæ¼ÒÒÔ·ÇЭÖúÉí·ÝÕýÔÚ¹¥»÷µÄboss
        
        ÒÔЭÖúÉí·Ý¹¥»÷µÄͨ¹ýGameServer½øÐÐÇå³ý£¬ÒòÎªÍæ¼Ò¿ÉÄܲ»ºÍЭÖúÄ¿±êͬһ¸öµØÍ¼
        ±ÈÈçÏȵãÁËЭÖúAÍæ¼Ò£¬»¹Ã»¹ýÈ¥µÄʱºò£¬ÓÖµãÁËЭÖúBÍæ¼Ò£¬ËùÒÔÐèҪͨ¹ýGameServerÇå³ýЭÖúÄ¿±êµÄÏà¹ØÊý¾Ý
    Ns+Íæ¼Ò¿ªÊ¼Ð­ÖúÆäËûÈË, É¾³ý¸ÃbossÉËѪ!npcID=%stStartAssistBoss(    RKRÜRLR.R]RRR"RD(RPR‰R>RQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnSetAssistTagPlayerIDÞs cCs$t|ƒ}|sdS|jƒdS(N(tGetPlayerHurtListR0(R$tdefendHurtList((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytClearPlayerHurtListós
 
cCs=tjd|ƒ}|r'|jƒ}ntjƒjƒ}|S(Nt    SealDemon(R»tGetIpyGameDataNotLogt    GetLineIDRt GetGameWorld(R"tsealDemonIpyDataR ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt GetBossLineIDûs
cCse|jƒ}|jƒ}t|ƒ}|||f}|tjkratjj|ƒ}|jƒndS(N(tGetIDtGetNPCIDR`RÜRLRRR:(R$R!R"R RàRQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytDeletePlayerHurtLists    cCs4|jƒ}|jƒ}t|ƒ}t|||ƒS(N(RaRbR`tGetPlayerHurtListEx(R$R!R"R ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyRXs   c
Cs^|||f}d}|tjkr¹tjƒj|ƒ}| sPtj|ƒ rT|Stj    |ƒtj
kr—tj ƒj ƒ}|tj gkr—|Snt|||ƒ}|tj|<ntj|}|jsïtjj|ƒ}|jƒdS|j}|jƒ}|j|krZtj|jƒ}    |    rZ|    |_tjd|j||jfƒqZn|S(Ns>BossÉËѪ¹ÜÀícurNPCÒì³££¬ÐÞ¸´: npcID=%s,errNPCID=%s,repNPCID=%s(R;RÜRLRt GetGameDatatFindNPCDataByIDRt
IsGameBossRœtGetDropOwnerTypetDropOwnerType_MaxHurtR3R4tDef_FBMapID_SealDemonRR$RRR:RbR"R#R!R™(
R R!R"RàRYtnpcDataR8RQR$trepNPC((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyRds2     
         &cCs7x0tjjƒD]}|j|||||ƒqWdS(N(RÜRLR.Rp(R>R?RfRgRhRQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnNPCHurtPlayerEnterTeam3scCs1x*tjjƒD]}|j|||ƒqWdS(N(RÜRLR.Rv(R>RsRhRQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytOnNPCHurtPlayerLeaveTeam9sc    Cst|ƒ}|sdS|jƒ}|rL|j|ƒ rLtjd|ƒdS|jƒ}|jƒ}x‹tjj    ƒD]z}|j
|krž|j |kržqtn|j |ƒ rÄ|j |ƒ rÄqtntjd|j
|fƒ|j|dƒqtW|j||jƒ||jƒƒtS(s Ìí¼ÓÉËѪ
    @param isBounce: ÊÇ·ñ·´µ¯É˺¦£¬·´µ¯É˺¦²»¼ÆÈë·ÇÖ÷¶¯¹¥»÷µÄÍæ¼ÒÉËѪ£¬ÒòΪ¹æ¶¨Íæ¼Ò¹¥»÷ÁíÒ»¸öbossÔòÒªÇå³ýͬµØÍ¼ÉÏÒ»¸öbossµÄ¸ÃÍæ¼ÒÉ˺¦
                                                        ·ÀÖ¹ËÀÍö»Ø¸´»îµãÅÜͼÖб»Ö÷¶¯ÐÍboss¹¥»÷¼ÆÈëÉËѪµ¼ÖÂÇå³ýͬµØÍ¼ÉÏÒ»¸öÖ÷¶¯¹¥»÷µÄbossÉËѪ
    Ns»¹Ã»ÓÐÉ˺¦Êä³öʱ·´µ¯É˺¦²»¼ÆÈë!sIÍæ¼ÒÖ÷¶¯¹¥»÷ÁËÆäËûboss£¬È¡ÏûÔ­bossÉËѪЭÖúµÈÊý¾Ý! befNPCID=%s,newNPCID=%st AttackNewBoss(RXRKRXRRRaRbRÜRLR.R"R!R]R^R™RDR’R{RaRV(    RÐtdefNPCR‰tisBounceRYR‡R!R"RQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt AddHurtValue?s$     "i¸ cCs,t|ƒ}|sdS|j||||ƒS(N(RXR¨(R$RhR¡R¢R£RY((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR¨\s cCs#t|ƒ}|stS|j|ƒS(N(RXR,R^(R>RpRY((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR^ds cCsL|jƒ}|jƒ}x-tjjƒD]}|j||ƒr(tSq(WtS(N(RKRÜRLR.R`RVR,(RPt    tagPlayerR>RIRQ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyR`ks   cCsh|jtj|ƒ}|tj||ƒkr2tSt|jƒ|ƒrKtS|rdtj    |dƒnt
S(NtAttackFBBossLimit( R¸RtDef_Player_Dict_EnterFbCntDayRõtGetEnterFBMaxCntRVR^RKRÀRýR,(RPR$R8tisNotifytenterCnt((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pytCheckPlayerCanAttackFBNPCts("RRÜR5R¯R}RÀR(RR9R»RùRxRœRõRR´RºRRRURWRZR`RcRXRdRmRnRrR,R¨R^R`Ry(((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCHurtManager.pyt<module>sF                 ÿÿÿ…