| | |
| | | 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
|
| | |
| | | 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):
|
| | | '''同步动态障碍物是否有效性
|
| | |
| | | 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
|
| | |
| | | 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
|
| | |
| | | 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
|
| | |
| | | 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)
|