From e37c0b9f504429962a92755c7a79926f092ed9af Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 07 一月 2020 18:57:53 +0800 Subject: [PATCH] 8346 【恺英】【后端】协助系统(副本协助支持,增加缥缈S副本) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 95 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py index e0d7c0b..5651b56 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py @@ -25,6 +25,9 @@ import ItemControler import ItemCommon import ChConfig +import ShareDefine +import PyGameData +import FBCommon def DoPlayerOnDay(curPlayer): ## 过天处理 @@ -114,6 +117,21 @@ GameWorld.DebugLog("请求协助CD中!mapID=%s,lineID=%s" % (mapID, lineID), playerID) return + mapAssistGiftDict = IpyGameDataPY.GetFuncEvalCfg("AssistAward", 2, {}) + if str(mapID) not in mapAssistGiftDict: + return + + teamID = curPlayer.GetTeamID() + if teamID: + if curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader: + GameWorld.DebugLog("非队长,无法发布副本协助!") + return + + fbIpyData = FBCommon.GetFBIpyData(mapID) + fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID) + if PlayerControl.CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK: + return + queryData = [mapID, lineID] QueryGameServer_PlayerAssist(playerID, "RequestAssistTeamFB", queryData) return @@ -190,6 +208,83 @@ return +def SetFBNoAssistPlayerID(curPlayer): + ## 设置副本非协助玩家ID,玩家进入副本时调用 + gameFB = GameWorld.GetGameFB() + if gameFB.GetGameFBDictByKey("FBNoAssistPlayerID"): + return + if curPlayer.GetTeamID(): + if curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader: + return + noAssistPlayerID = curPlayer.GetPlayerID() + gameFB.SetGameFBDict("FBNoAssistPlayerID", noAssistPlayerID) + GameWorld.DebugLog("设置副本非协助玩家: noAssistPlayerID=%s" % noAssistPlayerID) + return + +def OnFBAssistOver(mapID, lineID=0): + ## 副本协助结束 + assistPlayerMoneyDict = {} + assistMoneyType = ShareDefine.TYPE_Price_FamilyActivity + gameFB = GameWorld.GetGameFB() + noAssistPlayerID = gameFB.GetGameFBDictByKey("FBNoAssistPlayerID") + GameWorld.DebugLog("副本协助结算: mapID=%s,lineID=%s,noAssistPlayerID=%s" % (mapID, lineID, noAssistPlayerID)) + + if not noAssistPlayerID: + return noAssistPlayerID, assistMoneyType, assistPlayerMoneyDict + + liheItemID, assistMoney = 0, 0 + mapAssistGiftDict = IpyGameDataPY.GetFuncEvalCfg("AssistAward", 2, {}) + if str(mapID) in mapAssistGiftDict: + liheItemID, assistMoney = mapAssistGiftDict[str(mapID)] + + friendList, memFamilyIDDict = [], {} + teamID = GameWorld.GetGameWorld().GetPropertyID() + if teamID in PyGameData.g_teamFBMemRelationDict: + friendList, memFamilyIDDict = PyGameData.g_teamFBMemRelationDict[teamID][:2] + noAssistPlayerFamilyID = memFamilyIDDict.get(noAssistPlayerID, 0) + + assistAwardItemID = liheItemID + assistPlayerDict = {} + copyPlayerManager = GameWorld.GetMapCopyPlayerManager() + noAssistPlayer = copyPlayerManager.FindPlayerByID(noAssistPlayerID) + for index in xrange(copyPlayerManager.GetPlayerCount()): + curPlayer = copyPlayerManager.GetPlayerByIndex(index) + if not curPlayer: + continue + + playerID = curPlayer.GetPlayerID() + if playerID == noAssistPlayerID: + continue + + assistPlayer = curPlayer + assistPlayerID = playerID + isFriend = [noAssistPlayerID, playerID] in friendList or [playerID, noAssistPlayerID] in friendList + assistFamilyID = assistPlayer.GetFamilyID() + + addAssistMoney = AddTodayAssistMoney(curPlayer, assistMoneyType, assistMoney, isFriend) + assistPlayerMoneyDict[assistPlayerID] = addAssistMoney + GameWorld.DebugLog("协助方给活跃令奖励: assistPlayerID=%s,assistMoney=%s,isFriend=%s,addAssistMoney=%s" + % (assistPlayerID, assistMoney, isFriend, addAssistMoney), mapID, lineID) + + if noAssistPlayer: + todayGiftCount = assistPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GetThanksGiftCount % liheItemID) + assistPlayerDict[assistPlayerID] = {"PlayerName":assistPlayer.GetPlayerName(), "Job":assistPlayer.GetJob(), + "LV":assistPlayer.GetLV(), "RealmLV":assistPlayer.GetOfficialRank(), + "TodayGiftCount":todayGiftCount} + + # 暂定支持同队伍不同仙盟间协助 + if assistFamilyID and assistFamilyID == noAssistPlayerFamilyID: + notifyParam = [assistPlayer.GetPlayerName(), noAssistPlayer.GetPlayerName(), mapID] + PlayerControl.FamilyNotify(assistFamilyID, "AssistFBFinish", notifyParam) + + if noAssistPlayer and assistPlayerDict: + GameWorld.DebugLog("发布方给感谢礼盒奖励: noAssistPlayerID=%s,assistAwardItemID=%s" % (noAssistPlayerID, assistAwardItemID), mapID, lineID) + ItemControler.GivePlayerItemOrMail(noAssistPlayer, [[assistAwardItemID, 1, 0]]) + + queryData = [mapID, lineID, noAssistPlayerID, assistAwardItemID, assistPlayerDict] + QueryGameServer_PlayerAssist(0, "OnFBAssistOver", queryData) + return noAssistPlayerID, assistMoneyType, assistPlayerMoneyDict + def AddTodayAssistMoney(curPlayer, moneyType, addMoney, isSocialEx): ''' 增加今日协助货币奖励 @param moneyType: 货币类型 -- Gitblit v1.8.0