#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
  
 | 
##@package ClearPack  
 | 
# Çå³ýÖ¸¶¨°ü¹üÎïÆ·  
 | 
#  
 | 
# @author Mark  
 | 
# @date 2010-4-21  
 | 
# @version 1.3  
 | 
#  
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
# @change: "2012-06-27 15:30" whx Ôö¼ÓsetCount´íÎóoss¼Ç¼  
 | 
# @change: "2012-08-10 15:00" zhangxi ÐÞ¸ÄOSS¼Ç¼  
 | 
# @change: "2013-07-04 10:00" Alee ÐÂÔö±³°ü  
 | 
#---------------------------------------------------------------------  
 | 
#"""Version = 2013-07-04 10:00"""  
 | 
#---------------------------------------------------------------------  
 | 
import GameWorld  
 | 
import ItemControler  
 | 
import ShareDefine  
 | 
  
 | 
## GMÃüÁîÖ´ÐÐÈë¿Ú  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param playerList ²ÎÊýÁбí [¡¾curPlayer , packIndex¡¿ , itemID , itemCount]  
 | 
#  @return None or True  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(curPlayer, playerList):  
 | 
    if not playerList:  
 | 
        GameWorld.DebugAnswer(curPlayer, "±³°üÀàÐÍ:1-×°±¸;2-±³°ü;5-²Ö¿â;30-Ѱ±¦;32-ÉñÊÞ;33-ÉñÊÞ×°±¸;34-À¬»øÊÕ¼¯")  
 | 
        return  
 | 
      
 | 
    if len(playerList) == 1:  
 | 
        GameWorld.DebugAnswer(curPlayer, "Çå¿Õ±³°ü: %s" % playerList[0])  
 | 
        __DoLogic_Clear_Pack( curPlayer , int(playerList[0]) )  
 | 
        return  
 | 
      
 | 
    if len(playerList) == 2:  
 | 
        __DoLogic_Clear_Pack_SingItem( curPlayer , int(playerList[0]) , int( playerList[1] ) )  
 | 
        return  
 | 
      
 | 
    if len(playerList) == 3:  
 | 
        __DoLogic_Clear_Pack_SingItem_Count( curPlayer , int(playerList[0]) , int( playerList[1]) , int( playerList[2] ) )  
 | 
        return  
 | 
     
 | 
    return True  
 | 
  
 | 
## É¾³ý°ü¹üÖÐÖ¸¶¨IDµÄÎïÆ· º¬ÊýÁ¿  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param packIndex ±³°üÀàÐÍË÷Òý  
 | 
#  @param itemID ÎïÆ·ID  
 | 
#  @param itemCount ÎïÆ·ÊýÁ¿  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_Clear_Pack_SingItem_Count( curPlayer , packIndex , itemID , itemCount ):  
 | 
    if packIndex < 0 or packIndex >= ShareDefine.rptMax:  
 | 
        return  
 | 
      
 | 
    backPack = curPlayer.GetItemManager().GetPack(packIndex)  
 | 
    for i in range(backPack.GetCount()):  
 | 
        curItem = backPack.GetAt(i)  
 | 
          
 | 
        if not curItem or curItem.IsEmpty():  
 | 
            continue  
 | 
          
 | 
        if curItem.GetItemTypeID() != itemID:  
 | 
            continue  
 | 
          
 | 
        if curItem.GetCount() <= itemCount:  
 | 
            curItem.Clear()  
 | 
        else:  
 | 
            ItemControler.SetItemCount(curItem, curItem.GetCount() - itemCount,   
 | 
                                       curPlayer.GetPlayerID(), curPlayer.GetAccID(),   
 | 
                                       curPlayer.GetPlayerName())  
 | 
          
 | 
    return  
 | 
  
 | 
## É¾³ý°ü¹üÖÐÖ¸¶¨IDµÄÎïÆ·   
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param packIndex ±³°üÀàÐÍË÷Òý  
 | 
#  @param itemID ÎïÆ·ID  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_Clear_Pack_SingItem( curPlayer , packIndex , itemID ):  
 | 
    if packIndex < 0 or packIndex >= ShareDefine.rptMax:  
 | 
        return  
 | 
      
 | 
    backPack = curPlayer.GetItemManager().GetPack(packIndex)  
 | 
    for i in range(backPack.GetCount()):  
 | 
        curItem = backPack.GetAt(i)  
 | 
          
 | 
        if not curItem or curItem.IsEmpty():  
 | 
            continue  
 | 
          
 | 
        if curItem.GetItemTypeID() != itemID:  
 | 
            continue  
 | 
          
 | 
        curItem.Clear()  
 | 
      
 | 
    return  
 | 
  
 | 
## É¾³ý°ü¹üÖÐËùÓеÄÎïÆ·  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param packIndex ±³°üÀàÐÍË÷Òý  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_Clear_Pack( curPlayer , packIndex ):  
 | 
    if packIndex < 0 or packIndex >= ShareDefine.rptMax:  
 | 
        return  
 | 
      
 | 
    backPack = curPlayer.GetItemManager().GetPack(packIndex)  
 | 
    for i in range(backPack.GetCount()):  
 | 
        curItem = backPack.GetAt(i)  
 | 
          
 | 
        if not curItem or curItem.IsEmpty():  
 | 
            continue  
 | 
          
 | 
        curItem.Clear()  
 | 
    return  
 |