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
ìb[c@s!ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ia d„Z d„Z d„Zd„Zd„Zed„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„ZdS(iÿÿÿÿNcCst|tƒt|ƒdS(N(tDoUnlockRuneHoletFalset Sync_RuneInfo(t    curPlayer((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytPlayerRuneLogin$s 
cCstjd|ƒS(NtRune(t IpyGameDataPYtGetIpyGameData(titemID((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytGetRuneIpyData+sc
Cs,tjƒj|ƒ}|sdSt|ƒ}|s5dS|jƒ}|dkrwtjddiƒ}|j|dƒ}n±|tkrt|}n)|d}t    tj
dƒƒ}|t|<tjddiƒ}||krñ|t ||ƒ9}nt |j ƒƒdkr(tjddƒ}    ||    9}n|S(NitRuneExpiiii(t    GameWorldt GetGameDatatGetItemByTypeIDR    t GetItemColorRtGetFuncEvalCfgtgettg_runeLVExpDicttevaltGetFuncCompileCfgtfloattlent GetAttrTypet
GetFuncCfg(
RtlvtitemDatatipyDatat    itemColortexpDicttexptleveltqualityPerDictt
specialPer((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytGetRuneNeedExp.s,     
 
  cCsHtjƒj|ƒ}|siSt|ƒ}|s5iS|d}|jƒ}t|ƒdk}|jƒ}i}xÒ|D]Ê}    d|    }
tj|
ƒ} | s¡qvnt    | ƒ} tj
|
diƒ} || krå| t | |ƒ9} n|r*tj |
dƒ}|r| |9} q*tj d||
fƒnt| ƒ|t|    ƒ<qvW|S(Nis
RuneAttr%siis- itemID=%s   ¹¦ÄÜÅäÖñíkeyStr=%s, ÊýÖµ3δÅäÖÃ(R R R R    RRRRRRRRRtErrLogtint(RRRRRt attrTypeListt    isSpecialRtattrDicttattrTypetkeyStrt attrFormulatvalueRR ((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytGetRuneAttrValueKs6 
 
   cCsVtjƒj|ƒ}|sdStjddiƒ}|jƒ}|j|dƒ}|S(Nit    RuneMaxLVi(R R R RRRR(RRt runeMaxLVDictRt    runeMaxLV((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyt GetRuneMaxLVks cCsêtjdƒ}|jtjdƒ}|jtjƒ}|}xot|ƒD]a\}}|td|ƒ@rnqIn||kr€qIn|td|ƒO}tj    d||fƒqIW||kræt
j |tj|ƒ|ræt |ƒqændS(Nt
RuneUnlockiis-    ½âËø·ûÓ¡¿× holeNum=%s,trialTowerPassLV=%s( RRtNomalDictGetPropertytChConfigtDef_PDict_Rune_HoleOpenStatet!Def_Player_Dict_TrialTower_PassLVt    enumeratetpowR tDebugLogt PlayerControltNomalDictSetPropertyR(RtisSycntruneUnlockListt runeOpenStatettrialTowerPassLVt updOpenStatetholeNumtneedTowerPassLV((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRus   c CsÔtjƒj|ƒ}|sdS|jtjƒ}|jdƒ}|jƒ}tj    ddƒ}tj
dƒ}x`|j ƒD]R\}}    ||    krzt |ƒdkr¼t |ƒdd|nd}
||
kSqzWt S(Nit TowerRuneTypeiiid(R R R R1R2R4tGetEffectByIndext GetEffectIDRRRtitemsR#tTrue( RtitemidRt    curPassLVtcurEfft curRuneTypetfloorCntttowerRuneTypeDicttfloorttypeListtfloorkey((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytGetIsOpenByRuneID‹s  0c
Csè|tjkr|tjkp9|tjko9|tjks@tStjdƒ}t|ƒ}|tjkr|d}|dksŒ||krªtjd||j    ƒƒt
S|j t j dƒ}|td|ƒ@sötjd||f|j    ƒƒt
S|j t jtj|fƒ}    |    s9tjd||j    ƒƒt
Stj|    ƒ}
t|
ƒ} | sxtjd|
|j    ƒƒt
S| jƒ} d} xÔtd|dƒD]¿}||kr¶qžn|j t j|dƒ}|sÛqžntj|ƒ}t|ƒ}|sqžn|jƒ}| |kr>tjd    || f|j    ƒƒt
St|ƒdkrž| d7} qžqžWt| ƒdkr©| t|ƒkr©tjd
| |
f|j    ƒƒt
S|j t j|dƒ}tj|t j||    ƒtj|tj||ƒt|ƒn»|d}|j t j|dƒ}    |    sOtjd ||    f|j    ƒƒt
Stj|tjƒ}|d krŠtjd |j    ƒƒt
Stj|t j|dƒtj|tj||    ƒt|ƒtj|ƒjƒt|ƒt
S(NR0is²»´æÔڸ÷ûÓ¡¿×! desRuneNum=%siis&¸Ã·ûÓ¡¿×δ½âËø! desRuneNum=%s,state=%ss#·ûÓ¡±³°ü¸ÃλÖÃûÓзûÓ¡! srcIndex=%ss'¸Ã·ûӡûÓÐÅäÖÃÊôÐÔ! ÎÞ·¨ÏâǶ! itemID=%ss?ÒÑÓÐÏâǶ¸ÃÊôÐÔÀàÐÍ! ÎÞ·¨ÏâǶ! RuneHoleNum=%s,srcRuneAttrType=%ss7µ±Ç°¿ÉÏâǶ˫ÊôÐÔ·ûÓ¡¸öÊýÒÑ´ïÉÏÏÞ%s! ÎÞ·¨ÏâǶ! itemID=%ss3¸Ã·ûÓ¡¿×ûÓÐÏâǶ·ûÓ¡! srcRuneNum=%s, srcRuneData=%siÿÿÿÿs·ûÓ¡±³°üÒÑÂú£¬ÎÞ·¨ÕªÏÂ! ( t ShareDefinetrptRunet rptTempSwapRRRRR R7t GetPlayerIDRER1R2R3R6tDef_PDict_VPackItemt ItemControlert GetRuneItemIDR    RtxrangetDef_PDict_Rune_Datat__GetCanInlayDoubleAttrRuneCntR8R9tSetVPackItemKeyDatatDoRuneSuccessLogict
ItemCommontGetEmptyIndexInPacktRefreshRuneAttrtRefreshPlayerAttrStateR(Rt srcBackpackt desBackPacktsrcIndext    destIndexR;t maxRuneHolet
desRuneNumR<t srcRuneDatat srcRuneItemIDt
srcIpyDatatsrcRuneAttrTypet    doubleCnttRuneNumtRuneDatat
RuneItemIDRR$t desRuneDatat
srcRuneNumt
emptyIndex((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyt
SwitchRune›s€ 
         $  
  
 
cCsvtjddiƒ}|jtjƒ}t|jƒƒ}d}x$|D]}||kr\Pn|}qFW|j|dƒS(NtRuneDoubleInlayCntii(RRR1R2R4tsortedtkeysR(RtruneDoubleInlayCntDictR=t
sortLVListtfindLVtplv((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRYñs  
cCs•tjƒj|ƒ}|j}|j}|dkrU|jtjtj    |fƒ}n0|dkr|jtj
|ddƒ}ndS|j ƒ}|sµtj d||f|ƒdSt j|ƒ}t j|ƒ}    t j|ƒ}
tjƒj|ƒ} | sdSt|ƒ} |    d| kr2tj d| ƒdSt||    dƒ} t| ƒ} | s{tj d||||    f|ƒdSt j||    d|
ƒ}tj|tj| ƒsëtj|tjƒ}tj d||||    | |f|ƒdS|dkrt j|tj    ||ƒn^|dkrqtj|tj
|d|ƒt|ƒtj|ƒjƒt|ƒt |ƒntj d||||f|ƒdS(Niis6¸ÃλÖò»´æÔÚ·ûÓ¡, ÎÞ·¨Éý¼¶! placeType=%s,placeIndex=%ss$¸Ã·ûÓ¡ÒÑÂú¼¶£¬ÎÞ·¨Éý¼¶£¡runeMaxLV=%ss?¸Ã·ûÓ¡ÎÞ·¨Éý¼¶!  placeType=%s,placeIndex=%s,itemID=%s,plusLV=%ssc·ûÓ¡¾«»ªµã²»×㣬ÎÞ·¨Éý¼¶!placeType=%s,placeIndex=%s,itemID=%s,plusLV=%s,plusCost=%s,curRuneMoney=%ss>·ûÓ¡Éý¼¶!placeType=%s,placeIndex=%s,RuneData=%s,updRuneData=%s(!R tGetPlayerManagertGetPlayerByIndext    PlaceTypet
PlaceIndexR1R2RTRPRQRXRSR7RURVtGetRuneItemPlusLVtGetRuneItemIsLockR R R/R!R#tGetRuneItemKeyDataR8tPayMoneytTYPE_Price_RunetGetMoneyRZR9R^R_RR[(tindext
clientDatattickRt    placeTypet
placeIndexRltplayerIDRmtRuneItemPlusLVt
RuneIsLockRR.tplusCostt updRuneDatat curRuneMoney((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnRuneUpsZ         "               
 
     c    Cstj|tjƒd}tjdƒ}x»tdt|ƒdƒD] }|jt    j
|dƒ}|smqBnt j |ƒ}t jƒj|ƒ}|sqBn|jƒ}t j|ƒd}||7}tj|tjd|gƒqBWtj|tj|ƒdS(NiR0i(t PlayerSuccesstResetSuccessByTypeRPtSuccType_InlayRuneRRRWRR1R2RXRURVR R R RR}tDoAddSuccessProgresstUptateSuccessProgresstSuccType_RuneLvUp(    RttotalLVR;R?truneDatat
runeItemIDRRtruneItemPlusLV((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyR[Cs"  
 c    Csgtjƒj|ƒ}|j}|j}tjd|||jfƒi}d}d}tj}    |st|j    dkr‰t
t j |    ƒƒn|j}
t j|tjƒ} | r¿t| jƒƒnd} x±|
D]©} |jtj|    | fƒ}|súqÌntj|ƒ}|rqÌntj|ƒ}tj|ƒ}tjƒj|ƒ}|sTqÌn|jƒ}|p~||kp~| |jks‡qÌn|jƒtjkrÒ|jdƒ}|jdƒ}||| tj7}nƒd}xOt |dƒD]=}|t!||ƒ7}|dkré||| tj7}qéqéWt"j#d|ƒ}|rU||j$ƒ7}n||7}|t|ƒg|| <qÌW|r¡t j%||    |j&ƒtj'ƒnt|ƒ}|ri|d6|d6}t(j)|tj*|tj+|t,ƒt(j-|d|tj*gƒn|rci|d6|d6}t(j)|tj.|tj+|t,ƒt(j-|d|tj.gƒndS(    Ns3·ûÓ¡·Ö½â: isAll=%s,qualityList=%s,PlaceIndexList=%siit RuneCompoundt delPlaceDictttotalDecomposethwj_20170807_1ttotalMJ(/R RyRztIsAllt QualityListR7tPlaceIndexListRPRQt
QualityCntRWR\t GetVPackCnttPlayerMagicWeapontGetMagicWeaponPrivilegeR2tMWPrivilege_RuneDecomposeR#tGetEffectValueR1RTRUR~RVR}R R RtGetTypetDef_ItemType_RuneExpRBtDef_MaxRateValuetrangeR!RtGetIpyGameDataNotLogt    GetNeedMJt DelVPackItemRtt ItemDel_RuneR8t    GiveMoneyRtDef_GiveMoney_RuneDecomposeRt
NotifyCodetTYPE_Price_Ysog(RƒR„R…RtisAllt qualityListRšR›Rt    packIndext    placeListt
wmpIpyDatataddPertplaceRlRŠRmR‰RtqualityRHt    decomposeRRt addDataDict((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnRuneDecomposecsl            3  ! 
" c Cstjƒj|ƒ}tj}|j}g}x³|jD]¨}|jtj    ||fƒ}|seq7nt
j |ƒ}    ||    kr†q7nt
j |ƒ}
t
j |ƒ} t
j|
| |ƒ} t
j|||| tƒ|j|ƒq7W|rt
j|||ƒtjd||fƒndS(Ns(Ð޸ķûÓ¡Ëø¶¨×´Ì¬: changeLockState=%s, %s(R RyRzRPRQt    LockStateR R1R2RTRUR~RVR}RRZRtappendtSync_VPackItem_RefreshR7( RƒR„R…RRµtchangeLockStatetchangePlaceListR¹RlRŠRmR‰RŒ((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyt
OnRuneLock¯s(         cCsµtjƒj|ƒ}|j}|j}|j}tjd|ƒtjd|ƒ}|s]dSg}i}    g}
g} xÎt    |ƒD]À\} } || }| dkrÓ|j
t j t j|fƒ}|
j|ƒn.|j
t j|ddƒ}| j|dƒ|s q‚ntj|ƒ}tj|ƒ}|j|ƒ||    |<q‚W|jƒ}t|ƒt|ƒkrˆtjd|||fƒdS|jƒ}i|d6}tj|t j|t j|ƒsÆdSd|kr
tj|t jdƒ}|dkr
tjdƒdSnd}xa|D]Y}d}|    j|dƒ}x.td|dƒD]}|t||ƒ7}qIW||7}qWt |ƒ}d}t!|ƒ}xFt"d|ƒD]5}t||ƒ}||krÇPn|}||8}q¢W|
rtj#|t j|
t j$ƒn| r[x(| D] }tj%|t j|dƒq Wt&|ƒt'|ƒtj|ƒj(ƒntj)|ƒ}|j*t j+|ƒtj,|ƒ}|j-t j|dt j.t/igƒdS(    Ns    ·ûÓ¡ºÏ³É tagItemID=%sR™iisI    ·ûÓ¡ºÏ³É ²ÄÁϲ»¶Ô tagItemID=%s, materialsIDList=%s, needItemIDList=%st    TagItemIDs     ·ûÓ¡ºÏ³É ±³°ü¸ñ×ÓÊýÁ¿²»×ã1¸ötevent(0R RyRzRÄtPackListt    IndexListR7RRR5R1R2RTRPRQR¿RXRURVR}t GetNeedItemRsR¬R8R€R²tDef_Cost_ItemProduceR\tGetItemPackSpaceRRªR!R#R/RWR­R®R9RR^R_tGetOutPutItemObjt SetUserAttrtDef_IudetRuneLVtPlayerItemControlert    PutInItemtItemGive_RuneCompoundR(RƒR„R…Rt    tagItemIDtpackListt    indexListRtmaterialsIDListtmaterialsLVDictt
indexList1t
indexList2tiR†R–R—R˜tneedItemIDListtneedMJtinfoDictt
emptySpacet
totalPointRR»R‰Rt    tagItemLVR.tneedExptcurItemRÎ((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnRuneCompoundÒs†            
     !        
 
%c CsgtdƒD] }i^q }tjdƒ}xÆtdt|ƒdƒD]«}|jtj|dƒ}|ssqHntj    |ƒ}tj
|ƒ}t ||ƒ}|s¬qHnt j d||fƒx-|jƒD]\}    }
tj|    |
|ƒqÐWqHWtj|tj|ƒdS(NiR0iis&    Ë¢·ûÓ¡ÊôÐÔ holeNum=%s, attrDict=%s(RªRRRWRR1R2RXRURVR}R+R R7RDR8tCalcAttrDict_TypetSetCalcAttrListValuetDef_CalcAttrFunc_Rune( Rt_t allAttrListR;R?R–R—R˜R&tattrIDt    attrValue((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyR^'s  cCsÃtjdƒ}|sdStjƒ}|jƒ|jtjdƒ|_g|_    xJt
dt |ƒdƒD]/}|jtj |dƒ}|j    j |ƒqjWt |j    ƒ|_tj||ƒdS(NR0ii(RRtChPyNetSendPackt tagMCRuneInfotClearR1R2R3tRuneHoleOpenStatet RuneDataListRWRRXR¿tCountt NetPackCommont SendFakePack(RR;t RuneInfoPackRkRl((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyR@s 
     (R RPR2R\RUR8RéRïRRR£RRR    R!R+R/RERRORqRYRŽR[R½RÃRáR^R(((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyt<module>s6                                
        V        >         L    #    U