8262 【主干】【后端】仙盟宴会及传功优化(答题改为立即给每题奖励,只要在宴会地图即可获得奖励)
去除boss首杀记录查询CD
4个文件已修改
91 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerUniversalGameRec.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyPartyAnswer.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
@@ -121,24 +121,31 @@
            PlayerControl.WorldNotify(0, 'Party_TopPlayer', [topHeroName])
            
        #给参与奖励
        joinReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward')
        answerRWItemReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward2', 1)
        for playerID, ansRightCount in PyGameData.g_partyheroAnswerDict.items():
            if answerRWItemReward and len(answerRWItemReward) == 2:
                ansTotalCount = len(PyGameData.g_familyAnswerPlayerIDDict.get(playerID, []))
                ansWrongCount = max(0, ansTotalCount - ansRightCount)
                isAuctionItem = False
                rightRewardEx, wrongRewardEx = [], []
                rightItemID, wrongItemID = answerRWItemReward
                if rightItemID and ansRightCount:
                    rightRewardEx = [(rightItemID, ansRightCount, isAuctionItem)]
                if wrongItemID and ansWrongCount:
                    wrongRewardEx = [(wrongItemID, ansWrongCount, isAuctionItem)]
                curJoinReward = joinReward + rightRewardEx + wrongRewardEx
            else:
                curJoinReward = joinReward
        joinPlayerIDList = PyGameData.g_partyheroAnswerDict.keys()
        if joinPlayerIDList:
            joinReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward')
            if joinReward:
                PlayerCompensation.SendMailByKey('FamilyParty', [playerID], curJoinReward)
                PlayerCompensation.SendMailByKey('FamilyParty', joinPlayerIDList, joinReward)
        #修改为答完题直接给每题奖励
#        joinReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward')
#        answerRWItemReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward2', 1)
#        for playerID, ansRightCount in PyGameData.g_partyheroAnswerDict.items():
#            if answerRWItemReward and len(answerRWItemReward) == 2:
#                ansTotalCount = len(PyGameData.g_familyAnswerPlayerIDDict.get(playerID, []))
#                ansWrongCount = max(0, ansTotalCount - ansRightCount)
#                isAuctionItem = False
#                rightRewardEx, wrongRewardEx = [], []
#                rightItemID, wrongItemID = answerRWItemReward
#                if rightItemID and ansRightCount:
#                    rightRewardEx = [(rightItemID, ansRightCount, isAuctionItem)]
#                if wrongItemID and ansWrongCount:
#                    wrongRewardEx = [(wrongItemID, ansWrongCount, isAuctionItem)]
#                curJoinReward = joinReward + rightRewardEx + wrongRewardEx
#            else:
#                curJoinReward = joinReward
#            if joinReward:
#                PlayerCompensation.SendMailByKey('FamilyParty', [playerID], curJoinReward)
                
    return
@@ -196,6 +203,15 @@
                    answer = answer.replace('[', '')
                    answer = answer.replace(']', '')
                    PlayerControl.FamilyNotify(familyID, 'Party_Correct', [maxSecond, GameWorld.GbkToCode(answer)])
                for index in xrange(family.GetCount()):
                    member = family.GetAt(index)
                    memPlayer = member.GetPlayer()
                    if memPlayer and memPlayer.GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
                        rightPlayerID = 0
                        answerInfo = str([rightPlayerID])
                        memPlayer.MapServer_QueryPlayerResult(0, 0, "FamilyPartyAnswer", answerInfo, len(answerInfo))
                        break
            else:
                continue
        answerTick = gameWorld.GetDictByKey(FamilyPartyFB_AnswerTick % familyID)
@@ -294,7 +310,8 @@
            PyGameData.g_familyPartyTopInfo = [playerID, playerName]
        msgList = [__GetFamilyAnswerRankList(), PyGameData.g_familyPartyTopInfo[1], PyGameData.g_partyheroAnswerDict[PyGameData.g_familyPartyTopInfo[0]]]
        GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FamilyPartyInfo, msgList)
        #通知玩家可获得贡献
        curPlayer.MapServer_QueryPlayerResult(0, 0, "FamilyPartyAnswer", '', 0)
        #通知答题结果
        answerInfo = str([playerID])
        curPlayer.MapServer_QueryPlayerResult(0, 0, "FamilyPartyAnswer", answerInfo, len(answerInfo))
        
    return
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerUniversalGameRec.py
@@ -144,7 +144,7 @@
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    viewType = clientData.ViewType  # 查看记录的类型
    
    if viewType not in [ShareDefine.Def_UniversalGameRecType_FamilyWarChampion]:
    if viewType not in [ShareDefine.Def_UniversalGameRecType_FamilyWarChampion, ShareDefine.Def_UniversalGameRecType_BossFirstKill]:
        if not GameWorld.RefurbishPlayerTick(curPlayer, ChConfig.TYPE_Player_Tick_Def_ViewUniversalGameRec, tick):
            #间隔未到
            return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -187,18 +187,40 @@
    return
def FamilyPartyAnswerRight(curPlayer):
def FamilyPartyAnswerRight(curPlayer, answerInfo):
    #回答正确,给奖励
    rightPlayerID = answerInfo[0]
    #给本题答题奖励,本地图中的家族成员才给
    answerRWItemReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward2', 1)
    rightItemID, wrongItemID = answerRWItemReward
    playerManager = GameWorld.GetMapCopyPlayerManager()
    for index in xrange(playerManager.GetPlayerCount()):
        player = playerManager.GetPlayerByIndex(index)
        if not player:
            continue
        if player.GetFamilyID() != curPlayer.GetFamilyID():
            continue
        if player.GetPlayerID() == rightPlayerID:
            giveItemID = rightItemID
        else:
            giveItemID = wrongItemID
        itemCount, isAuctionItem = 1, False
        ItemControler.GivePlayerItem(player, giveItemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem])
    if curPlayer.GetPlayerID() != rightPlayerID:
        return
    
    addPoint, addExp = IpyGameDataPY.GetFuncEvalCfg('PartyReward', 2)
    #仙盟贡献度
    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPoint, True, ShareDefine.Def_AddFAVReason_FamilyParty, True)
    #答题经验更新
    PlayerControl.PlayerControl(curPlayer).AddExp(addExp, ShareDefine.Def_ViewExpType_SysEx)
    PlayerControl.FamilyNotify(curPlayer.GetFamilyID(), 'Party_Answer', [curPlayer.GetName()])
    PlayerControl.FamilyNotify(curPlayer.GetFamilyID(), 'Party_Answer', [curPlayer.GetName(), rightItemID])
    curAnswerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, curAnswerCnt + 1)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, curAnswerCnt + 1)
    if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
        DoFBHelp(curPlayer, 0)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyPartyAnswer.py
@@ -15,7 +15,6 @@
#"""Version = 2016-08-12 21:00""" 
#---------------------------------------------------------------------
import GameWorld
import IPY_GameWorld
import GameLogic_FamilyParty
#---------------------------------------------------------------------
@@ -37,8 +36,9 @@
#  @return None
def DoResult(curPlayer, callFunName, funResult, tick):
    playerID = curPlayer.GetPlayerID()
    answerInfo = eval(funResult)
    GameWorld.DebugLog("GY_Query_FamilyPartyAnswer funResult=%s" % funResult, playerID)
    GameLogic_FamilyParty.FamilyPartyAnswerRight(curPlayer)
    GameLogic_FamilyParty.FamilyPartyAnswerRight(curPlayer, answerInfo)
    return