#!/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-ÉñÊÞ×°±¸;")
|
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
|