#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- ##@package ChEquip # ×°±¸Âß¼­´¦Àí # # @author alee # @date 2017-07-29 00:30 # @version 1.0 # # ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ #------------------------------------------------------------------------------ #"""Version = 2017-07-29 00:30""" #------------------------------------------------------------------------------ import IPY_GameWorld import GameWorld import ChConfig import ShareDefine import IpyGameDataPY import PlayerOnline def RefreshRoleEquipAttr(curPlayer): ## Ë¢ÐÂÖ÷¹«×°±¸ÊôÐÔ CalcRoleEquipAttr(curPlayer) PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr() return def CalcRoleEquipAttr(curPlayer): ## ¼ÆËãÖ÷¹«×°±¸ÊôÐÔ playerID = curPlayer.GetPlayerID() mainEquipAttrDict = {} packType = IPY_GameWorld.rptEquip equipPack = curPlayer.GetItemManager().GetPack(packType) # Ö÷×°±¸ for equipPlace in ChConfig.Def_MainEquipPlaces: equipIndex = equipPlace - 1 if equipIndex < 0 or equipIndex >= equipPack.GetCount(): continue curEquip = equipPack.GetAt(equipIndex) if not curEquip or curEquip.IsEmpty(): continue #itemColor = curEquip.GetItemColor() baseAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrID) baseAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetBaseAttrValue) if baseAttrIDCnt == baseAttrValueCnt: for i in xrange(baseAttrIDCnt): attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrID, i) attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetBaseAttrValue, i) mainEquipAttrDict[attrID] = mainEquipAttrDict.get(attrID, 0) + attrValue legendAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID) legendAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue) if legendAttrIDCnt == legendAttrValueCnt: for i in xrange(legendAttrIDCnt): attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i) attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i) mainEquipAttrDict[attrID] = mainEquipAttrDict.get(attrID, 0) + attrValue GameWorld.DebugLog("Ö÷Ïß×°±¸ÊôÐÔ: %s" % mainEquipAttrDict, playerID) PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_MainEquip, mainEquipAttrDict) return #// A3 18 ÁéÆ÷Í»ÆÆ #tagCMLingQiEquipBreak # #struct tagCMLingQiEquipBreak #{ # tagHead Head; # DWORD ItemID; //Í»ÆÆµÄÎïÆ·ID #}; def OnLingQiEquipBreak(index, clientData, tick): return #// A3 27 ÁéÆ÷ÅàÑø #tagCMLingQiTrain # #struct tagCMLingQiTrain #{ # tagHead Head; # BYTE EquipPlace; //ÁéÆ÷×°±¸Î» # BYTE TrainType; //ÅàÑøÀàÐÍ£º 1-»ù´¡ÅàÑø£¬2-ÌØÊâÅàÑø£¬3-°Ù·Ö±ÈÅàÑø # WORD UseItemCnt; //ÏûºÄ²ÄÁϸöÊý #}; def OnLingQiTrain(index, clientData, tick): return def RefreshPlayerLingQiEquipAttr(curPlayer): ''' Ë¢ÐÂÍæ¼ÒÁéÆ÷×°±¸ÊôÐÔ ''' return def CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict={}): ## ¼ÆËã´«ÆæÊôÐÔ return #// A5 C6 ×°±¸²¿Î»ÐǼ¶Ì××°¼¤»î #tagCMEquipPartSuiteActivate # #struct tagCMEquipPartSuiteActivate #{ # tagHead Head; # BYTE ClassLV; // ËùÊô×°±¸½× # WORD SuiteID; // Ì××°ID # BYTE SuiteCount; // ¼þÊý # BYTE Star; // ÐÇÊý #}; def OnEquipPartSuiteActivate(index, clientData, tick): return def ChangeEquipfacadeByHorsePetSkin(curPlayer, skinType, skinIndex): ##Æï³è¾õÐÑÍâ¹Û±ä¸ü Áé³èÍâ¹ÛË÷Òý*10000000+×øÆïÍâ¹ÛË÷Òý*1000000+Áé¸ùÌØÐ§±íkey * 1000+µÚ¼¸Ì×*10+ÊÇ·ñÓÐÌ××° oldEquipShowSwitch = curPlayer.GetEquipShowSwitch() if skinType == 1: updEquipShowSwitch = GameWorld.ChangeDataByDigitPlace(oldEquipShowSwitch, 7, skinIndex) else: updEquipShowSwitch = GameWorld.ChangeDataByDigitPlace(oldEquipShowSwitch, 8, skinIndex) if oldEquipShowSwitch == updEquipShowSwitch: return curPlayer.SetEquipShowSwitch(updEquipShowSwitch) return def GetPlayerMaxEquipClassLV(curPlayer): ## »ñÈ¡Íæ¼Òµ±Ç°½âËøµÄ×°±¸½× key = "RealmEquipClassLVMap" RealmEquipClassLVMap = IpyGameDataPY.GetConfigEx(key) if not RealmEquipClassLVMap: RealmEquipClassLVMap = {} infoDict = {} ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetEquipControlCount()): ipyData = ipyDataMgr.GetEquipControlByIndex(index) infoDict[ipyData.GetNeedRealmLV()] = ipyData.GetClassLV() needReamlLVList = infoDict.keys() needReamlLVList.sort() # ÉýÐòÅÅ for i, realmLV in enumerate(needReamlLVList): classLV = infoDict[realmLV] if i == len(needReamlLVList) - 1: RealmEquipClassLVMap[realmLV] = classLV if i == 0: continue else: preRealmLV = needReamlLVList[i - 1] preClassLV = infoDict[preRealmLV] for pRealmLV in range(preRealmLV, realmLV): RealmEquipClassLVMap[pRealmLV] = preClassLV GameWorld.DebugLog("¼ÓÔØ¾³½ç¶ÔÓ¦¿ª·Å×î´ó×°±¸½×ÉèÖÃ: %s" % RealmEquipClassLVMap) IpyGameDataPY.SetConfigEx(key, RealmEquipClassLVMap) playerRealmLV = curPlayer.GetOfficialRank() if playerRealmLV in RealmEquipClassLVMap: return RealmEquipClassLVMap[playerRealmLV] maxRealmLV = max(RealmEquipClassLVMap) if playerRealmLV >= maxRealmLV: return RealmEquipClassLVMap[maxRealmLV] return 0 # »ñÈ¡ÂúÌ××°»¯µÄ×îµÍ½×Êý£¬Èç5¼þÌ×£¬4¼þ5¼¶£¬1¼þ3¼¶£¬Ôò·µ»Ø3 def GetEquipSuitsLVByType(curPlayer, suitType, groupType): return 0