From b1e0ad47775be0a4eb065824d4cd1855f1a51b48 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 15 五月 2025 22:23:22 +0800
Subject: [PATCH] 0312 同步遗漏更新导致的问题,暂未同步以下内容
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 321 +++++++++++-----------------------------------------
1 files changed, 70 insertions(+), 251 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 0e9b165..5f70c9b 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"""
#---------------------------------------------------------------------
@@ -142,59 +129,21 @@
import PlayerXiangong
import PlayerFuncTeam
import PlayerMineArea
+import PlayerMail
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()
#清空每日日记记录信息
@@ -214,60 +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!")
+ 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)
@@ -284,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()):
@@ -326,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()):
@@ -387,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()):
@@ -464,15 +255,15 @@
# @return None
# @remarks 函数详细说明.
def GameServer_InitOK(index, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- try:
- #通知BServer自己OK了
- curPlayer.SendToBServerServerInitOK()
- ChPlayer.OnAllServerInitOK(curPlayer, tick)
- except:
- curPlayer.Kick(IPY_GameWorld.disWaitForPlayerLoinError)
- import traceback
- GameWorld.RaiseException("玩家上线逻辑错误\r\n%s" % traceback.format_exc())
+ # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ # try:
+ # #通知BServer自己OK了
+ # curPlayer.SendToBServerServerInitOK()
+ # ChPlayer.OnAllServerInitOK(curPlayer, tick)
+ # except:
+ # curPlayer.Kick(IPY_GameWorld.disWaitForPlayerLoinError)
+ # import traceback
+ # GameWorld.RaiseException("玩家上线逻辑错误\r\n%s" % traceback.format_exc())
return
#--------------------------------------------------------
@@ -1004,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
@@ -1668,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