hxp
5 天以前 388823edfe6308cba6f76ca6dc4f20022c5cb2be
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
#!/usr/bin/python
# -*- coding: GBK -*-
#---------------------------------------------------------------------
#
#---------------------------------------------------------------------
##@package Item_Add_LimitingBuff
# @todo: Ìí¼ÓÓÐ×î´óʱ¼äÉÏÏÞBuffÎïÆ·
#
# @author: zhangd
# @date 2011-03-16
# @version 1.3
#
# @change: "2011-04-02 16:30" zhangd ÐÞ¸ÄÌí¼ÓbuffʱˢÐÂÊôÐÔ
# @change: "2012-06-18 18:00" jiang ÐÞ¸ÄItemCommon.DelItemº¯ÊýµÄ²ÎÊýÓÃÓÚOssʼþ¼Ç¼
# @change: "2015-01-29 19:40" ljd ÐÞ¸ÄÎïÆ·Ê¹ÓÃÉÏÏÞϵͳÌáʾ²ÎÊý
#---------------------------------------------------------------------
#"""Version = 2015-01-29 19:40"""
#---------------------------------------------------------------------
import GameWorld
import PlayerControl
import ItemCommon
import SkillCommon
import IpyGameDataPY
import ChConfig
#---------------------------------------------------------------------
#×î´óʹÓÃʱ¼ä
Def_MaxUseTime = 576 * 60 * 60 * 1000                             
#---------------------------------------------------------------------
 
 
def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
    curRoleItemID = curRoleItem.GetItemTypeID()
    
    if curRoleItem.GetAddSkillCount() <= 0:
        return False
    
    curSkillID = curRoleItem.GetAddSkill(0)
    
    if not curSkillID:
        return False
    
    curSkill = GameWorld.GetGameData().GetSkillBySkillID(curSkillID)
    
    if not curSkill:
        GameWorld.ErrLog('Ìí¼ÓÓÐ×î´óʱ¼äÉÏÏÞBuffÎïÆ· = %s Ê¹ÓÃÒì³£, ÎÞ·¨»ñÈ¡¸½¼Ó¼¼ÄÜ = %s'%(curRoleItemID, curSkillID))
        return False
    
    #--»ñÈ¡ÊÇ·ñÒѾ­Ìí¼Ó¹ý¸ÃBuff--
    buffType = SkillCommon.GetBuffType(curSkill)
    buffTuple = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
    #ͨ¹ýÀàÐÍ»ñȡĿ±êµÄbuff¹ÜÀíÆ÷Ϊ¿Õ£¬ÔòÌø³ö
    if buffTuple == ():
        return
    
    buffState = buffTuple[0]
    #¿ÉÌí¼ÓµÄ³ÖÐøÊ±¼ä
    curSkillLastTime = curSkill.GetLastTime()*useCnt
    #»ñÈ¡buff
    curBuff = buffState.FindBuff(curSkillID)
    if curBuff:   
        #µ±Ç°buffÊ£Óàʱ¼ä
        curBuffRemainTime = curBuff.GetRemainTime()
        
        #ÀÛ¼ÓÊý¾Ý
        sumTime = curSkillLastTime + curBuffRemainTime
        #¼ì²éÀÛ¼Óʱ¼äÊÇ·ñ³¬¹ýÉÏÏÞ
        if sumTime > Def_MaxUseTime:
            #ÎïÆ·Ê¹ÓÃÉÏÏÞ24Ì죬³¬¹ýÎÞ·¨Ê¹ÓÃ
            PlayerControl.NotifyCode(curPlayer, 'Item_Effect_Max', [curRoleItemID, Def_MaxUseTime / (60 * 60 * 1000)])
            return False        
 
    if not ItemCommon.ItemUseSkillAddBuff(curPlayer, curRoleItem, tick, True, useCnt):
        return False
    if curRoleItemID not in IpyGameDataPY.GetFuncEvalCfg('UnShowMsgBuffItemID', 1):
        if curSkillLastTime:
            PlayerControl.NotifyCode(curPlayer, 'UseItem1', [curRoleItemID, curSkillID, curSkillLastTime])
        else:
            PlayerControl.NotifyCode(curPlayer, 'UseItem3', [curRoleItemID, curSkillID])
    #µ÷ÓÃͨÓýӿÚɾ³ýµÀ¾ß
    ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, ChConfig.ItemDel_Add_LimitingBuff)
    return True, useCnt
 
 
## Âß¼­ÊµÏÖ //·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param curRoleItem µ±Ç°Ö÷½ÇʹÓõÄÎïÆ·
#  @param tick µ±Ç°Ê±¼ä
#  @return True or False ·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def UseItem(curPlayer, curRoleItem, tick):
    BatchUseItem(curPlayer, curRoleItem, tick, 1, 0)
    return True