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
¢[c@s6ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ia d„Z d„Zd„Zd„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.pytGetRuneAttrValueLs6 
 
   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 GetRuneMaxLVls cCs&tjƒj|ƒ}|j}tjddiƒ}||krCdS|jtjdƒ}|t    d|ƒ@rodS|j
ƒtjddiƒj |dƒkr dS||}t j |tj|tji|d6ƒsÖdSt j|tj|t    d|ƒBƒt|ƒt jdd|jƒ|gƒdS(Nt
RuneUnlockiiit    holeIndextRuneSpecialHoleGet(R tGetPlayerManagertGetPlayerByIndext    HoleIndexRRtNomalDictGetPropertytChConfigtDef_PDict_Rune_HoleOpenStatetpowtGetLVRt PlayerControltPayMoneyt IPY_GameWorldtTYPE_Price_Gold_MoneytDef_Cost_RuneHoletNomalDictSetPropertyRt WorldNotifytGetName(tindext
clientDatattickRR1truneUnlockDictt runeOpenStatet    costMoney((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnUnlockRuneHole}s"     -
(#
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(NR0iis-    ½âËø·ûÓ¡¿× holeNum=%s,trialTowerPassLV=%s( RRR6R7R8t!Def_Player_Dict_TrialTower_PassLVt    enumerateR9R tDebugLogR;R@R(RtisSycntruneUnlockListRGttrialTowerPassLVt updOpenStatetholeNumtneedTowerPassLV((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRs   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 R6R7RJtGetEffectByIndext GetEffectIDRRRtitemsR#tTrue( RtitemidRt    curPassLVtcurEfft curRuneTypetfloorCntttowerRuneTypeDicttfloorttypeListtfloorkey((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytGetIsOpenByRuneID¦s  0c
Csß|tjkr|tjkp9|tjko9|tjks@tStjddƒ}|tjkrù|d}|dksƒ||kr¡tjd||jƒƒt    S|j
t j dƒ}|t d|ƒ@sítjd||f|jƒƒt    S|j
t jtj|fƒ}|s0tjd||jƒƒt    Stj|ƒ}    t|    ƒ}
|
sotjd    |    |jƒƒt    S|
jƒ} d} xÔtd|dƒD]¿} | |kr­q•n|j
t j| dƒ}|sÒq•ntj|ƒ}t|ƒ}|sùq•n|jƒ}| |kr5tjd
| | 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ƒ}|sFtjd ||f|jƒƒt    Stj|tjƒ}|d krtjd|jƒƒt    Stj|t j|dƒtj|tj||ƒt|ƒtj|ƒjƒt|ƒt    S(NR0iis²»´æÔڸ÷ûÓ¡¿×! desRuneNum=%siis&¸Ã·ûÓ¡¿×δ½âËø! desRuneNum=%s,state=%ss#·ûÓ¡±³°ü¸ÃλÖÃûÓзûÓ¡! srcIndex=%ss'¸Ã·ûӡûÓÐÅäÖÃÊôÐÔ! ÎÞ·¨ÏâǶ! itemID=%ss?ÒÑÓÐÏâǶ¸ÃÊôÐÔÀàÐÍ! ÎÞ·¨ÏâǶ! RuneHoleNum=%s,srcRuneAttrType=%ss7µ±Ç°¿ÉÏâǶ˫ÊôÐÔ·ûÓ¡¸öÊýÒÑ´ïÉÏÏÞ%s! ÎÞ·¨ÏâǶ! itemID=%ss3¸Ã·ûÓ¡¿×ûÓÐÏâǶ·ûÓ¡! srcRuneNum=%s, srcRuneData=%siÿÿÿÿs·ûÓ¡±³°üÒÑÂú£¬ÎÞ·¨ÕªÏÂ! ( t ShareDefinetrptRunet rptTempSwapRRRR RLt GetPlayerIDRWR6R7R8R9tDef_PDict_VPackItemt ItemControlert GetRuneItemIDR    RtxrangetDef_PDict_Rune_DataRt__GetCanInlayDoubleAttrRuneCntR;R@tSetVPackItemKeyDatatDoRuneSuccessLogict
ItemCommontGetEmptyIndexInPacktRefreshRuneAttrtRefreshPlayerAttrStateR(Rt srcBackpackt desBackPacktsrcIndext    destIndext maxRuneHolet
desRuneNumRGt 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(RRR6R7RJtsortedtkeysR(RtruneDoubleInlayCntDictROt
sortLVListtfindLVtplv((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRk 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 R3R4t    PlaceTypet
PlaceIndexR6R7RfRbRcRjReRLRgRhtGetRuneItemPlusLVtGetRuneItemIsLockR R R/R!R#tGetRuneItemKeyDataR;R<tTYPE_Price_RunetGetMoneyRlR@RpRqRRm(RCRDRERt    placeTypet
placeIndexR~tplayerIDRtRuneItemPlusLVt
RuneIsLockRR.tplusCostt updRuneDatat curRuneMoney((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnRuneUpsZ         "               
 
     c    Csýtj|tjƒd}tjddƒ}xµtd|dƒD] }|jtj    |dƒ}|sjq?nt
j |ƒ}t j ƒj|ƒ}|sšq?n|jƒ}t
j|ƒd}||7}tj|tjd|gƒq?Wtj|tj|ƒdS(NiR0ii(t PlayerSuccesstResetSuccessByTypeRbtSuccType_InlayRuneRRRiR6R7RjRgRhR R R RRtDoAddSuccessProgresstUptateSuccessProgresstSuccType_RuneLvUp(    RttotalLVt runeHoleCntRQtruneDatat
runeItemIDRRtruneItemPlusLV((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRm]s" 
 c    Cs|tjƒ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|ƒ}|rjtj$|ƒd
krj||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|rxi|d6|d    6}t)j*|tj/|tj,|t-ƒt)j.|d|tj/gƒndS( Ns3·ûÓ¡·Ö½â: isAll=%s,qualityList=%s,PlaceIndexList=%siit RuneCompoundit delPlaceDictttotalDecomposethwj_20170807_1ttotalMJ(ii(0R R3R4tIsAllt QualityListRLtPlaceIndexListRbRct
QualityCntRiRnt GetVPackCnttPlayerMagicWeapontGetMagicWeaponPrivilegeR7tMWPrivilege_RuneDecomposeR#tGetEffectValueR6RfRgRŽRhRR R RtGetTypetDef_ItemType_RuneExpRTtDef_MaxRateValuetrangeR!RtGetIpyGameDataNotLogtGetRuneItemSourcet    GetNeedMJt DelVPackItemR†t ItemDel_RuneR;t    GiveMoneyRtDef_GiveMoney_RuneDecomposeRt
NotifyCodetTYPE_Price_Ysog(RCRDRERtisAllt qualityListR§R¨Rªt    packIndext    placeListt
wmpIpyDatataddPertplaceR~R–RR•RtqualityRZt    decomposeRRt addDataDict((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pytOnRuneDecompose}sl            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 R3R4RbRct    LockStateR­R6R7RfRgRŽRhRRRlRtappendtSync_VPackItem_RefreshRL( RCRDRERRÃtchangeLockStatetchangePlaceListRÇR~R–RR•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+|ƒ|j*t j,dƒtj-|ƒ}|j.t j|d    t j/t0igƒdS(
Ns    ·ûÓ¡ºÏ³É tagItemID=%sR¦iisI    ·ûÓ¡ºÏ³É ²ÄÁϲ»¶Ô tagItemID=%s, materialsIDList=%s, needItemIDList=%st    TagItemIDs     ·ûÓ¡ºÏ³É ±³°ü¸ñ×ÓÊýÁ¿²»×ã1¸öitevent(1R R3R4RÒtPackListt    IndexListRLRRRKR6R7RfRbRcRÍRjRgRhRt GetNeedItemR…RºR;R<RÀtDef_Cost_ItemProduceRntGetItemPackSpaceRR·R!R#R/RiR»R¼R@RRpRqtGetOutPutItemObjt SetUserAttrtDef_IudetRuneLVtDef_IudetRuneSourcetPlayerItemControlert    PutInItemtItemGive_RuneCompoundR(RCRDRERt    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 }tjddƒ}xÀtd|dƒD]«}|jtj|dƒ}|spqEntj|ƒ}tj    |ƒ}t
||ƒ}|s©qEnt j d||fƒx-|j ƒD]\}    }
tj|    |
|ƒqÍWqEWtj|tj|ƒdS(NiR0iis&    Ë¢·ûÓ¡ÊôÐÔ holeNum=%s, attrDict=%s(R·RRRiR6R7RjRgRhRR+R RLRVR;tCalcAttrDict_TypetSetCalcAttrListValuetDef_CalcAttrFunc_Rune( Rt_t allAttrListR¢RQR£R¤R¥R&tattrIDt    attrValue((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyRpBs cCsÀtjddƒ}|sdStjƒ}|jƒ|jtjdƒ|_g|_    xDt
d|dƒD]/}|jtj |dƒ}|j    j |ƒqgWt |j    ƒ|_tj||ƒdS(NR0iii(RRtChPyNetSendPackt tagMCRuneInfotClearR6R7R8tRuneHoleOpenStatet RuneDataListRiRjRÍRtCountt NetPackCommont SendFakePack(RR¢t RuneInfoPackR}R~((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyR[s 
    (R RbR7RnRgR;RøRþRR›R°R=RRR    R!R+R/RIRWRRaRƒRkRšRmRËRÑRðRpR(((sZ.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerRune.pyt<module>s:                                              U        >         L    #    V