#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package GM.Commands.ClearFruitAttr # # @todo:ÖØÖÃÊôÐÔ¹ûʵÊý¾Ý # @author hxp # @date 2014-11-4 # @version 1.1 # # @change: "2014-12-04 15:30" hxp ÊôÐÔ¹ûʵ֧³Ö°´¸öÊý»ò°´ÊôÐÔµã¿ØÖÆÉÏÏÞ # # ÏêϸÃèÊö: ÖØÖÃÊôÐÔ¹ûʵÊý¾Ý # #--------------------------------------------------------------------- #"""Version = 2014-12-04 15:30""" #--------------------------------------------------------------------- import ChConfig import GameWorld import IpyGameDataPY import PlayerControl import PlayerAttrFruit import ItemControler import IPY_GameWorld #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param list ²ÎÊýÁбí [npcID] # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, paramList): clearFuncIndex = paramList[0] if len(paramList) > 0 else -1 isGiveFruitItem = paramList[1] if len(paramList) > 1 else 0 if clearFuncIndex == 99: clearFuncIndex = -1 isGiveFruitItem = 1 giveFruitItemList = [] ipyDataMgr = IpyGameDataPY.IPY_Data() for i in xrange(ipyDataMgr.GetAttrFruitCount()): ipyData = ipyDataMgr.GetAttrFruitByIndex(i) itemID = ipyData.GetID() funcIndex = ipyData.GetFuncID() limitType = PlayerAttrFruit.Def_LimitType_Cnt if clearFuncIndex not in [-1, funcIndex]: continue # ÖØÖøÃÎïÆ·ÒÑʹÓøöÊý/ÊôÐÔ if limitType == PlayerAttrFruit.Def_LimitType_Cnt: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitEatCnt % itemID, 0) elif limitType == PlayerAttrFruit.Def_LimitType_Attr: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitAddValue % itemID, 0) curPlayer.SetDict(ChConfig.Def_PlayerKey_FruitFightPowerEx % (funcIndex), 0) itemData = GameWorld.GetGameData().GetItemByTypeID(itemID) # ÖØÖøÃÎïÆ·Ëù¼ÓµÄÊôÐÔÖµ if itemData: for i in range(itemData.GetEffectCount()): curEffect = itemData.GetEffectByIndex(i) effectID = curEffect.GetEffectID() if effectID not in ChConfig.ItemEffect_AttrDict: continue attrKey = ChConfig.Def_PlayerKey_FruitAttr % (funcIndex, effectID) curPlayer.SetDict(attrKey, 0) if isGiveFruitItem: giveFruitItemList.append([itemID, PlayerAttrFruit.GetMaxEatCnt(curPlayer, itemID)]) PlayerAttrFruit.Sync_AttrFruitEatCnt(curPlayer) # Ë¢ÐÂÊôÐÔ PlayerControl.PlayerControl(curPlayer).ReCalcAllState() for itemID, itemCount in giveFruitItemList: if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem]): break GameWorld.DebugAnswer(curPlayer, "OK!") return