#!/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
|
|