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