|  |  |  | 
|---|
|  |  |  | dropNPCID=npcID, isOnlySelfSee=isOnlySelfSee) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def DoGiveItemByVirtualDrop(curPlayer, giveItemList, npcID, dropPosX=0, dropPosY=0, isDropDisperse=True, mailTypeKey="ItemNoPickUp"): | 
|---|
|  |  |  | def DoGiveItemByVirtualDrop(curPlayer, giveItemList, npcID, dropPosX=0, dropPosY=0, isDropDisperse=True, mailTypeKey="ItemNoPickUp", extraVirtualItemList=[]): | 
|---|
|  |  |  | ## 给物品并且做假掉落表现,直接先堆叠给物品,再拆开做虚假掉落表现 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mapID = PlayerControl.GetCustomMapID(curPlayer) | 
|---|
|  |  |  | 
|---|
|  |  |  | virtualItemDropList.append([itemID, dropItemDataStr]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 先通知掉落,再给物品,因为前端表现弹框需要这个顺序需求 | 
|---|
|  |  |  | if extraVirtualItemList: #只显示假掉落 | 
|---|
|  |  |  | for itemInfo in extraVirtualItemList: | 
|---|
|  |  |  | itemID, itemCount, isAuctionItem = itemInfo | 
|---|
|  |  |  | curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer) | 
|---|
|  |  |  | if not curItem: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem) | 
|---|
|  |  |  | # 散开掉落 | 
|---|
|  |  |  | if isDropDisperse: | 
|---|
|  |  |  | for _ in xrange(itemCount): | 
|---|
|  |  |  | virtualItemDropList.append([itemID, dropItemDataStr]) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | virtualItemDropList.append([itemID, dropItemDataStr]) | 
|---|
|  |  |  | curItem.Clear() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | gameMap = GameWorld.GetMap() | 
|---|
|  |  |  | index = 0 | 
|---|
|  |  |  | for posX, posY in ChConfig.Def_DropItemAreaMatrix: | 
|---|