From 7f2015aabab2671946a7f034403d09be45f4d39d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 03 九月 2018 17:53:22 +0800 Subject: [PATCH] Fix: 修复活动线无法手动切换的bug; --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py | 109 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 61 insertions(+), 48 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py index 4ac8980..289e5ff 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py +++ b/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) -- Gitblit v1.8.0