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
…¸hc@s ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZdZd„Zd„Zed„Zeed„Zd„Zd„Zd    „Zd
„Zd „Zd „Z ed „Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0dd„Z2dd„Z3dd„Z4dS( 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((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnRideHorse4s.             cCs*|d}|dkr&t|tƒndS(Nii(RR(RR"R!((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytCrossServer_RideHorseZs
 cCsP|jƒtjkrdS|jtjƒ|jƒtj|ƒ}|jƒdS(N(tGetPlayerVehicleR tpvHorsetSetPlayerVehicletpvNulltSync_GetoffHorseRtRefreshPlayerAttrByBuff(Rt refreshStatet playerControl((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRcs
 
cCs1|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|jt jƒ|jt jƒ|r |jƒn|r-tj|ƒ}|jƒntS(NtChinMaptRideLimit_lhs_0(t    GetInitOKRtGetCustomMapIDt IpyGameDataPYtGetIpyGameDatat
GetCanRidet
NotifyCodeRtGetMapt GetMapCanRideR%R R(tGetItemManagertGetPacktrptEquiptGetAttDef_HorseEquipIndextIsEmptyR'R&tSetPlayerRidehorseStatet    prsNormaltSync_RideHorseR*R(RR+tisNotifyt customMapIDt
ipyMapDatat playerEquipt itemRideHorseR,((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRos2    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 activateStatetupdActivateStateRCRD((sjD:\SG_ServerCode\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
ChooseTypetLVIDR[t IsCrossServerRRtCrossData_HorseChange(RtpackDataRRt
chooseTypetlvIDR"((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnPlayerChangeHorseès           cCs5|\}}tjƒjƒ}t||||ƒdS(N(Rt GetGameWorldtGetTickR[(RR"R{R|R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytCrossServer_ChangeHorseÿs c Csy|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ƒntS(    sW ×øÆïÑ¡Ôñ
    @param chooseType: 1-°´½×£¬2-°´»Ã»¯
    @param lvID:  ½×µÈ¼¶»ò»Ã»¯ID
    is5×øÆïµÈ¼¶²»×㣬ÎÞ·¨Ê¹ÓøÃ×øÆïƤ·ô!  horseLV=%s,lvID=%sNt    HorseLVUpiREs)ÕÒ²»µ½Ñ¡ÔñµÄ×øÆïID! chooseType=%s,lvID=%ss.ÒѾ­Ñ¡ÔñÁ˸Ã×øÆï£¬ÎÞÐèÖØÐÂÑ¡Ôñ! horseItemID=%s(RLRtDef_PDict_HorserLVRRPR1R2tGetHorseSkinIDtCheckHorseSkinStateRbRTtFindItemInPackByItemIDR R9t ItemControlertPutItemInTempSwapRt rptTempSwapR%R&RRR( RR{R|RthorseLVt horseIpyDatat horseItemIDtskinPlusIpyDatatisOKtcurHorset isRideHorse((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR[sB   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(tGetIDRIRLRRMRRJRKRGRR^RYRRXRQt SendMailByKeyRZROR\RNR( RRŒtskinIDRjRiRdt
skinItemIDt addItemListt    paramListRpRq((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR„@s*    &     !
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ƒsetj||ƒ}    |    s@dStj||tjƒ}
|
sedSntjd||fƒt|ƒt|ƒtS(NiRis#×øÆï¹¦ÄÜ¿ªÆô! horseLV=%s,horseID=%s(R1R2RRXRR‚tDef_PDict_HorserEatItemCounttxrangetGetHorseTrainTypestDef_PDict_HorserTrainLVtIPY_DatatGetHorseSkinPlusCounttGetHorseSkinPlusByIndexR‘RMRRZRORƒRTR…R R9R†R‡RRˆRPR\R_R( RR‰Rft    trainTypet
ipyDataMgrRRŒR“thorseIDRRŽ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt DoHorseOpen\s4   
 
cCs6t|ƒtj|ƒjd|r+tjndƒdS(Nt billboardFunc(tCalcHorseAttrExRtRefreshPlayerAttrStatetPlayerBillboardtUpdateHorseBillboardtNone(Rt isUpdateBill((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR_s
(cCsdS(N((R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR£ˆscCsad}tjƒ}xHt|jƒƒD]4}|j|ƒ}t||ƒsOq%n|d7}q%W|S(Nii(R1R›R˜RœRR„(RthorseSkinActCountRŸRRŒ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytGetHorseSkinActCount,s 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ƒ}||}||krâtj ||dƒt!j"|tj#|ƒnt$|ƒt%|ƒt&j'|t j(|ƒt)j*|t)j+|
|ƒ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(,RRRt
UseItemCntt    IsAutoBuyRRRRRPRLRR‚R—R1R2tGetNeedEatCountt
GetFuncCfgRTtGetPackItemBindStateIndexInfotGetAutoBuyItemNeedGoldtDef_Cost_Reason_SonKeyRtPayMoneyR tTYPE_Price_Gold_MoneytDef_Cost_BuyStoreItemtDelCostItemByBindRWRXtGetUpEatItemPerCounttDataRecordPacktDR_NewHorseByClassUpt PlayerSuccesstUptateSuccessProgresstSuccType_HorseAllLVR\R_t PlayerActTasktAddActTaskValuetActTaskType_HorseUpItemtPlayerActLunhuidiantAddLunhuidianValuetAwardType_UseItem(RRcRRt costItemCountt    isAutoBuyR‰tcurEatItemCountRŠt needEatCountt
costItemIDtcostItemIndexListtbindCntt    unBindCnttlackCnttdelCnttlackCosttinfoDictt
updClassLVtupdEatItemCounttupItemPerCounttupCnt((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnHorseClassLVUP>st                 ! "
     
 
 
 
 
c    Cstjƒ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|ƒ|d krÐtj|tj|ƒnJ|d krõtj|tj|ƒn%|dkrtj|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    TrainTypeR¬RLRRštDef_PDict_HorserTrainItemCountRPR™R1R2tGetNeedRealmLVRtGetTrainRealmLVRealtGetEatCntTotaltGetFuncEvalCfgRTR°R¶RWRXR\R_R½R¾tActTaskType_HorseTrainItem2tActTaskType_HorseTrainItem3tActTaskType_HorseTrainItem1(RRcRRRžRÃttrainLVRÅt trainIpyDatat needRealmLVt
curRealmLVtneedEatCountTotaltcostItemIDListRÇRÈRÉRÊRËRÌRÏRÐ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnHorseTrain—sr                      "
 
 
 
 
   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(Nit HorseStarUps1×øÆï²»´æÔÚ¸ÃÐǼ¶£¬ÎÞ·¨ÉýÐÇ. horseID=%s,curStar=%ssM×øÆïÉýÐÇËùÐèÎïÆ·²»×㣡 horseID=%s,nextStar=%s,needItemList=%s,lackItemDict=%ss+×øÆïÉýÐÇ. horseID=%s,curStar=%s,nextStar=%s(RRRRGRHRLRtDef_PDict_HorserStarR1R2RPtGetStarUpNeedItemListR7R8R RSRTtGetCostItemIndexListt DelCostItemRRXR_tSyncHorseStarInfo( Rt
clientDataRRRdR t    horseStartnextStart nextIpyDatat needItemListRmt lackItemDictt delInfoDict((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt OnHorseStarUpìs0     
     
 cCsttjddƒƒS(NRÔi(tlenR1RÚ(((sjD:\SG_ServerCode\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(RRRRRLRRXRRORR^RGR˜R™RšR\tSyncHorsePetSkinDataR]Rê(RtoldVerSkinStateKeytoldVerSkinStateValueRž((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytPlayerHorseLogin s !
 
 
 
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(tChPyNetSendPackttagTrainHorseDatatClearRLRR‚tLVR—t EatItemCountROt SkinPlusStatet TrainLVListtTrainItemCountListR˜R™tappendRšRÖRót
TrainTypestGetHorseSkinPlusStateListtSkinPlusStateListtSkinPlusStateCountt NetPackCommont SendFakePack(Rt    horseDataRž((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR\%s 
         $cCs™d}g}tjƒ}|jƒ}x2t|ƒD]$}t||j|ƒjƒƒ}q1Wx9t|ddƒD]#}|j|jt    j
|ƒƒqnW|S(Niii( R1R›RœR˜tmaxRR‘RRLRRO(Rt    maxSkinIDtskinPlusStateListRŸtskinCntR((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR6s  "!cCs|jtjƒS(N(RLRR‚(R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt GetHorseSumLVAscCsH|jtjƒ}tjd|ƒ}|s.tS|jƒ}|sDtStS(NR(RLRR‚R1R2RR®R(RR‰RŠRÆ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt IsHorseLVFullEs 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=%st HorsePetSkintTypetIDiidsÆï³è¾õÐÑ ÒÑÂú¼¶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(*RRRRRt    EatItemIDRPR1tGetIpyGameDataByConditionRLRtDef_PDict_HorsePetSkinDataR2t
GetNeedExptDef_PDict_HorsePetSkinExpt GetGameDatatGetItemByTypeIDtGetEffectByIndext GetEffectIDtGetEffectValuetDef_Effect_HorsePetSkinExptErrLogR7R8R RSRTRURVRtItemDel_HorsePetAwakeR˜tGetIpyGameDataNotLogt GetSkinIndexRRXt__DoHorsePetSkinChangeR_t    PlayerPettRefreshPetItemAddAttrRRõ(RRcRRtskintypet
horsePetIDt    eatItemIDtskinDatat    curSkinLVt curSkinIndexRft    upNeedExptcurExptcurItemtcurEfftcurEffIDtaddExpRmRnRotupdExpt    updSkinLVt updSkinIndext_t updSkinData((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pytOnHorsePetAwakeZsv                     
 
 
       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(NRRRt    SkinIndexiid(RRRRRR6R1RRLRRt    GetSkinLVRRXR!Rõ( RRcRRR$R%t    skinIndexRfR'R(R)R4((sjD:\SG_ServerCode\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(NitHorsei(tChEquiptChangeEquipfacadeByHorsePetSkinR7R8R R9R:R;R<R1R2t    GetItemIDt GetItemTypeIDt SetUserAttrRtDef_IudetHorsePetSkinIndex(RtskinTypeR%R8RCRDRfR‹((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR!Ås"    cCs'|jtj||fdƒ}|dS(Niid(RLRR(RR$R%R'((sjD:\SG_ServerCode\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‘RRùttagMCHorsePetSkinDataRûtInfoListttagMCHorsePetSkinInfoRRRLRRRtExptSkinLVR6RótNumRR( RtskinListtipyMgrtiRfRzR$R%tskinInfoR+R'R(R)((sjD:\SG_ServerCode\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ùttagMCHorseSkinTimeInfoRRLRRMt InvalidTimeRR1R›R˜RœRR‘RIttagMCHorseSkinTimeInfoListRût TimeInfoListRótTimeCntRR(RR“RLttimeInfoRŸRRŒRz((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyR]ý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›tranget GetHorseCounttGetHorseByIndexRt
GetHorseIDRLRRæRùttagMCHorseStarRûRHtStarttagMCHorseStarInfot HorseStarListRótCountRR(
RR t
syncIDListRŸRRft horseStarListRìtstarInfot
clientPack((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyRês6     
         
    (5RùR RRRRRTR;RR¸R†RR¥RR1RRºRÀR½R"RKR;R#R$RRRRrR}R€R[R„R¡R_R£RªRÓRäRòR™RøR\RR RR5R9R!RBR§RõR]Rê(((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerHorse.pyt<module>sd                     
    &         5    D            :        %     ¤        Y    U                                 T