From b563f56319b05e8c193dc5b9ddb5eb7a612355df Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 15 五月 2025 10:43:43 +0800
Subject: [PATCH] 16 卡牌服务端(服务器Event事件触发改为地图如OnDay等;地图开服事件流程;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py |  303 +++++++++----------------------------------------
 1 files changed, 59 insertions(+), 244 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 6846c02..6080b81 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -11,20 +11,7 @@
 # @version 2.6
 #
 # @note: 处理每周, 每日, 每月事件处理
-# @change: "2015-07-10 16:00" xdh QQ每日礼包
-# @change: "2015-08-13 14:00" ljd 新手卡OnDay
-# @change: "2015-09-18 19:30" hxp 跨服boss状态变更
-# @change: "2015-10-25 17:00" hxp 跨服PK状态变更
-# @change: "2015-11-18 18:30" hxp 跨服王者争霸
-# @change: "2016-02-30 17:00" hxp 领主霸业、恶魔试炼
-# @change: "2016-04-29 18:00" hxp 宠物OnDay
-# @change: "2016-07-13 18:00" hxp 在线赠送寻宝免费次数统计OnHour触发
-# @change: "2016-07-26 17:30" hxp 增加获胜战盟盟主ID变更处理
-# @change: "2016-08-05 19:00" hxp 脚本热更支持
-# @change: "2016-08-29 23:30" hxp 洪荒之力
-# @change: "2016-09-19 10:30" hxp key状态变更时全服玩家人数获取方式修改
-# @change: "2016-10-26 11:00" hxp 签到逻辑修改
-# @change: "2017-03-22 21:00" hxp 二维码红包
+#
 #---------------------------------------------------------------------
 #"""Version = 2017-05-12 18:00""" 
 #---------------------------------------------------------------------
@@ -143,60 +130,20 @@
 import PlayerFuncTeam
 import PlayerMineArea
 import PlayerMail
-import DBDataMgr
 
 import datetime
 import time
-#---------------------------------------------------------------------
 
-#===============================================================================
-# //01 01 新一天的响应#tagMOnDay
-# tagMOnDay       *   GettagMOnDay();
-# 
-# class   IPY_MOnDay
-# {
-# public:
-# 
-#    char *      GetTime();
-# };
-#===============================================================================
-## 世界服务器->每日响应(封包参数)01 01
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_OnDay(index, tick):
-    GameWorld.GetPsycoFunc(__Func_GameServer_OnDay)(index, tick)
-    CheckMachineTick(tick)
-    return
+## 原GameServer通知的
+def GameServer_OnDay(index, tick): return
+def GameServer_OnHour(index, tick): return
+def GameServer_OnWeek(index, tick): return
+def GameServer_OnMonth(index, tick): return
+def GameServer_OnYear(index, tick): return
 
-## 用于防范运维开机时间超过24天导致报错
-#  @param tick 当前时间
-#  @return None
-def CheckMachineTick(tick):
-    #取一张地图测试,在mapserver做逻辑,方便运维观察
-    if GameWorld.GetMap().GetMapID() != 101:
-        return
-    
-    #超过24.8天就会发生游戏逻辑出错,因为tick变成负数
-    if tick/1000.0/60/60/24 >= 22:
-        raise Exception('Start PC > 22 days!!!')
-    
-    return
-
-## 世界服务器->每日响应(封包参数)01 01
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def __Func_GameServer_OnDay(index, tick):
+def DoLogic_OnDay(tick):
     GameWorld.Log("MapServer -> OnDay!")
     playerManager = GameWorld.GetPlayerManager()
-    #获取每日响应封包
-    pack = IPY_GameWorld.IPY_MOnDay()
-    #同步世界服务器时间
-    SetMapServerTimeFromGameServer(pack.GetTime())
-    
     #处理所有玩家信件的onday事件, 把存在时间+1
     playerManager.ProcessAllPlayerMailOnDay()
     #清空每日日记记录信息
@@ -216,62 +163,20 @@
             continue
         
         PlayerOnDay(curPlayer)
-        # 服务器Onday处理数据,即不能在玩家上线时的Onday触发
-        #PlayerServerDay(curPlayer)
+        PlayerOnDayEx(curPlayer)
     
+    DoLogic_OnDayEx(tick)
     return
 
-def __Func_GameServer_OnDayEx(tick):
+def DoLogic_OnDayEx(tick):
     GameWorld.Log("MapServer -> OnDayEx!")
     
-    DBDataMgr.OnDayEx()
     PlayerMail.OnDayEx()
     PlayerControl.RemoveTimeoutLeaveServerPlayerInfo(tick)
-    
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        
-        PlayerOnDayEx(curPlayer)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# #//////////////////////////////////////////////////////////////
-# #//01 06 新一个小时的响应#tagMOnHour
-# #tagMOnHour       *   GettagMOnHour();
-# #
-# #class   IPY_MOnHour
-# #{
-# #public:
-# #
-# #    char *      GetTime();
-# #};
-#===============================================================================
-## 01 06 新一个小时的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_OnHour(index, tick):
-    GameWorld.GetPsycoFunc(__Func_GameServer_OnHour)(index, tick)
-    return
-
-## 01 06 新一个小时的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def __Func_GameServer_OnHour(index, tick):
+def DoLogic_OnHour(tick):
     GameWorld.Log("MapServer -> OnHour!")
-    #获取每小时响应封包
-    pack = IPY_GameWorld.IPY_MOnHour()
-    time = pack.GetTime()
-    #同步世界服务器时间
-    SetMapServerTimeFromGameServer(time)
     
     #副本OnHour事件
     FBLogic.OnHour(time, tick)
@@ -288,39 +193,9 @@
         PlayerOnHour(curPlayer)
         
     return
-#---------------------------------------------------------------------
-#===============================================================================
-# //01 02 新一个星期的响应#tagMOnWeek
-# tagMOnWeek       *   GettagMOnWeek();
-# 
-# class   IPY_MOnWeek
-# {
-# public:
-# 
-#    char *      GetTime();
-# };
-#===============================================================================
 
-## 世界服务器->每周响应(封包参数) 01 02 新一个星期的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_OnWeek(index, tick):
-    GameWorld.GetPsycoFunc(__Func_GameServer_OnWeek)(index, tick)
-    return
-
-## 世界服务器->每周响应(封包参数) 01 02 新一个星期的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def __Func_GameServer_OnWeek(index, tick):
+def DoLogic_OnWeek(tick):
     GameWorld.Log("MapServer -> OnWeek!")
-    #获得每周响应封包
-    pack = IPY_GameWorld.IPY_MOnWeek()
-    #同步世界服务器时间
-    SetMapServerTimeFromGameServer(pack.GetTime())
     
     playerManager = GameWorld.GetPlayerManager()
     for i in xrange(playerManager.GetPlayerCount()):
@@ -330,58 +205,14 @@
             continue
         
         PlayerOnWeek(curPlayer)
+        PlayerOnWeekEx(curPlayer)
         
     #副本OnWeek事件响应
     FBLogic.OnWeek(tick)
     return
 
-def __Func_GameServer_OnWeekEx(tick):
-    GameWorld.Log("MapServer -> OnWeekEx!")
-    
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        
-        PlayerOnWeekEx(curPlayer)
-        
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //01 03 新一个月的响应#tagMOnMonth
-# tagMOnMonth       *   GettagMOnMonth();
-# 
-# class   IPY_MOnMonth
-# {
-# public:
-# 
-#    char *      GetTime();
-# };
-#===============================================================================
-
-## 世界服务器->每月响应(封包参数)01 03 新一个月的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_OnMonth(index, tick):
-    GameWorld.GetPsycoFunc(__Func_GameServer_OnMonth)(index, tick)
-    return
-
-## 世界服务器->每月响应(封包参数)01 03 新一个月的响应
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def __Func_GameServer_OnMonth(index, tick):
+def DoLogic_OnMonth(tick):
     GameWorld.Log("MapServer -> OnMonth!")
-    #获得每月响应封包
-    pack = IPY_GameWorld.IPY_MOnMonth()
-    #同步世界服务器时间
-    SetMapServerTimeFromGameServer(pack.GetTime())
     
     playerManager = GameWorld.GetPlayerManager()
     for i in xrange(playerManager.GetPlayerCount()):
@@ -391,56 +222,12 @@
             continue
         
         PlayerOnMonth(curPlayer)
-    
-    return
-
-def __Func_GameServer_OnMonthEx(tick):
-    GameWorld.Log("MapServer -> OnMonthEx!")
-    
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        
         PlayerOnMonthEx(curPlayer)
         
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //01 04 新一年的响应#tagMOnYear
-# tagMOnYear       *   GettagMOnYear();
-# 
-# class   IPY_MOnYear
-# {
-# public:
-# 
-#    char *      GetTime();
-# };
-#===============================================================================
-
-## 世界服务器->每年响应(封包参数)01 04 新一年的响应
-#  @param index 玩家索引
-#  @param tick 当前时间 
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_OnYear(index, tick):
-    GameWorld.GetPsycoFunc(__Func_GameServer_OnYear)(index, tick)
-    return
-
-## 世界服务器->每年响应(封包参数)01 04 新一年的响应
-#  @param index 玩家索引
-#  @param tick 当前时间 
-#  @return None
-#  @remarks 函数详细说明.
-def __Func_GameServer_OnYear(index, tick):
+def DoLogic_OnYear(tick):
     GameWorld.Log("MapServer -> OnYear")
-    #获得新年响应封包
-    pack = IPY_GameWorld.IPY_MOnYear()
-    #同步世界服务器时间
-    SetMapServerTimeFromGameServer(pack.GetTime())
     
     playerManager = GameWorld.GetPlayerManager()
     for i in range(0, playerManager.GetPlayerCount()):
@@ -1008,6 +795,49 @@
     GameWorld.Log('验证重生点完毕, mapID = %s, cnt = %s'%(mapID, br_Count))
     return
 #---------------------------------------------------------------------
+
+def GMDateTime(curPlayer, eventName):
+    if eventName == 'GMOnHour':
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
+        return
+    
+    if eventName == 'GMOnDay':
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
+        return
+    
+    if eventName == 'GMOnWeek':
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
+        return
+    
+    if eventName == 'GMOnMonth':
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
+        return
+    
+    if eventName == 'GMOnYear':
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnYear, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
+        #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
+        return
+    
+    return
+
 ## 更新玩家在线时间(参数 -> 当前玩家)
 #  @param curPlayer 当前玩家
 #  @return None
@@ -1672,21 +1502,6 @@
     elif key == ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.CrossDailyActionID_YaomoBoss:
         if gameWorldMgr.GetGameWorldDictByKey(key) != value:
             PlayerCrossYaomoBoss.OnYaomoBossStateChange(value, tick)
-            
-    # OnDayEx
-    elif key == ShareDefine.Def_Notify_WorldKey_OnDayEx:
-        if value and gameWorldMgr.GetGameWorldDictByKey(key) != value:
-            __Func_GameServer_OnDayEx(tick)
-            
-    # OnWeekEx
-    elif key == ShareDefine.Def_Notify_WorldKey_OnWeekEx:
-        if value and gameWorldMgr.GetGameWorldDictByKey(key) != value:
-            __Func_GameServer_OnWeekEx(tick)
-            
-    # OnMonthEx
-    elif key == ShareDefine.Def_Notify_WorldKey_OnMonthEx:
-        if value and gameWorldMgr.GetGameWorldDictByKey(key) != value:
-            __Func_GameServer_OnMonthEx(tick)
             
     # 世界等级      
     elif key == ShareDefine.Def_Notify_WorldKey_WorldAverageLv:

--
Gitblit v1.8.0