| | |
| | | # 刷新福地物品
|
| | | elif msgType == "MineItemRefresh":
|
| | | playerID, isSuper = dataMsg
|
| | | __DoMineItemRefresh(playerID, curPlayer, isSuper=isSuper)
|
| | | __DoMineItemRefresh(playerID, curPlayer, isSuper=isSuper, queryType=99, queryValue=isSuper)
|
| | |
|
| | | # 地图结算奖励OK
|
| | | elif msgType == "MineAreaAwardGetOK":
|
| | |
| | | __RefreshMineItemSpeed(mineItemData, True)
|
| | |
|
| | | SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx)
|
| | | return True
|
| | | return [areaPlayerID]
|
| | |
|
| | | def __DoCancelPull(playerID, areaPlayerID, itemIndex, reason=""):
|
| | | ## 取消拉取
|
| | |
| | | MapServer_QueryPlayerResult(curPlayer, "MineAreaCancelPull", [areaPlayerID, reason])
|
| | | return
|
| | |
|
| | | def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None):
|
| | | def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None, queryType=0, queryValue=0):
|
| | | '''刷新福地物品
|
| | | @param areaPlayerID: 福地玩家ID,可能是假人
|
| | | @param areaPlayer: 福地玩家实例
|
| | |
| | | GameWorld.DebugLog(" index=%s,randMineID=%s,position=%s,mineType=%s,itemLV=%s" % (index, randMineID, position, mineType, itemLV), areaPlayerID)
|
| | |
|
| | | if isNotify and refreshDict:
|
| | | SyncMineAreaItemInfo(areaPlayerID, refreshDict.keys())
|
| | | SyncMineAreaItemInfo(areaPlayerID, refreshDict.keys(), queryType=queryType, queryValue=queryValue)
|
| | | return refreshDict
|
| | |
|
| | | #// B0 33 福地查看 #tagCGMineAreaView
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def SyncMineAreaItemInfo(areaPlayerID, mineIndexList, notifyPlayerIDListEx=None):
|
| | | def SyncMineAreaItemInfo(areaPlayerID, mineIndexList, notifyPlayerIDListEx=None, queryType=0, queryValue=0):
|
| | | '''某个福地物品变更时同步,会同步给相关玩家
|
| | | @param areaPlayerID: 福地玩家ID,可能是假人
|
| | | @param mineIndexList: 需要同步的矿物索引
|
| | |
| | | if not notifyPlayerIDList:
|
| | | return
|
| | |
|
| | | clientPack = __GetMineAreaInfoPack([[areaPlayerID, mineIndexList]])
|
| | | clientPack = __GetMineAreaInfoPack([[areaPlayerID, mineIndexList]], queryType=queryType, queryValue=queryValue)
|
| | | # 去重同步
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for playerID in set(notifyPlayerIDList):
|
| | |
| | | itemCount = ipyData.GetItemCount()
|
| | | itemLV = ipyData.GetItemLV()
|
| | | awardItemDict[itemID] = awardItemDict.get(itemID, 0) + itemCount
|
| | | awardInfoList.append([GUID, awardTime, workerCount, areaPlayerID, mineID, itemLV, itemID, itemCount])
|
| | | awardInfoList.append([awardTime, workerCount, areaPlayerID, mineID, itemLV, itemID, itemCount])
|
| | |
|
| | | # 通知地图玩家给物品
|
| | | curPlayer.SetDict(MineAreaAwardGetTick, tick)
|
| | |
| | | def __DoMineAreaAwardGetOK(curPlayer, dataMsg):
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | GUIDList, awardItemList = dataMsg
|
| | | _, awardItemList = dataMsg
|
| | | curPlayer.SetDict(MineAreaAwardGetTick, 0)
|
| | |
|
| | | awardMgr = PyDataManager.GetDBPyMineAreaAwardManager()
|
| | | awardDict = awardMgr.playerAreaAwardDict.get(playerID, {})
|
| | | if not awardDict:
|
| | | return
|
| | | GameWorld.DebugLog("福地结算奖励OK: %s" % len(awardDict), playerID)
|
| | |
|
| | | for GUID in GUIDList:
|
| | | awardDict.pop(GUID, None)
|
| | | |
| | | awardMgr.playerAreaAwardDict[playerID] = {}
|
| | | |
| | | SyncMineAwardAward(curPlayer, 1, awardItemList)
|
| | | return
|
| | |
|