hxp
2025-06-30 388823edfe6308cba6f76ca6dc4f20022c5cb2be
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
@@ -90,6 +90,7 @@
value4        已分配到的连胜次数
value5        终结连胜的奖励次数, 只能获得这一次的连胜奖励,有值才显示,分配后设置为0, 优先分配
strValue1        仙盟名
strValue2        仙盟徽章
'''
def GetFWChampionFamilyID(championRecData): return championRecData.GetValue1()
def SetFWChampionFamilyID(championRecData, familyID): return championRecData.SetValue1(familyID)
@@ -103,6 +104,7 @@
def SetFWChampionEndWinCount(championRecData, endWinCount): return championRecData.SetValue5(endWinCount)
def GetFWChampionFamilyName(championRecData): return championRecData.GetStrValue1()
def SetFWChampionFamilyName(championRecData, familyName): return championRecData.SetStrValue1(familyName)
def SetFWChampionFamilyEmblemID(championRecData, emblemID): return championRecData.SetStrValue2(str(emblemID))
''' 参赛人员 Def_UniversalGameRecType_FamilyWarMember
value1        玩家ID
@@ -990,6 +992,7 @@
            championFamilyName = family.GetName()
            SetFWChampionLeaderID(championRecData, family.GetLeaderID())
            SetFWChampionFamilyName(championRecData, championFamilyName)
            SetFWChampionFamilyEmblemID(championRecData, PlayerFamily.GetFamilyEmblemID(family))
        else:
            GameWorld.Log("    冠军仙盟不存在或已经解散了!")
            
@@ -1065,21 +1068,34 @@
    ## 给仙盟排名仙盟拍品奖励
        
    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):
        if rank not in cfgRankAuctionItemDict: