From 4226d0d2ec4cf5541a17d9a6cdbf1a32a011d052 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 17 十二月 2019 18:49:01 +0800 Subject: [PATCH] 8358 【主干】【后端】坐骑修改(删除无用配置) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py | 72 ++++++++++++++++++++++++------------ 1 files changed, 48 insertions(+), 24 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py index 3c8e618..cc92f20 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py @@ -32,9 +32,14 @@ import PlayerSuccess import PlayerBossReborn import PlayerFairyCeremony +import PlayerNewFairyCeremony +import PlayerActLogin +import PlayerWeekParty import ItemControler +import GameFuncComm import SkillShell import BuffSkill +import EventShell import random import math @@ -99,6 +104,10 @@ def OnFBPlayerOnLogin(curPlayer): playerID = curPlayer.GetPlayerID() + historyEnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_HistoryEnterCnt) + expPerSecondDict = IpyGameDataPY.GetFuncEvalCfg("XjmjFirstEnter", 2, {}) + if historyEnterCnt not in expPerSecondDict: + return playerExpTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_FirstEnterExpTime) if not playerExpTime: #GameWorld.DebugLog("还没进入过仙界秘境,不处理经验补时!", playerID) @@ -115,7 +124,7 @@ if not giveTime: #GameWorld.DebugLog("经验补时时间已超过单次挑战时长,不处理经验补时!playerExpTime=%s" % playerExpTime, playerID) return - expPerSecond = IpyGameDataPY.GetFuncCfg("XjmjFirstEnter", 2) + expPerSecond = expPerSecondDict[historyEnterCnt] giveExp = expPerSecond * giveTime PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_FirstEnterExpTime, FirstEnterExpTimeMax) if giveExp: @@ -184,12 +193,22 @@ FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_BZZD) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_XJMJ, 1) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1) + PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1) + PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1) + PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_XJMJ, 1) + EventShell.EventRespons_FBEvent(curPlayer, 'passxjmj') FBCommon.UpdateFBEnterTick(curPlayer) gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnterLV, playerLV) PyGameData.g_bzzdPlayerKillNPCCntDict.pop(playerID, 0) logType = FBCommon.GetFBJoinType(curPlayer, False) EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_BZZD, 0, ChConfig.CME_Log_Start, logType) + historyEnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_HistoryEnterCnt) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_HistoryEnterCnt, min(historyEnterCnt+1, 999)) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_FirstEnterExpTime, 1) + __GiveFirstEnterPrize(curPlayer, historyEnterCnt+1) + + fbPlayerCnt = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenPlayerCnt) isTeamEnter = (teamID and fbPlayerCnt > 1) if not isTeamEnter: @@ -226,31 +245,31 @@ FBCommon.SendFBEncourageInfo(curPlayer, encourageLV) DoFBHelp(curPlayer, tick) - isFirstEnter = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_FirstEnterExpTime) - # 没有首次进入经验时间记录,可视为首次进入 - if not isFirstEnter: - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_FirstEnterExpTime, 1) - __GiveFirstEnterPrize(curPlayer) - return -def __GiveFirstEnterPrize(curPlayer): - XjmjFirstEnterPrize = IpyGameDataPY.GetFuncEvalCfg("XjmjFirstEnter", 1) - if not XjmjFirstEnterPrize: +def __GiveFirstEnterPrize(curPlayer, historyEnterCnt): + XjmjFirstEnterPrizeDict = IpyGameDataPY.GetFuncEvalCfg("XjmjFirstEnter", 1, {}) + if historyEnterCnt not in XjmjFirstEnterPrizeDict: return - silverMoney, goldPaper, itemID = XjmjFirstEnterPrize + silverMoney, goldMoney, itemID = XjmjFirstEnterPrizeDict[historyEnterCnt] if silverMoney: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, silverMoney) - if goldPaper: - PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, goldPaper) + if goldMoney: + PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, goldMoney) if itemID: - ItemControler.GivePlayerItem(curPlayer, itemID, 1, 1, [IPY_GameWorld.rptItem]) - GameWorld.DebugLog("首次进入给奖励:silverMoney=%s,goldPaper=%s,itemID=%s" - % (silverMoney, goldPaper, itemID), curPlayer.GetPlayerID()) + ItemControler.GivePlayerItem(curPlayer, itemID, 1, 0, [IPY_GameWorld.rptItem]) + GameWorld.DebugLog("首次进入给奖励:silverMoney=%s,goldMoney=%s,itemID=%s" + % (silverMoney, goldMoney, itemID), curPlayer.GetPlayerID()) return def CheckHurtBuff(curPlayer, tick, isAdd=True): #人物等级低于世界等级X级,单人挑战仙界密境获得伤害BUFF加成 + if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_WorldLV): + return + playerID = curPlayer.GetID() + enterLV = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EnterLV) + if enterLV < GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_WorldLV): + return curLV = curPlayer.GetLV() worldlv = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) buffID = IpyGameDataPY.GetFuncCfg('XjmjAddHarm', 2) @@ -277,12 +296,12 @@ curPlayer.Sync_TimeTick(IPY_GameWorld.tttAddUpTime, 0, max(notify_tick, 0), True) curPlayer.Sync_TimeTick(IPY_GameWorld.tttWaitStart, 0, max(notify_tick, 0), True) DoFBHelp(curPlayer, tick) - - isFirstEnter = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_FirstEnterExpTime) - # 没有首次进入经验时间记录,可视为首次进入 - if not isFirstEnter: - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_FirstEnterExpTime, 1) - __GiveFirstEnterPrize(curPlayer) +# +# isFirstEnter = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_FirstEnterExpTime) +# # 没有首次进入经验时间记录,可视为首次进入 +# if not isFirstEnter: +# PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_FirstEnterExpTime, 1) +# __GiveFirstEnterPrize(curPlayer) return ##玩家退出副本 @@ -442,8 +461,8 @@ gameFB.SetGameFBDict(BZZD_LastCheckExpTick, tick) # 这个全局tick只是处理多久执行一次而已,不参与其他逻辑 fightTime = int(math.ceil((tick - GameWorld.GetGameFB().GetFBStepTick()) / 1000.0)) # 已经战斗时长,秒 - expPerSecond = IpyGameDataPY.GetFuncCfg("XjmjFirstEnter", 2) - minTotalExp = expPerSecond * fightTime # 理论保底最少经验 + expPerSecondDict = IpyGameDataPY.GetFuncEvalCfg("XjmjFirstEnter", 2, {}) + playerManager = GameWorld.GetMapCopyPlayerManager() playerCount = playerManager.GetPlayerCount() @@ -452,6 +471,9 @@ if not curPlayer: continue playerID = curPlayer.GetPlayerID() + historyEnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_HistoryEnterCnt) + if historyEnterCnt not in expPerSecondDict: + continue playerExpTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_FirstEnterExpTime) if playerExpTime >= fightTime: #GameWorld.DebugLog("已经处理完保底经验时间,不再处理!", playerID) @@ -463,6 +485,8 @@ exp = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExp) expPoint = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExpPoint) playerTotalExp = expPoint * ChConfig.Def_PerPointValue + exp + expPerSecond = expPerSecondDict[historyEnterCnt] + minTotalExp = expPerSecond * fightTime # 理论保底最少经验 giveExp = max(0, minTotalExp - playerTotalExp) if giveExp > 0: giveExp = PlayerControl.PlayerControl(curPlayer).AddExp(giveExp, ShareDefine.Def_ViewExpType_Sys) -- Gitblit v1.8.0