hwj35
2025-06-23 aa0f971ae9a59f0fd98d57b6c1d1663a270be92c
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
N¼gc@s
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#d„Z$d„Z%d„Z&d„Z'dd„Z(d„Z)d„Z*d    „Z+d
„Z,d „Z-d „Z.d „Z/d„Z0e1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7e8e8d„Z9de1d„Z;d„Z<d„Z=d„Z>d„Z?d„Z@d„ZAd„ZBd„ZCd„ZDd „ZEd!„ZFd"„ZGd#„ZHd$„ZId%„ZJdS(&iÿÿÿÿNcCsdS(N((t    curPlayer((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytDoLogic_PetInfo_OnDay;scCs_tjd|jƒƒx8tdtƒdƒD] }tj|tj|dƒq-Wt    |ƒt
S(Ns DoPetOpen...i( t    GameWorldtDebugLogt GetPlayerIDtxrangetGetPetTrainTypest PlayerControltNomalDictSetPropertytChConfigtDef_PDict_PetTrainLVtSync_PetTrainDatatTrue(Rt    trainType((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt    DoPetOpenBs
 
cCsdS(N((R((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytDoLVUPLogic_PetbscCstjd|ƒS(NtPetInfo(t IpyGameDataPYtGetIpyGameData(tpetNPCID((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt GetPetIpydatafscCsªtjƒ}|j|ƒ}|s6tjd|ƒdSt|ƒ}|s]tjd|ƒdStjtjƒ}|sydS|j    t
j |ƒ|j    t
j t
j ƒ|dkrº|jƒn|}|j    t
jtd|dƒƒ|j    t
j|jƒƒ|jƒ}|jƒ}    x’t|ƒD]„\}
} |    |
} || krFqntjƒj| ƒ} | sgqn| jƒtjkrt|| ƒqn|jt
j| ƒqW|S(Ns0FindNPCDataByID can not find npcData petNPCID=%ss/tagPetInfo.txt can not find petData petNPCID=%siÿÿÿÿii(Rt GetGameDatatFindNPCDataByIDtErrLogRt
ItemCommontCreateSingleItemR    tDef_ItemID_PetDatat SetUserAttrt ShareDefinetDef_IudetPet_NPCIDtDef_IudetPet_StatetDef_PetState_Nullt GetInitRanktDef_IudetPet_ClassLVtmaxtDef_IudetPet_QualityLVt
GetQualityt
GetSkillIDtGetSkillUnLockt    enumeratetGetSkillBySkillIDt GetFuncTypetDef_SkillFuncType_PetOwnerSkillt__GiveOwnerSkillt AddUserAttrtDef_IudetPet_Skill(RRtclasslvtgameDatat
petNpcDatat
petIpyDatat
newPetItemt    initClasst petSkillListtpetSkillUnLockListtitskillidtlimitPetClassLVt curSkilData((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetNewPetDataItemis>     
  cCs÷tjd|ƒtjƒj|dƒ}|dkrJtjd|ƒdStj||ƒs`dStj||ƒs‡tjd|ƒdS|j    ƒ}|j
|ƒr·tjd|ƒdS|j |ƒt j ƒj||ƒtj|ƒj|dƒdS(Ns¸øÁé³èÖ÷È˼¼ÄÜ: skillResID=%sis    not find skill(%s)s5    learn skill condition isn't enough! skillResID=%ss    have learned skill(%s)i(RRRtFindSkillByTypetNonet SkillCommont CheckSkillJobt
SkillShelltCheckLearnSkillConditiontGetSkillManagertFindSkillBySkillTypeIDtLVUpSkillBySkillTypeIDtPassiveBuffEffMngtGetPassiveEffManagertRegistPassiveEffRtRefreshSkillFightPowerEx(Rt
skillResIDt    skillDatat skillManager((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyR+’s$   cCs#|s
dSt|ƒ}t||ƒS(N(tGetPetObjItemIndextGetPetDataItemByIndex(t curPetOwnertrolePett packItemIndex((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetPetDataItem¨s cCsX|jƒjtjƒ}|j|ƒ}tj|ƒsTtjd||j    ƒƒdS|S(Ns$PetDataItem is none! PetItemIndex=%s(
tGetItemManagertGetPackRtrptPettGetAtRtCheckItemCanUseRRR(Rt petItemIndext petDataPackt petDataItem((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRL¯s cCsv|jƒjtjƒ}xWt|jƒƒD]C}|j|ƒ}|jƒrRq+n||jtj    ƒkr+|Sq+WdS(N(
RQRRRRStrangetGetCountRTtIsEmptyt GetUserAttrR(RRRWt petDataIndextpetItem((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetPetDataItemByNPCIDºs cCs |jƒjS(N(t
GetRolePett Friendliness(RN((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRKÅscCs ||_dS(N(Ra(t    petStructRV((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytSetPetObjItemIndexÆscCsv|jƒjtjƒ}xWt|jƒƒD]C}|j|ƒ}|jƒrRq+n||jtj    ƒkr+|Sq+WdS(Niÿÿÿÿ(
RQRRRRSRYRZRTR[R\R(RRRWR]R^((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetPetDataItemIndexByNPCIDÉs cCsŠtjƒj|ƒ}tjƒ}|jƒ}|jƒ}||jtj    ƒtj
tj    krcdS|j tj    |ƒt |||ƒdS(N( RtGetPlayerManagertGetPlayerByIndext IPY_GameWorldtIPY_CPetStateChangetGetPetIDtGetStatet GetTickByTypeR    tTYPE_Player_Tick_ChangePetStatetTYPE_Player_Tick_Timet SetTickByTypetDoChangePetState(tindexttickRtpackRVtstate((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytPetStateChangeçs   c Csq|dkrdS|tjkr#dSt||ƒ}|s<dS|jtjƒ}|jtjƒ}t|ƒ}|svdS|jƒ}||dkr§tj    d|ƒdS|jtj
ƒ}    tj    d||    |fƒ|    tj kròt j |ƒn|tjkrn|tj kr#t||ƒn|r9t|tƒntjƒsm|||g}
tj|tj|
ƒndS(Niis&    ÁéÊÞÇл»Íâ¹Û,½×¼¶²»×ã%s,²»¿ÉÇл»£¡s4³èÎï״̬±ä¸ü!petItemIndex=%s,curState=%s,tagState=%s(RtDef_PetStateListRLR\R!RRtGetUseNeedRankRRRtDef_PetState_Fightt
PetControltReCallFightPetRt__DoPetGoOutToFighttRefreshPetItemAddAttrR t IsCrossServertCrossPlayerDatatSendDataToCrossServertCrossData_PetState( RRVttagStatet    isRefreshR^t
curClasslvRtipyDatat needClasslvtcurStatetdataList((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRoùs>       
 c    Csð|\}}}t||ƒ}|sqt||ƒ}|s=dStj|ƒjtj|ƒs_dSt||ƒ}n|s{dS|jtjƒ}||krœn|jtj    ƒ}|tj
krÍt j |ƒn|tj
krìt ||ƒndS(N(R_R:t ItemControlertPlayerItemControlert    PutInItemRRSR\R!RRwRxRyRz(    RR†RR‚R€R^R2tcurItemClasslvR…((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytCrossServer_DoChangePetState:s( c Cs#|jtjƒ}tjƒj|ƒ}|sBtjd|ƒdS|jƒ}|j|ƒ}|dkr~tj
d|ƒdS|j ƒ}|j }|j ƒ|_t|j ƒ|_tj|d|ƒ|_d|_|jƒ}t||ƒ|j|ƒt|ƒ\}    }
tj||    ƒtj|ƒ} | jdtƒtj|t j!|ƒtƒtj"||ƒsŒtj#d|ƒ|j$|ƒdStj%|ƒt&j'|j(ƒ|j)ƒt*j+ƒ} tj,|| j(ƒ| j)ƒƒ|j-tj.tj/ƒt0j1|t*j2|dƒ|j3|j4ƒƒt5S(Ns.PetStateChange FindNPCDataByID, pet npcID = %ss-PetStateChange PetList_Add, Ìí¼Ó³èÎï = %sʧ°Üiit canSyncClients"²»¿É³öÕ½£¡PetList_SetFree petID=%s(6R\RRRRRtLogt    GetPetMgrt PetList_AddR<RR`tPetIDt    GetIsBindtBindTypetstrtNamet PlayerHorsetGetHorsePetSkinIndext DailyTrainCnttPostGetItemPlaceIndexRct
SetRolePettGetPetLearnSkillRxtDoLogic_PlayerPetLearnSkillListt    NPCCommont
NPCControltRefreshNPCStatetFalsetSetPetHPtGameObjtGetMaxHPtCheckPetCanFightRtPetList_SetFreeRytGameMaptGetEmptyPlaceInAreatGetPosXtGetPosYR    tDef_SummonAppearDistt    SummonPetRRRwRRtDef_PDict_FightPetIndext SetSightLevelt GetSightLevelR ( RR^tnpcIDR0tpetMgrRNRbtpetIDRVtlearnSkillListtpassiveSkillListt
petControlt    resultPos((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRzXsF                    $cCs7|jtjƒ}|sdSt||dtjƒdS(Ni(tNomalDictGetPropertyR    R¬RoRRw(Rt fightPetIndex((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt AutoSummonPet s
c CsKi}g}tj}|jƒj|ƒ}xït|jƒƒD]Û}|j|ƒ}|jƒrdq=nx±t|jtj    ƒƒD]—}|j
tj    |ƒ}t j ƒj |ƒ}|s¹q}ntj|ƒrÛ|j|ƒq}n|jƒ}    |    |kr||    j|ƒq}|g||    <q}Wq=Wg|jƒD]}
t|
ƒ^q)} | |fS(N(RRSRQRRRYRZRTR[tGetUserAttrCountR-tGetUserAttrByIndexRRR(R=t isPassiveAttrtappendtGetSkillTypeIDtvaluesR"( RtlearnSkillDictR³t petPackIndextpetPackR6R^tskillIDR9t skillTypeIDtatlearnSkillIDList((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyR›©s,        %cCs>tjƒj|ƒ}|j}|j}t|||tƒdS(N(RReRftPetNPCIDt    IsUseGoldt DoActivatePetR (Rpt
clientDataRqRRt    isUseGold((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt OnActivatePetÍs
        cCs§|s
dSt}tj}|jƒj|ƒ}x}t|jƒƒD]i}|j|ƒ}|jƒrnt    }qAn|j
tj ƒ}    |    |krAt j d||    |fƒdSqAW|sÈtj|dƒdSt|ƒ}
|
sÞdS|
jƒ} |
jƒ} |jƒjtjƒ} tj| | | ƒ\}}|sJt j d| | fƒdSt||ƒ}|scdStj|ƒj||ƒs‚dStj|| || ttjƒtj||ƒ|
j ƒpÀd}tj!d||j"ƒ|gƒ|j#ƒj$ƒ}|s6t%||ƒ}t j d||fƒt&||tj'ƒn+|rat(|ƒ\}}t)j*||ƒnt+|t    ƒt,j-|tj.t/|ƒƒt0j1|tj2|tƒt    S(Ns1ÒѾ­ÓµÓиóèÎ i=%s,petItemNPCID=%s,petNPCID=%stPet_liubo_76326s)DoActivatePet() item(%s[%s]) isn't enoughtGetPetisEûÓгèÎï³öÕ½£¬»ñµÃгèÎĬÈϳöÕ½¸Ã³èÎpetNPCID=%s,petItemIndex=%s(3R RRSRQRRRYRZRTR[R R\RRRRt
NotifyCodeRtGetUnLockNeedItemIDtGetUnLockNeedItemCntRgtrptItemRtGetItem_FromPack_ByIDR:R‡RˆR‰t
ReduceItemR    t ItemDel_Pett
EventShelltEventRespons_OnActivatePett GetUnlockSyst WorldNotifytGetNameRŽt GetFightPetRdRoRwR›RxRœR{tOpenServerCampaigntUpdOpenServerCampaignRecordDatatDef_Campaign_Type_PetLVt GetTotalPetLVtPlayerWeekPartytAddWeekPartyActionCntt Def_WPAct_Pet(RRRÊt    isUseItemthasSpaceRÀRÁR6tpackItemt petItemNPCIDRƒt
needItemIDt needItemCnttitemPackt    hasEnoughtitemListR2tsysMarkRNRVR²R³((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRÈÔs`          c    Cstjƒ}|jƒ}|dks0||krKtjd||fƒdS|j|dƒ}|jƒ}|jƒ}|jƒ}    t    j
}
|j ƒj |
ƒ} x¼t | jƒƒD]¨} | j| ƒ} | jƒrÚq³n| jt    jƒ}||kr³|r*| jt    jtdt||    ƒdƒƒn| jt    j|ƒtjd| ||fƒtSq³W|dkrtd}nt||    ƒ}t|||ƒ}|sŸdSt    j
}
tj|ƒj|
|ƒsÇdS|sÑtSt||ƒ}t ||t    j!ƒt"|tƒtS(Nis2¼¤»î³èÎﳬ¹ý³èÎï±íÊý¾ÝÊý: index=%s,petInfoCount=%sis1ÒѾ­ÓµÓиóèÎ i=%s,petItemNPCID=%s,petNPCID=%s(#RtIPY_DatatGetPetInfoCountRRtGetPetInfoByIndextGetIDR$t
GetMaxRankRRSRQRRRYRZRTR[R\RRR!R"tminR#RR R<R:R‡RˆR‰RdRoRwR{(RRpR.trefresht
ipyDataMgrt petInfoCountR1Rtqualityt
maxClassLVRÀRÁR6RäRåR2RV((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt DoPetActivatesJ           ,          cCs…g}tj}|jƒj|ƒ}xZt|jƒƒD]F}|j|ƒ}|jƒr^q7n|jtj    ƒ}|j
|ƒq7W|S(N( RRSRQRRRYRZRTR[R\RR¼(Rt    petIDListRÀRÁR6RäRå((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetActivePetIDBs     c4
Csætjƒj|ƒ}tj|tjƒs;tjdƒdS|jƒ}|j    }|j
}d}t ||ƒ}|sxdS|j tj ƒ}    tjƒj|    ƒ}
|
sºtjd|    ƒdS|j tjƒ} t|    ƒ} | sâdS| jƒ} | d| krtjd| |ƒdStjd|    | dƒ}|s9dS|jƒ}|sOdS|j tjƒ}|jƒjtjƒ}g}g}tjdd    ƒ}x9|jƒD]+\}}|    |kr¤t|ƒg}Pq¤q¤W|sëtjdƒ}n|sõdSd}x¤|D]œ}tj ||||ƒ\}}}}|j!|ƒ|rDPn|rd}xK|D]@}|j"|ƒ}tj#|ƒsqWn|j$ƒ}||7}qWWqqW| rË| rËtjd
|    |fƒdS|d} |rñ|j"|dƒ}ntjƒj%| ƒ}|sdS|dkr dS|j&ƒ}!|j'dƒ}"|"j(dƒ|}#||#}$| }%xnt)| | dƒD]Y}&tjd|    |&dƒ}|s›Pn|jƒ}'|$|'kr·Pn|$|'8}$|%d7}%qrWt*d||ƒ}(|r
tj+||||(t,t-j.ƒn|%d| kr#d}$n|j/tj|$ƒ|%| kr6|j/tj|%ƒt|    ƒ} | j0ƒ})| j1ƒ}*| j2ƒ}+g},xt3|)ƒD]
\}-}.|*|-}/|%|/krÀq˜n|%d|/krÖq˜ntjƒj4|.ƒ}0|0s÷q˜n|0j5ƒt-j6krt7||.ƒq˜n|j8tj9|.ƒt:j;|0ƒsQ|,j<|.ƒn|-t=|+ƒkrm|+|-nd }1t>j?d|1|!|    |/|.gƒt@jA||.ƒq˜W|, rÙ|%d| krÙt>j?dd |!|    gƒn|jBƒjCƒ}2|,r
|2r
tDjE|2|,ƒntF|t,ƒtGjH|tjItJ|ƒƒntKjL|tjMd|    |%dgƒi|d 6|    d6}3|3jNtO|jPƒƒƒtQjR|d|%|3ƒtSjT|i|| 6ƒtUjV|t-jW|ƒtXjY|tXjZ| |ƒdS(Ns ³èÎ﹦ÄÜ먦Æôiscan not found pet npcID = %sis³èÎïÉý½× ÒÑÂú¼¶¡£¡£¡£classLV=%st PetClassCostit    PetUpItemis6PetClassUp Éý½×µÀ¾ß²»×ã! petNPCID=%s,costItemIDList=%stPetUpLvt
PetUpLvMaxRVRt
PetClassUp([RReRft GameFuncCommt GetFuncCanUseRtGameFuncID_PetRRt PetItemIndext
UseItemCntRLR\RRRRR!RRðRRt GetUpNeedExptDef_IudetPet_ExpRQRRRgRÑtGetFuncEvalCfgtitemstintRtGetItem_FromPack_ByID_ExExtextendRTRURZtGetItemByTypeIDRÙtGetEffectByIndextGetEffectValueRR"RÓR R    RÔRR%R&tGetSkillUnLockSysR'R(R)R*R+R,R-R=R»R¼tlenRRØtPlayerActivitytAddActivityByLVOnLearnSkillRŽRÚRxRœR{RÛRÜRÝRÞt PlayerSuccesstDoAddSuccessProgresstSuccType_PetClassLVtupdatetevalt GetUserDatatDataRecordPacktDR_ClassUpSystemtPlayerActHorsePetTraintOnHorsePetTrainCostt PlayerActTasktAddActTaskValuetActTaskType_PetUpItemtPlayerActLunhuidiantAddLunhuidianValuetAwardType_UseItem(4RpRÉRqRtplayerIDRt costItemCountt    isAutoBuyRXRR0tclassLVR1RöRƒtneedExptcurPetClassExpt curItemPackt itemIndexListtcostItemIDListtspecCostItemInfot    strItemIDt petNPCIDListtnowCnttitemIDRét    indexListtfindItemIsBindtlackCntt    itemIndextcurItemtitemCntt autoBuyItemIDt
playerNametcurEfftaddExptupdExpt
updClassLVtlvt    upNeedExptdelCntR4R5t sysMarkListR²R6R7R8R9RëtfightPett extraInfoDict((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRþUs               %   
 
 
"         
  "  #c    Cs°d}tj}|jƒj|ƒ}x…t|jƒƒD]q}|j|ƒ}|jƒr^q7n|jtj    ƒ}|jtj
ƒd}t |ƒ}|sžq7n||7}q7W|S(Nii( RRSRQRRRYRZRTR[R\RR!R(    Rt
totalPetLVRÀRÁR6R^RåR%R1((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRÞ s      cCsšd}tj}|jƒj|ƒ}xot|jƒƒD][}|j|ƒ}|jƒr^q7n|jtj    ƒ}t
|ƒ}|sˆq7n|d7}q7W|S(Nii( RRSRQRRRYRZRTR[R\RR(Rt totalPetCountRÀRÁR6R^RåR1((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytGetTotalPetCounts      cCsmt||ƒ}|sdS|jtjƒ}|jtjƒ}t|ƒ}|sSdS|jƒ}|d|kS(Ni(R_R\RRR!RRð(RRR^R%R1Rö((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt
IsPetMaxLV*s  cCszt|ƒ|r5tj|ƒjdtjdtƒntj|ƒjdtƒ|jƒjƒ}|rvtj    |ƒndS(Nt billboardFunctisForce(
tCalcPetItemAddPlayerAttrRtRefreshPlayerAttrStatetPlayerBillboardtUpdatePyPetBillboardR RŽRÚRxtRefurbishPetAttr(RtisUpdBillboardR@((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyR{7s
%c    Cs¢t|ƒ\}}x‰|D]}tjƒj|ƒ}|s@qnxWt|jƒƒD]C}|j|ƒ}|jƒtj    krƒqSnt
j |||ƒqSWqWdS(N( R›RRR(RtGetEffectCountt    GetEffectt GetEffectIDR    tDef_SkillEffs_PetR?tCalcBuffEffAttr(    RRNtallAttrListPetR²R³RÂtcurSkillt effectIndext    curEffect((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytCalcSkill_PetBattleEffectEs cCsktj|ƒ}x'|D]\}}tj|||ƒqWtj||tjƒtj    ||tj
ƒdS(N( RtGetNPCBuffRefreshListR?tCalcCurBuffer_EffecttCalcNoLineEffecttChangeNPCAttrInNoLineEffectListR    tCalcAttr_BattleNolinetCalcLineEffecttChangeNPCAttrInLineEffectListtCalcAttr_Battle(RNRStbuffRefreshListt    buffStatet    canPileup((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytCalcBuffer_PetBattleEffectYs c4Cs²gtdƒD] }i^q }gtdƒD] }i^q,}gtdƒD] }i^qK}gtdƒD] }i^qj}gtdƒD] }i^q‰}gtdƒD] }i^q¨}gtdƒD] }i^qÇ}i}    t|ƒ\}
} } | |    d<tjtj|
|ƒtjtj| |ƒ|jtj    ƒ} t
j ||tj ƒ}tj |tj|ƒt|ƒ\}}x|D]ú}tjƒj|ƒ}|sªqƒn|jƒtjkr#x[t|jƒƒD]G}|j|ƒ}|jƒ}|jdƒ}tj||| |ƒqÒWqƒnxWt|jƒƒD]C}|j|ƒ}|jƒtjkrfq6ntj|||ƒq6WqƒWtjƒ}xgt|jƒƒD]S}|j |ƒ}|j!ƒ}|j"ƒ}|jtj#|ƒ}||krõq n1||kr|jtj$|ƒ}n |j%ƒ}|j&ƒ}|j'ƒ}x7t(|ƒD])\} }!|| }"tj|!|"|ƒqKW|j)ƒ}#|r |#r |j*ƒ}$|j+ƒ}%||#}&x>t(|$ƒD]-\} }!|%| }"tj|!|"|&|ƒq¿Wq q Wtj,|tj-|ƒtj,|tj.|d|    ƒtj,|tj/|ƒtj,|tj0|ƒtj,|tj1|ƒd}'tj2}(|j3ƒj4|(ƒ})xÚt|)j5ƒƒD]Æ} |)j6| ƒ}*|*j7ƒrÉq¢nxft|*j8tj9ƒƒD]L} |*j:tj9| ƒ}tjƒj|ƒ}+|+sqân|'|+j;ƒ7}'qâW|*j<tj=ƒ},t>|,ƒ}-|-s\q¢n|'|-j?ƒ7}'|jtj@d|,fdƒ}.tjAdd|,|.dƒ}/|/ræx6|/jBƒjCƒD]\}!}"tj|!|"|ƒqÀWn|*j<tjDƒ}0tjAd|,|0ƒ}1|1r¢|1jEƒ}2|1jFƒ}3x:t(|2ƒD])\} }!|3| }"tj|!|"|ƒq8Wq¢q¢Wtj,|tjG|ƒtj,|tjH|ƒtj |tjI|'ƒdS(    NitpetQualityAttrInfoitcustomAttrDictit HorsePetSkinidt    PetStarUp(JRYtGetPetAtkValueRtCalcAttrDict_TypeRtDef_Effect_PetMinAtktDef_Effect_PetMaxAtkR¶R    tDef_PDict_TotalSignNumtPlayerAttrFruittCalcAttrFruitAddAtrrtDef_AttrFruitFunc_PettSetMFPExFightPowertDef_MFPType_PetSoulR›RRR(R½tDef_SkillID_PetSignDayRRNRORPR RQR?RRRRìtGetPetTrainCounttGetPetTrainByIndext GetTrainTypet
GetTrainLVR
tDef_PDict_PetTrainItemCounttGetEatCntTotaltGetLVAttrTypeListtGetLVAttrValueListR'tGetEatCntEverytimetGetEatItemAttrTypeListtGetEatItemAttrValueListtSetCalcAttrListValuetDef_CalcAttrFunc_PetTarintDef_CalcAttrFunc_PettDef_CalcAttrFunc_PetSoultDef_CalcAttrFunc_PetSigntDef_CalcAttrFunc_PetSkillRSRQRRRZRTR[R¹R-Rºt GetFightPowerR\RRtGetInitFightPowertDef_PDict_HorsePetSkinDatatGetIpyGameDataNotLogt GetAttrInfoRtDef_IudetPet_StartGetStarAttrTypetGetStarAttrValuetDef_CalcAttrFunc_PetSkintDef_CalcAttrFunc_PetStartDef_MFPType_Pet(4Rt_RStallAttrListPetSigntallAttrListPetSoult skillAttrListtallAttrListPetSkintallAttrListTraintallAttrListStartcustomAttrDictPett totalMinAtkt totalMaxAtktqualityAttrInfot totalSignNumt fightPowerExR²R³RÂRTRURVteffIDteffValueRóRpt trainIpyDataR t dataTrainLVttrainLVttrainItemCounttlvAttrTypeListtlvAttrValueListR6tattrIDt    attrValueteatCntEverytimeteatItemAttrTypeListteatItemAttrValueListt attrMultiplet    fpExTotalRÀRÁR^R9RåR1tskinDatat skinIpyDatatcurStart starIpyDatat starAttrTypet starAttrValue((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRHjsÀ
 
 
 
"        
cCsfi}tj|tjƒs(dd|fSd}tj}|jƒj|ƒ}xþt|jƒƒD]ê}|j    |ƒ}|j
ƒr†q_n|j tj ƒ}|j tj ƒ}tjd||dƒ}    |    rÕ|    jƒnd}
||
7}t|ƒ} | r_| jƒ} | |kri|| <n|| } | jtjdƒ|
| tj<q_q_W|}|}|||fS(NiRúi(RÿRRRRSRQRRRYRZRTR[R\RR!RRt    GetAtkAddRR$tgettDef_Effect_PetAtk(RR™t classAddAtkRÀRÁR6RäRåR.t classIpyDatatatkAddR1RõtqualityAttrDictR—R˜((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRhçs2      
 
'cCstj|tjƒsdSxWtdtƒdƒD]?}|jtj|ƒdkr0t    j
|tj|dƒq0q0Wt |ƒdS(Nii( RÿRRRRRR¶R    R
RRR (RR ((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pytOnPlayerPetLogins!
cCsttjddƒƒS(NRûi(RRR(((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyRsc    Cs8tjƒ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|d
7}|| 8}tj    d ||fƒntj|tj||ƒtj|tj||ƒ||kr—nt|ƒt|tƒtj|i|| 6ƒ|dkrêtj|tj|ƒnJ|d    krtj|tj|ƒn%|d
kr4tj|tj |ƒndS(NsEÁé³èÅàÑø: trainType=%s,trainLV=%s,costItemCount=%s,curEatItemCount=%sis    ÅàÑøÎ´¼¤»î  trainType=%stPetTrainis:    ¾³½ç²»×㣬ÎÞ·¨ÅàÑø£¡  curRealmLV(%s) < needRealmLV(%s)s    ¸ÃÅàÑøÒÑÂú¼¶£¡Rûiis\    ÏûºÄµÀ¾ß²»×㣬ÎÞ·¨ÅàÑø!costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%ss+    updEatItemCount=%s,needEatCountTotal=%ss*    ½ø½×: updClassLV=%s,updEatItemCount=%s(!RReRft    TrainTypeRR¶R    R
RwRRRRtGetNeedRealmLVRtGetTrainRealmLVRealRxRRtGetPackItemBindStateIndexInfotDelCostItemByBindRÔRR R{R RRRRtActTaskType_PetTrainItem2tActTaskType_PetTrainItem3tActTaskType_PetTrainItem1(RpRÉRqRR R#R tcurEatItemCountRžt needRealmLVt
curRealmLVtneedEatCountTotalR*t
costItemIDtcostItemIndexListtbindCntt    unBindCntR2R>R;tupdEatItemCount((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt
OnPetTrainst                      "
 
 
 
    cCsqtjƒj|ƒ}|jƒ}|j}t||ƒ}|sCdS|jtjƒ}|jtj    ƒ}|d}    t
j d||    ƒ}
|
sªtj d||f|ƒdS|
j ƒ} | sÀdS|jƒjtjƒ} tj| | ƒ\} }| rtj d||    | | f|ƒdStj|| |dƒ|jtj    |    ƒtj d|||    f|ƒt|tƒdS(NiRgs2Áé³è²»´æÔÚ¸ÃÐǼ¶£¬ÎÞ·¨ÉýÐÇ. petNPCID=%s,curStar=%ssNÁé³èÉýÐÇËùÐèÎïÆ·²»×㣡 petNPCID=%s,nextStar=%s,needItemList=%s,lackItemDict=%ss,Áé³èÉýÐÇ. petNPCID=%s,curStar=%s,nextStar=%s(RReRfRRRLR\RRR‰RR‡RtGetStarUpNeedItemListRQRRRgRÑRtGetCostItemIndexListt DelCostItemRR{R (RpRÉRqRR"RRXRR­tnextStart nextIpyDatat needItemListRèt lackItemDictt delInfoDict((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt OnPetStarUpts6     
      cCs¥tjƒ}g|_g|_x^tdtƒdƒD]F}|jj|jtj    |ƒƒ|jj|jtj
|ƒƒq5Wt |jƒ|_ t j||ƒdS(Ni(tChPyNetSendPackttagMCPetTrainInfot TrainLVListtTrainItemCountListRRR¼R¶R    R
RwRt
TrainTypest NetPackCommont SendFakePack(Rt
clientPackR ((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyR “s          $(KR    RRRgRRJR?R‡RRRÿRR=RxRÕRRRmR¦RÛtPlayerMagicWeaponRßRZRDR}R]RRÕRÚRRRR•R¢trandomtmathRRRRR:R+RPRLR_RKRcRdRtR RoR‹RzR¸R›RËR RÈR<R÷RùRþRÞRDRER{RWRcRHRhR¸RRËRÔR (((siE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerPet.pyt<module>sŽ                                                      )                                   A        H            $    @.        ¶                             }                  V