From 5619e084f4f0e33e30d92cfe5c9ab78c13243171 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 九月 2019 19:53:48 +0800
Subject: [PATCH] 8262 【主干】【后端】仙盟宴会及传功优化
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py | 89 +++++++---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 12 +
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py | 284 +++++++++++------------------------
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 12 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 7
10 files changed, 188 insertions(+), 236 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index 9a67be1..3f3a36e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -856,7 +856,8 @@
PlayerControl.WorldNotify(0, notifyKey, paramList)
dictName = ShareDefine.Def_Notify_WorldKey_DailyActionState % dailyActionID
- if gameWorld.GetDictByKey(dictName) == state:
+ beforeState = gameWorld.GetDictByKey(dictName)
+ if beforeState == state:
#已经是这个状态了
continue
@@ -870,7 +871,7 @@
#更新字典值
gameWorld.SetDict(dictName, state)
GameWorld.Log("日常活动状态变更: dailyActionID=%s,state=%s,dictName=%s" % (dailyActionID, state, dictName))
- __DoLogic_GameServer_ActionState(dictName, state)
+ __DoLogic_GameServer_ActionState(dictName, state, beforeState)
return
@@ -1311,7 +1312,7 @@
# @remarks
def __DoLogic_GameServer_ActionState(dictName, isOpen, beforeState=0):
#仙盟宴会
- if dictName == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty:
+ if dictName == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty:
PlayerFamilyParty.FamilyPartyStateChange(isOpen, beforeState)
#仙盟联赛
elif dictName == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyWar:
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
index 0006ff8..43317e3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
@@ -30,11 +30,12 @@
import random
-FamilyPartyFB_QuestionID = 'FamilyPartyFB_QuestionID%s' #当前题ID
-FamilyPartyFB_QuestionTick = 'FamilyPartyFB_QuestionTick%s' #当前题出题时间
-FamilyPartyFB_AnswerTick = 'FamilyPartyFB_AnswerTick%s' #答对时间
+FamilyPartyFB_HisQuestionID = 'FamParty_HisQuestionID%s' #当前题ID - 不重置, 参数 familyID
+FamilyPartyFB_QuestionID = 'FamParty_QuestionID%s' #当前题ID - 答对会重置, 参数 familyID
+FamilyPartyFB_QuestionTick = 'FamParty_QuestionTick%s' #当前题出题时间, 参数 familyID
+FamilyPartyFB_AnswerTick = 'FamParty_AnswerTick%s' #答对时间, 参数 familyID
-AnswerState = 2 #开始答题活动状态
+AnswerState = 1 #开始答题活动状态
## 玩家登录
# @param None
# @return None
@@ -54,7 +55,7 @@
def NotifyFamilyPartyQuestion(curPlayer):
#刚登录的或刚进仙盟的补发最近的题目
gameWorld = GameWorld.GetGameWorld()
- state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty)
+ state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
if state != AnswerState:
return
curFamilyid = curPlayer.GetFamilyID()
@@ -68,30 +69,34 @@
def FamilyPartyStateChange(state, beforeState=0):
#活动状态变更
-
- if state == 1:
+ if state == beforeState:
+ return
+
+ if state == AnswerState:
PyGameData.g_questionIDHistory = {}
PyGameData.g_familyAnswerDict = {}
PyGameData.g_familyPartyTopInfo = []
PyGameData.g_partyheroAnswerDict = {}
+ PyGameData.g_familyAnswerPlayerIDDict = {}
gameWorld = GameWorld.GetGameWorld()
familyManager = GameWorld.GetFamilyManager()
for i in range(0, familyManager.GetCount()):
family = familyManager.GetAt(i)
familyID = family.GetID()
gameWorld.SetDict(FamilyPartyFB_QuestionID % familyID, 0)
+ gameWorld.SetDict(FamilyPartyFB_HisQuestionID % familyID, 0)
gameWorld.SetDict(FamilyPartyFB_AnswerTick % familyID, 0)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FamilyPartyInfo, [])
if state == 0:
#活动结算 前3名仙盟、答题王
- GameWorld.Log(" 仙盟宴会结算 g_familyAnswerDict=%s, g_familyPartyTopInfo=%s"%(PyGameData.g_familyAnswerDict, PyGameData.g_familyPartyTopInfo))
+ GameWorld.Log("仙盟宴会结算 g_familyAnswerDict=%s, g_familyPartyTopInfo=%s" % (PyGameData.g_familyAnswerDict, PyGameData.g_familyPartyTopInfo))
noneStr = 'null'
- topfamilyNameList = [noneStr,noneStr,noneStr]
+ topfamilyNameList = [noneStr, noneStr, noneStr]
if PyGameData.g_familyAnswerDict:
sortFamilyList = __GetFamilyAnswerRankList()
- GameWorld.DebugLog(" 宴会结束 sortFamilyList=%s"%sortFamilyList)
+ GameWorld.DebugLog(" 宴会结束 sortFamilyList=%s" % sortFamilyList)
redPackID = IpyGameDataPY.GetFuncCfg('PartyReward', 4)
for i, familyInfo in enumerate(sortFamilyList):
familyID, familyName = familyInfo[:2]
@@ -102,10 +107,8 @@
continue
PlayerFamilyRedPacket.CreatNewFamilyRedPacket(family, family.GetLeaderID(), redPackID)
- if beforeState == AnswerState:
- PlayerControl.WorldNotify(0, 'Party_TopThree', topfamilyNameList)
+ PlayerControl.WorldNotify(0, 'Party_TopThree', topfamilyNameList)
-
if PyGameData.g_familyPartyTopInfo:
topHeroID, topHeroName = PyGameData.g_familyPartyTopInfo[:2]
rewardInfo = IpyGameDataPY.GetFuncEvalCfg('PartyReward', 3)
@@ -116,14 +119,27 @@
PlayerCompensation.SendPersonalItemMailEx('', content, day, [topHeroID], itemList)
PlayerControl.WorldNotify(0, 'Party_TopPlayer', [topHeroName])
-
- #给参与奖励
- joinPlayerIDList = PyGameData.g_partyheroAnswerDict.keys()
- if joinPlayerIDList:
- joinReward = IpyGameDataPY.GetFuncEvalCfg('PartyReward')
- if joinReward:
- 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
def __GetFamilyAnswerRankList():
@@ -150,7 +166,7 @@
def FamilyParty_Process(tick):
#开始出题
gameWorld = GameWorld.GetGameWorld()
- state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty)
+ state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
if state != AnswerState:
return
allQuestionIDList = IpyGameDataPY.GetConfigEx('AllQuestionID')
@@ -173,7 +189,7 @@
if lastQuestionID:
#还有题未答
maxSecond = IpyGameDataPY.GetFuncCfg('FairyCorrectAnswer')
- if tick - gameWorld.GetDictByKey(FamilyPartyFB_QuestionTick % familyID) > maxSecond*1000:
+ if tick - gameWorld.GetDictByKey(FamilyPartyFB_QuestionTick % familyID) > maxSecond * 1000:
ipyData = IpyGameDataPY.GetIpyGameData('QuestionBank', lastQuestionID)
if ipyData:
answer = ipyData.GetAnswer()
@@ -198,6 +214,7 @@
break
gameWorld.SetDict(FamilyPartyFB_QuestionID % familyID, questionID)
+ gameWorld.SetDict(FamilyPartyFB_HisQuestionID % familyID, questionID)
gameWorld.SetDict(FamilyPartyFB_QuestionTick % familyID, tick)
PlayerControl.FamilyNotify(familyID, 'Party_Topic', [questionID])
@@ -207,19 +224,31 @@
def OnTalkFamily(curPlayer, content, tick):
gameWorld = GameWorld.GetGameWorld()
- state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty)
+ state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
if state != AnswerState:
return
+ playerID = curPlayer.GetID()
curFamilyid = curPlayer.GetFamilyID()
if not curFamilyid:
return
+
+ ## 添加玩家参与答题的题目ID,只要在本地图答题期间仙盟发送聊天信息就算
+ ## 在每题中间有5秒缓冲,在此期间可能速度慢的玩家还在回答上一题,在缓冲期间题目ID为0,所以添加题目ID需用不重置的历史题目ID
+ if curPlayer.GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
+ if playerID not in PyGameData.g_familyAnswerPlayerIDDict:
+ PyGameData.g_familyAnswerPlayerIDDict[playerID] = []
+ answerQuestionIDList = PyGameData.g_familyAnswerPlayerIDDict[playerID]
+ hisQuestionID = gameWorld.GetDictByKey(FamilyPartyFB_HisQuestionID % curFamilyid)
+ if hisQuestionID and hisQuestionID not in answerQuestionIDList:
+ answerQuestionIDList.append(hisQuestionID)
+
questionID = gameWorld.GetDictByKey(FamilyPartyFB_QuestionID % curFamilyid)
if not questionID:
return
ipyData = IpyGameDataPY.GetIpyGameData('QuestionBank', questionID)
if not ipyData:
- GameWorld.ErrLog('仙盟宴会答题 该题不存在,异常 questionID=%s, 重新出题'%questionID)
+ GameWorld.ErrLog('仙盟宴会答题 该题不存在,异常 questionID=%s, 重新出题' % questionID)
gameWorld.SetDict(FamilyPartyFB_QuestionID % curFamilyid, 0)
gameWorld.SetDict(FamilyPartyFB_QuestionTick % curFamilyid, 0)
return
@@ -235,17 +264,15 @@
PlayerControl.NotifyCode(curPlayer, 'FamilyNoIntoParty')
return
- playerID = curPlayer.GetID()
- GameWorld.DebugLog(" answer=%s ChContent=%s"%(answerList, ChContent), playerID)
-
+ GameWorld.DebugLog(" answer=%s ChContent=%s" % (answerList, ChContent), playerID)
if isRight:
- GameWorld.DebugLog(" 答对了! %s"%playerID)
+ GameWorld.DebugLog(" 答对了! %s" % playerID)
playerName = curPlayer.GetName()
- gameWorld.SetDict(FamilyPartyFB_QuestionID%curFamilyid, 0)
- gameWorld.SetDict(FamilyPartyFB_AnswerTick%curFamilyid, tick)
+ gameWorld.SetDict(FamilyPartyFB_QuestionID % curFamilyid, 0)
+ gameWorld.SetDict(FamilyPartyFB_AnswerTick % curFamilyid, tick)
if curFamilyid in PyGameData.g_familyAnswerDict:
- PyGameData.g_familyAnswerDict[curFamilyid][0] +=1
+ PyGameData.g_familyAnswerDict[curFamilyid][0] += 1
PyGameData.g_familyAnswerDict[curFamilyid][1] = tick
else:
familyName = PlayerFamily.GetFamilyName_ByID(curFamilyid)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
index 74a775a..88cb507 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -76,7 +76,8 @@
g_questionIDHistory = {}#出过的题记录 {familyid:[出过的题id,..]}
g_familyAnswerDict = {} #仙盟答题数量 {familyid:[答题数量,tick],..}
g_familyPartyTopInfo = [] #仙盟宴会答题王 [playerID,名字]
-g_partyheroAnswerDict = {} #仙盟宴会玩家答题数量 {playerid:答题数量,..}
+g_partyheroAnswerDict = {} #仙盟宴会玩家答对题目数量 {playerid:答题数量,..}
+g_familyAnswerPlayerIDDict = {} #仙盟宴会玩家参与答题数量 {playerID:[题目ID, ...], ...}
g_bourseItemTradingTimeDict = {} # 物品开始交易的时间记录 {guid:tick}
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index c038414..e15e43c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1466,7 +1466,9 @@
DailyActionID_AuctionItem, # 拍卖行上架/竞拍 26
DailyActionID_LeiFaBoss, # 雷罚boss 27
DailyActionID_CrossPenglai, # 跨服蓬莱仙境Boss 28
-) = range(1, 28 + 1)
+DailyActionID_FamilyChuanGong, # 仙盟传功 29
+DailyActionID_FamilyParty, # 仙盟宴会 30
+) = range(1, 30 + 1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c9ab7c1..8c9a392 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3607,7 +3607,14 @@
Def_Player_Dict_ElderBattlefieldStage = "ElderBattlefieldStage" # 本次达到阶段
#仙盟宴会
+Def_Player_Dict_FamilyPartyJoinSign = "FamilyPartyJoinSign" # 今日参与宴会标记
Def_Player_Dict_FamilyPartyAnswerCnt = "FamilyPartyAnswerCnt" # 答题数量
+Def_Player_Dict_FamilyPartySitState = "FamilyPartySitState" # 是否已打坐传功
+Def_Player_Dict_FamilyPartyHelpSitCount = "FamilyPartyHelpSitCount" # 已经帮助传功次数
+Def_Player_Dict_FamilyPartyCollectState = "FamilyPartyCollectState" # 是否已采集
+Def_Player_Dict_FamilyPartyTotalExp = "FamilyPartyTotalExp" # 获得的总经验
+Def_Player_Dict_FamilyPartyTotalExpPoint = "FamilyPartyTotalExpPoint" # 获得的总经验点
+Def_Player_Dict_FamilyPartyTotalPoint = "FamilyPartyTotalPoint" # 获得的总仙盟贡献值
#虚拟背包物品数据
Def_PDict_VPackItem = "VPackItem_%s_%s" # 虚拟背包物品数据, 参数(背包类型, 位置索引)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index 65974e4..daded9d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -798,6 +798,18 @@
#执行副本逻辑
return callFunc(curPlayer, mapID, lineID)
+## 是否可以获得副本地图区域经验
+def OnCanGetAreaExp(curPlayer, mapID):
+ do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCanGetAreaExp"))
+
+ if callFunc == None:
+ return True
+
+ #执行副本逻辑
+ return callFunc(curPlayer)
+
## 是否可以开始收集
# @param curPlayer 当前玩家
# @param curNPC 物品NPC
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 8e6064a..9f102df 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
@@ -24,7 +24,6 @@
import GameWorld
import PlayerFamily
import IpyGameDataPY
-import GameWorldProcess
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerActLogin
@@ -34,39 +33,30 @@
import ItemControler
import Item_AddLV
import PlayerTalk
-
-#当前副本地图的状态
-(
-FB_Step_Open, # 地图开启
-FB_Step_Fighting, # 战斗中
-FB_Step_Over, # 副本关闭
-) = range(3)
+import PlayerActivity
#---战盟副本---
-Map_FamilyPartyFB_StartTick = "Map_FamilyPartyFB_StartTick" # 副本开始时间
-GameFBDict_LastEnterFbDay = 'LastEnterFbDay_%s' #上次进入活动的开服天
-FBPlayerDict_TotalExp = 'XMYH_TotalExp%s' # 获得的总经验
-FBPlayerDict_TotalExpPoint = 'XMYH_TotalExpPoint%s' # 获得的总经验点
-FBPlayerDict_TotalPoint = 'XMYH_TotalPoint%s' # 获得的总仙盟贡献值
-FBPlayerDict_HasCollect = 'XMYH_HasCollect%s' # 是否已采集
-FBPlayerDict_HasSit = 'XMYH_HasSit%s' # 是否已传功
FBPlayerDict_TagPlayerID = 'XMYH_TagPlayerID%s' # 邀请传功目标玩家ID
-FBPlayerDict_HelpCount = 'XMYH_HelpCount%s' # 已经帮助传功次数
-g_familyMapPlayerIDDict = {}#{lineid:[playerid,..]}
-def OnFBPlayerOnDay(curPlayer):
+g_familyMapPlayerIDDict = {}#{lineID:[playerID,..]}
+
+def OnDayFamilyPartyPlayer(curPlayer):
+ GameWorld.DebugLog("重置仙盟宴会相关数据,含传功!", curPlayer.GetPlayerID())
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyJoinSign, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartySitState, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyHelpSitCount, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyCollectState, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExp, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExpPoint, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalPoint, 0)
return
-
##开启副本
# @param tick 时间戳
# @return 返回值无意义
# @remarks 开启副本
def OnOpenFB(tick):
- gameFB = GameWorld.GetGameFB()
- gameFB.ClearAllPlayerGameFBDict() # 清除所有玩家对应的副本字典信息
- gameFB.SetGameFBDict(ChConfig.Map_FBDict_NotifyStart, 0)
return
@@ -75,8 +65,9 @@
# @return 无意义
# @remarks
def OnCloseFB(tick):
- #副本踢出玩家
- FBCommon.DoLogic_FBKickAllPlayer()
+ global g_familyMapPlayerIDDict
+ lineID = GameWorld.GetGameWorld().GetLineID()
+ g_familyMapPlayerIDDict.pop(lineID, None)
return
@@ -121,26 +112,6 @@
# @param tick 时间戳
# @return
def OnChangeMapAsk(ask, tick):
- GameWorld.DebugLog("OnChangeMapAsk CopyMapID=%s" % (ask.GetCopyMapID()))
- playerIDStr = ask.GetMsg()
- GameWorld.DebugLog("OnChangeMapAsk playerIDStr=%s" % playerIDStr)
- #携带玩家ID入场
- if playerIDStr in ['', '0']:
- return IPY_GameWorld.cmeCustom
- playerID = int(playerIDStr)
-#
-# # 判断是否已经进场过
-# gameFB = GameWorld.GetGameFB()
-# fbStep = gameFB.GetFBStep()
-#
-# GameWorld.DebugLog("OnChangeMapAsk fbStep=%s" % fbStep)
-# # 超过准备阶段,如果已经进去过不让再进
-# openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
-# isEnter = GameWorld.GetGameWorld().GetGameWorldDictByKey(GameFBDict_LastEnterFbDay % playerID) == openServerDay + 1
-# GameWorld.DebugLog("OnChangeMapAsk isEnter=%s" % isEnter)
-# if isEnter:
-# return IPY_GameWorld.cmeCustom, "GeRen_liubo_676165"
- #可进入
return IPY_GameWorld.cmeAccept
@@ -156,35 +127,12 @@
if not __CheckEnter(curPlayer, mapID):
PlayerControl.PlayerLeaveFB(curPlayer)
return
- gameFB = GameWorld.GetGameFB()
- gameWorld = GameWorld.GetGameWorld()
- closeFB_RemainTick = __GetRemainTick(tick)
- if not closeFB_RemainTick:
- PlayerControl.PlayerLeaveFB(curPlayer)
- return
- curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, closeFB_RemainTick, True)
- GameWorld.DebugLog('closeFB_RemainTick=%s' % closeFB_RemainTick)
-
- openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
- if gameWorld.GetGameWorldDictByKey(GameFBDict_LastEnterFbDay % playerID) != openServerDay + 1:
- gameWorld.SetGameWorldDict(GameFBDict_LastEnterFbDay % playerID, openServerDay + 1)
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExp % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalPoint % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_HasCollect % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_HasSit % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_TagPlayerID % playerID, 0)
- gameWorld.SetGameWorldDict(FBPlayerDict_HelpCount % playerID, 0)
+ gameWorld = GameWorld.GetGameWorld()
+ partyActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
+ if partyActionState:
+ __DoEnterJoinFamilyParty(curPlayer)
- FBCommon.ClearAreaRewardRecord(playerID)
-
- FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_FamilyParty)
- PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Party)
- EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
- PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
- PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
- PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FamilyParty, 1)
lineID = GameWorld.GetGameWorld().GetLineID()
if lineID not in g_familyMapPlayerIDDict:
g_familyMapPlayerIDDict[lineID] = []
@@ -197,17 +145,30 @@
if not curPlayer:
continue
DoFBHelp(curPlayer, tick, True)
-
+
return
+def __DoEnterJoinFamilyParty(curPlayer):
+ ## 玩家正式开始参与仙盟宴会,因为多个仙盟活动可能共用该地图,玩家可能活动开始时已经在该地图
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyJoinSign):
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyJoinSign, 1)
+
+ GameWorld.DebugLog("玩家参加仙盟宴会!", curPlayer.GetPlayerID())
+ #FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_FamilyParty)
+ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyParty)
+ PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Party)
+ EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
+ PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
+ PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
+ PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FamilyParty, 1)
+ return
-def __GetRemainTick(tick):
- ##活动剩余毫秒
- mapID = GameWorld.GetMap().GetMapID()
- startTick = GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FamilyPartyFB_StartTick)
- closeFB_RemainTick = max(0, FBCommon.GetFBLineStepTime(mapID)[0] * 1000 - (tick - startTick))
- return closeFB_RemainTick
-
+## 是否可以获得副本地图区域经验
+def OnCanGetAreaExp(curPlayer):
+ gameWorld = GameWorld.GetGameWorld()
+ partyActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
+ return partyActionState
##副本定时器
# @param tick 时间戳
@@ -217,46 +178,17 @@
familyID = GameWorld.GetGameWorld().GetPropertyID()
if not familyID:
return
- gameFB = GameWorld.GetGameFB()
- fbStep = gameFB.GetFBStep()
-
- #GameWorld.DebugLog(" OnProcess...")
- if fbStep == FB_Step_Open:
- if FBCommon.GetFBFuncOpenState(ChConfig.Def_FBMapID_FamilyParty):
- FBCommon.SetFBStep(FB_Step_Fighting, tick)
- elif fbStep == FB_Step_Fighting:
- if not FBCommon.GetFBFuncOpenState(ChConfig.Def_FBMapID_FamilyParty):
- FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0)
- PyGameData.g_familyPartyInfo = []
- FBCommon.SetFBStep(FB_Step_Over, tick)
- #FBCommon.DoLogic_FBKickAllPlayer()
- #GameWorldProcess.CloseFB(tick)
- else:
- #FBCommon.DoLogicAreaReward("FamilyPartyAreaAward", tick)
- FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 5000)
-
- mapID = GameWorld.GetMap().GetMapID()
- notifyIndex = gameFB.GetGameFBDictByKey(ChConfig.Map_FBDict_NotifyStart)
- notifySecondList = FBCommon.GetFBLineStepTime(mapID)[1]
- if notifyIndex < len(notifySecondList):
- notifySecond = notifySecondList[notifyIndex]
- remaindTick = max(0, __GetRemainTick(tick) - 1000)
- if remaindTick <= (notifySecond + 1) * 1000:
- #remaindSecond = remaindTick / 1000
-
- PlayerControl.FamilyNotify(familyID, "Party_OverTime", [notifySecond])
-
- GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_FBDict_NotifyStart, notifyIndex + 1)
-
+
+ gameWorld = GameWorld.GetGameWorld()
+ partyActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
+ if partyActionState:
+ FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 5000)
+
return
def FamilyPartyAnswerRight(curPlayer):
#回答正确,给奖励
-# mapID = GameWorld.GetMap().GetMapID()
-# if mapID != ChConfig.Def_FBMapID_FamilyParty:
-# return
-#
addPoint, addExp = IpyGameDataPY.GetFuncEvalCfg('PartyReward', 2)
#仙盟贡献度
@@ -274,47 +206,22 @@
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
-
- if state:
- if not GameWorld.GetGameWorld().GetGameWorldDictByKey(Map_FamilyPartyFB_StartTick):
- GameWorld.GetGameWorld().SetGameWorldDict(Map_FamilyPartyFB_StartTick, tick)
+
+ GameWorld.DebugLog('仙盟宴会活动状态变更 state=%s' % state)
+ if state == 1:
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not curPlayer or curPlayer.IsEmpty():
+ continue
+ __DoEnterJoinFamilyParty(curPlayer)
else:
- GameWorld.GetGameWorld().SetGameWorldDict(Map_FamilyPartyFB_StartTick, 0)
+ PyGameData.g_familyPartyInfo = []
+
return
-
-#
-#def GiveJoinPrize(curPlayer):
-# #参与奖
-# joinAward = IpyGameDataPY.GetFuncCfg('PartyReward')
-# if not joinAward:
-# return
-#
-# PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, joinAward, True, ShareDefine.Def_AddFAVReason_FamilyParty)
-# return
-
-
-##获得玩家传入副本需要携带的信息
-# @param curPlayer 玩家实例
-# @param lineId 分线ID
-# @return 字符串
-# @remarks
-def GetPlayerResetWorldPosFBMsg(curPlayer, lineId):
- return '%s' % (curPlayer.GetPlayerID())
##玩家退出家族处理
@@ -323,17 +230,8 @@
# @return 返回值无意义
def OnLeaveFamily(curPlayer, tick):
#GameWorld.DebugLog("OnLeaveFamily...")
- curPlayerID = curPlayer.GetPlayerID()
-
PlayerControl.PlayerLeaveFB(curPlayer)
return
-
-
-## 是否副本复活
-# @param None
-# @return 是否副本复活
-def OnPlayerReborn():
- return True
##获得副本帮助信息
@@ -342,23 +240,24 @@
# @return 无意义
# @remarks 用于通知阵营比分条
def DoFBHelp(curPlayer, tick, isSyncPlayerID=False):
- #gameFB = GameWorld.GetGameFB()
gameWorld = GameWorld.GetGameWorld()
+ chuangongActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyChuanGong)
+ partyActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
+
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 + addExp * curAnswerCnt
+ exp = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalExp)
+ expPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalExpPoint)
+ 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 = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalPoint)
#totalPoint += IpyGameDataPY.GetFuncCfg('PartyReward') #加参与奖
totalPoint += addPoint * curAnswerCnt
- hasCollect = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasCollect % playerID)
- hasSit = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasSit % playerID)
+ hasCollect = int(curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyCollectState) or not partyActionState) # 非活动期间也同步已采集,前端根据此状态控制按钮显隐
+ hasSit = int(curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartySitState) or not chuangongActionState) # 非活动期间也同步已传功,前端根据此状态控制按钮显隐
helpDict = {FBCommon.Help_exp:exp, FBCommon.Help_expPoint:expPoint, FBCommon.Help_score:totalPoint, "hasCollect":hasCollect, "hasSit":hasSit}
if PyGameData.g_familyPartyInfo:
@@ -383,7 +282,11 @@
# @return 无意义
# @remarks
def OnCanCollect(curPlayer, curNPC, tick):
- hasCollect = GameWorld.GetGameWorld().GetGameWorldDictByKey(FBPlayerDict_HasCollect % curPlayer.GetID())
+ partyActionState = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
+ if not partyActionState:
+ PlayerControl.NotifyCode(curPlayer, 'Party_NotInPartyTime')
+ return
+ hasCollect = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyCollectState)
if hasCollect:
PlayerControl.NotifyCode(curPlayer, 'Party_HadCollected')
return
@@ -411,8 +314,8 @@
# @remarks
def OnCollectOK(curPlayer, npcID, tick):
playerID = curPlayer.GetID()
- gameWorld = GameWorld.GetGameWorld()
- gameWorld.SetGameWorldDict(FBPlayerDict_HasCollect % playerID, 1)
+ #gameWorld = GameWorld.GetGameWorld()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyCollectState, 1)
GameWorld.DebugLog(' 宴会采集成功!', playerID)
#给奖励
@@ -423,9 +326,9 @@
PlayerControl.NotifyCode(curPlayer, 'Party_CollectSuccess', [addPoint])
PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPoint, True, ShareDefine.Def_AddFAVReason_FamilyParty)
- totalPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalPoint % playerID)
+ totalPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalPoint)
updPoint = totalPoint + addPoint
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalPoint % playerID, updPoint)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalPoint, updPoint)
DoFBHelp(curPlayer, 0)
return
@@ -438,19 +341,13 @@
if expViewType != ShareDefine.Def_ViewExpType_SysEx:
return
- gameWorld = GameWorld.GetGameWorld()
- playerID = curPlayer.GetID()
- exp = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExp % playerID)
- expPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExpPoint % playerID)
- newTotalExp = expPoint*ChConfig.Def_PerPointValue+exp+addExp
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExp % playerID, newTotalExp%ChConfig.Def_PerPointValue)
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, newTotalExp/ChConfig.Def_PerPointValue)
-
-
- #GameWorld.DebugLog("OnGetExp() addExp=%s,updTotalExp=%s"
- # % (addExp, newTotalExp), playerID)
-
+ exp = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalExp)
+ expPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyTotalExpPoint)
+ newTotalExp = expPoint * ChConfig.Def_PerPointValue + exp + addExp
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExp, newTotalExp % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExpPoint, newTotalExp / ChConfig.Def_PerPointValue)
return
+
##玩家退出副本
# @param curPlayer 玩家实例
# @param tick 时间戳
@@ -485,7 +382,7 @@
if curPlayer.GetPlayerAction() in [IPY_GameWorld.paSit, IPY_GameWorld.paPreparing]:
GameWorld.DebugLog('邀请打坐,玩家已处于打坐或采集状态', playerID)
return
- hasSit = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasSit % playerID)
+ hasSit = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartySitState)
if hasSit:
GameWorld.Log('邀请打坐,玩家已打坐过一次', playerID)
return
@@ -516,7 +413,7 @@
#给打坐奖励
gameWorld = GameWorld.GetGameWorld()
playerID = curPlayer.GetID()
- hasSit = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasSit % playerID)
+ hasSit = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartySitState)
if hasSit:
GameWorld.Log('打坐结束给奖励,玩家已打坐过一次', playerID)
return
@@ -534,14 +431,11 @@
reExp = PlayerControl.GetPlayerReExp(curPlayer)
giveExp = eval(IpyGameDataPY.GetFuncCompileCfg('FamilyPartySitAward'))
if giveExp:
- giveExp = PlayerControl.PlayerControl(curPlayer).AddExp(giveExp)
- exp = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExp % playerID)
- expPoint = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TotalExpPoint % playerID)
- newTotalExp = expPoint*ChConfig.Def_PerPointValue+exp+giveExp+addExp
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExp % playerID, newTotalExp%ChConfig.Def_PerPointValue)
- gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, newTotalExp/ChConfig.Def_PerPointValue)
+ PlayerControl.PlayerControl(curPlayer).AddExp(giveExp, ShareDefine.Def_ViewExpType_SysEx)
- gameWorld.SetGameWorldDict(FBPlayerDict_HasSit % playerID, 1)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartySitState, 1)
+ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyChuanGong)
+ DoFBHelp(curPlayer, 0)
#帮助传功奖励
helpSitActivityAward = IpyGameDataPY.GetFuncEvalCfg('FamilyPartySitAward', 3)
@@ -553,8 +447,8 @@
PlayerTalk.TalkPrivateByID(curPlayer, tagPlayerID, sitThanks)
tagPlayer = GameWorld.GetMapCopyPlayerManager().FindPlayerByID(tagPlayerID)
if tagPlayer:
- helpCount = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HelpCount % tagPlayerID) + 1
- gameWorld.SetGameWorldDict(FBPlayerDict_HelpCount % tagPlayerID, helpCount)
+ helpCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyHelpSitCount) + 1
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyHelpSitCount, helpCount)
GameWorld.DebugLog("帮助传功奖励: sitPlayerID=%s,tagPlayerID=%s,helpCount=%s" % (playerID, tagPlayerID, helpCount))
if helpCount <= maxHelpAwardCount:
PlayerControl.GiveMoney(tagPlayer, ShareDefine.TYPE_Price_FamilyActivity, helpFamilyActivity)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 0f2e87a..370b4f4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -550,6 +550,8 @@
PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
#缥缈仙域
PlayerFairyDomain.OnDay(curPlayer)
+ #仙盟宴会
+ GameLogic_FamilyParty.OnDayFamilyPartyPlayer(curPlayer)
PlayerTJG.TJGOnDay(curPlayer, onEventType)
# 以下为支持两种重置模式切换配置的
@@ -1393,10 +1395,6 @@
elif key == ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID:
PlayerCrossRealmPK.OnCrossRealmPKSeasonChange(value)
- # 仙盟宴会
- elif key == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyParty:
- if gameWorldMgr.GetGameWorldDictByKey(key) != value:
- GameLogic_FamilyParty.OnFamilyPartyStateChange(value, tick)
# 守卫人皇
elif key == ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyInvade:
if gameWorldMgr.GetGameWorldDictByKey(key) != value:
@@ -1446,6 +1444,7 @@
NPCCustomRefresh.ResetActivityBossRefreshCount()
#通用设置
+ befValue = gameWorldMgr.GetGameWorldDictByKey(key)
gameWorldMgr.SetGameWorldDict(key, value)
#-------在设置了字典值以后处理---------------------------------
@@ -1457,6 +1456,11 @@
elif key == ShareDefine.Def_Notify_WorldKey_ChampionFamilyID:
GameLogic_FamilyWar.OnChampionFamilyIDChange()
+ # 仙盟宴会
+ elif key == ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty:
+ if befValue != value:
+ GameLogic_FamilyParty.OnFamilyPartyStateChange(value, tick)
+
#===============================================================================
# ---修改为上述的 统一字典处理
# if msg == ChConfig.Def_Notify_Key_PurTalk:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index bd625ec..5c77754 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1559,6 +1559,8 @@
return
crossMapID = PlayerControl.GetCrossMapID(curPlayer)
mapID = crossMapID if crossMapID else GameWorld.GetMap().GetMapID()
+ if not FBLogic.OnCanGetAreaExp(curPlayer, mapID):
+ return
neutralMapExpAwardDict = IpyGameDataPY.GetFuncEvalCfg('NeutralMapExpAward', 1, {})
expAwardInfo = GameWorld.GetDictValueByKey(neutralMapExpAwardDict, mapID)
if not expAwardInfo:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index c038414..e15e43c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1466,7 +1466,9 @@
DailyActionID_AuctionItem, # 拍卖行上架/竞拍 26
DailyActionID_LeiFaBoss, # 雷罚boss 27
DailyActionID_CrossPenglai, # 跨服蓬莱仙境Boss 28
-) = range(1, 28 + 1)
+DailyActionID_FamilyChuanGong, # 仙盟传功 29
+DailyActionID_FamilyParty, # 仙盟宴会 30
+) = range(1, 30 + 1)
--
Gitblit v1.8.0