From fe9b738b1cb89e3b4d320924fceef70a8e1f6fac Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 04 三月 2021 14:24:50 +0800
Subject: [PATCH] 8650 【主干】【BT2】活动规则优化(多活动支持的改为单表模式,增加活动分组编号字段区分不同的活动编号;常规活动改为不受合服影响,合服活动独立出来;累计充值活动、集字活动适配为新模式 master冲突补同步);
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py | 61 +++++++++++++++++++++---------
1 files changed, 42 insertions(+), 19 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
index 43317e3..92d8ea0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
+++ b/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
@@ -176,8 +183,14 @@
for i in xrange(ipyMgr.GetQuestionBankCount()):
ipyData = ipyMgr.GetQuestionBankByIndex(i)
questionID = ipyData.GetID()
+ try:
+ eval(ipyData.GetAnswer())
+ except:
+ GameWorld.ErrLog("答题题库答案异常,不处理! questionID=%s,answer=%s" % (questionID, ipyData.GetAnswer()))
+ continue
allQuestionIDList.append(questionID)
IpyGameDataPY.SetConfigEx('AllQuestionID', allQuestionIDList)
+ GameWorld.Log("加载仙盟宴会答题题库ID! %s" % str(allQuestionIDList))
if not allQuestionIDList:
GameWorld.ErrLog('仙盟宴会题库没有题目!')
return
@@ -196,6 +209,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 +316,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
--
Gitblit v1.8.0