| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
|   | 
| ##@package MakeItem  | 
| # ÖÆÔìÎïÆ· <ÎïÆ·ID> [ÊýÁ¿] ÊýÁ¿ÈçÎÞ,ĬÈÏΪ1  | 
| #  | 
| # @author mark  | 
| # @date 2010-4-23  | 
| # @version 1.6  | 
| # @note:  | 
| #  | 
| # @change: "2013-02-22 15:00" wdb µôÂä½Ó¿ÚÐÞ¸Ä  | 
| # @change: "2013-02-25 15:00" wdb ÐÞ¸ÄÎïÆ·µôÂä  | 
| # @change: "2013-03-19 18:00" wdb ½«AddMapDropItem·Åµ½ChItem  | 
| # @change: "2013-04-27 20:30" wdb Ôö¼Ó×°±¸¸½¼ÓÄÚÈÝ  | 
| # @change: "2013-08-06 21:30" Alee Ìí¼ÓÌ××°  | 
| # @change: "2015-12-11 16:00" hxp Ôö¼Ó»ù´¡ÊôÐÔ±ÈÀýÖ§³Ö  | 
| #---------------------------------------------------------------------  | 
| #"""Version = 2015-12-11 16:00"""  | 
| #------------------------------------------------------------------------------   | 
|   | 
| import ItemControler  | 
| import GameWorld  | 
| import ChConfig  | 
| import ChItem  | 
|   | 
| ## GMÃüÁîÖ´ÐÐÈë¿Ú  | 
| #  @param curPlayer µ±Ç°Íæ¼Ò  | 
| #  @param msgList ²ÎÊýÁбí [ <ÎïÆ·ID> [ÊýÁ¿]]  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def OnExec(curPlayer, msgList):  | 
|     #ÊäÈëÃüÁî¸ñʽ´íÎó  | 
|     if len(msgList) < 1:  | 
|         GameWorld.DebugAnswer(curPlayer, "MakeItem ItemID ¿ÉÑ¡(¸öÊý ¹éÊôÀàÐÍ ¹éÊôID)")  | 
|         GameWorld.DebugAnswer(curPlayer, "¹éÊôÀàÐÍ:1-Íæ¼Ò,2-¶ÓÎé,5-ÕóÓª,6-Ö¸¶¨¶à¸öÍæ¼Ò")  | 
|         return  | 
|       | 
|     itemID = msgList[0]  | 
|     count = msgList[1] if len(msgList) > 1 else 1  | 
|     dropType = msgList[2] if len(msgList) > 2 else ChConfig.Def_NPCHurtTypeAll  | 
|     ownerID = 0  | 
|     specOwnerIDList = []  | 
|       | 
|     if dropType == ChConfig.Def_NPCHurtTypeSpecial:  | 
|         specOwnerIDList = msgList[3:] if len(msgList) > 3 else []  | 
|     else:  | 
|         ownerID = msgList[3] if len(msgList) > 3 else 0  | 
|           | 
|     gameMap = GameWorld.GetMap()  | 
|     dropPosX, dropPosY = curPlayer.GetPosX(), curPlayer.GetPosY() # ÒÔÍæ¼ÒΪÖÐÐĵ㿪ʼµôÂä  | 
|     doCount = 0  | 
|     dropCount = 0  | 
|     index = 0  | 
|     for posX, posY in ChConfig.Def_DropItemAreaMatrix:  | 
|         doCount += 1  | 
|         resultX = dropPosX + posX  | 
|         resultY = dropPosY + posY  | 
|           | 
|         if not gameMap.CanMove(resultX, resultY):  | 
|             #Íæ¼Ò²»¿ÉÒÆ¶¯Õâ¸öµã  | 
|             continue  | 
|               | 
|         if index > count - 1:  | 
|             break  | 
|         index += 1  | 
|           | 
|         curItem = ItemControler.GetOutPutItemObj(itemID)  | 
|         if curItem == None:  | 
|             GameWorld.DebugAnswer(curPlayer, 'ÎÞ·¨²éÕÒÎïÆ· = %s' % (itemID))  | 
|             continue  | 
|           | 
|         # ÔÚµØÉÏÌí¼ÓÎïÆ·  | 
|         ChItem.AddMapDropItem(resultX, resultY, curItem, ownerInfo=[dropType, ownerID, specOwnerIDList])  | 
|         dropCount += 1  | 
|       | 
|     GameWorld.DebugAnswer(curPlayer, "¼ì²â×ø±êÊý:%s µôÂäÊý: %s" % (doCount, dropCount))  | 
|     return  | 
|               | 
|              |