xdh
2019-04-16 2a41f04515a5cc91e285cf00e9330dc035e26765
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py
@@ -153,6 +153,7 @@
    else:
        return
    DoFBHelp(curPlayer, tick)
    curPlayer.SetFaction(ShareDefine.CampType_Justice)
    return
@@ -196,8 +197,8 @@
        guardDict[npcid] = gameFB.GetGameFBDictByKey(FBPlayerDict_GuardNPCCnt%npcid)
    hasRefreshBoss = gameFB.GetGameFBDictByKey(FBPlayerDict_HasRefreshBoss)
    isAutoBoss = gameFB.GetGameFBDictByKey(FBPlayerDict_AutoBoss)
    itemDict = PyGameData.g_gathersoulfbAwardDict.get(curPlayer.GetID(), {})
    lineID = GameWorld.GetGameWorld().GetLineID()
    itemDict = PyGameData.g_gathersoulfbAwardDict.get(lineID, {})
    helpItemInfo = {}
    for wheel, itemList in itemDict.items():
        helpItemInfo[str(wheel)] = FBCommon.GetJsonItemList(itemList)
@@ -539,12 +540,13 @@
    ##掉落奖励 {wheel:[[itemid,itemCnt,isBind]]}
    gameFB = GameWorld.GetGameFB()
    curWheel = gameFB.GetGameFBDictByKey(FBPlayerDict_CurWheel) + 1
    ownerID = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_SingleFBPlayerID)
    if ownerID not in PyGameData.g_gathersoulfbAwardDict:
        PyGameData.g_gathersoulfbAwardDict[ownerID] = {}
    if curWheel not in PyGameData.g_gathersoulfbAwardDict[ownerID]:
        PyGameData.g_gathersoulfbAwardDict[ownerID][curWheel] = []
    PyGameData.g_gathersoulfbAwardDict[ownerID][curWheel].append([itemID, itemCnt, isBind])
    #ownerID = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_SingleFBPlayerID)
    lineID = GameWorld.GetGameWorld().GetLineID()
    if lineID not in PyGameData.g_gathersoulfbAwardDict:
        PyGameData.g_gathersoulfbAwardDict[lineID] = {}
    if curWheel not in PyGameData.g_gathersoulfbAwardDict[lineID]:
        PyGameData.g_gathersoulfbAwardDict[lineID][curWheel] = []
    PyGameData.g_gathersoulfbAwardDict[lineID][curWheel].append([itemID, itemCnt, isBind])
    curPlayer = FBCommon.GetCurSingleFBPlayer()
    if curPlayer:
        DoFBHelp(curPlayer, 0)
@@ -560,7 +562,8 @@
    # 进入离开阶段
    FBCommon.SetFBStep(FB_Step_Over, tick)
    ownerID = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_SingleFBPlayerID)
    itemDict = PyGameData.g_gathersoulfbAwardDict.pop(ownerID, {})
    lineID = GameWorld.GetGameWorld().GetLineID()
    itemDict = PyGameData.g_gathersoulfbAwardDict.pop(lineID, {})
    totalItemList = []
    for itemList in itemDict.values():
        totalItemList += itemList
@@ -568,20 +571,34 @@
    curPlayer = FBCommon.GetCurSingleFBPlayer()
    if not curPlayer:
        #奖励直接发邮件
        PlayerControl.SendMailByKey('JHBagFull2', [ownerID], totalItemList)
        if totalItemList:
            PlayerControl.SendMailByKey('JHBagFull2', [ownerID], totalItemList)
        
        GameWorldProcess.CloseFB(tick)
        return
    needSpace = len(totalItemList)
    emptySpace = ItemCommon.GetItemPackSpace(curPlayer, ShareDefine.rptGatherSoul, needSpace)
    isSendMail = int(needSpace > emptySpace) # 是否发送邮件
    if isSendMail:
        PlayerControl.SendMailByKey('JHBagFull2', [curPlayer.GetPlayerID()], totalItemList)
        GameWorld.DebugLog("背包空间不够,发送邮件: mailItemList=%s" % str(totalItemList), curPlayer.GetPlayerID())
    else:
    if totalItemList:
        needPackSpaceDict = {}
        for itemID, itemCnt, isBind in totalItemList:
            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [ShareDefine.rptGatherSoul],
                                            event=["GatherSoulFB", False, {}])
            curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
            if not curItem:
                return
            packType = ChConfig.GetItemPackType(curItem.GetType())
            needSpace = ItemControler.GetItemNeedPackCount(packType, curItem, itemCnt)
            needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
        isSendMail = False #是否背包不足
        for packType, needSpace in needPackSpaceDict.items():
            if needSpace > ItemCommon.GetItemPackSpace(curPlayer, packType, needSpace):
                isSendMail = True
                break
        if isSendMail:
            PlayerControl.SendMailByKey('JHBagFull2', [curPlayer.GetPlayerID()], totalItemList)
            GameWorld.DebugLog("背包空间不够,发送邮件: mailItemList=%s" % str(totalItemList), curPlayer.GetPlayerID())
        else:
            for itemID, itemCnt, isBind in totalItemList:
                ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [],
                                                event=["GatherSoulFB", False, {}])
            
    fbCfg = GetGatherSoulFBCfg()
    costTime = tick - GameWorld.GetGameWorld().GetOpenFBTick()