From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 10:12:23 +0800 Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 78 +++++++++++--------------------------- 1 files changed, 23 insertions(+), 55 deletions(-) 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 e05fd06..fef7d1b 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py @@ -24,7 +24,6 @@ import PlayerGMOper import OperControlManager import ShareDefine -import PlayerGameWallow import ReadChConfig import PlayerDienstgrad import IpyGameDataPY @@ -43,6 +42,7 @@ import PlayerFace import PlayerBackup import PlayerOnline +import PlayerGoldRush #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -771,7 +771,7 @@ curPlayer.SetDict(ChConfig.Def_PlayerKey_SitForZhenQi, tick) vipLV = curPlayer.GetVIPLv() - vipRate = ShareDefine.Def_MaxRateValue#PlayerVip.GetVIPMuseSitRate(vipLV) + vipRate = ShareDefine.Def_MaxRateValue #取得人物当前经验 curTotalExp = PlayerControl.GetPlayerTotalExp(curPlayer) # 超过20亿支持,功能待定 @@ -787,7 +787,7 @@ isSysHint=False) if vipLV == 0: - canVipRate = ShareDefine.Def_MaxRateValue#PlayerVip.GetVIPMuseSitRate(ShareDefine.Def_VIPType_Platina) + canVipRate = ShareDefine.Def_MaxRateValue canVipExpValue = int(addExpValue * canVipRate / float(ShareDefine.Def_MaxRateValue)) #GeRen_chenxin_684833:获得经验%s点,成为VIP经验%s PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_684833", [addExpValue, canVipExpValue]) @@ -867,11 +867,8 @@ # @remarks 刷新玩家在线时间 def ProcessPlayer_OnlineTime(curPlayer, tick): if not CommonCheckTick(curPlayer, tick, ChConfig.TYPE_Player_Tick_PlayerOnlineTime): - return + return - #处理防沉迷在线时间, - PlayerGameWallow.DoLogic_WallowOnlineTime(curPlayer, tick) - return @@ -1009,6 +1006,7 @@ #放在刷buff前 #ProcessPassiveSkill(curPlayer, tick) + ProcessPlayerSecond(curPlayer, tick) ProcessPlayerMinute(curPlayer, tick) PlayerOnline.GetOnlinePlayer(curPlayer).DoRefreshRoleAttr() @@ -1034,32 +1032,34 @@ #反外挂验证 #PlayerAutoCheckOnline.HackDefense(curPlayer, tick) - #副本相关时间处理 - #PlayerFB.DoPlayerFBTimeProcess(curPlayer, tick) - - #挂机收益 - #PlayerGuaji.ProcessGuaji(curPlayer) - #恶意攻击时间处理 #AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick) - #成就 - PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False) - #限时抢购 - PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick) - #地图经验 - #ProcessAreaExp(curPlayer, tick) - #神秘商店刷新 - FunctionNPCCommon.CheckMysticalShopRefresh(curPlayer, tick) + #活跃放置 #PlayerActivity.ProcessActivityPlace(curPlayer) - #自定义场景 - #FBLogic.OnCustomSceneProcess(curPlayer, tick) #炼器 #PlayerActLianqi.OnProcess(curPlayer) #仙盟攻城战 #PlayerActFamilyGCZ.OnProcess(curPlayer) #跨服数据同步,放最后 #CrossPlayerData.ProcessCrossPlayer(curPlayer, tick) + return + +def ProcessPlayerSecond(curPlayer, tick): + #玩家每秒处理,玩家Process可能每秒多次,所以增加一个每秒处理的,减少执行次数 + lastTick = curPlayer.GetDictByKey("ProcessPlayerSecond") + if tick - lastTick < 1000: + return + curPlayer.SetDict("ProcessPlayerSecond", tick) + + #成就 + PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False) + #限时抢购 + PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick) + #神秘商店刷新 + FunctionNPCCommon.CheckMysticalShopRefresh(curPlayer, tick) + #淘金 + PlayerGoldRush.OnProcess(curPlayer) return def ProcessPlayerMinute(curPlayer, tick): @@ -1222,36 +1222,4 @@ return curPlayer.SetDict(ChConfig.Def_PDict_BossStateTick, 0) PlayerControl.SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BossState, 0) - return - -def ProcessAreaExp(curPlayer, tick): - ##给场景经验 - if GameWorld.IsCrossServer(): - return - if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): - 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: - return - if len(expAwardInfo) != 2: - return - secondCD, expFormula = expAwardInfo - lastTick = curPlayer.GetDictByKey(ChConfig.Def_PDict_MapAreaExpTick) - if not lastTick: - curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick) - return - if tick - lastTick < secondCD: - return - curPlayer.SetDict(ChConfig.Def_PDict_MapAreaExpTick, tick) - - reExp = PlayerControl.GetPlayerReExp(curPlayer) - reLV = curPlayer.GetLV() - worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) - addExp = eval(FormulaControl.GetCompileFormula('NeutralMapExpAward%s'%mapID, expFormula)) - PlayerControl.PlayerControl(curPlayer).AddExp(addExp, ShareDefine.Def_ViewExpType_SysEx) return -- Gitblit v1.8.0