From e4a5fbde4c804262a7cfd17d89d427b4ff36accb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 09 十月 2025 19:41:26 +0800
Subject: [PATCH] 225 【付费内容】功能基金-服务端
---
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