| #!/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-²Ö¿â;8-¿³Ê÷;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  |