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
“îHhc@sxddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
d„Z d„Z d„Z d„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Ze d„Z!d„Z"d„Z#d„Z$dd„Z&dS(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Û|jtjdƒn|j    tj
ƒr|j tj
ƒn|j    tj ƒr%|j tj ƒn|j    tj ƒrJ|j tj ƒn|j    tjƒro|j tjƒn|j    tjƒr”|j tjƒnt|ƒdS(Nii(t SetUserAttrt ShareDefinetDef_IudetHeroLVt GetUserAttrtDef_IudetHeroStartDef_IudetHeroBreakLVtDef_IudetHeroAwakeLVtDef_IudetHeroSkintDef_IudetHeroPosNumtGetUserAttrCounttDef_IudetHeroTalentIDt ClearUserAttrtDef_IudetHeroTalentIDLVtDef_IudetHeroTalentWashLocktDef_IudetHeroTalentWashIDtDef_IudetHeroTalentIDAwakeRandtInitHeroTalent(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 GetInitWeighttappendRRR 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       cCs¢|jƒ}tjd|ƒ}|s(dS|jƒ}tj|tj|ƒ}|sžtj|tj|dƒtj    d||f|j
ƒƒt ||gƒndS(NRis$Ê״줻îÎ佫: heroID=%s,heroIndex=%s( RRRt GetHeroIndexRtGetDictValueByBittChConfigtDef_PDict_HeroActStatetSetDictValueByBittDebugLogt GetPlayerIDR(RtheroItemR)R*t    heroIndext heroActState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnGiveHeroItemks   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 GetHeroItemyscCsïtjƒ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 |ƒdS(    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    ItemIndexRNRRRRRRRRt GetHeroLVMaxR>t GetUPCostItemRDREt IPY_GameWorldtrptItemt
ItemCommontGetItem_FromPack_ByIDt
ReduceItemtTrueR(R2t
clientDatattickRtplayerIDRLR@R)R*R+tbreakLVtheroLVtLVMaxR,t costItemInfot
costItemIDt costItemCounttitemPackt    hasEnought itemIndexListt    updHeroLV((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt
OnHeroLVUP‹sL               
cCsu|jƒ}tjd|ƒ}|s(dS|jƒ}|jtjƒ}tjd||ƒ}|sedS|jƒ}|S(NRitHeroQualityBreak(RRRRRRRtGetLVMax(R@R)R*R+R^tqualityBreakIpyDataR`((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRS·s   c CsŸtjƒj|ƒ}|jƒ}|j}|j}t||ƒ}t||ƒ}| sk| sk||krodS|jƒ}    |jƒ}
tjd||    ||
f|ƒ|    |
krÇtjd|ƒdS|j    t
j ƒ} | rýtj d||    f|ƒdS|j    t
j ƒ} | r3tj d||    f|ƒdS|jt
jƒ} |jt
jƒ}| sc|rtjd| |f|ƒdStjd|    ƒ}|sdS|jƒ}|jt
jƒ}|jt
jƒ}t|ƒ}tjd|    ||||f|ƒ||kr tjd||ƒdS|jt
jƒ}|d    }||}tjd
||    ||||f|ƒtj|||jƒtd ƒt|||ƒdS( NsAÇëÇóÎ佫ÉýÐÇ: itemIndex=%s,heroID=%s,useItemIndex=%s,useHeroID=%ssÎ佫²ÄÁϷDZ¾Ì壬ÎÞ·¨ÉýÐÇ!s4Î佫ϴÁ¶½á¹ûδ´¦Àí£¬ÎÞ·¨ÉýÐÇ! 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(RRPRQR?RRt UseItemIndexRNRR>R RRtErrLogRRRR    RRRRtGetHeroStarMaxRWtDelItemRGtFalset DoHeroUpdStar(R2R[R\RR]RLt useItemIndexR@tuseItemR)t    useHeroIDt    washIDCntt awakeRandCntt
useBreakLVt
useAwakeLVR*R+tstartawakeLVtstarMaxtuseStartaddStartupdStar((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroStarUPÍs^                   # 
 
    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.pyRoÿs&    
cCse|jtjƒ}||}|jƒ}|jtj|ƒ|dkrWt||ƒn|jƒdS(Ni(RRRtGetItemRt__DoHeroStarTalentUpt    Sync_Item(RR@RtcurStarR~titem((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRrs
 
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 RRqR tmintGetUserAttrByIndexR%tlenRR>RR!R"R#t GetWashWeightRR&R'R2RZtrandomtchoiceRt    enumerateR((RtaddLVtcommTalentSlott talentMaxLVtidCounttlvCounttidListtlvListtunfullLVIDListthaveUpR2R4ttalentLVt idWeightDictR0R1R3tweightR6R7R8t    zeroIndextrandIDt    randIndextidLV((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR‹&sœ           
 
 
 
 
 
   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|| ƒdS(    NRs:ÇëÇóÎä½«Í»ÆÆ: itemIndex=%s,heroID=%s,quality=%s,breakLV=%sRiis%Í»ÆÆµÈ¼¶ÒÑÂú¼¶: quality=%s,breakLV=%ss7²ÄÁϲ»×㣬Î佫ÎÞ·¨Í»ÆÆ! costItemID=%s, costItemCount=%st    HeroBreaks/Îä½«Í»ÆÆ: itemIndex=%s,heroID=%s,nextBreakLV=%s(RRPRQR?RRRNRRRRRRRR>RTRDRERURVRWRXRYRZtSetHeroBreakLV(R2R[R\RR]RLR@R)R*R+R^R‰t nextBreakLVRaRbRcRdReRf((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroBreakŒsH           
   cCs|jtj|ƒdS(N(RRR(R@R^((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR©µsc    CsItjƒ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||ƒdS( 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(RRPRQR?RRRNRRRRRRRR    R>RRTRDRERURVRWRXRYRZtSetHeroAwakeLV(R2R[R\RR]RLR@R)R*R+tstarLVR{tawakeLimitStarR™R‰t nextAwakeLVRaRbRcRdReRf((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt OnHeroAwakeÁsT           
   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­ðs
 
 
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™RwRR2R4R¢R0R1R3R£t randTalentCntR6R7R8((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR²øsb         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ƒdS(NsB²»´æÔڸþõÐÑÌì¸³Ëæ»úÑ¡Ïî! heroID=%s,selectIndex=%s,awakeRandCnt=%sRiisDÑ¡ÔñÌ츳ID²»ÄÜÖØ¸´! heroID=%s,selectIndex=%s,selectTalentID=%s in %ss3¸üÐÂÑ¡ÔñÌ츳: selectTalentID=%s,idList=%s,lvList=%s(RRPRQR?RRt SelectIndexRNRR RRR>R’RŠR RR R‘R%RRRnRR—R(R²RŒ(R2R[R\RR]RLt selectIndexR@R)RwtselectTalentIDRR›RœRRžR4R¡R™((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroAwakeSelectTalent=sX                     
 
cCsžtjƒj|ƒ}|j}|j}|j}t||ƒ}|sIdS|dkrht|||ƒn2|dkr‡|jt    j
ƒnt ||||ƒdS(Nii( RRPRQRRtLockTalentIndexstOPTypeRNtHeroTalentWashReplaceRRRtHeroTalentWash(R2R[R\RRLtlockTalentIndexstopTypeR@((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt
OnHeroWashs              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 RRRnRtGetFuncEvalCfgRDRERURVRWRXR“RYRZRŠR R R’R%RR!R"R#R”R—RR&R'RR(RRŒ(RRLR@RÁR)RvtwashCostItemInfotlockCostItemInfot
washItemIDtwashCostItemCountt
lockItemIDtlockCostItemCountRdRetwashItemIndexListtlockItemIndexListtlockCostItemCountTotalRR›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ƒdS(Ns2Î佫ϴÁ¶Ìæ»»! itemIndex=%s,heroID=%s,washIDList=%s(RRŠR RRRR R R’R%R(RŒRR>(    RRLR@R)RRÏR›R2R4((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyR¿ès   
c Cstjƒ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|ƒdS(NRis*¸ÃÎ佫²»´æÔÚ¸ÃÆ¤·ô! heroID=%s,skinIndex=%sis5¸ÃÎ佫Ƥ·ôδ½âËø! heroID=%s,skinIndex=%s,skinState=%s(RRPRQRRt    SkinIndexRNRRRtGetSkinNPCIDListR“R>tNomalDictGetPropertyR;tDef_PDict_HeroSkintpowRRR
( R2R[R\RRLt    skinIndexR@R)R*t skinNPCIDListt    skinState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroWearSkins*           cCsÁ|jtj|ƒ}|rX|td|ƒB}tjd||||f|jƒƒn;tj||dƒ}tjd||||f|jƒƒtj    |tj||ƒt
||gƒ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 SetBitValuet PlayerControltNomalDictSetPropertyR(RR)RÕtisActiveR×tupdState((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytActiveHeroSkin s         c Cs®tjƒj|ƒ}|j}|j}i}g}xI|D]A}|j}    |j}
|
|krdq:n|j|
ƒ|
||    <q:W|dkr›t||ƒn|dkrªndS(Nii(    RRPRQtFuncTypet HeroPosListtPosNumRRR%tMainBattlePosSave( R2R[R\RtfuncTypet heroPosListt heroPosDictt    indexListtposInfotposNumRL((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pytOnHeroBattlePosSave=s"                     cCsAtjd||jƒƒ|jƒjtjƒ}xvt|jƒƒD]b}|j    |ƒ}| sE|j
ƒrsqEn|j tj ƒs‹qEn|j ƒ}|jtj ƒqEWx…|jƒD]w\}}|dks¸||jƒkrèq¸n|j    |ƒ}| s¸|j
ƒrq¸n|j ƒ}|jtj |ƒq¸Wt|ƒdS(Ns±£ÁôÖ÷Õ½¶·ÕóÐÍ: %si(RR>R?RDRERRFR RGRHRIRR RŠRtitemsRt ResetHeroPack(RRåRMR2R@RŽRèRL((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRâWs(  
cCs?tjƒjƒ}|jdƒtj|tjdd|ƒdS(Ni(Rt GetGameWorldtGetTicktSetResetItemTickt ItemControlert    ResetItemRRF(RR\((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRëqs c Csk|dkr|}nQg}tjƒ}x<t|jƒƒD](}|j|ƒ}|j|jƒƒq:W|spdSg}x­|D]¥}tjd|ƒ}|s¡q}n|j    ƒ}    t
j |t j |    ƒ}
|
rÞ|dkrÞq}ntjƒ} || _|
| _|jt j|ƒ| _|j| ƒq}W|s0dStjƒ} || _t| jƒ| _tj|| ƒdS(NR(tNoneRRR t GetHeroCounttGetHeroByIndexR%t    GetHeroIDRR9RR:R;R<tChPyNetSendPackt    tagSCHerotHeroIDtIsActiveRÒRÓt    SkinStatet tagSCHeroInfot HeroInfoListR“tHeroCntt NetPackCommont SendFakePack( Rt
heroIDListtsyncHeroIDListR1R2R‰t syncInfoListR)R*RARBtherot
clientPack((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyRws<                      ('RWRRRURïRõRýRÚRR;R•RRRRCRNRhRSR€RoRrR‹R«R©R±R­R²R¼RÃRÀR¿RØRZRÞRéRâRëRñR(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHero.pyt<module>sH                       ,            ,        2            f    )         /        E    B        V