#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #------------------------------------------------------------------------------ ##@package Item_GiveMoney # @todo: ¸øÈËÎï½ðÇ® # # @author: adaws # @date 2010-08-11 16:00 # @version 1.9 # # @change: "2011-02-23 17:30" panwei ɾ³ýÍâ²ãͳһÁ÷Ïò¼Ç¼, µ¥¸öÎïÆ·µ÷ÓÃͳһÁ÷Ïò¼Ç¼ # @change: "2011-04-27 11:00" Alee Íæ¼ÒÊý¾ÝÁ÷Ïò¼Ç¼ # @change: "2012-04-09 14:30" jiang Á÷Ïò¼Ç¼ # @change: "2012-06-18 18:00" jiang ÐÞ¸ÄItemCommon.DelItemº¯ÊýµÄ²ÎÊýÓÃÓÚOssʼþ¼Ç¼ # @change: "2013-12-26 20:20" Alee ¼õÉÙÁ÷Ïò¼Ç¼ # @change: "2015-01-14 00:30" hxp Ôö¼Óʼþ»ã±¨ # @change: "2015-05-20 16:00" hxp Ôö¼ÓÅúÁ¿Ê¹ÓÃÂß¼­ # @change: "2016-07-20 14:30" hxp ͳһº¯Êý #------------------------------------------------------------------------------ #"""Version = 2016-07-20 14:30""" #------------------------------------------------------------------------------ #µ¼Èë import GameWorld import ChConfig import PlayerControl import IPY_GameWorld import ItemCommon import ShareDefine import PlayerFamily #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ ##ÅúÁ¿Ê¹ÓÃÎïÆ· # @param curPlayer: Íæ¼ÒʵÀý # @param curRoleItem: ÎïÆ·ÊµÀý # @param tick: ʱ¼ä´Á # @param useCnt: ʹÓøöÊý # @return: def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData): itemID = curRoleItem.GetItemTypeID() #itemName = curRoleItem.GetName() GameWorld.DebugLog("Item_GiveMoney.BatchUseItem itemID=%s,useCnt=%s" % (itemID, useCnt)) effectCount = curRoleItem.GetEffectCount() playerLv = curPlayer.GetLV() reMoney = GameWorld.GetReMoney(playerLv) itemID = curRoleItem.GetItemTypeID() # »ã×ܸÃÎïÆ·¿É¸øµÄ»õ±ÒÀàÐÍ giveMoneyDict = {} for i in range(effectCount): curEff = curRoleItem.GetEffectByIndex(i) moneyType = GetAddMoneyType(curEff) if moneyType == -1: continue #multiValue = curEff.GetEffectValue(0) #addValue = curEff.GetEffectValue(1) giveMoney = curEff.GetEffectValue(0)#reMoney*multiValue + addValue if giveMoney <= 0: continue giveMoneyDict[moneyType] = giveMoney GameWorld.DebugLog(" giveMoneyDict=%s" % giveMoneyDict) if not giveMoneyDict: return # Ô¤¼ì²é¿É³É¹¦Ê¹ÓõÄ×ܸöÊý successCnt = 0 isBreak = False for i in range(useCnt): if isBreak: break for moneyType, giveMoney in giveMoneyDict.items(): curTypeTotalMoney = giveMoney * (successCnt + 1) # Ö»ÒªÓÐÆäÖÐÒ»ÖÖ»õ±ÒÀàÐͲ»ÄܸøÔòÍ£Ö¹ÅúÁ¿Ê¹ÓÃÎïÆ· if not PlayerControl.CanGiveMoney(curPlayer, moneyType, curTypeTotalMoney): isBreak = True break successCnt += 1 GameWorld.DebugLog(" successCnt=%s" % successCnt) if successCnt <= 0: return #ÎïÆ·¼õÉÙ ItemCommon.DelItem(curPlayer, curRoleItem, successCnt, True, ChConfig.ItemDel_GiveMoney) # ¸ø»õ±Ò for moneyType, giveMoney in giveMoneyDict.items(): giveTotalMoney = giveMoney * successCnt if moneyType == ShareDefine.TYPE_Price_Family_Contribution: PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, giveTotalMoney, True, ShareDefine.Def_AddFAVReason_UseItem, True) else: addDataDict = {"UseCount":successCnt, ChConfig.Def_Give_Reason_SonKey:itemID} PlayerControl.GiveMoney(curPlayer, moneyType, giveTotalMoney, ChConfig.Def_GiveMoney_UseItem, addDataDict) return True, successCnt ##ʹÓÃÎïÆ·,´¥·¢ÎïÆ·¸½¼ÓЧ¹û ¸øÈËÎï½ðÇ® # @param curPlayer: Íæ¼ÒʵÀý # @param curRoleItem: ÎïÆ·ÊµÀý # @param tick: ʱ¼ä´Á # @return: ÊÇ·ñʹÓÃÎïÆ·³É¹¦ # @remarks: giveMoney = reMoney * curEff.GetEffectValue(1) + curEff.GetEffectValue(2) # AֵΪ½ðÇ®¹«Ê½ÀïµÄÊýÁ¿(³Ë·¨Òò×Ó) BֵΪ½ðÇ®¹«Ê½Àï¶îÍâ¹Ì¶¨ÊýÁ¿(¼Ó·¨Òò×Ó) def UseItem(curPlayer, curRoleItem, tick): return BatchUseItem(curPlayer, curRoleItem, tick, 1, 0) ## ¸ù¾ÝµÀ¾ßµÄЧ¹ûID»ñµÃÐèÒª¸øµÄ½ðÇ®µÄÀàÐÍ # @param curEffID: µÀ¾ßµÄЧ¹ûID # @return: ½ðÇ®µÄÀàÐÍ Èç¹û¸ù¾ÝЧ¹ûIDÕÒ²»µ½µÄ»°·µ»Ø-1 # @remarks: ¸ù¾ÝµÀ¾ßµÄЧ¹ûID»ñµÃÐèÒª¸øµÄ½ðÇ®µÄÀàÐÍ DÕÒ²»µ½µÄ»°·µ»Ø-1 def GetAddMoneyType(curEff): curEffID = curEff.GetEffectID() if curEffID == ChConfig.Def_Effect_GivePlayerMoneySilver: return IPY_GameWorld.TYPE_Price_Silver_Money elif curEffID == ChConfig.Def_Effect_GivePlayerMoneyGift: return IPY_GameWorld.TYPE_Price_Gold_Paper elif curEffID == ChConfig.Def_Effect_GivePlayerMoneyGold: return IPY_GameWorld.TYPE_Price_Gold_Money elif curEffID == ChConfig.Def_Effect_GivePlayerSilverPaper: return IPY_GameWorld.TYPE_Price_Silver_Paper elif curEffID == ChConfig.Def_Effect_ItemGiveHonor: return ShareDefine.TYPE_Price_Honor elif curEffID == ChConfig.Def_Effect_ItemGiveRuneJH: return ShareDefine.TYPE_Price_Rune elif curEffID == ChConfig.Def_Effect_ItemGiveRuneSplinters: return ShareDefine.TYPE_Price_RuneSplinters elif curEffID == ChConfig.Def_Effect_ItemGiveFamilyActivity: return ShareDefine.TYPE_Price_FamilyActivity elif curEffID == ChConfig.Def_Effect_ItemGiveFamilyContribution: return ShareDefine.TYPE_Price_Family_Contribution elif curEffID == ChConfig.Def_Effect_ItemGiveRealmPoint: return ShareDefine.TYPE_Price_RealmPoint elif curEffID == ChConfig.Def_Effect_ItemGiveSoulDust: return ShareDefine.TYPE_Price_SoulDust elif curEffID == ChConfig.Def_Effect_ItemGiveSoulSplinters: return ShareDefine.TYPE_Price_SoulSplinters elif curEffID == ChConfig.Def_Effect_ItemGiveSoulCore: return ShareDefine.TYPE_Price_SoulCore elif curEffID == ChConfig.Def_Effect_ItemGiveTreasureScore: return ShareDefine.TYPE_Price_TreasureScore elif curEffID == ChConfig.Def_Effect_ItemGiveMoney: return curEff.GetEffectValue(1) return -1