From f27986d2eb32e3d2598d15b91c88479797ce5c72 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期三, 13 三月 2019 17:48:37 +0800 Subject: [PATCH] 6328 【后端】优化代码eval - 二进制流 不能直接输出 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 76 ++++++++++++++++++++++++++------------ 1 files changed, 52 insertions(+), 24 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py index 9b8a408..90b7fcd 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py @@ -31,7 +31,7 @@ import PlayerFamily import PlayerActivity import PlayerSuccess -import PlayerMagicWeapon +import GameFuncComm import PyGameData import PlayerVip import GameObj @@ -582,7 +582,7 @@ return def GetJsonItemList(itemList): - ## [[itemID,itemCount,isBind], curItem] -> [{"ItemID":101, "Count":10, "IsBind":1, "IsSuite":1, "UserData":"自定义属性字符串"}] + ## [[itemID,itemCount,isAuctionItem], curItem] -> [{"ItemID":101, "Count":10, "IsAuctionItem":1, "UserData":"自定义属性字符串"}] jsonItemList = [] for itemInfo in itemList: itemDict = {} @@ -593,7 +593,7 @@ if infolen > 1: itemDict['Count'] = itemInfo[1] if infolen > 2: - itemDict['IsBind'] = int(itemInfo[2]) + itemDict['IsAuctionItem'] = int(itemInfo[2]) elif isinstance(itemInfo, int): itemDict['ItemID'] = itemInfo else: #物品实例 @@ -601,8 +601,8 @@ continue itemDict['ItemID'] = itemInfo.GetItemTypeID() itemDict['Count'] = itemInfo.GetCount() - itemDict['IsBind'] = int(itemInfo.GetIsBind()) - itemDict['IsSuite'] = int(itemInfo.GetIsSuite()) + itemDict['IsAuctionItem'] = itemInfo.GetIsBind() + #itemDict['IsSuite'] = int(itemInfo.GetIsSuite()) itemDict['UserData'] = itemInfo.GetUserData() jsonItemList.append(itemDict) return jsonItemList @@ -1694,6 +1694,13 @@ newEnterCnt = max(0, dayTimes - (maxCnt - enterCnt)) PlayerControl.NomalDictSetProperty(curPlayer, enterCntKey, newEnterCnt) GameWorld.DebugLog(" 特殊副本已进入次数更新: newEnterCnt=%s" % newEnterCnt) + elif mapID == ChConfig.Def_FBMapID_ZhuXianBoss: + if GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_ZhuXianBoss): + curCnt = min(maxCnt - enterCnt + IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg'), IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg', 2)) + if curCnt > dayTimes: + PlayerControl.NomalDictSetProperty(curPlayer, itemAddCntKey, curCnt - dayTimes) + elif curCnt < dayTimes: + PlayerControl.NomalDictSetProperty(curPlayer, enterCntKey, dayTimes - curCnt) mapIDInfo.append(mapID) @@ -1759,6 +1766,9 @@ if mapID == ChConfig.Def_FBMapID_SealDemon and maxDayTimes and maxCnt - enterCnt >= maxDayTimes: GameWorld.DebugLog('当前次数已满,无需购买。。') return + if mapID == ChConfig.Def_FBMapID_ZhuXianBoss and maxCnt - enterCnt >= IpyGameDataPY.GetFuncCfg('ZhuXianBossCntCfg', 2): + return + if hasBuyCnt >= canBuyCnt: GameWorld.DebugLog("购买次数已经用完mapID=%s"%mapID) return @@ -1905,7 +1915,7 @@ # @param tick 当前时间 # @param isMaxlv 是否直接满级 # @return None -def FbEncourageBuff(curPlayer, key, encourageType, tick, isMaxlv=False): +def FbEncourageBuff(curPlayer, key, encourageType, tick, ownerID=0): #GameWorld.Log("FbEncourageBuff moneyType=%s" % (moneyType)) curMapID = curPlayer.GetMapID() curMapID = GetRecordMapID(curMapID) @@ -1914,10 +1924,10 @@ return maxCnt = ipyData.GetInspireMaxLV() gameFB = GameWorld.GetGameFB() - curPlayerID = curPlayer.GetID() - encourageLV = gameFB.GetPlayerGameFBDictByKey(curPlayerID, key) + ownerID = ownerID or curPlayer.GetID() + encourageLV = gameFB.GetPlayerGameFBDictByKey(ownerID, key) encourageCntKey = 'FbEncourageCnt_%s' % encourageType - encourageCnt = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey) + encourageCnt = gameFB.GetPlayerGameFBDictByKey(ownerID, encourageCntKey) maxLV = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 2, {}).get(curMapID, 0) if encourageLV >= maxLV: PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93643") @@ -1952,29 +1962,47 @@ return buffType = SkillCommon.GetBuffType(skillBuff) - BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick) - gameFB.SetPlayerGameFBDict(curPlayerID, key, encourageLV+1) - gameFB.SetPlayerGameFBDict(curPlayerID, encourageCntKey, encourageCnt+1) + + gameFB.SetPlayerGameFBDict(ownerID, key, encourageLV+1) + gameFB.SetPlayerGameFBDict(ownerID, encourageCntKey, encourageCnt+1) #GameWorld.Log("FbEncourageBuff encourage nextLV=%s success" % encourageLV) addHurtNum = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 3, {}).get(curMapID, 0) - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_628920", [(encourageLV+1)*addHurtNum]) - SendFBEncourageInfo(curPlayer, encourageLV+1) - #成就 - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID]) - EventShell.EventRespons_FBEncourage(curPlayer, curMapID) - return + if curMapID == ChConfig.Def_FBMapID_AllFamilyBoss: + #给副本里所有盟成员提示 + playerManager = GameWorld.GetMapCopyPlayerManager() + for index in xrange(playerManager.GetPlayerCount()): + player = playerManager.GetPlayerByIndex(index) + if not player: + continue + if player.GetFamilyID() != ownerID: + continue + BuffSkill.DoAddBuff(player, buffType, skillBuff, tick) + PlayerControl.NotifyCode(player, "AllianceBossText2", [curPlayer.GetName(), encourageLV+1]) + SendFBEncourageInfo(player, encourageLV+1, ownerID) + if player.GetID() == curPlayer.GetID(): + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID]) + EventShell.EventRespons_FBEncourage(curPlayer, curMapID) + + else: + BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick) + PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_628920", [(encourageLV+1)*addHurtNum]) + SendFBEncourageInfo(curPlayer, encourageLV+1, ownerID) + #成就 + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID]) + EventShell.EventRespons_FBEncourage(curPlayer, curMapID) + return True ## 添加副本鼓舞buff,一般用于玩家掉线后,在规定时间内重新上线回到副本时重新上buff # @param curPlayer 玩家 # @param key 副本玩家字典key # @param tick 当前时间 # @return None -def AddFbEncourageBuff(curPlayer, key, tick): +def AddFbEncourageBuff(curPlayer, key, tick, ownerID=0): curPlayerID = curPlayer.GetID() GameWorld.Log("AddFbEncourageBuff() curPlayerID=%s" % curPlayerID) gameFB = GameWorld.GetGameFB() - encourageLV = gameFB.GetPlayerGameFBDictByKey(curPlayerID, key) + encourageLV = gameFB.GetPlayerGameFBDictByKey(ownerID, key) if not encourageLV: return mapID = GameWorld.GetMap().GetMapID() @@ -1989,7 +2017,7 @@ buffType = SkillCommon.GetBuffType(skillBuff) BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick) - SendFBEncourageInfo(curPlayer, encourageLV) + SendFBEncourageInfo(curPlayer, encourageLV, ownerID) return ## 清除鼓舞buff @@ -2009,7 +2037,7 @@ ## 发送副本鼓舞信息 # @param curPlayer 玩家 # @return None -def SendFBEncourageInfo(curPlayer, lv): +def SendFBEncourageInfo(curPlayer, lv, ownerID=0): #//A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo curMapID = curPlayer.GetMapID() curMapID = GetRecordMapID(curMapID) @@ -2021,12 +2049,12 @@ encourageInfo.InfoList = [] encourageCntKey = 'FbEncourageCnt_%s' gameFB = GameWorld.GetGameFB() - curPlayerID = curPlayer.GetID() + ownerID = ownerID or curPlayer.GetID() for ipyData in ipyDataList: inspireType = ipyData.GetInspireType() packData = ChPyNetSendPack.tagMCFBEncourageCnt() packData.MoneyType = inspireType - packData.EncourageCnt = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey % inspireType) + packData.EncourageCnt = gameFB.GetPlayerGameFBDictByKey(ownerID, encourageCntKey % inspireType) encourageInfo.InfoList.append(packData) encourageInfo.Cnt = len(encourageInfo.InfoList) NetPackCommon.SendFakePack(curPlayer, encourageInfo) -- Gitblit v1.8.0