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
ª°hc@s1ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddd„ƒYZ ddd„ƒYZ ddd„ƒYZddd    „ƒYZd
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„ZdS(iÿÿÿÿNt
LineupHerocBseZd„Zd„ZRS(cCs|jƒdS(N(tClear(tself((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt__init__$s
cCsLd|_d|_d|_d|_i|_g|_d|_d|_dS(Ni(t    itemIndextheroIDtskinIDtposNumtheroBatAttrDicttheroSkillIDListt
fightPowertskillFightPower(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR(s                                (t__name__t
__module__RR(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR!s    tLineupcBsneZd„Zdeed„Zd„Zd„Zd„Zd„Z    d„Z
ed„Z d    „Z d
„Z RS( cCs^||_||_d|_d|_i|_t|_d|_g|_    i|_
d|_ dS(Ni( tplayerIDtlineupIDtNonetolPlayert    shapeTypet heroItemDicttFalset lineupChanget_Lineup__refreshStatet_Lineup__freeLineupHeroObjstlineupHeroDictR
(RRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR6s                                        icCszt|_||_||_tjd|j|f|jƒ|j|ƒ|rv|j    j
rvt j |j    j
|jƒndS(s©±ä¸üÕóÈÝʱ¸üÐÂ
        @param heroItemDict: Î佫±³°üË÷ÒýÐÅÏ¢  {itemIndex:posNum, ...}
        @param shapeType: ÕóÐÍ
        @param refreshForce: ÊÇ·ñÇ¿ÖÆË¢ÊôÐÔ
        s¸üÐÂÕóÈÝ: lineupID=%s,%sN( tTrueRRRt    GameWorldtDebugLogRRtRefreshLineupAttrRt    curPlayert
PlayerHerot Sync_Lineup(RRRt refreshForcet
syncLineup((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt    UpdLineupDs              cCsRx9|jjƒD](}||jkr|jj|ƒqqWi|_d|_dS(Ni(RtvaluesRtappendR
(RtfreeObj((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytFreeLineupHeroSs         cCstd}||jkr%|j|}nK|jrZ|jjdƒ}|jƒ||j|<ntƒ}||j|<|S(Ni(RRRtpopRR(RRt
lineupHero((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt GetLineupHero\s    
     cCsXd}x9|jjƒD](}|j|ƒ}|j|kr|SqWtrTtƒ}n|S(N(RRtkeysR*RRR(RRR)R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytGetLineupHeroByIDis cCs|jƒdS(N(tDoRefreshLineupAttr(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt GetLineupInfoss
cCs d|_dS(Ni(R(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytSetNeedRefreshStatexs    cCs d|_|r|jƒndS(Ni(RR-(RR!((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR}s     cCs<|js tSt|jj|j|ƒt|_d|_tS(Ni(RRtdoRefreshLineupAttrRRRR(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR-ƒs             cCs!||jkrdS|jƒtS(N(RRR(RR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytCheckHeroItemUpdate‹s
(R R RRRR#R'R*R,R.R/RR-R1(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR3s                     
             t OnlinePlayercBsteZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    e
e
d„Z e
d    „Z d
„Z RS( cCs:||_d|_i|_i|_tj|ƒ|_dS(N(RRRt calcAttrDictt
lineupDictt
TurnAttackt    MainFightt    mainFight(RR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR”s                 cCs|jjjƒdS(N(R7t    turnFightt    exitFight(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytOnClear scCs||_||jj_dS(N(RR7R8(RR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt    SetPlayer¤s    cCs |jdkS(N(RR(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt IsRealOnline©scCsQd}||jkr%|j|}nt|j|ƒ}||j|<||_|S(N(RR4RRR(RRtlineup((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt    GetLineup­s     cCs|jj|iƒS(N(R3tget(Rt    calcIndex((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt GetCalcAttr·scCs||j|<dS(N(R3(RR@tattrDict((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt SetCalcAttr¸s cCsS|j}tjd|jƒi|_i|_t|ƒt||ƒ|jƒdS(NsReCalcAllAttr...(    RRRRR3R4t doCalcAllAttrtdoReloadLineuptRefreshRoleAttr(RR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt ReCalcAllAttr½s            
 
cCsUtjd||jƒx!|jjƒD]}|jƒq'W|rQ|j|ƒndS(sÉË¢ÐÂÖ÷¹«ÊôÐÔ£¬Ó°ÏìÖ÷¹«ÊôÐԵŦÄܵãÊôÐԱ仯ʱͳһµ÷Óô˺¯Êý
        @param refreshForce: ÊÇ·ñÇ¿ÖÆÁ¢ÂíË¢ÐÂ
        @param isAllLineup: ÊÇ·ñֻͬ²½Ë¢ËùÓÐÕóÈÝÊôÐÔ£¬Èç¹ûÉèÖÃFalseÔòĬÈϽöË¢Ö÷ÕóÈÝÊôÐÔ
        sÇëÇóË¢ÊôÐÔ: refreshForce=%sN(RRRR4R$R/tDoRefreshRoleAttr(RR!t isAllLineupR=((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRFËs cCs[t}xN|jjƒD]=\}}| r>|tjkr>qn|jƒrt}qqW|S(s»Ö´ÐÐË¢ÊôÐÔ£¬Ä¬È϶îÍâË¢Ö÷ÕóÈÝ£¬ÆäËûÕóÈÝ¿ÉÒÔÓõ½µÄʱºòÔÙË¢ÐÂ
        @param isAllLineup: ÊÇ·ñË¢ËùÓÐÕóÈÝ£¬Èç¹ûÉèÖÃFalseÔòĬÈϽöË¢Ö÷ÕóÈÝÊôÐÔ
        @return: ÊÇ·ñÓÐË¢ÊôÐÔ£¬0-ÎÞ£»1-ÓÐ
        (RR4titemst ShareDefinet Lineup_MainR-R(RRIt    isRefreshRR=((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRHÙs  cCs†g}x\|jjƒD]K\}}x<|D]4}|j|ƒr)||kr]|j|ƒq]q)q)WqWtjd||f|jƒ|S(s„Î佫ÎïÆ·Ñø³É¸üÐÂ
        @param itemIndexList: ±ä»¯Î佫ÎïÆ·ËùÔÚÎ佫±³°ü¸ñ×ÓË÷ÒýÁбí
        @param return: Ó°ÏìµÄÕóÈÝIDÁбí
        s%Î佫ÎïÆ·Ñø³É¸üÐÂË÷Òý: %s, Ó°ÏìÕóÈÝ:%s(R4RJR1R%RRR(Rt itemIndexListteffLineupIDListRR=R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytOnHeroItemUpateés  (R R RR:R;R<R>RARCRGRRFRHRP(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR2‘s                     
             t    OnlineMgrcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCsi|_i|_dS(N(t_OnlineMgr__onlinePlayerDictt!_OnlineMgr__offlinePlayerTimeDict(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRüs        cCs[d}|jƒ}||jkr1|j|}nt|ƒ}||j|<|j|ƒ|S(N(Rt GetPlayerIDRRR2R;(RRRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytGetOnlinePlayers    cCsh|jƒ}|jj|dƒ||jkrJt|ƒ}||j|<n |j|}|j|ƒdS(N(RTRSR(RRRR2R;(RRRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytSetPlayerOnline s    cCsV|jƒ}||jkrdS|j|}|jdƒttjƒƒ|j|<dS(N(RTRRR;RtintttimeRS(RRRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytSetPlayerOfflines   cCs™ttjƒƒ}d}xz|jjƒD]i\}}|||krJq(n|jj|dƒ||jkrrq(n|jj|dƒ}|jƒq(WdS(Nii<i,(RWRXRSRJR(RRRR:(RtcurTimet offlineTimesRt offlineTimeR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytProcessOffline"s(R R RRURVRYR](((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRQùs
                  
cCs1d}tjrtj}ntƒ}|t_|S(N(Rt
PyGameDatat g_onlineMgrRQ(tmgr((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt GetOnlineMgr0s              cCstƒj|ƒS(N(RaRU(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRU9scCstƒj|ƒdS(N(RaRV(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt OnPlayerLogin;scCstƒj|ƒdS(N(RaRY(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytOnPlayerLogoff@scCstƒjƒdS(N(RaR](((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pytOnMinuteEs cCs|jƒ}|jƒ}tj|ƒ}i}|rli|jƒtj6|jƒtj6|j    ƒtj
6}nt j d||ƒt |ƒjtj|ƒdS(Ns½ÇÉ«µÈ¼¶ÊôÐÔ: %s(tGetIDtGetLVt PlayerControltGetPlayerLVIpyDatatGetAtktChConfigt
AttrID_AtktGetDeft
AttrID_DeftGetMaxHPt AttrID_MaxHPRRRURCtDef_CalcAttr_LV(RRtplayerLVt    lvIpyDatat
lvAttrDict((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt CalcRoleBaseIs  cCsktj}i}i}i}|jƒjtjƒ}x•t|jƒƒD]}|j|ƒ}| sF|jƒrtqFn|j    tj
ƒ}    |    s’qFng}
xét|    ƒddd…D]Î} |j tj
| ƒ} t j | ƒ\} }}| |kr÷q²n| |kr||| <n| |kr)i|| <n|| }t|ƒtjksf||jƒksf||krv|
j| ƒq²|||<q²W|
rF|jƒ}x!|
D]} |jtj
| ƒqW|||<qFqFWx|jƒD]}|jƒqØWtjd||jƒƒxQ|jƒD]C\} }|j| ƒ}|j| dƒ}|j||dtƒqWt j|ƒdS(Niÿÿÿÿs ÖØÔØÕóÈÝ: %siR"(RKt
LineupListtGetItemManagertGetPacktrptHerotrangetGetCounttGetAttIsEmptytGetUserAttrCounttDef_IudetHeroLineuptGetUserAttrByIndexRtGetLineupValuetlent LineupObjMaxR$R%tGetItemt DelUserAttrt    Sync_ItemRRRTRJR>R?R#RR (RRtloadLineupIDListR4tlineShapeTypeDictt syncItemDicttcurPacktindextheroItemt lineupCountt delValueListtlpIndext lineupValueRRRRtitemtsyncItemR=((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyREYsP          
3   cCs>tjd|jƒƒt|ƒtj|ƒtj|ƒdS(NsdoCalcAllAttr...(RRRTRttChEquiptCalcRoleEquipAttrRtCalcHeroAddAttr(R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyRDs
 
  c
Cs:|jƒ}|j}tjd||ƒtjd|j|ƒ|jƒi}i}i}i}i}    i}
dJ\} } } }|jƒjtj    ƒ}xô|jj
ƒD]ã\}}|dks¨||j ƒkrØq¨n|j |ƒ}| s¨|j ƒrq¨n|jƒ}tjd|ƒ}|s*q¨n|jƒ}tjd|ƒ}|sTq¨n|jtjƒ}|jtjƒ}|jtjƒ}|jtjƒ}|jtjƒ}d}|jƒ}|dksÞ|t|ƒkrë||}n|rþ|d}n| |jƒ7} | |jƒ|7} | |jƒ|7} ||jƒ|7}|j|ƒ}||_||_ ||_!||_"i|_#g|_$d|_%|j&ƒ}|j'ƒ} |j$j(|| gƒi}!|!j)i|j*ƒt+j,6|j-ƒt+j.6|j/ƒt+j06ƒx0|j1ƒj
ƒD]\}"}#|#|!t2|"ƒ<qW|!||<i}$|j3tj4ƒ}%|j3tj5ƒ}&x›t6t7|%|&ƒƒD]„}'|j8tj4|'ƒ}(|j8tj5|'ƒ})tjd|(ƒ}*|*sÔq†n|*j9ƒ}+|*j:ƒ|)},|$j;|+dƒ|,|$|+<q†W|$||<i}-tj<d|ƒ}.|.r÷x¾|.D]³}/|/j=ƒ|krYPn|/j>ƒ}0|/j?ƒ}1xWt6t7t|0ƒt|1ƒƒƒD]4}'|0|'}+|1|'},|-j;|+dƒ|,|-|+<q“W|/j@ƒ}2|2r=|j$jA|2ƒq=q=Wn|-|    |<i}3tj<d|ƒ}4|4ràx¾|4D]³}5|5jBƒ|krBPn|5j>ƒ}0|5j?ƒ}1xWt6t7t|0ƒt|1ƒƒƒD]4}'|0|'}+|1|'},|3j;|+dƒ|,|3|+<q|W|5j@ƒ}2|2r&|j$jA|2ƒq&q&Wn|3|
|<xS|jCƒD]E}6|6|krg||6<n||6}7||7kr÷|7jA|ƒq÷q÷W|jDƒ}8|8|kreg||8<n||8}9||9kr¨|9jA|ƒq¨q¨Wi}:x#|j
ƒD]\}6}7tjd    |6ƒ};|;sÌq¢n|;jEƒ}<tF}=x$|<D]}>|>|7kråtG}=PqåqåW|=sq¢n|;j>ƒ}0|;j?ƒ}1x‹t6t7t|0ƒt|1ƒƒƒD]h}'|0|'}+|1|'},xK|<D]C}||:kr‹i|:|<n|:|}?|?j;|+dƒ|,|?|+<qlWqKWq¢Wi}@xð|j
ƒD]â\}8}9tj<d
|8ƒ}A|AsøqÎngg}0}1t|9ƒ}BxB|AD]:}C|CjHƒ}D|B|Dkr:Pn|Cj>ƒ}0|Cj?ƒ}1qWxWt6t7t|0ƒt|1ƒƒƒD]4}'|0|'}+|1|'},|@j;|+dƒ|,|@|+<qxWqÎWtjId d ƒ}EtjId d ƒ}FtjId dƒ}GtjId dƒ}H|jJt+jKƒ}I|jJt+jLƒ}J|jJt+jMƒ}Ktjd||ƒtjd||ƒtjd||ƒtjd||ƒtjd|    |ƒtjd|
|ƒtjd|:|ƒtjd|@|ƒtjd| | | |f|ƒtjd|I|ƒtjd|J|ƒtjd|K|ƒ|jNƒ}L|jOƒ}Mtjd|L|Mf|ƒtjd|Mƒ}Nd}O| d| d| d|df\} } } }x÷|j
ƒD]é\}}!|jP|ƒ}|sÚ
ni|_#d|_%|j;|iƒ}$|    j;|iƒ}-|
j;|iƒ}3|:j;|iƒ}Pi}Qi}Rx§t+jQD]œ}+t+jRj;|+dƒ}S|Ij;|+dƒ}T|Jj;|+dƒ}U|Kj;|+dƒ}V|Sr· |Kj;|Sdƒdnd}WdK\}X}Y}Z}[|+t+jSkrÿ | | | |f\}X}Y}Z}[n|!j;|+dƒd}\}]d }^|+t+jTkrY t+jT|+}_|!j;|_dƒ}^|^d:}^n|@j;|+dƒd}`}a|Pj;|+dƒd}b}c|$j;|+dƒd}d}e|-j;|+dƒd}f}g|3j;|+dƒd}h}i|Src |!j;|Sdƒd}]|@j;|Sdƒd}a|Pj;|Sdƒd}c|$j;|Sdƒd}e|-j;|Sdƒd}g|3j;|Sdƒd}ini|Td 6|Ud!6|Vd"6|Wd#6|Xd$6|Yd%6|Zd&6|[d'6|\d(6|]d)6|^d*6|`d+6|ad,6|bd-6|cd.6|dd/6|ed06|fd16|gd26|hd36|id46}j|+t+jSkr#tUjVd5|E|jƒ},ntUjVd6|F|jƒ},tjd7|+ƒ}k|kr\|kjWƒnd8|+}ld9|l}md}n|,r¨tX|Nd:|mƒr¨tY|Nd:|mƒƒ}nn|,|R|l<|n|R|m<|,rJ |,|j#|+<|,|Qd;|+|lf<qJ qJ WtUjVd<|G|Rƒ}otjd=||o|j$f|ƒi}px†|j$D]{}2tjd>|2ƒ}q|qsSq/n|qjZƒ}r|r|pkrx|q|p|r<q/|p|r}s|sj@ƒ}t|t|2kr q/n|q|p|r<q/Wd}ug|_$xp|pj[ƒD]b}q|qj@ƒ}2|j$jA|2ƒi|qj\ƒd?6|Ld@6|MdA6}vtUjVdB|H|vƒ}w|u|w7}uqÊWtjdC|u|j$f|ƒ|o|u}x|u|_]|x|_%|O|x7}OtjdD||x|o|u|Q|j$f|ƒq³
W|O|_%tjdE||Of|ƒ|tj^krÖdFSt_j`||Oƒtajb|ƒ}y|yjc}z|zr&|zjdƒr&|jerstjdG|ƒ|zjft+jgkrNtajh|tFƒq#|zjft+jikr#tajj|ƒq#q6tjdH|ƒt+jkd }{}||zjl|{ƒjm||ƒ}}tnjoƒ}~x||}jpj
ƒD]X\}}|~jq|ƒ}€|€sîqÇn|j|ƒ}|j#rÇ|€jr|j#|j$ƒqÇqÇWntjdI|ƒdFS(Ls° Ë¢ÐÂij¸öÕóÈÝÊôÐÔ
        »ù´¡ÊôÐÔ-Ãæ°åÏÔʾ£º
        1.È«Ìå»ù´¡¹Ì¶¨Öµ=ËùÓд©´÷×°±¸¡¾×°±¸»ù´¡¹Ì¶¨Öµ¡¿+¡¾·¨±¦»ù´¡¹Ì¶¨Öµ¡¿+¡¾ºìÑÕ»ù´¡¹Ì¶¨Öµ¡¿+¡¾ÆäËüÄ£¿éµÄ¹Ì¶¨Öµ¡¿
        2.È«Ìå°Ù·Ö±È¼Ó³É=ͼ¼ø¼Ó³É+¡¾ÁéÊÞÄ£¿é¡¿+¡¾ºìÑÕÄ£¿é¡¿+¡¾ÆäËüÄ£¿é¡¿+ËùÓÐÉÏÕó¿¨ÅÆ¡¾³õʼ¼Ó³É+Éý¼¶¼Ó³É+Í»ÆÆ¼Ó³É+ÍÌÊɼӳɡ¿
        3.¿¨ÅƼ̳бÈÀý=¿¨ÅÆÆ·Öʼ°Ö°Òµ¼Ì³Ð±ÈÀý²»Í¬
        4.¿¨ÅÆ×ÔÉíÅàÑø¼Ó³É=¡¾î¿°í¼Ó³É%+Í»ÆÆ´ÊÌõ¼Ó³É%+Ì츳¼Ó³É%¡¿
        ×îÖÕÃæ°åÉúÃü=¡¾EÈ«Ìå»ù´¡¹Ì¶¨Öµ¡¿*¡¾1+EÈ«Ìå°Ù·Ö±È¼Ó³É¡¿*¡¾¿¨ÅÆ×ÔÉí¼Ì³Ð±ÈÀý+ ¿¨ÅÆ×ÔÉíÅàÑø%¼Ó³É¡¿+¡¾¿¨ÅÆ×ÔÉí¹Ì¶¨Öµ¡¿
 
        Õ½¶·ÊôÐÔ/Õ½¶·¿¹ÐÔ/ÌØÊâÊôÐÔ-Ãæ°åÏÔʾ£º
        1.È«ÌåÕ½¶·ÊôÐÔÖµ=ËùÓд©´÷×°±¸¡¾×°±¸Õ½¶·ÊôÐÔÖµ¡¿+¡¾·¨±¦Õ½¶·ÊôÐÔÖµ¡¿+¡¾ºìÑÕÕ½¶·ÊôÐÔÖµ¡¿+¡¾ÆäËüÄ£¿éµÄÕ½¶·ÊôÐÔ¡¿
        2.¿¨ÅƼ̳бÈÀý=ĬÈÏ100%
        3.¿¨ÅÆ×ÔÉíÅàÑøÕ½¶·ÊôÐÔ=¡¾¿¨ÅƳõʼս¶·ÊôÐÔ+Í»ÆÆ´ÊÌõÕ½¶·ÊôÐÔ+Ì츳ս¶·ÊôÐÔ+¾õÐÑÕ½¶·ÊôÐÔ¡¿+¡¾·¨ÔòÏ´Á¶¡¿+¡¾ÃØÄÜ×°±¸¡¿+¡¾ÆäËüÄ£¿é¡¿
        ×îÖÕÃæ°åÕ½¶·ÊôÐÔ=¡¾EÈ«ÌåÕ½¶·ÊôÐÔÖµ¡¿*¡¾¿¨ÅƼ̳бÈÀý¡¿+¡¾¿¨ÅÆ×ÔÉíÅàÑøÕ½¶·ÊôÐÔ¡¿
    sË¢ÐÂÕóÈÝÊôÐÔ: lineupID=%ss    itemIndex-posNum : %sitHerot HeroQualityt
HeroTalentt    HeroBreakt    HeroAwaket
HeroFettertHeroLineupHalotHeroAttrFormulaiiiis    ¹ú¼ÒÎ佫ͳ¼Æ=%ss    î¿°íÎ佫ͳ¼Æ=%ss    Î佫×ÔÉíÊôÐÔ=%ss    Î佫ÍÌÊÉÊôÐÔ=%ss    Îä½«Í»ÆÆÇ±ÄÜ=%ss    Î佫¾õÐÑÌ츳=%ss    Î佫íÊôÐÔ=%ss    ÕóÈݹ⻷ÊôÐÔ=%ssI    ÕóÈÝÉÏÕó¼Ó³É=InitAddPer=%s,LVAddPer=%s,BreakLVAddPer=%s,StarAddPer=%ss    Ö÷¹«µÈ¼¶ÊôÐÔ=%ss    Ö÷¹«×°±¸ÊôÐÔ=%ss    Ö÷¹«Í¼¼øÊôÐÔ=%ss    PlayerLV=%s,OfficialLV=%stFightPowerRatiogˆÃ@i'tlvValuet
equipValuet    bookValuetbookPertlineupInitAddPertlineupLVAddPertlineupBreakLVAddPertlineupStarAddPert heroSelfValuet heroSelfPert
inheritPertlineupHaloValuet lineupHaloPert fetterValuet    fetterPertstarTalentValuet starTalentPert breakLVValuet
breakLVPertawakeTalentValuetawakeTalentPertbaseAttrFormulatotherAttrFormulat
PlayerAttrs%ss%sRatiosGet%ss%s-%stfightPowerFormulas.    heroID=%s,fightPower=%s,heroSkillIDList=%stSkillt
SkillPowertPlayerLVt
OfficialLVtskillFPFormulas)    skillFightPower=%s,heroSkillIDList=%ssB    Î佫×îÖÕÕ½Á¦: heroID=%s,fightPower=%s(%s+%s),%s,skillIDList=%ss1    ÕóÈÝ×îÖÕÕ½Á¦: lineupID=%s,lineupFightPower=%sNsÖ÷ÕóÈݱ仯£¬ÖØÐ¿ªÊ¼Õ½¶·s$Ö÷ÕóÈÝ¿¨ÅÆÊôÐÔ±ä¸ü£¬¸üÐÂÕ½¶·Î佫ÊôÐÔsÖ÷ÕóÈÝûÓÐÔÚÕ½¶·ÖУ¬²»ÐèÒª´¦Àí(iiii(iiii(sRTRRRRR'RvRwRKRxRJRzR{R|t GetItemTypeIDt IpyGameDataPYtGetIpyGameDatat
GetQualityt GetUserAttrtDef_IudetHeroLVtDef_IudetHeroStartDef_IudetHeroBreakLVtDef_IudetHeroAwakeLVtDef_IudetHeroSkint GetSkinIDListRt GetInitAddPert GetLVAddPertGetBreakLVAddPert GetStarAddPerR*RRRRRR    R
tGetNormalSkillIDtGetAngerSkillIDtextendtupdatetGetAtkInheritPerRjtAttrID_AtkInheritPertGetDefInheritPertAttrID_DefInheritPertGetHPInheritPertAttrID_HPInheritPertGetBatAttrDictRWR}tDef_IudetHeroTalentIDtDef_IudetHeroTalentIDLVRytminRt    GetAttrIDt GetAttrValueR?tGetIpyGameDataListt
GetBreakLVt GetAttrIDListtGetAttrValueListt
GetSkillIDR%t
GetAwakeLVtGetFetterIDListt
GetCountryt GetHeroIDListRRtGetNeedHeroCountt
GetFuncCfgRARptDef_CalcAttr_MainEquiptDef_CalcAttr_HeroBookRftGetOfficialRankR,tCalcBattleAttrIDListt AttrPerDicttBaseAttrIDListtAttrInheritPerDicttFormulaControltEvalt GetParameterthasattrtgetattrtGetSkillTypeIDR$t GetFightPowerR RLRgt SetFightPowerR5tGetMainFightMgrR8t    isInFightRtmapIDtDef_FBMapID_Maint__doMainLevelWavetDef_FBMapID_MainBosst__doMainBossStartt Def_FactionAt getBatFactiont getBatlineupt    BattleObjt GetBatObjMgrt posObjIDDictt    getBatObjtUpdInitBatAttr(RRR=RRtcountryHeroInfotfetterHeroInfotheroSelfAttrInfotheroStarTalentInfotheroBreakAttrInfotheroAwakeTalentInfot
InitAddPertLVAddPert BreakLVAddPert
StarAddPerR‰RRR‹Rt heroIpyDatatqualitytqualityIpyDatatheroLVtstartbreakLVtawakeLVt    skinIndexRt
skinIDListR)t normalSkillIDt angerSkillIDt selfAttrDicttktvtstarTalentAttrDicttidCounttlvCounttaIndexttalentIDttalentLVt    stIpyDatatattrIDt    attrValuet breakAttrDicttbreakIpyDataListt breakIpyDatat
attrIDListt attrValueListtskillIDtawakeTalentAttrDicttawakeIpyDataListt awakeIpyDatatfetterIDtfetterHeroIDListtcountrytcountryHeroIDListtheroFetterAttrInfot fetterIpyDatatneedHeroIDListt    canFettert
needHeroIDtheroFetterAttrDicttlineupHaloAttrInfothaloIpyDataListtcountryHeroCntt haloIpyDatat needHeroCountR³R´R¶R»Rst equipAttrDictt bookAttrDictR¹RºtfpRatioIpyDatatlineupFightPowertfetterAttrDictt logAttrDicttfightPowerParamDictt    attrPerIDRžRŸR R¡R¢R£R¤R¥R¦R§R¨tattrInheritPerIDR©RªR«R¬R­R®R¯R°R±R²t attrParamDictt attrIpyDatatattrNamet attrRatioNamet
ratioValueR
tskillTypeIDDictt    skillDatat skillTypeIDt befSkillDatat
befSkillIDR t    paramDictt sFightPowertfightPowerTotalt mainFightMgrt mainTurnFighttfactiontnumt    batLineupt    batObjMgrtobjIDtbatObj((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyR0—sT     
                                   
 
   (
 
 
   (
 
 
 
 
      (
 
 
&      (
 
"   .        "!  
 
 
     
       !
        
    $                  (((((RÿR5R^RKRgR½RíRRRjR’RXRRR2RQRaRURbRcRdRtRERDR0(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerOnline.pyt<module>s0            ^h7                                6