ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -26,8 +26,9 @@
import GameWorldProcess
import PlayerFairyCeremony
import EventReport
import PyGameData
import ItemCommon
import ItemControler
#当前副本地图的状态
(
@@ -45,6 +46,9 @@
FBPlayerDict_TotalPoint = 'XMYH_TotalPoint%s'   # 获得的总仙盟贡献值
FBPlayerDict_HasCollect = 'XMYH_HasCollect%s'   # 是否已采集
def OnFBPlayerOnDay(curPlayer):
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, 0)
    return
##开启副本
# @param tick 时间戳
@@ -190,7 +194,8 @@
            FBCommon.SetFBStep(FB_Step_Fighting, tick)
    elif fbStep == FB_Step_Fighting:
        if not FBCommon.GetFBFuncOpenState(ChConfig.Def_FBMapID_FamilyParty):
            GiveJoinPrize()
            FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0)
            PyGameData.g_familyPartyInfo = []
            FBCommon.SetFBStep(FB_Step_Over, tick)
            FBCommon.DoLogic_FBKickAllPlayer()
            GameWorldProcess.CloseFB(tick)
@@ -219,44 +224,43 @@
def FamilyPartyAnswerRight(curPlayer):
    #回答正确,给奖励
    mapID = GameWorld.GetMap().GetMapID()
    if mapID != ChConfig.Def_FBMapID_FamilyParty:
        return
    playerID = curPlayer.GetID()
    gameWorld = GameWorld.GetGameWorld()
#    mapID = GameWorld.GetMap().GetMapID()
#    if mapID != ChConfig.Def_FBMapID_FamilyParty:
#        return
#
    addPoint, addExp = IpyGameDataPY.GetFuncEvalCfg('PartyReward',2)
    #仙盟贡献度
    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPoint, True, ShareDefine.Def_AddFAVReason_FamilyParty)
    totalPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalPoint%playerID)
    updPoint = totalPoint + addPoint
    gameWorld.SetGameWorldDict(FBPlayerDict_TotalPoint % playerID, updPoint)
    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPoint, True, ShareDefine.Def_AddFAVReason_FamilyParty, True)
    #答题经验更新
    PlayerControl.PlayerControl(curPlayer).AddExp(addExp)
    
    exp = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExp%playerID)
    expPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExpPoint%playerID)
    totalExp = expPoint * ChConfig.Def_PerPointValue + exp
    updTotalExp = totalExp + addExp
    updExp = updTotalExp % ChConfig.Def_PerPointValue
    updExpPoint = updTotalExp / ChConfig.Def_PerPointValue
    gameWorld.SetGameWorldDict(FBPlayerDict_TotalExp % playerID, updExp)
    gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, updExpPoint)
    DoFBHelp(curPlayer, 0)
    curAnswerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, curAnswerCnt+1)
    if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
        DoFBHelp(curPlayer, 0)
    return
def OnFamilyPartyStateChange(state, tick):
    #活动状态变更
    GameWorld.DebugLog('    仙盟宴会活动状态变更 state=%s'%state)
#    if state == 0:
#        playerManager = GameWorld.GetPlayerManager()
#        for i in xrange(playerManager.GetPlayerCount()):
#            curPlayer = playerManager.GetPlayerByIndex(i)
#            if not curPlayer or curPlayer.IsEmpty():
#                continue
#            #答对题或者进过图的给参与奖励
#            curAnswerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt)
#            if FBCommon.GetEnterFBCount(curPlayer, ChConfig.Def_FBMapID_FamilyParty) or curAnswerCnt:
#                GiveJoinPrize(curPlayer)
    mapID = GameWorld.GetMap().GetMapID()
    if mapID != ChConfig.Def_FBMapID_FamilyParty:
        return
    GameWorld.DebugLog('    仙盟宴会活动状态变更 state=%s'%state)
    if state == 1:
        GameWorld.GetGameWorld().SetGameWorldDict(Map_FamilyPartyFB_StartTick, tick)
@@ -264,21 +268,15 @@
    
    return
def GiveJoinPrize():
    #参与奖
    joinAward = IpyGameDataPY.GetFuncCfg('PartyReward')
    if not joinAward:
        return
    copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
    for i in xrange(copyMapPlayerManager.GetPlayerCount()):
        curPlayer = copyMapPlayerManager.GetPlayerByIndex(i)
        if curPlayer == None or curPlayer.IsEmpty():
            continue
        PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, joinAward, True, ShareDefine.Def_AddFAVReason_FamilyParty)
    return
#
#def GiveJoinPrize(curPlayer):
#    #参与奖
#    joinAward = IpyGameDataPY.GetFuncCfg('PartyReward')
#    if not joinAward:
#        return
#
#    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, joinAward, True, ShareDefine.Def_AddFAVReason_FamilyParty)
#    return
@@ -319,22 +317,29 @@
    gameWorld = GameWorld.GetGameWorld()
    playerID = curPlayer.GetPlayerID()
    totalExp = FBCommon.GetFBAreaRewardExp(gameWorld, playerID)
    curAnswerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt)
    addPoint, addExp = IpyGameDataPY.GetFuncEvalCfg('PartyReward',2)
    exp = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExp%playerID)
    expPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExpPoint%playerID)
    totalExp = totalExp + expPoint * ChConfig.Def_PerPointValue + exp
    totalExp = totalExp + expPoint * ChConfig.Def_PerPointValue + exp + addExp * curAnswerCnt
    exp = totalExp % ChConfig.Def_PerPointValue
    expPoint = totalExp / ChConfig.Def_PerPointValue
    
    totalPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalPoint%playerID)
    totalPoint += IpyGameDataPY.GetFuncCfg('PartyReward') #加参与奖
    #totalPoint += IpyGameDataPY.GetFuncCfg('PartyReward') #加参与奖
    totalPoint += addPoint * curAnswerCnt
    hasCollect = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasCollect%playerID)
    getCnt = gameWorld.GetGameWorldDictByKey(ChConfig.Map_Player_AreaReward_GetCnt%playerID)
    isFull = 1 if getCnt >= IpyGameDataPY.GetFuncCfg('FamilyPartyAreaAward', 3) else 0
    helpDict = {FBCommon.Help_exp:exp, FBCommon.Help_expPoint:expPoint,FBCommon.Help_score:totalPoint, "hasCollect":hasCollect, "isFullExp":isFull}
    if PyGameData.g_familyPartyInfo:
        rankList = []
        for i, info in enumerate(PyGameData.g_familyPartyInfo[0], 1):
            rankList.append({"rank":i, "name":info[1], "cnt":info[2]})
        helpDict['familyPartyRank'] = rankList
        helpDict['familyPartyTop'] = {'name':PyGameData.g_familyPartyInfo[1], "cnt":PyGameData.g_familyPartyInfo[2]}
    GameWorld.DebugLog("DoFBHelp %s" % helpDict, playerID)
    FBCommon.Notify_FBHelp(curPlayer, helpDict)
    return
@@ -349,6 +354,11 @@
    hasCollect = GameWorld.GetGameWorld().GetGameWorldDictByKey(FBPlayerDict_HasCollect%curPlayer.GetID())
    if hasCollect:
        PlayerControl.NotifyCode(curPlayer, 'Party_HadCollected')
        return
    needSpace = len(IpyGameDataPY.GetFuncEvalCfg('FamilyPartyDesk', 3))
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
    if needSpace > packSpace:
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
        return
    return True
@@ -372,6 +382,9 @@
    
    GameWorld.DebugLog('    宴会采集成功!', playerID)
    #给奖励
    itemAward = IpyGameDataPY.GetFuncEvalCfg('FamilyPartyDesk', 3)
    for itemID, itemCount, isBind in itemAward:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
    addPoint = IpyGameDataPY.GetFuncCfg('FamilyPartyDesk')
    PlayerControl.NotifyCode(curPlayer, 'Party_CollectSuccess', [addPoint])
    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPoint, True, ShareDefine.Def_AddFAVReason_FamilyParty)