From 07423ad90ce28a8817671e8266a4aba2ea294935 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 18 三月 2026 17:43:29 +0800
Subject: [PATCH] 571 【荣耀战将】删档测试充值返利

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |  113 +++++++++++++++++++++++++-------------------------------
 1 files changed, 51 insertions(+), 62 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 143459c..0fd83dd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -958,7 +958,7 @@
 
 
 def OnPlayerLogin(curPlayer):
-    DoGMForbidenTalkOnLogin(curPlayer)
+    #DoGMForbidenTalkOnLogin(curPlayer)
     curPlayer.SetDict(ChConfig.Def_PDict_DayOnlineCalcTime, int(time.time()))
     return
 
@@ -1113,7 +1113,7 @@
     playerControl.RefreshAllState()
             
     #玩家下线更新排行榜
-    PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
+    #PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
     
     #玩家下线通知gameserver记录缓存(放在下线更新排行榜之后,方便Gameserver判断是否需要存入数据库中)
     PlayerViewCache.OnPlayerLogout(curPlayer)
@@ -3311,6 +3311,7 @@
             
         #不需要做升级任务, 设置玩家经验
         SetPlayerTotalExp(curPlayer, curTotalExp) 
+        DoDeleteTestRebate(curPlayer)
         return
     
     def __GiveLVMailAward(self, curLV):
@@ -4094,20 +4095,21 @@
     GameWorld.DebugLog("SetPlayerAccState %s" % (accState), curPlayer.GetPlayerID())
     return
 
-def DoGMForbidenTalkOnLogin(curPlayer):
-    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
-    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
-    
-    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
-        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
-        __SetGMForbidenTalkValue(curPlayer, 2)
-        __SetGMForbidenTalkValue(curPlayer, 1)
-    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
-        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
-        __SetGMForbidenTalkValue(curPlayer, 1)
-    else:
-        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
-    return
+#GM命令支持离线玩家上线后处理,且 PlayerGMOper 也有上线触发逻辑处理,故暂屏蔽
+#def DoGMForbidenTalkOnLogin(curPlayer):
+#    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
+#    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
+#    
+#    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
+#        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
+#        __SetGMForbidenTalkValue(curPlayer, 2)
+#        __SetGMForbidenTalkValue(curPlayer, 1)
+#    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
+#        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
+#        __SetGMForbidenTalkValue(curPlayer, 1)
+#    else:
+#        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
+#    return
 
 def IsMainLevelPass(curPlayer, lvID):
     ## 判断玩家是否过关某个主线关卡ID
@@ -4149,8 +4151,7 @@
         PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
         PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
         PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAMainLevel, lvID)
-        if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
-            PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
+        OpenServerActivity.UpdOSA_MainLevelBillboard(curPlayer, lvID)
         DataRecordPack.DR_MainLevelPass(curPlayer, lvID)
     return value
 def GetMainLevelPassInfo(curPlayer):
@@ -4532,17 +4533,6 @@
     NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
 
-## 魅力等级
-def GetCharmLV(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CharmLV)
-def SetCharmLV(curPlayer, charmLV):
-    NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CharmLV, charmLV)
-    SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_CharmLV, charmLV)
-    return
-
-def GetTotalLingGenPoint(curPlayer):
-    # 总灵根点数(金木水火土+自由点数)
-    return 0
-
 # 灵根 - 金木水火土
 def GetMetal(curPlayer): return 0
 def GetWood(curPlayer): return 0
@@ -4556,9 +4546,6 @@
 def GetReduceSkillCDPer(curPlayer): return 0
 def SetReduceSkillCDPer(curPlayer, reducePer): return
 
-# 血瓶恢复效果
-def GetHPCureEnhance(curPlayer): return 0
-
 # 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
 def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()
 def SetFamilyMemberLV(curPlayer, fmLV):
@@ -4566,35 +4553,6 @@
     curPlayer.SetReceivedSalary(fmLV)
     curPlayer.SetFamilyMemberLV(fmLV) # 也同步设置该值,防止有些地方直接调用 curPlayer.GetFamilyMemberLV()
     return
-
-#---当前防护值,需存DB----
-def GetProDef(curPlayer): return 0
-def SetProDef(curPlayer, value): return
-
-#---最大防护值----
-def GetMaxProDef(curPlayer): return 0
-def SetMaxProDef(curPlayer, value): return
-
-# 每X秒自动消失一个印记, 毫秒记录
-def GetLostYinjiTime(curPlayer): return 0
-def SetLostYinjiTime(curPlayer, value): return
-
-# 当前印记数
-def GetYinjiCnt(curPlayer): return 0
-def SetYinjiCnt(curPlayer, value): return
-
-# 减少指定技能组CD XX%
-def GetTheFBSkillsCD(curPlayer): return 0
-def SetTheFBSkillsCD(curPlayer, value): return
-# 灼烧固定伤害
-def GetBurnValue(curPlayer): return 0
-def SetBurnValue(curPlayer, value): return
-# 延长灼烧时间百分比
-def GetBurnTimePer(curPlayer): return 0
-def SetBurnTimePer(curPlayer, value): return
-# 减移动速度百分比
-def GetSubSpeedPer(curPlayer): return 0
-def SetSubSpeedPer(curPlayer, value): return
 
 #-------------------------------------------------------------------------------
 
@@ -4660,4 +4618,35 @@
         if not curSummon:
             continue
         curSummon.SetSightLevel(sightLevel)
-    return
\ No newline at end of file
+    return
+
+def DoDeleteTestRebate(curPlayer):
+    playerID = curPlayer.GetPlayerID()
+    appID = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 1)
+    if GameWorld.GetAppIDByAccID(curPlayer.GetAccID()) != appID:
+        #GameWorld.DebugLog("非返利渠道AppID! appID=%s" % appID, playerID)
+        return
+    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DeleteTestRebate):
+        GameWorld.DebugLog("删档测试返利已经处理过,不再请求!", playerID)
+        return
+    if curPlayer.GetLV() < IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 2):
+        GameWorld.DebugLog("等级不足不处理删档测试返利! lv=%s" % curPlayer.GetLV(), playerID)
+        return
+    rebateRate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 5)
+    if rebateRate <= 0:
+        GameWorld.DebugLog("没有返利比例不处理!", playerID)
+        return
+    curTime = int(time.time())
+    testEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 3) # 删档测试结束日期
+    testEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % testEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
+    if curTime <= testEndTime:
+        GameWorld.DebugLog("删档测试期间不处理删档测试返利! testEndDate=%s" % testEndDate, playerID)
+        return
+    rebateEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 4) # 返利结束日期,由公测日期+有效天数得到
+    rebateEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % rebateEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
+    if curTime > rebateEndTime:
+        GameWorld.DebugLog("返利有效期已结束不处理删档测试返利! rebateEndDate=%s" % rebateEndDate, playerID)
+        return
+    import EventReport
+    EventReport.EventReport("DeleteTestRebate", "testEndDate=%s"%(testEndDate), curPlayer, checkNeed=False)
+    return

--
Gitblit v1.8.0