hxp
2019-03-07 0a61ceac61e017f86560ce4b226092a23ada4e31
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MakeItemCount.py
@@ -14,11 +14,13 @@
#
# 模块详细说明
#导入
import IPY_GameWorld
import ItemControler
import ShareDefine
import ChConfig
import IpyGameDataPY
import GameWorld
import ChConfig
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -36,12 +38,13 @@
    
    #输入命令格式错误
    if len(msgList) < 1:
        GameWorld.DebugAnswer(curPlayer, "MakeItemCount id, [count, 符印等级]")
        GameWorld.DebugAnswer(curPlayer, "MakeItemCount ID (个数  拍品分组 全部传奇属性)")
        return
    
    itemID = msgList[0]
    count = msgList[1] if len(msgList) > 1 else 1
    runeLV = msgList[2] if len(msgList) > 2 else None
    itemCount = msgList[1] if len(msgList) > 1 else 1
    auctionGroup = msgList[2] if len(msgList) > 2 else 0
    isAllAttr = msgList[3] if len(msgList) > 3 else 0
    
    itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
    if not itemData:
@@ -49,37 +52,41 @@
        return
    packCount = itemData.GetPackCount()
    if itemID in ChConfig.Def_TransformItemIDList:
        curItem = ItemControler.GetOutPutItemObj(itemID)
        ItemControler.SetItemCount(curItem, count, curPlayer.GetPlayerID(), curPlayer.GetAccID(),
                                   curPlayer.GetPlayerName())
        curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, curPlayer=curPlayer)
        PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
        if not PlayerItemControler.PutInItem(IPY_GameWorld.rptItem, curItem, event=[ChConfig.ItemGive_GMMake, False, {"CMD":"MakeItemCount"}]):
            GameWorld.DebugAnswer(curPlayer, "放入物品失败!")
        return
    
    if packCount > 1:
        __DoGMGivePlayerItem(curPlayer, itemID, count, runeLV)
    playerItemControler = ItemControler.PlayerItemControler(curPlayer)
    # 拍品
    if auctionGroup:
        isAuctionItem = True
        ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "非可拍卖物品itemID=%s" % (itemID))
            return
        groupItemCount = itemCount / auctionGroup
        for i in xrange(auctionGroup):
            if i == auctionGroup - 1:
                groupItemCount += itemCount % auctionGroup
            __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, groupItemCount, isAuctionItem, isAllAttr)
    else:
        for _ in xrange(count):
            __DoGMGivePlayerItem(curPlayer, itemID, 1, runeLV)
        isAuctionItem = False
        if packCount > 1:
            __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, itemCount, isAuctionItem, isAllAttr)
        else:
            for _ in xrange(itemCount):
                __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, 1, isAuctionItem, isAllAttr)
    return
def __DoGMGivePlayerItem(curPlayer, itemID, count, runeLV):
def __DoGMGivePlayerItem(curPlayer, playerItemControler, itemID, count, isAuctionItem, isAllAttr):
    if ItemControler.GetAppointItemRealID(itemID):
        ItemControler.GivePlayerAppointItem(curPlayer, itemID, 0, True, True)
        ItemControler.GivePlayerAppointItem(curPlayer, itemID, isAuctionItem, event=[ChConfig.ItemGive_GMMake, False, {"CMD":"MakeItemCount"}])
        return
    curItem = ItemControler.GetOutPutItemObj(itemID)
    ItemControler.SetItemCount(curItem, count, curPlayer.GetPlayerID(), curPlayer.GetAccID(),
                               curPlayer.GetPlayerName())
    if curItem.GetType() == ChConfig.Def_ItemType_Rune and runeLV:
        curItem.SetUserAttr(ShareDefine.Def_IudetRuneLV, runeLV)
    if curItem.GetType() in [ChConfig.Def_ItemType_GatherSoul,ChConfig.Def_ItemType_GatherSoulCore] and runeLV:
        curItem.SetUserAttr(ShareDefine.Def_IudetGatherSoulLV, runeLV)
    #将物品放置玩家背包
    PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
    if not PlayerItemControler.PutInItem(IPY_GameWorld.rptItem, curItem, event=[ChConfig.ItemGive_GMMake, False, {"CMD":"MakeItemCount"}]):
    curItem = ItemControler.GetOutPutItemObj(itemID, count, isAuctionItem, curPlayer=curPlayer, isAllAttr=isAllAttr)
    if not playerItemControler.PutInItem(IPY_GameWorld.rptItem, curItem, event=[ChConfig.ItemGive_GMMake, False, {"CMD":"MakeItemCount"}]):
        GameWorld.DebugAnswer(curPlayer, "放入物品失败!")
        
    return