ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -650,6 +650,8 @@
                itemDict['IsAuctionItem'] = int(itemInfo[2])
        elif isinstance(itemInfo, int):
            itemDict['ItemID'] = itemInfo
        elif isinstance(itemInfo, dict):
            itemDict = itemInfo
        else: #物品实例
            if not ItemCommon.CheckItemCanUse(itemInfo):
                continue
@@ -681,6 +683,47 @@
    for npcid, HPPer in npcDict.items():
        killList.append({"NPCID":npcid, "HPPer":HPPer})
    return killList
def OnPickUpItem(curPlayer, curItem, tick, overFunc):
    mapItemType = curItem.GetType()
    if mapItemType != ChConfig.Def_ItemType_Money:
        playerID = curPlayer.GetID()
        isEquip = ItemCommon.CheckItemIsEquip(curItem)
        jsonItem = ItemCommon.GetJsonItem(curItem)
        if playerID in PyGameData.g_fbPickUpItemDict:
            if isEquip:
                PyGameData.g_fbPickUpItemDict[playerID].append(jsonItem)
            else:
                isIn = False
                for itemInfo in PyGameData.g_fbPickUpItemDict[playerID]:
                    if itemInfo["ItemID"] == jsonItem["ItemID"] and itemInfo.get("IsBind") == jsonItem.get("IsBind"):
                        itemInfo["Count"] = itemInfo.get("Count", 1)+ jsonItem.get("Count", 1)
                        isIn = True
                        break
                if not isIn:
                    PyGameData.g_fbPickUpItemDict[playerID].append(jsonItem)
        else:
            PyGameData.g_fbPickUpItemDict[playerID] = [jsonItem]
    if overFunc == None:
        return
    playerItemCount = 0
    mapItemManager = GameWorld.GetMapItemManager()
    for index in xrange(mapItemManager.GetMapItemCount()):
        mapItem = mapItemManager.GetMapItemByIndex(index)
        if not mapItem or mapItem.IsEmpty():
            continue
        # 还有属于自己的东西没捡不通知结束
        if mapItem.GetOwnerID() == curPlayer.GetPlayerID():
            playerItemCount += 1
    isItemAllPickUp = (playerItemCount <= 1)
    if isItemAllPickUp:
        overFunc(curPlayer, tick)
    return
#---------------------------------------------------------------------
def SyncDynamicBarrierState(barrierPointList, state, curPlayer=None):
    '''同步动态障碍物是否有效性
@@ -1583,6 +1626,16 @@
        return GameWorld.GetDataByDigitPlace(enterCnt, lineBit)
    return enterCnt
def AddFBCntByItem(curPlayer, itemID, mapID, addCnt):
    ## 物品增加副本次数
    mapID = GetRecordMapID(mapID)
    itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID, itemAddCnt + addCnt)
    Sync_FBPlayerFBInfoData(curPlayer, mapID)
    PlayerControl.NotifyCode(curPlayer, 'AddActivityCount_1', [itemID, mapID, addCnt])
    OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
    return
## 增加玩家进入副本次数
#  @param curPlayer 玩家实例
#  @param fbID 副本id
@@ -1894,6 +1947,11 @@
def BuyFBEnterCount(playerIndex, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
    mapID = clientData.FBID
    if mapID == ChConfig.Def_FBMapID_Love:
        coupleID = PlayerControl.GetCoupleID(curPlayer)
        if not coupleID:
            GameWorld.DebugLog("没有伴侣无法购买情缘副本次数!")
            return
    ipyData = GetFBIpyData(mapID)
    if not ipyData:
        return
@@ -1914,12 +1972,14 @@
        return
    
    if hasBuyCnt >= canBuyCnt:
        GameWorld.DebugLog("购买次数已经用完mapID=%s"%mapID)
        GameWorld.DebugLog("购买次数已经用完mapID=%s,buyTimesVIPPriID=%s,hasBuyCnt=%s >= canBuyCnt=%s" % (mapID, buyTimesVIPPriID, hasBuyCnt, canBuyCnt))
        return
    costGoldDict = IpyGameDataPY.GetFuncEvalCfg('BuyFBCntCost')
    costGold = costGoldDict.get(str(mapID), '0')
    costGold = eval(costGold)
    costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costGold)
    costMoneyTypeInfo = IpyGameDataPY.GetFuncEvalCfg('BuyFBCntCost', 2)
    costType = costMoneyTypeInfo.get(str(mapID), ShareDefine.TYPE_Price_Gold_Paper_Money)
    costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, costType, costGold)
    #GameWorld.Log('costMoneyList=%s,costGold=%s'%(costMoneyList,costGold))
    if not costMoneyList:
        return
@@ -1933,6 +1993,12 @@
    Sync_FBPlayerFBBuyCount(curPlayer, [mapID])
    PlayerControl.NotifyCode(curPlayer, 'FBEnterTimeBuy', [mapID])
    OnFBCountChangeEffectRecoverCount(curPlayer, mapID)
    if mapID == ChConfig.Def_FBMapID_Love:
        coupleID = PlayerControl.GetCoupleID(curPlayer)
        if coupleID:
            addItemList = IpyGameDataPY.GetFuncEvalCfg("LoveFB", 3)
            paramList = [curPlayer.GetPlayerName()]
            PlayerControl.SendMailByKey("BuyLoveFBCntCoupleMail", [coupleID], addItemList, paramList)
    return
def DoFuncOpen_RunDaily(curPlayer): return EventReport.WriteFuncCMEAcceptable(curPlayer, ShareDefine.GameFuncID_RunDaily)