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