hxp
2019-11-04 84dcfb60fe9025396f13b98c1eee626782e20f8b
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
@@ -420,7 +420,9 @@
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_AllOver, 0) # 新一轮开始,重置状态
    PlayerFamily.DoFamilySort() # 首轮分组前需要强制刷新一次仙盟排行
    
    lastFamilyWarMemDict = copy.deepcopy(PyGameData.g_familyWarMemDict)
    lastFamilyWarMemDict = {}
    for warPlayerID, recData in PyGameData.g_familyWarMemDict.items():
        lastFamilyWarMemDict[warPlayerID] = GetFWMemFamilyID(recData)
    PyGameData.g_familyWarMemDict = {}
    PyGameData.g_familyWarFamilyIDList = []
    universalRecMgr = GameWorld.GetUniversalRecMgr()
@@ -1032,16 +1034,23 @@
    if not family:
        return
    
    familyAllPlayerIDList = []
    familyPlayerIDList = []
    for i in xrange(family.GetCount()):
        member = family.GetAt(i)
        memPlayerID = member.GetPlayerID()
        if memPlayerID not in PyGameData.g_familyWarMemDict:
            continue
        familyAllPlayerIDList.append(memPlayerID)
        recData = PyGameData.g_familyWarMemDict[memPlayerID]
        if GetFWMemFamilyID(recData) != familyID:
            continue
        if not GetFWMemIsJoin(recData):
            continue
        familyPlayerIDList.append(memPlayerID)
    if not familyPlayerIDList:
        familyPlayerIDList = familyAllPlayerIDList
        GameWorld.Log("连胜没有人参赛,收益算仙盟所有人的!familyID=%s,familyAllPlayerIDList=%s" % (familyID, familyAllPlayerIDList))
        
    familyAuctionItemDict = {} # {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,个数], [拍品ID,个数,是否拍品], ...]], ...}
    familyAuctionItemDict[familyID] = [familyPlayerIDList, familyAuctionItemList]
@@ -1056,20 +1065,33 @@
    ## 给仙盟排名仙盟拍品奖励
        
    warWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_StartWorldLV)
    GameWorld.Log("发放排名仙盟拍品奖励: warWorldLV=%s, familyWarIDRankList=%s" % (warWorldLV, familyWarIDRankList))
    cfgRankKey = 1
    cfgRankAuctionItemDict = {}
    rewardWorldLV = 0
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for index in xrange(ipyDataMgr.GetFamilyWarRankAwardCount()):
        ipyData = ipyDataMgr.GetFamilyWarRankAwardByIndex(index)
        if warWorldLV > ipyData.GetWarWorldLV() and cfgRankAuctionItemDict:
        cfgWorldLV = ipyData.GetWarWorldLV()
        if warWorldLV <= cfgWorldLV:
            rewardWorldLV = cfgWorldLV
            break
        elif warWorldLV > cfgWorldLV:
            rewardWorldLV = cfgWorldLV
    GameWorld.Log("发放排名仙盟拍品奖励: warWorldLV=%s, rewardWorldLV=%s, familyWarIDRankList=%s" % (warWorldLV, rewardWorldLV, familyWarIDRankList))
    rewardIpyDataList = IpyGameDataPY.GetIpyGameDataList("FamilyWarRankAward", rewardWorldLV)
    if not rewardIpyDataList:
        GameWorld.ErrLog("找不到仙盟排名对应世界等级奖励!")
        return
    cfgRankKey = 1
    cfgRankAuctionItemDict = {}
    for ipyData in rewardIpyDataList:
        warRank = ipyData.GetWarRank()
        auctionItemList = ipyData.GetRankAuctionItem()
        for rank in range(cfgRankKey, warRank + 1):
            cfgRankAuctionItemDict[rank] = auctionItemList
        cfgRankKey = warRank + 1
    GameWorld.Log("对应世界等级奖励: rewardWorldLV=%s, %s" % (rewardWorldLV, cfgRankAuctionItemDict))
        
    familyAuctionItemDict = {} # {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,个数], [拍品ID,个数,是否拍品], ...]], ...}
    for rank, familyID in enumerate(familyWarIDRankList, 1):
@@ -1082,16 +1104,23 @@
            GameWorld.Log("    rank=%s,familyID=%s,仙盟不存在!" % (rank, familyID))
            continue
        
        familyAllPlayerIDList = []
        familyPlayerIDList = []
        for i in xrange(family.GetCount()):
            member = family.GetAt(i)
            memPlayerID = member.GetPlayerID()
            if memPlayerID not in PyGameData.g_familyWarMemDict:
                continue
            familyAllPlayerIDList.append(memPlayerID)
            recData = PyGameData.g_familyWarMemDict[memPlayerID]
            if GetFWMemFamilyID(recData) != familyID:
                continue
            if not GetFWMemIsJoin(recData):
                continue
            familyPlayerIDList.append(memPlayerID)
        if not familyPlayerIDList:
            familyPlayerIDList = familyAllPlayerIDList
            GameWorld.Log("    排名没有人参赛,收益算仙盟所有人的!familyID=%s,familyAllPlayerIDList=%s" % (familyID, familyAllPlayerIDList))
            
        familyAuctionItemList = cfgRankAuctionItemDict[rank]
        familyAuctionItemDict[familyID] = [familyPlayerIDList, familyAuctionItemList]