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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
öF¼gc@shddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZd„Zd„Zed„Zeed„Z d„Z!d„Z"d    „Z#d
„Z$d „Z%d „Z&ed „Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d„Z6dd„Z8dd„Z9dd„Z:dS( iÿÿÿÿNicCstjƒj|ƒ}tj|tjƒs.tStj    tj
}||j tj
ƒ|kr^dS|j tj
|ƒt jƒ}|jƒ}tj|ƒrÄ|rÀ|g}tj|tj|ƒndStj|tjt jƒsãdS|dkrÿt|tƒn|dkrt|tƒndS(Nii(t    GameWorldtGetPlayerManagertGetPlayerByIndext GameFuncCommt GetFuncCanUset ShareDefinetGameFuncID_HorsetFalsetChConfigtTYPE_Player_Tick_Timet TYPE_Player_Tick_HorseChangStatet GetTickByTypet SetTickByTypet IPY_GameWorldtIPY_CRideHorsetGetRidet PlayerControlt GetCrossMapIDtCrossPlayerDatatSendDataToCrossServertCrossData_RideHorsetOperControlManagertIsObjCanDoActiontDef_Obj_ActState_ClientActtoalRidetPlayerRideHorseDowntTruetPlayerRideHorseUp(tindexttickt    curPlayertcdTimetpacktcurPlayerRideTypetdataList((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnRideHorse:s.             cCs*|d}|dkr&t|tƒndS(Nii(RR(RR"R!((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytCrossServer_RideHorse`s
 cCsP|jƒtjkrdS|jtjƒ|jƒtj|ƒ}|jƒdS(N(tGetPlayerVehicleR tpvHorsetSetPlayerVehicletpvNulltSync_GetoffHorseRtRefreshPlayerAttrByBuff(Rt refreshStatet playerControl((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRis
 
c    Csk|jƒsdStj|ƒ}|rbtjd|ƒ}| sK|jƒ rˆtj|dƒdSn&tjƒj    ƒsˆtj|dƒdS|j
ƒt j kr¡dS|j ƒjt jƒ}|jtƒ}|jƒrØdS|jƒt jkrtjƒjƒ}tj||ƒn|jt jƒ|jt jƒ|rE|jƒn|rgtj|ƒ}|jƒntS(NtChinMaptRideLimit_lhs_0( t    GetInitOKRtGetCustomMapIDt IpyGameDataPYtGetIpyGameDatat
GetCanRidet
NotifyCodeRtGetMapt GetMapCanRideR%R R(tGetItemManagertGetPacktrptEquiptGetAttDef_HorseEquipIndextIsEmptytGetPlayerActiont paGameEventt GetGameWorldtGetTicktPlayerGameEventt StopGameEventR'R&tSetPlayerRidehorseStatet    prsNormaltSync_RideHorseR*R(    RR+tisNotifyt customMapIDt
ipyMapDatat playerEquipt itemRideHorseRR,((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRus8    cCs£tjƒj|ƒ}|jƒ}|j}tj|tjƒsCdSt    j
d|ƒ}|s_dSd}|j ƒ}|rÅt t j ƒƒ}    |jtj|ƒ}
|    |
kr¸|    |}qò|
|}n-tj|tj|ƒròtjd|ƒdS|jƒ} |jƒ} |jƒjtjƒ} tj| | | ƒ\}}|s^tjd| | fƒdStj|| || ttjƒ|rÆtj |tj||ƒtjd||tj!|ƒf|ƒntj"|tj|dƒ\}}|jƒjtj#ƒ}|j$t%ƒ}|j&ƒr0t'|d||ƒnt(|ƒ|rPt)||ƒntj*d||||f|ƒt+|ƒtj,dd    |j-ƒ|j.ƒgƒdS(
Nt HorseSkinPlusis¸Ã×øÆïÒѻû¯! activateID=%ss.×øÆï»Ã»¯µÀ¾ß²»×ã! needItemID=%s,needItemCnt=%ss0×øÆï»Ã»¯Ê±Ð§ activateID=%s,updSkinEndTime=%s(%s)iisR×øÆï¼¤»î³É¹¦£¡activateID=%s,activateState=%s,updActivateState=%s,updSkinEndTime=%stGetMount(/RRRt GetPlayerIDtHorseIDRRRRR1R2tGetSkinValidTimetintttimetNomalDictGetPropertyRtDef_PDict_HorserSkinEndTimetGetDictValueByBittDef_PDict_HorserSkinPlusStatetDebugLogtGetUnlockItemIDtGetUnlockItemCntR7R8R trptItemt
ItemCommontGetItem_FromPack_ByIDt
ReduceItemRt ItemDel_HorseRtNomalDictSetPropertytChangeTimeNumToStrtSetDictValueByBitR9R:R;R<t DoChangeHorsetSync_HorseClassDatatSyncHorseSkinTimeInfotLogtRefreshHorseAttrt WorldNotifytGetNametGetHorseSkinPlusID(Rt curPackDataRRtplayerIDt
activateIDtipyDatatupdSkinEndTimet    validTimetcurTimet skinEndTimet
needItemIDt needItemCnttitemPackt    hasEnoughtitemListt activateStatetupdActivateStateRIRJ((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytActivateHorseSkinItem®sV           )! 
    
%cCs¸tjƒj|ƒ}tj|tjƒs.dS||jƒtj    krKdS|j
|ƒ|j }|j }t ||||ƒsƒdStjƒs´||g}tj|tj|ƒndS(N(RRRRRRRtGetLastChangeEquipTickRtDef_MinChangeEquipTimetSetLastChangeEquipTickt
ChooseTypetLVIDRat IsCrossServerRRtCrossData_HorseChange(RtpackDataRRt
chooseTypetlvIDR"((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnPlayerChangeHorseòs           cCs5|\}}tjƒjƒ}t||||ƒdS(N(RR?R@Ra(RR"RR‚R((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytCrossServer_ChangeHorse    s c Cs³|dkrp|jtjƒ}||krEtjd||fƒdStjd|ƒ}|sadS|jƒ}nN|dkrºtjd|ƒ}|s˜dSt||ƒs«dS|j    ƒ}ndS|sßtjd||fƒdSt
j ||t j ƒr tjd|ƒdStj||ƒ}|s(dSt
j ||tjƒ}    |    sJdS|jƒt jk}
|
rut|tƒntj||    t
j|    ƒ|ƒr¯|
r¯t|tƒq¯ntS(    sW ×øÆïÑ¡Ôñ
    @param chooseType: 1-°´½×£¬2-°´»Ã»¯
    @param lvID:  ½×µÈ¼¶»ò»Ã»¯ID
    is5×øÆïµÈ¼¶²»×㣬ÎÞ·¨Ê¹ÓøÃ×øÆïƤ·ô!  horseLV=%s,lvID=%sNt    HorseLVUpiRKs)ÕÒ²»µ½Ñ¡ÔñµÄ×øÆïID! chooseType=%s,lvID=%ss.ÒѾ­Ñ¡ÔñÁ˸Ã×øÆï£¬ÎÞÐèÖØÐÂÑ¡Ôñ! horseItemID=%s(RRRtDef_PDict_HorserLVRRVR1R2tGetHorseSkinIDtCheckHorseSkinStateRhRZtFindItemInPackByItemIDR R9t ItemControlertPutItemInTempSwapRt rptTempSwapR%R&RRtChEquiptDoPlayerEquipItemtGetEquipPackIndexRR( RRR‚RthorseLVt horseIpyDatat horseItemIDtskinPlusIpyDatatisOKtcurHorset isRideHorse((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRasH   !c CsE|jƒ}|jƒr%|jtj|ƒ}|s8tSttjƒƒ}||krA|jƒ}t    j
d||t    j |ƒf|ƒt j |tj|dƒ|jƒ}g}|g}t jd|g||ƒt    j|tj|dƒ\}    }
t    j
d||    |
f|ƒt|ƒtSnt    j|tj|ƒsAtStS(Ns,×øÆï»Ã»¯ÒѹýÆÚ! skinID=%s,skinEndTime=%s(%s)itHorseSkinInvalidNotifysD×øÆï»Ã»¯¹ýÆÚ¸üÐÂ״̬! skinID=%s,activateState=%s,updActivateState=%s(tGetIDRORRRRSRRPRQRMRRdR_RR^RWt SendMailByKeyR`RURbRTR( RR“tskinIDRpRoRjt
skinItemIDt addItemListt    paramListRvRw((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRˆJs*    &     !
c Cs¼d}tjd|ƒ}|s"dStj|tj|ƒtj|tjdƒx8tdtƒdƒD] }tj|tj    |dƒqeWtj
ƒ}xht|j ƒƒD]T}|j |ƒ}|j ƒ}tj|tj|dƒtj|tj|dƒq¨W|jƒ}tj||tjƒstj||ƒ}    |    s@dStj||tjƒ}
|
sbdStjƒjƒ} tj||
t| ƒntj d||fƒt!|ƒt"|ƒt#S(NiR…is#×øÆï¹¦ÄÜ¿ªÆô! horseLV=%s,horseID=%s($R1R2RR^RR†tDef_PDict_HorserEatItemCounttxrangetGetHorseTrainTypestDef_PDict_HorserTrainLVtIPY_DatatGetHorseSkinPlusCounttGetHorseSkinPlusByIndexR˜RSRR`RUR‡RZR‰R R9RŠR‹RRŒR?R@RRŽR;RVRbReR( RRRlt    trainTypet
ipyDataMgrRR“RšthorseIDR”R•R((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt DoHorseOpenfs8   
 
cCs6t|ƒtj|ƒjd|r+tjndƒdS(Nt billboardFunc(tCalcHorseAttrExRtRefreshPlayerAttrStatetPlayerBillboardtUpdateHorseBillboardtNone(Rt isUpdateBill((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRe‹s
(c3Cs|tj|tjƒsdSgtdƒD] }i^q&}gtdƒD] }i^qE}gtdƒD] }i^qd}gtdƒD] }i^qƒ}gtdƒD] }i^q¢}i}i}d}    |jtjƒ}
i} tj    ƒ} x–t
| j ƒƒD]‚} | j | ƒ}|j ƒ}||
kr.Pn-||
krO|jtjƒ}n |jƒ}|jƒ}|jƒ}xpt|ƒD]b\}}||}|tjkrµ|    |7}    q€ntj|||ƒ| j|dƒ|| |<q€W|jƒ}|rý|rý|jƒ}|jƒ}||}x\t|ƒD]K\}}||}tj||||ƒ| j|dƒ||| |<q-WqýqýW| |d<d}i}xxt
| jƒƒD]d} | j| ƒ}t||ƒsÖq¬n||jƒ7}|jƒ}|jƒ}xVt|ƒD]H\}}||}|tjkr@|    |7}    q ntj|||ƒq Wd}|j ƒ} |jtj!|| fƒ}!tj"d|| |!dƒ}"|"ràx6|"j#ƒj$ƒD]\}}tj|||ƒqºWntj%d| ƒ}#|#rk|#j&ƒ}$|$|kri||$<n||$}%xAt|ƒD]0\}}||}|%j|dƒ||%|<q4Wn|jtj'| ƒ}&tj"d| |&ƒ}'|'r¬|'j(ƒ}(|'j)ƒ})xYt|(ƒD]H\}}|)|}|tjkrö|    |7}    qÁntj|||ƒqÁWq¬q¬W||d    <x†t
| j*ƒƒD]r} | j+| ƒ}*|*j,ƒ}+|*j-ƒ},|jtj.|+ƒ}-|,|-kr†q1n1|,|-kr«|jtj/|+ƒ}.n |*j0ƒ}.|*j1ƒ}|*j2ƒ}xVt|ƒD]H\}}||}|tjkr|    |7}    qÜntj|||ƒqÜW|*j3ƒ}/|.r1|/r1|*j4ƒ}0|*j5ƒ}1|.|/}x>t|0ƒD]-\}}|1|}tj||||ƒqoWq1q1Wtj6|tj7|ƒ|j8tj9|    ƒt:j;||tj<ƒ}2tj6|tj=|2ƒtj>|tj?|d
|ƒtj>|tj@|ƒtj>|tjA|d
|ƒtj>|tjB|ƒtj>|tjC|ƒdS( NiithorseBaseAttrInfoit HorsePetSkinidtHorset HorseStarUpthorseSkinQualityAttrInfotcustomAttrDict(DRRRRtrangeRRRR†R1R¢RŸtGetHorseLVUpCounttGetHorseLVUpByIndext
GetHorseLVRžtGetNeedEatCountt GetLVAttrTypetGetLVAttrValuet    enumeratetDef_Effect_SpeedRtCalcAttrDict_TypetgettGetUpEatItemPerCounttGetUpItemAttrTypetGetUpItemAttrValueR£R¤RˆtGetInitFightPowert GetAttrTypet GetAttrValuet
GetHorseIDtDef_PDict_HorsePetSkinDatatGetIpyGameDataNotLogt GetAttrInfotitemsR2t
GetQualitytDef_PDict_HorserStartGetStarAttrTypetGetStarAttrValuetGetHorseTrainCounttGetHorseTrainByIndext GetTrainTypet
GetTrainLVR¡tDef_PDict_HorserTrainItemCounttGetEatCntTotaltGetLVAttrTypeListtGetLVAttrValueListtGetEatCntEverytimetGetEatItemAttrTypeListtGetEatItemAttrValueListtSetMFPExFightPowertDef_MFPType_HorsetSetDicttDef_PlayerKey_SpeedHorsetPlayerAttrFruittCalcAttrFruitAddAtrrtDef_AttrFruitFunc_HorsetDef_MFPType_HorseSoultSetCalcAttrListValuetDef_CalcAttrFunc_HorsetDef_CalcAttrFunc_HorseSoultDef_CalcAttrFunc_HorseSkintDef_CalcAttrFunc_HorseTarintDef_CalcAttrFunc_HorseStar(3Rt_t allAttrListtallAttrListHorseSoultallAttrListSkintallAttrListTraintallAttrListStartcustomAttrDictHorsetcustomAttrDictSkint
horseSpeedRR°R¦RR‘t dataHorseLVt upItemCounttlvAttrTypeListtlvAttrValueListtitattrIDt    attrValuetupItemPerCounttupItemAttrTypeListtupItemAttrValueListt attrMultiplet    initFPAddR´R“t attrTypeListt attrValueListtskintypeR§tskinDatat skinIpyDatathIpyDatatqualitytqualityAttrDictt    horseStart starIpyDatat starAttrTypet starAttrValuet trainIpyDataR¥t dataTrainLVttrainLVttrainItemCountteatCntEverytimeteatItemAttrTypeListteatItemAttrValueListt fightPowerEx((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRª’sî       
 
 
 
)
 
 
 
 
!  
 
 
 
 
 
 
"cCsad}tjƒ}xHt|jƒƒD]4}|j|ƒ}t||ƒsOq%n|d7}q%W|S(Nii(R1R¢RŸR£R¤Rˆ(RthorseSkinActCountR¦RR“((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytGetHorseSkinActCount5s c    CsŠtjƒj|ƒ}|j}|j}tj|tjƒsMtj    dƒdS|j
t j ƒ}|j
t j ƒ}|dkr’tj    d|ƒdStjd|ƒ}|s®dS|jƒ}    |    sÕtj    d|ƒdStjddƒ}
|
sõ| rùdStj||
|ƒ\} } } || | }|dkr\| r\tj    d|
|| | |fƒdS|}|dkrÖtji||
6ƒ}|dkr”dSi|
t j6}tj|tj|t j|ƒsÉdS||8}n|rþtj|| | | |t jƒn|}||}tj    d    |||||    fƒ||    krh|d7}||    8}tj    d
||fƒntj|t j |ƒtj|t j |ƒ|jƒ}||}x!t|ƒD]}t j!|ƒq·Wt"j#|t j$|ƒ||kr,t j%||ƒt&j'||dƒt(j)|tj*|ƒnt+|ƒt,|ƒt-j.|i||
6ƒt/j0|t j1|ƒt2j3|t2j4|
|ƒdS( Ns ×øÆï먦Æô!is ×øÆïÌáÉý ¸Ã×øÆïδ¼¤»î horseLV=%sR…s×øÆïÒÑÂú¼¶£¡horseLV=%st HorseUpItemis\ÏûºÄµÀ¾ß²»×㣬ÎÞ·¨Éý¼¶×øÆï!costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%ss[×øÆïÅàÑø: horseLV=%s,curEatItemCount=%s,costItemCount=%s,updEatItemCount=%s,needEatCount=%ss*    Éý½×: updClassLV=%s,updEatItemCount=%s(5RRRt
UseItemCntt    IsAutoBuyRRRRRVRRRR†RžR1R2Rºt
GetFuncCfgRZtGetPackItemBindStateIndexInfotGetAutoBuyItemNeedGoldtDef_Cost_Reason_SonKeyRtPayMoneyR tTYPE_Price_Gold_MoneytDef_Cost_BuyStoreItemtDelCostItemByBindR]R^RÁR¶t
EventShelltEventRespons_HorseUpt
PlayerTaskt AddTaskValuetTaskType_HorseUptEventRespons_HorseLVtDataRecordPacktDR_NewHorseByClassUpt PlayerSuccesstUptateSuccessProgresstSuccType_HorseAllLVRbRetPlayerActHorsePetTraintOnHorsePetTrainCostt PlayerActTasktAddActTaskValuetActTaskType_HorseUpItemtPlayerActLunhuidiantAddLunhuidianValuetAwardType_UseItem(RRiRRt costItemCountt    isAutoBuyRtcurEatItemCountR‘t needEatCountt
costItemIDtcostItemIndexListtbindCntt    unBindCnttlackCnttdelCnttlackCosttinfoDictt
updClassLVtupdEatItemCountRùtupCntRé((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnHorseClassLVUPGs~                 ! "
     
 
 
 
 
c    Cs5tjƒj|ƒ}|j}|j}|jtj|ƒ}|jtj|ƒ}tj    d||||fƒ|dks‹|t
ƒkrdS|dkr°tj    d|ƒdSt j d||ƒ}|sÏdS|j ƒ}    tj|dƒ}
|
|    krtj    d|
|    fƒdS|jƒ} | s7tj    dƒdSt jddƒ} | |d} | se| ridStj|| |ƒ\}}}|||}|dkrÅtj    d| ||||fƒdS|}|rótj|||||tjƒn|}||}tj    d    || fƒ|| krT|d7}|| 8}tj    d
||fƒntj|tj||ƒtj|tj||ƒ||kr—nt|ƒt|ƒtj|i|| 6ƒ|d krçtj|tj|ƒnJ|d kr tj|tj|ƒn%|dkr1tj|tj|ƒndS( NsE×øÆïÅàÑø: trainType=%s,trainLV=%s,costItemCount=%s,curEatItemCount=%sis     ×øÆïÅàÑøÎ´¼¤»î  trainType=%st
HorseTrainis:    ¾³½ç²»×㣬ÎÞ·¨ÅàÑø£¡  curRealmLV(%s) < needRealmLV(%s)s    ¸ÃÅàÑøÒÑÂú¼¶£¡s\    ÏûºÄµÀ¾ß²»×㣬ÎÞ·¨ÅàÑø!costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%ss+    updEatItemCount=%s,needEatCountTotal=%ss*    ½ø½×: updClassLV=%s,updEatItemCount=%sii( RRRt    TrainTypeRRRRR¡RÔRVR R1R2tGetNeedRealmLVRtGetTrainRealmLVRealRÕtGetFuncEvalCfgRZRRR]R^RbReR*R+R,R-tActTaskType_HorseTrainItem2tActTaskType_HorseTrainItem3tActTaskType_HorseTrainItem1(RRiRRR¥R2R R4R
t needRealmLVt
curRealmLVtneedEatCountTotaltcostItemIDListR6R7R8R9R:R;R>R?((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnHorseTrain¥st                      "
 
 
 
 
   c Cs[tjƒj|ƒ}|jƒ}|j}|jtj|ƒ}|d}tj    d||ƒ}|sƒtj
d||f|ƒdS|j ƒ}    |    s™dS|j ƒj tjƒ}
tj|    |
ƒ\} } | rótj
d|||    | f|ƒdStj||
| dƒtj|tj||ƒtj
d|||f|ƒt|ƒt||ƒdS(NiR³s1×øÆï²»´æÔÚ¸ÃÐǼ¶£¬ÎÞ·¨ÉýÐÇ. horseID=%s,curStar=%ssM×øÆïÉýÐÇËùÐèÎïÆ·²»×㣡 horseID=%s,nextStar=%s,needItemList=%s,lackItemDict=%ss+×øÆïÉýÐÇ. horseID=%s,curStar=%s,nextStar=%s(RRRRMRNRRRRÍR1R2RVtGetStarUpNeedItemListR7R8R RYRZtGetCostItemIndexListt DelCostItemRR^RetSyncHorseStarInfo( Rt
clientDataRRRjR§RtnextStart nextIpyDatat needItemListRst lackItemDictt delInfoDict((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnHorseStarUpûs0     
     
 cCsttjddƒƒS(NRBi(tlenR1RF(((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR scCstj|tjƒsdSd}|j|ƒ}|r~tj|tjd|ƒtj||dƒt    j
d||j ƒƒnxWt dt ƒdƒD]?}|jtj|ƒdkr•tj|tj|dƒq•q•Wt|ƒt|ƒt|ƒt|ƒdS(NtHorserSkinPlusStateis;ÏßÉÏ°æ±¾×ªÒÆ×øÆï»Ã»¯×´Ì¬¼Ç¼×ÖµäÖµ! oldVerSkinStateValue=%si(RRRRRRRR^RRURRdRMRŸR R¡RbtSyncHorsePetSkinDataRcRR(RtoldVerSkinStateKeytoldVerSkinStateValueR¥((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytPlayerHorseLogins !
 
 
 
cCstjƒ}|jƒ|jtjƒ|_|jtjƒ|_|jtj    ƒ|_
g|_ g|_ x^t dtƒdƒD]F}|j j|jtj|ƒƒ|j j|jtj|ƒƒq~Wt|j ƒ|_t|ƒ|_t|jƒ|_tj||ƒdS(Ni(tChPyNetSendPackttagTrainHorseDatatClearRRRR†tLVRžt EatItemCountRUt SkinPlusStatet TrainLVListtTrainItemCountListRŸR tappendR¡RÔRZt
TrainTypestGetHorseSkinPlusStateListtSkinPlusStateListtSkinPlusStateCountt NetPackCommont SendFakePack(Rt    horseDataR¥((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRb4s 
         $cCs™d}g}tjƒ}|jƒ}x2t|ƒD]$}t||j|ƒjƒƒ}q1Wx9t|ddƒD]#}|j|jt    j
|ƒƒqnW|S(Niii( R1R¢R£RŸtmaxR¤R˜RhRRRRU(Rt    maxSkinIDtskinPlusStateListR¦tskinCntR((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRjEs  "!cCs|jtjƒS(N(RRRR†(R((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt GetHorseSumLVPscCsH|jtjƒ}tjd|ƒ}|s.tS|jƒ}|sDtStS(NR…(RRRR†R1R2RRºR(RRR‘R5((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt IsHorseLVFullTs cCsytjƒj|ƒ}|j}|j}|j}tjd|||fƒtjdi|d6|d6ƒsndS|j    t
j ||fdƒ}|d|d}}    tj d|||ƒ}
|
sÄdS|
j ƒ} | sçtjdƒdS|j    t
j||fdƒ} tjƒj|ƒ} | s%dS| jdƒ}|jƒ}|jdƒ}|t
jkse| r‰tjd    |||t
jfƒdS|jƒjtjƒ}tj||d
ƒ\}}|sÝtjd |d
fƒdStj|||d
tt
jƒ| |}|}|    }|| kršxytd ƒD]h}tj d|||d
ƒ}
|
sWPn|| krgPn|| 8}|d
7}|
j!ƒ}|
j ƒ} q+Wn|d|}t"j#|t
j ||f|ƒt"j#|t
j||f|ƒtjd || ||fƒ|    |kr't$||||ƒn||kr_|d
krLt%|ƒq_t&j'|t(ƒnt)|||ggƒdS(Ns0Æï³è¾õÐÑ: skintype=%s,horsePetID=%s,eatItemID=%sR±tTypetIDiidsÆï³è¾õÐÑ ÒÑÂú¼¶isRÎïÆ·Ð§¹û5ûÓÐÅäÖÃÆï³è¾õÐѾ­ÑéЧ¹û! eatItemID=%s,curEffID=%s,addExp=%s,needEffID=%sis+OnHorsePetAwake() item(%s[%s]) isn't enoughi
s.skinData=%s,curExp=%s,updSkinData=%s,updExp=%s(*RRRRvRwt    EatItemIDRVR1tGetIpyGameDataByConditionRRRRÈR2t
GetNeedExptDef_PDict_HorsePetSkinExpt GetGameDatatGetItemByTypeIDtGetEffectByIndext GetEffectIDtGetEffectValuetDef_Effect_HorsePetSkinExptErrLogR7R8R RYRZR[R\RtItemDel_HorsePetAwakeRŸRÉt GetSkinIndexRR^t__DoHorsePetSkinChangeRet    PlayerPettRefreshPetItemAddAttrRR\(RRiRRRt
horsePetIDt    eatItemIDRt    curSkinLVt curSkinIndexRlt    upNeedExptcurExptcurItemtcurEfftcurEffIDtaddExpRsRtRutupdExpt    updSkinLVt updSkinIndexRét updSkinData((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnHorsePetAwakeisv                     
 
 
       c Cstjƒj|ƒ}|j}|j}|j}tjdi|d6|d6|d6ƒ}|sadS|jt    j
||fdƒ}|d|d}    }
||
kr¥dS|    |j ƒkr»dS|    d|} t j |t    j
||f| ƒt||||ƒt|||ggƒdS(NR±RvRwt    SkinIndexiid(RRRRvRwR—R1RyRRRRÈt    GetSkinLVRR^R…R\( RRiRRRRˆt    skinIndexRlRRŠR‹R•((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnHorsePetSkinSelect½s$            '  cCsÁtj|||ƒ|dkr®dS|jƒjtjƒ}|jtƒ}|jƒrZdSt    j
d|ƒ}|svdS|j ƒ}|j ƒ|kr˜dS|j tj|ƒn|dkr½ndS(NiR²i(RtChangeEquipfacadeByHorsePetSkinR7R8R R9R:R;R<R1R2t    GetItemIDt GetItemTypeIDt SetUserAttrRtDef_IudetHorsePetSkinIndex(RtskinTypeRˆR™RIRJRlR’((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR…Ôs"    cCs'|jtj||fdƒ}|dS(Niid(RRRRÈ(RRRˆR((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytGetHorsePetSkinIndexêsc Cs“|s‡g}tjƒ}xlt|jƒƒD]U}|j|ƒ}|jƒ|jƒg|kr+|j|jƒ|jƒgƒq+q+Wntj    ƒ}|j
ƒg|_ xÄ|D]¼\}}tj ƒ}||_ ||_|jtj||fdƒ}    |jtj||fdƒ}
|     r)|
r)q­n|
d|
d} } |    |_| |_| |_|j j|ƒq­Wt|j ƒ|_tj||ƒdS(Niid(R1R¢RŸtGetHorsePetSkinCounttGetHorsePetSkinByIndextGetTypeR˜RhR`ttagMCHorsePetSkinDataRbtInfoListttagMCHorsePetSkinInfoRvRwRRRR{RÈtExptSkinLVR—RZtNumRmRn( RtskinListtipyMgrRöRlR€RRˆtskinInfoRRRŠR‹((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR\ïs4 ) 
                         cCs&g}|dkrPtjƒ}||_|jtj|ƒ|_|j|ƒn‘tj    ƒ}x‚t
|j ƒƒD]n}|j |ƒ}|j ƒ}|jƒs¢qontjƒ}||_|jtj|ƒ|_|j|ƒqoWtjƒ}|jƒ||_t|jƒ|_tj||ƒdS(Ni(R`ttagMCHorseSkinTimeInfoRwRRRRSt InvalidTimeRhR1R¢RŸR£R¤R˜ROttagMCHorseSkinTimeInfoListRbt TimeInfoListRZtTimeCntRmRn(RRšR«ttimeInfoR¦RR“R€((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRc s,               
    c
Cs0|dkr|g}nQg}tjƒ}x<t|jƒƒD](}|j|ƒ}|j|jƒƒq=W|ssdSg}xe|D]]}|jtj    |ƒ}|s¨q€nt
j ƒ}|j ƒ||_ ||_|j|ƒq€W|sëdSt
jƒ}    |    j ƒ||    _t|    jƒ|    _tj||    ƒdS(Ni(R1R¢R¶t GetHorseCounttGetHorseByIndexRhRÇRRRRÍR`ttagMCHorseStarRbRNtStarttagMCHorseStarInfot HorseStarListRZtCountRmRn(
RR§t
syncIDListR¦RRlt horseStarListRtstarInfot
clientPack((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRR&s6     
         
    (;R`R RRRRtOpenServerCampaignRZRRR%RŠRmR¬RßRARRR1RR'R/R*R,R!R†RQR;R#R$RRRRxRƒR„RaRˆR¨ReRªRRARNRYR R_RbRjRtRuR–RšR…R¡R®R\RcRR(((skE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt<module>sp                           
    &         9    D            :        %     £        ^    V                                 T