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
;'khc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
d„Z d„Z d„Z d„Zd„Zdd„Zd    „Zdd
„Zd „Zd „Zd „Zd„Zd„Zejd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d „Z)e*d!„Z+d"„Z,d#„Z-d$„Z.d%„Z/d&„Z0d'„Z1d(„Z2d)„Z3d*„Z4d+„Z5d,„Z6dd-„Z8dS(.iÿÿÿÿNcCst|ƒdS(N(t Sync_HeroInfo(t    curPlayer((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnPlayerLogins
cCsŸ|jtjdƒ|jtjƒr;|jtjdƒn|jtjƒrc|jtjdƒn|jtjƒr‹|jtjdƒn|jtjƒr³|jtjdƒn|jtj    ƒrØ|j
tj    ƒn|jtj ƒrý|j
tj ƒn|jtj ƒr"|j
tj ƒn|jtj ƒrG|j
tj ƒn|jtjƒrl|j
tjƒn|jtjƒr‘|j
tjƒnt|ƒdS(Nii(t SetUserAttrt ShareDefinetDef_IudetHeroLVt GetUserAttrtDef_IudetHeroStartDef_IudetHeroBreakLVtDef_IudetHeroAwakeLVtDef_IudetHeroSkintGetUserAttrCounttDef_IudetHeroTalentIDt ClearUserAttrtDef_IudetHeroTalentIDLVtDef_IudetHeroTalentWashLocktDef_IudetHeroTalentWashIDtDef_IudetHeroTalentIDAwakeRandtDef_IudetHeroLineuptInitHeroTalent(t
singleItem((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt InitHeroItem#s.
cCs¦|jƒ}tjd|ƒ}|s(dS|jƒ}tjd|ƒ}|sPdSd}|jƒ}|r}tj|dƒ}ni}g}tjƒ}    x^t|    j    ƒƒD]J}
|    j
|
ƒ} | j ƒ} | j ƒ} |j | | gƒ| || <q¨W|jtjƒ|jtjƒx‰t|ƒD]{}tj|ƒ}|sDq#n|j|dƒ|g}||krx|j|ƒn|jtj|ƒ|jtjdƒq#WdS(s+³õʼ»¯²ÛλÌ츳£¬²»Í¬²ÛλÌ츳ID²»ÄÜÒ»Ñù
    tHeroNt HeroQualityii(t GetItemTypeIDt IpyGameDataPYtGetIpyGameDatat
GetQualitytGetInitTalentWeightt    GameWorldtGetResultByWeightListtIPY_DatatrangetGetHeroTalentCounttGetHeroTalentByIndext GetTalentIDt GetInitWeighttappendR RR Rtgettremovet AddUserAttr(RtheroIDt heroIpyDatatqualitytqualityIpyDatat initTalentCnttinitTalentWeightt talentIDDictttalentWeightListt
ipyDataMgrtindext talentIpyDatattalentIDt
initWeightt_t randTalentIDt randWeightID((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR?sB       cCsx|jƒ}tjd|ƒ}|s(dSt||ƒstt||dƒtjd||jƒƒt||gƒndS(NRisÊ״줻îÎ佫: heroID=%s(    RRRtGetHeroActivitetSetHeroActiviteRtDebugLogt GetPlayerIDR(RtheroItemR)R*((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnGiveHeroItemks cCs|jtj|ƒd}|S(Ni
(tNomalDictGetPropertytChConfigtDef_PDict_HeroBook(RR)tactState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR9zsicCs˜|jtj|ƒ}|d}|r9|r0dSd}nd}tj|dd|ƒ}tj|tj||ƒtjd|||f|jƒƒdS(Ni
iis0ÉèÖÃÎ佫¼¤»î״̬:%s,bookState=%s,updBookState=%s(    R?R@RARtSetValuet PlayerControltNomalDictSetPropertyR;R<(RR)tisActt    bookStateRBt updBookState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR:€s
    #cCs$|jtj|ƒd}|dkS(Ni
i(R?R@RA(RR)t    initState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytGetHeroBookInitStatescCsš|jtj|ƒ}|d}|r/d}n|r;dnd}tj|dd|ƒ}tj|tj||ƒtjd|||f|jƒƒdS(Ni
iiis4ÉèÖÃÎ佫ͼ¼ø¼¤»î״̬:%s,bookState=%s,updBookState=%s(    R?R@RARRCRDRER;R<(RR)RFRGRBRH((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytSetHeroBookInitState“s
    #cCs)|jtj|ƒ}tj|ddƒS(Nii(R?R@RARtGetValue(RR)RG((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytGetHeroBookStarLV scCso|jtj|ƒ}tj|dd|ƒ}tj|tj||ƒtjd|||f|jƒƒdS(Niis4ÉèÖÃÎ佫ͼ¼øÐǼ¶µÈ¼¶:%s,bookState=%s,updBookState=%s(    R?R@RARRCRDRER;R<(RR)tstarLVRGRH((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytSetHeroBookStarLV¤s
#cCs)|jtj|ƒ}tj|ddƒS(Nii(R?R@RARRL(RR)RG((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytGetHeroBookBreakLV¬scCso|jtj|ƒ}tj|dd|ƒ}tj|tj||ƒtjd|||f|jƒƒdS(Niis4ÉèÖÃÎ佫ͼ¼øÍ»ÆÆµÈ¼¶:%s,bookState=%s,updBookState=%s(    R?R@RARRCRDRER;R<(RR)tbreakLVRGRH((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytSetHeroBookBreakLV°s
#cCs}|jƒjtjƒ}|dks6||jƒkr:dS|j|ƒ}| s\|jƒr`dS|jƒtj    krydS|S(Ni(
tGetItemManagertGetPackRtrptHerotGetCounttGetAttIsEmptytGetTypeR@tDef_ItemType_Hero(Rt    itemIndextcurPackR=((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt GetHeroItem¸scCst|jtjƒ}|sdSxQt|ƒddd…D]6}|jtj|ƒ}|d|krgq6n|dSWdS(Niiÿÿÿÿi'id(R RRR tGetUserAttrByIndex(R=tlineupIDt lineupCounttlpIndext lineupValue((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytGetHeroLineupPosNumÃs     cCstjƒj|ƒ}|jƒ}|j}t||ƒ}|sCdS|jƒ}tjd|ƒ}|skdS|j    ƒ}    |j
t j ƒ}
|j
t j ƒ} t|ƒ} tjd||| |    |
| f|ƒ| | krñtjd| |ƒdStjd|    ƒ} | s dS| jƒ}|s#dS|\}}| s=| rAdS|jƒjtjƒ}tj|||ƒ\}}|s•tjd||fƒdStj||||tdƒ| d}tjd|||f|ƒ|jt j |ƒt|t jƒr
t|ƒndS(    NRsMÇëÇóÎ佫Éý¼¶: itemIndex=%s,heroID=%s,heroLV=%s,quality=%s,breakLV=%s,LVMax=%ss¸ÃÎ佫ÒÑÂú¼¶£¡LVMax=%sRs7²ÄÁϲ»×㣬Î佫ÎÞ·¨Éý¼¶! costItemID=%s, costItemCount=%stHeroLVUPis-Î佫Éý¼¶: itemIndex=%s,heroID=%s,updHeroLV=%s(RtGetPlayerManagertGetPlayerByIndexR<t    ItemIndexR]RRRRRRRRt GetHeroLVMaxR;t GetUPCostItemRSRTt IPY_GameWorldtrptItemt
ItemCommontGetItem_FromPack_ByIDt
ReduceItemtTrueRRct Lineup_MaintRefreshLordAttr(R2t
clientDatattickRtplayerIDR[R=R)R*R+RQtheroLVtLVMaxR,t costItemInfot
costItemIDt costItemCounttitemPackt    hasEnought itemIndexListt    updHeroLV((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt
OnHeroLVUPÙsP               
 cCsu|jƒ}tjd|ƒ}|s(dS|jƒ}|jtjƒ}tjd||ƒ}|sedS|jƒ}|S(NRitHeroQualityBreak(RRRRRRRtGetLVMax(R=R)R*R+RQtqualityBreakIpyDataRv((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRhs   c CsÉtjƒj|ƒ}|jƒ}|j}|j}t||ƒ}t||ƒ}| sk| sk||krodS|jƒ}    |jƒ}
tjd||    ||
f|ƒ|    |
krÇtjd|ƒdS|j    ƒrñtjd||    f|ƒdS|j
t j ƒ} | r'tj d||    f|ƒdS|j
t jƒ} | r]tj d||    f|ƒdS|jt jƒ} |jt jƒ}| s|r«tjd| |f|ƒdStjd|    ƒ}|sÇdS|jƒ}|jt jƒ}|jt jƒ}t|ƒ}tjd|    ||||f|ƒ||krJtjd    ||ƒdS|jt jƒ}|d
}||}tjd ||    ||||f|ƒtj|||jƒtd ƒt|||ƒdS( NsAÇëÇóÎ佫ÉýÐÇ: itemIndex=%s,heroID=%s,useItemIndex=%s,useHeroID=%ssÎ佫²ÄÁϷDZ¾Ì壬ÎÞ·¨ÉýÐÇ!s1²ÄÁÏ¿¨Ëø¶¨ÖУ¬ÎÞ·¨ÉýÐÇ! useItemIndex=%s,heroID=%ss4Î佫ϴÁ¶½á¹ûδ´¦Àí£¬ÎÞ·¨ÉýÐÇ! itemIndex=%s,heroID=%ss8Î佫¾õÐѽâËøÌ츳δѡÔñ£¬ÎÞ·¨ÉýÐÇ! itemIndex=%s,heroID=%ssB²ÄÁÏ¿¨Í»ÆÆ»ò¾õÐѵȼ¶²»Îª0ÔÝʱÎÞ·¨ÉýÐÇ£¡useBreakLV=%s,useAwakeLV=%sRs2heroID=%s,star=%s,quality=%s,awakeLV=%s,starMax=%ss¸ÃÎ佫ÒÑÂúÐÇ£¡starMax=%sisIÎ佫ÉýÐÇ: itemIndex=%s,heroID=%s,star=%s,useStar=%s,addStar=%s,updStar=%st
HeroStarUP(RReRfR<Rgt UseItemIndexR]RR;t GetIsLockedR RRtErrLogRRRR    RRRRtGetHeroStarMaxRltDelItemRVtFalset DoHeroUpdStar(R2RrRsRRtR[t useItemIndexR=tuseItemR)t    useHeroIDt    washIDCntt awakeRandCntt
useBreakLVt
useAwakeLVR*R+tstartawakeLVtstarMaxtuseStartaddStartupdStar((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroStarUPsd                    # 
 
    c CsÔ|jƒ}tjd|ƒ}|s(dS|jƒ}tjd|ƒ}|sPdS|jƒ}d}tjd|ƒ}|rÆ|jtjƒ}x7|D],}    |    j    ƒ|kr¯Pn||    j
ƒ7}q“Wn||}
|
S(NRiRt    HeroAwake( RRRRtGetInitStarUppertGetIpyGameDataListRRR    t
GetAwakeLVtGetAddStarUpper( R=R)R*R+R,t InitStarUppert addStarUppertheroAwakeIpyDataListR’tipyDataR“((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR†Qs&    
cCs„|jtjƒ}||}|jƒ}|jtj|ƒ|dkrWt||ƒn|jƒt|tjƒr€t    |ƒndS(Ni(
RRRtGetItemRt__DoHeroStarTalentUpt    Sync_ItemRcRpRq(RR=R–tcurStarR•titem((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR‰js
 
 cCsZtjddƒ}tjddƒ}|jtjƒ}|jtjƒ}gg}}g}t}    x}tt||ƒƒD]f}
|j    tj|
ƒ} |j    tj|
ƒ} |j
| ƒ|j
| ƒ| |krw|j
| ƒqwqwWt |ƒ|kr,|dg|t |ƒ7}|dg|t |ƒ7}nt j d|ƒt j d||fƒt j d|ƒd|kr×i} g}tjƒ}xpt|jƒƒD]\}
|j|
ƒ}|jƒ} | |krÏqœn|jƒ}|j
|| gƒ|| | <qœWt j d|ƒxÇt|ƒD]¶}d|kr0Pnt j|ƒ}|sKqn| j|dƒ|g}||kr|j|ƒn|jdƒ}|||<d||<|j
|ƒt j d    |ƒ|d8}t}    qWn|dkrÄxÞt|ƒD]Í}|sPntj|ƒ}||kr.|j|ƒqðn|j|ƒ}||}||kr„|d7}|||<t j d
|||fƒn||kr·|j|ƒt j d ||fƒnt}    qðWn|    sÎdSt j d ||fƒ|jtjƒ|jtjƒxNt|ƒD]@\}
} | s(Pn|jtj| ƒ|jtj||
ƒqWdS( NtHeroStarTalentiiis"Ö´ÐÐÎ佫ÐǼ¶Ì츳µÈ¼¶ÌáÉý: addLV=%ss!µ±Ç°ÐǼ¶Ì츳: idList=%s,lvList=%ssδÂú¼¶ÐǼ¶Ì츳ID: %ss³£¹æ¿Õ²ÛλÔö¼ÓÌ츳Êý£º%ssÐÂÔöÐǼ¶Ì츳ID: %ss#Éý¼¶ÐǼ¶Ì츳ID: %s,idLV=%s,index=%ss&    ÒƳýδÂú¼¶ID: %s,unfullLVIDList=%ss!¸üÐÂÐǼ¶Ì츳: idList=%s,lvList=%s(Rt
GetFuncCfgR RR RRˆR tminR^R%tlenRR;RR!R"R#t GetWashWeightRR&R'R2RotrandomtchoiceR t    enumerateR((RtaddLVtcommTalentSlott talentMaxLVtidCounttlvCounttidListtlvListtunfullLVIDListthaveUpR2R4ttalentLVt idWeightDictR0R1R3tweightR6R7R8t    zeroIndextrandIDt    randIndextidLV((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR¢ysœ           
 
 
 
 
 
   cCsötjƒj|ƒ}|jƒ}|j}t||ƒ}|sCdS|jƒ}tjd|ƒ}|skdS|j    ƒ}    |j
t j ƒ}
tj d|||    |
f|ƒtjd|    |
ƒ} | sÈdS|
d} tjd|    | ƒstj d|    |
f|ƒdS| jƒ} | sdS| \}}| s5| r9dS|jƒjtjƒ}tj|||ƒ\}}|stj d||fƒdStj||||tdƒtj d||| f|ƒt|| ƒt|t jƒròt|ƒndS(    NRs:ÇëÇóÎä½«Í»ÆÆ: itemIndex=%s,heroID=%s,quality=%s,breakLV=%sRis%Í»ÆÆµÈ¼¶ÒÑÂú¼¶: quality=%s,breakLV=%ss7²ÄÁϲ»×㣬Î佫ÎÞ·¨Í»ÆÆ! costItemID=%s, costItemCount=%st    HeroBreaks/Îä½«Í»ÆÆ: itemIndex=%s,heroID=%s,nextBreakLV=%s(RReRfR<RgR]RRRRRRRR;RiRSRTRjRkRlRmRnRotSetHeroBreakLVRcRpRq(R2RrRsRRtR[R=R)R*R+RQR t nextBreakLVRwRxRyRzR{R|((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroBreakßsL           
    cCs|jtj|ƒdS(N(RRR(R=RQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR¿    sc    Cshtjƒj|ƒ}|jƒ}|j}t||ƒ}|sCdS|jƒ}tjd|ƒ}|skdS|j    ƒ}    |j
t j ƒ}
|j
t j ƒ} tjd|||    | |
f|ƒtjddƒ} tjddƒ} |
| ksú|
| krtjd|
| | f|ƒdStjd|    | ƒ}|s:dS| d}tjd|    |ƒswtjd|    | f|ƒdS|jƒ}|sdS|\}}| s§| r«dS|jƒjtjƒ}tj|||ƒ\}}|sÿtjd    ||fƒdStj||||td
ƒtjd |||f|ƒt||ƒt|t jƒrdt|ƒndS( NRsDÇëÇóÎ佫¾õÐÑ: itemIndex=%s,heroID=%s,quality=%s,awakeLV=%s,starLV=%sR¦iis$µ±Ç°ÐǼ¶²»¿É¾õÐÑ: starLV=%s < %s, %stHeroQualityAwakes%¾õÐѵȼ¶ÒÑÂú¼¶: quality=%s,awakeLV=%ss7²ÄÁϲ»×㣬Î佫ÎÞ·¨¾õÐÑ! costItemID=%s, costItemCount=%sR˜s/Î佫¾õÐÑ: itemIndex=%s,heroID=%s,nextBreakLV=%s(RReRfR<RgR]RRRRRRRR    R;R§RiRSRTRjRkRlRmRnRotSetHeroAwakeLVRcRpRq(R2RrRsRRtR[R=R)R*R+RNR’tawakeLimitStarR¯R t nextAwakeLVRwRxRyRzR{R|((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroAwakesX           
    cCs7|jƒ}|jtj|ƒt|ƒ|jƒdS(N(R¡RRR    tunlockTalentSlotByAwakeR£(R=R’R¥((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRÃEs
 
 
cCsl|jƒ}|jtjƒ}tjd|ƒ}|s:dSd}x;|| ddd…D]"}|jƒ}|rX|}PqXqXW|sˆdS|jtjƒ}||krªdStj    ddƒ}||krÌdS|jtj
ƒ}    |    rèdSg}
x6t |ƒD](} |j tj| ƒ} |
j | ƒqûWtjd|||
fƒi} g}tjƒ}xpt |jƒƒD]\} |j| ƒ}|jƒ} | |
krŸqln|jƒ}|j || gƒ|| | <qlWtj    ddƒ}x‡t |ƒD]y}tj|ƒ}|s qën| j|dƒ|g}||kr@|j|ƒn|jtj
|ƒtjd|ƒqëWdS(    NR˜iiÿÿÿÿR¦is5¾õÐѽâËøÌ츳²Û: awakeLV=%s,maxUnlockSlot=%s,idList=%sis!Ëæ»ú¾õÐÑÌ츳ѡÏî: randTalentID=%s(RRRR    RRštGetUnlockTalentSlotR R R§RR R^R%RR;RR!R"R#tGetAweakWeightRR&R'R((RR)R’tawakeIpyDataListt maxUnlockSlotR tunlockTalentSlotR±R¯RŽR³R2R4R¸R0R1R3R¹t randTalentCntR6R7R8((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRÇMsb         cCs»tjƒj|ƒ}|jƒ}|j}|j}t||ƒ}|sLdS|jƒ}|jt    j
ƒ}    |     s}||    kržtj d|||    f|ƒdS|j t    j
|ƒ}
|
s½dS|j ƒ} | jt    jƒ} | jt    jƒ} gg}}xatt| | ƒƒD]J}| j t    j|ƒ}| j t    j|ƒ}|j|ƒ|j|ƒqWtjddƒ}| |kr©|dg|| 7}|dg|| 7}n|
|krÙtjd|||
|f|ƒdS|j|
ƒ|jdƒ| jt    j
ƒtj d|
||fƒ| jt    jƒ| jt    jƒxDt|ƒD]6\}}| jt    j|ƒ| jt    j||ƒqJWt| ƒ|jƒt|t    jƒr·t|ƒndS(NsB²»´æÔڸþõÐÑÌì¸³Ëæ»úÑ¡Ïî! heroID=%s,selectIndex=%s,awakeRandCnt=%sR¦iisDÑ¡ÔñÌ츳ID²»ÄÜÖØ¸´! heroID=%s,selectIndex=%s,selectTalentID=%s in %ss3¸üÐÂÑ¡ÔñÌ츳: selectTalentID=%s,idList=%s,lvList=%s(RReRfR<Rgt SelectIndexR]RR RRR;R^R¡R RR R¨R%RR§R…R R­R(RÇR£RcRpRq(R2RrRsRRtR[t selectIndexR=R)RŽtselectTalentIDRR±R²R³R´R4R·R¯((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroAwakeSelectTalent’s\                     
 
 cCsžtjƒj|ƒ}|j}|j}|j}t||ƒ}|sIdS|dkrht|||ƒn2|dkr‡|jt    j
ƒnt ||||ƒdS(Nii( RReRfRgtLockTalentIndexstOPTypeR]tHeroTalentWashReplaceR RRtHeroTalentWash(R2RrRsRR[tlockTalentIndexstopTypeR=((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt
OnHeroWashÕs              cCsÌ|jƒ}tjd|||fƒ|jtjƒ}|rStjd|ƒdStjddƒ}tjddƒ}| s…| r‰dS|\}}    |\}
} |j    ƒj
t j ƒ} t j|| |    ƒ\} }| sõtjd||    fƒdSg}d}|rYt|ƒ| }t j|
| |ƒ\} }| sYtjd|
| |fƒdSnt j|| ||    td    ƒt j|| ||td    ƒ|jƒ}|jtjƒ}g}xRt|ƒD]D}||krù|jtj|ƒ}|j|ƒqÂ|jdƒqÂWtjd
|ƒi}g}tjƒ}xpt|jƒƒD]\}|j|ƒ}|jƒ}||kryqFn|jƒ}|j||gƒ|||<qFWxt|ƒD]q\}}|rËq³ntj|ƒ}|sæq³n|j|dƒ|g}||kr|j|ƒn|||<q³Wtjd |ƒ|j tjƒx!|D]}|j!tj|ƒqPW|j tj"ƒx!|D]}|j!tj"|ƒq„W|j#ƒtjd ||||fƒdS( Ns4Î佫ϴÁ¶: itemIndex=%s,heroID=%s,lockTalentIndexs=%ss*Î佫ϴÁ¶½á¹ûδ´¦Àí£¬ÎÞ·¨Ï´Á¶! washIDCnt=%stHeroWashiis>Ï´Á¶²ÄÁϲ»×㣬Î佫ÎÞ·¨Ï´Á¶! washItemID=%s,washCostItemCount=%sisXËø¶¨²ÄÁϲ»×㣬Î佫ÎÞ·¨Ï´Á¶! lockItemID=%s,lockCostItemCount=%s,lockCostItemCountTotal=%sRÕs
Ï´Á¶Ç°: %ss
Ï´Á¶ºó: %ssFÎ佫ϴÁ¶½á¹û! itemIndex=%s,heroID=%s,washIDList=%s,lockTalentIndexs=%s($RRR;R RRR…RtGetFuncEvalCfgRSRTRjRkRlRmR©RnRoR¡R R R^R%RR!R"R#RªR­RR&R'R R(RR£(RR[R=RÖR)RtwashCostItemInfotlockCostItemInfot
washItemIDtwashCostItemCountt
lockItemIDtlockCostItemCountRzR{twashItemIndexListtlockItemIndexListtlockCostItemCountTotalRR±t
washIDListR2R4R¸R0R1R3R¹R7R8((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRÕèsŠ                
    c    Csã|jƒ}|jƒ}g}|jtjƒ}|jtjƒxIt|ƒD];}|jtj|ƒ}|j    |ƒ|j
tj|ƒqMW|jtjƒ|j ƒt j d|||fƒt|tjƒrßt|ƒndS(Ns2Î佫ϴÁ¶Ìæ»»! itemIndex=%s,heroID=%s,washIDList=%s(RR¡R RRR R R R^R%R(R£RR;RcRpRq(    RR[R=R)RRäR±R2R4((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRÔ>s   
 c Cs-tjƒj|ƒ}|j}|j}t||ƒ}|s@dS|jƒ}tjd|ƒ}|shdS|j    ƒ}    |dkr÷|t
|    ƒkr­tj d||fƒdS|j t j|ƒ}
|
td|ƒ@s÷tj d|||
fƒdSn|jtj|ƒt|tjƒr)t|ƒndS(NRis*¸ÃÎ佫²»´æÔÚ¸ÃÆ¤·ô! heroID=%s,skinIndex=%sis5¸ÃÎ佫Ƥ·ôδ½âËø! heroID=%s,skinIndex=%s,skinState=%s(RReRfRgt    SkinIndexR]RRRt GetSkinIDListR©R;R?R@tDef_PDict_HeroSkintpowRRR
RcRpRq( R2RrRsRR[t    skinIndexR=R)R*t
skinIDListt    skinState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroWearSkin]s.            cCsË|jtj|ƒ}|rX|td|ƒB}tjd||||f|jƒƒn;tj||dƒ}tjd||||f|jƒƒtj    |tj||ƒt
||gƒt |ƒdS(Nis=¼¤»îÎ佫Ƥ·ô: heroID=%s,skinIndex=%s,skinState=%s,updState=%sis=ʧЧÎ佫Ƥ·ô: heroID=%s,skinIndex=%s,skinState=%s,updState=%s( R?R@RçRèRR;R<t SetBitValueRDRERRq(RR)RétisActiveRëtupdState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytActiveHeroSkinys         
cCstjƒj|ƒ}|j}|j}|j}|dkrOt|||ƒn,|dkrnt|||ƒn t||ƒdS(Nii(    RReRftHeroIDRgtBookTypet__doHeroBookStarLVUPt__doHeroBookBreakLVUPt__doHeroBookAct(R2RrRsRR)R[tbookType((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroBookUP’s               c    Cs>|jƒ}t||ƒr3tjd||ƒdStjd||ƒtjd|ƒ}|scdS|jƒ}tjd|ƒ}|s‹dSt||ƒdkr¸tjd||ƒdSt||dƒ|j    ƒ}|r t
|ƒdkr |\}}|r |r t j |||dƒq nt ||gƒt|ƒdS(    Ns¸ÃÎ佫ͼ¼øÒѼ¤»î! heroID=%ssÎ佫ͼ¼ø¼¤»î! heroID=%sRRis%Î佫δ»ñµÃ¹ý£¬²»¿É¼¤»îͼ¼ø! heroID=%sit HeroBookAct(R<RJRR;RRRR9RKtGetBookActAwardMoneyR©RDt    GiveMoneyRRq(    RR)RtR*R+R,tawardMoneyInfot    moneyTypet
moneyValue((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRõ s0     
cCsø|jƒ}t||ƒ}|s%dS|jƒ|kr[tjd||jƒf|ƒdS|jtjƒ}t||ƒ}||kr©tjd|||f|ƒdStjd|||f|ƒt    |||dƒt
||gƒt |ƒdS(Ns)·Ç¸ÃÎ佫ͼ¼ø¹ØÁªÎïÆ·! heroID=%s,itemID=%ssA¸ÃÎ佫ͼ¼øÐǼ¶ÒѴﵱǰӢÐÛÐǼ¶! heroID=%s,bookStar=%s,heroStar=%ss3Î佫ͼ¼øÐǼ¶Éý¼¶! heroID=%s,bookStar=%s,heroStar=%si( R<R]RRR;RRRRMRORRq(RR)R[RtR=theroStartbookStar((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRó¾s"   
cCsø|jƒ}t||ƒ}|s%dS|jƒ|kr[tjd||jƒf|ƒdS|jtjƒ}t||ƒ}||kr©tjd|||f|ƒdStjd|||f|ƒt    |||dƒt
||gƒt |ƒdS(Ns)·Ç¸ÃÎ佫ͼ¼ø¹ØÁªÎïÆ·! heroID=%s,itemID=%ssO¸ÃÎ佫ͼ¼øÍ»ÆÆµÈ¼¶ÒѴﵱǰӢÐÛÍ»ÆÆµÈ¼¶! heroID=%s,bookBreakLV=%s,heroBreakLV=%ss9Î佫ͼ¼øÍ»ÆÆÉý¼¶! heroID=%s,bookBreakLV=%s,heroBreakLV=%si( R<R]RRR;RRRRPRRRRq(RR)R[RtR=t heroBreakLVt bookBreakLV((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRôÓs"   
cCs]tjƒj|ƒ}|j}|j}t||ƒ}|s@dS|j|rRdndƒdS(Nii(RReRfRgtIsLockR]t SetIsLocked(R2RrRsRR[tisLockR=((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt
OnHeroLockðs        cCs2tjƒj|ƒ}|j}|j}|j}i}g}xI|D]A}    |    j}
|    j} | |krmqCn|j| ƒ| ||
<qCW|t    j
kr¬tj d|ƒdStj d||f|j ƒƒ|j ƒjt    jƒ} d} i}xõt| jƒƒD]á}| j|ƒ}| s|jƒr1qn|jt    jƒ}|sOqn|jƒ}x†t|ƒddd…D]k}|jt    j|ƒ}|d|kr¦qun|jt    j|ƒ| d7} | t    jkrÖPn|||<quWqWg}xö|jƒD]è\}
} | dksû| | jƒkr+qûn| j| ƒ}| sû|jƒrSqûn|jƒ}||krˆtj d| |fƒqûn|j|ƒ|jƒ}|d|d|
}|jt    j|ƒ| |krû||| <qûqûW|t    jkrt|ƒn!x|jƒD]}|j ƒqWt!|ƒdS(    Ns#²»´æÔÚ¸ÃÕóÈÝ£¬ÎÞ·¨±£´æ! lineupID=%ss±£´æÕóÈÝ: lineupID=%s, %siiÿÿÿÿi'is,ͬ¸öÎ佫ֻÄÜÉÏÕóÒ»¸ö! itemIndex=%s,itemID=%sid("RReRftLineupIDt    ShapeTypet HeroPosListtPosNumRgR%Rt
LineupListR;R<RSRTRUR RVRWRXR RR¡R^t DelUserAttrt LineupObjMaxtitemsRR(Rpt ResetHeroPacktvaluesR£Rq(R2RrRsRR_t    shapeTypet heroPosListt heroPosDictt    indexListtposInfotposNumR[R\tdelCountt syncItemDictR=R`R¥RaRbt
heroIDListtitemIDtsyncItem((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroLineupSave
sx                          
 
cCs?tjƒjƒ}|jdƒtj|tjdd|ƒdS(Ni(Rt GetGameWorldtGetTicktSetResetItemTickt ItemControlert    ResetItemRRU(RRs((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRTs cCst|ƒdS(N(tCalcHeroItemAddAttr(R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRqZs
cCsdS(N((R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR!_scCsdS(N((R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytRefreshLineupHeroAttrcscCsdS(N((((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytCaclHeroCardAttrisc Cs|dkr|}nQg}tjƒ}x<t|jƒƒD](}|j|ƒ}|j|jƒƒq:W|spdSg}xÑ|D]É}tjd|ƒ}|s¡q}n|dkrÊ|j    t
j |ƒ rÊq}nt j ƒ}    ||    _|j    t
j|ƒ|    _|j    t
j |ƒd|    _t||ƒ|    _t||ƒ|    _|j|    ƒq}W|sTdSt jƒ}
||
_t|
jƒ|
_tj||
ƒdS(NRi
(tNoneRRR t GetHeroCounttGetHeroByIndexR%t    GetHeroIDRR?R@RAtChPyNetSendPackt    tagSCHeroRñRçt    SkinStatet BookInitStateRMt
BookStarLVRPt BookBreakLVt tagSCHeroInfot HeroInfoListR©tHeroCntt NetPackCommont SendFakePack( RRtsyncHeroIDListR1R2R t syncInfoListR)R*therot
clientPack((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRls<       #          (9RlRRRjRR(R1RDRR@R«RRRR>R9R:RJRKRMRORPRRR]RpRcR~RhR—R†R‰R¢RÁR¿RÆRÃRÇRÑRØRÕRÔRìRoRðR÷RõRóRôRRRRqR!R"R#R$R(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt<module>sj                       ,                                       -        5            f    *         0        E    C        V                                 J