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/GM/Commands/test_OnDay.py | 38 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnYear.py | 41 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 25 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 96 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py | 12
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py | 52 ++
/dev/null | 98 ----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnMonth.py | 40 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py | 309 +++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 18
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetOpenServerDay.py | 36 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnHour.py | 37 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBPlayerViewCache.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBEventTrig.py | 85 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBMail.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py | 14
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 303 ++----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBStruct.py | 62 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnWeek.py | 39 +
23 files changed, 979 insertions(+), 355 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index aa30ab6..174b641 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -22348,6 +22348,102 @@
#------------------------------------------------------
+# A1 03 同步开服天数 #tagMCOpenServerDay
+
+class tagMCOpenServerDay(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Day", c_ushort), # 已开服天数,从0开始
+ ("IsMixServer", c_ubyte), #是否是合服服务器
+ ("MixDay", c_ushort), # 已合服天数,从0开始
+ ("OpenWeekday", c_ubyte), #开服是周几,1代表周一
+ ("NowYear", c_ushort), #服务器当前时间 - 年
+ ("NowMonth", c_ubyte),
+ ("NowDay", c_ubyte),
+ ("NowHour", c_ubyte),
+ ("NowMinute", c_ubyte),
+ ("NowSecond", c_ubyte),
+ ("NowMicSecond", c_int),
+ ("WeekOfYear", c_ubyte), #一年中的第几周
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA1
+ self.SubCmd = 0x03
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA1
+ self.SubCmd = 0x03
+ self.Day = 0
+ self.IsMixServer = 0
+ self.MixDay = 0
+ self.OpenWeekday = 0
+ self.NowYear = 0
+ self.NowMonth = 0
+ self.NowDay = 0
+ self.NowHour = 0
+ self.NowMinute = 0
+ self.NowSecond = 0
+ self.NowMicSecond = 0
+ self.WeekOfYear = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCOpenServerDay)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A1 03 同步开服天数 //tagMCOpenServerDay:
+ Cmd:%s,
+ SubCmd:%s,
+ Day:%d,
+ IsMixServer:%d,
+ MixDay:%d,
+ OpenWeekday:%d,
+ NowYear:%d,
+ NowMonth:%d,
+ NowDay:%d,
+ NowHour:%d,
+ NowMinute:%d,
+ NowSecond:%d,
+ NowMicSecond:%d,
+ WeekOfYear:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Day,
+ self.IsMixServer,
+ self.MixDay,
+ self.OpenWeekday,
+ self.NowYear,
+ self.NowMonth,
+ self.NowDay,
+ self.NowHour,
+ self.NowMinute,
+ self.NowSecond,
+ self.NowMicSecond,
+ self.WeekOfYear
+ )
+ return DumpString
+
+
+m_NAtagMCOpenServerDay=tagMCOpenServerDay()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerDay.Cmd,m_NAtagMCOpenServerDay.SubCmd))] = m_NAtagMCOpenServerDay
+
+
+#------------------------------------------------------
#A1 07 玩家掉率加成 #tagMCPlayerDropRate
class tagMCPlayerDropRate(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
index 47ff107..2168596 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBDataMgr.py
@@ -17,6 +17,7 @@
import GameWorld
import PyGameData
+import DBEventTrig
import DBPlayerViewCache
import DBFamily
import DBMail
@@ -48,9 +49,6 @@
curMinute = curTime.minute
ServerDataBackup()
DBFamily.OnMinute(curMinute)
- return
-
-def OnDayEx():
return
#------------------------------------------- 备档 ---------------------------------------------------
@@ -163,6 +161,7 @@
class PyGameDataManager(object):
def __init__(self):
+ self.EventTrigMgr = DBEventTrig.EventTrigMgr()
self.PlayerViewCacheMgr = DBPlayerViewCache.PlayerViewCacheMgr()
self.FamilyMgr = DBFamily.FamilyMgr()
self.MailMgr = DBMail.MailMgr()
@@ -170,6 +169,7 @@
def GetSaveData(self):
buff = ""
+ buff += self.EventTrigMgr.GetSaveData()
buff += self.PlayerViewCacheMgr.GetSaveData()
buff += self.FamilyMgr.GetSaveData()
buff += self.MailMgr.GetSaveData()
@@ -177,6 +177,7 @@
def LoadGameData(self, gameBuffer, pos):
dataslen = len(gameBuffer)
+ pos = self.EventTrigMgr.LoadPyGameData(gameBuffer, pos, dataslen)
pos = self.PlayerViewCacheMgr.LoadPyGameData(gameBuffer, pos, dataslen)
pos = self.FamilyMgr.LoadPyGameData(gameBuffer, pos, dataslen)
pos = self.MailMgr.LoadPyGameData(gameBuffer, pos, dataslen)
@@ -190,6 +191,11 @@
PyGameData.g_pyGameDataManager = pyGameDataMgr
return pyGameDataMgr
+def GetEventTrigMgr():
+ ## 事件值管理器
+ dbDataMgr = GetDBDataMgr()
+ return dbDataMgr.EventTrigMgr
+
def GetPlayerViewCacheMgr():
## 玩家查看缓存数据管理器
dbDataMgr = GetDBDataMgr()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBStruct.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBStruct.py
index c258a1a..2ca0b00 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBStruct.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/DBStruct.py
@@ -666,7 +666,67 @@
else:
self.Operate = Str[:15]
-
+
+# 事件触发表 #tagDBEventTrig
+class tagDBEventTrig(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ('EventLen', ctypes.c_ulong),
+ ('EventID', ctypes.c_char_p),
+ ('EventValue', ctypes.c_ulong),
+ ('ADOResult', ctypes.c_ulong),
+ ]
+
+ def __init__(self):
+ Structure.__init__(self)
+ self.clear()
+
+ def clear(self):
+ self.EventLen = 0
+ self.EventID = ''
+ self.EventValue = 0
+
+ def readData(self, buf, pos = 0, length = 0):
+ if not pos <= length:
+ return -1
+ if len(buf) < pos + self.getLength():
+ return -1
+ self.clear()
+ self.EventLen, pos = CommFunc.ReadDWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.EventLen)
+ self.EventID = ctypes.c_char_p(tmp)
+ self.EventValue, pos = CommFunc.ReadDWORD(buf, pos)
+ return self.getLength()
+
+ def getBuffer(self):
+ buf = ''
+ buf = CommFunc.WriteDWORD(buf, self.EventLen)
+ buf = CommFunc.WriteString(buf, self.EventLen, self.EventID)
+ buf = CommFunc.WriteDWORD(buf, self.EventValue)
+ return buf
+
+ def getLength(self):
+ length = 0
+ length += sizeof(ctypes.c_ulong)
+ length += self.EventLen
+ length += sizeof(ctypes.c_ulong)
+ return length
+
+ def outputString(self):
+ output = '''// 事件触发表 #tagDBEventTrig:
+ EventLen = %s,
+ EventID = %s,
+ EventValue = %s,
+ ADOResult = %s,
+ '''%(
+ self.EventLen,
+ self.EventID,
+ self.EventValue,
+ self.ADOResult,
+ )
+ return output
+
+
# 家族表 #tagDBFamily
class tagDBFamily(Structure):
_pack_ = 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBEventTrig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBEventTrig.py
new file mode 100644
index 0000000..6fb518a
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBEventTrig.py
@@ -0,0 +1,85 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package DB.StructData.DBEventTrig
+#
+# @todo:事件触发值管理器
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 事件触发值管理器
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import DBStruct
+import GameWorld
+import CommFunc
+
+class EventTrigMgr():
+
+ def __init__(self):
+ self.__eventDict = {} # 事件字典 {key:value, ...}
+ return
+
+ def GetDict(self): return self.__eventDict
+
+ def GetValue(self, key, defaultValue=0):
+ if key in self.__eventDict:
+ return self.__eventDict[key]
+ return defaultValue
+
+ def SetValue(self, key, value):
+ self.__eventDict[key] = value
+ return value
+
+ def DelAllKey(self, excludeList=[]):
+ ## 删除所有记录
+ # @param excludeList: 不包含的key列表
+ self.__eventDict = {k:self.GetValue(k) for k in excludeList}
+ return
+
+ def DelKey(self, key):
+ return self.__eventDict.pop(key, None)
+
+ def SetValueIncrement(self, key):
+ ## 设定服务器事件(该事件记录为数值从1一直自增累加)
+ # @return: 自增后的值
+ value = self.GetValue(key, 0)
+ return self.SetValue(key, value + 1)
+
+ # 保存数据 存数据库和realtimebackup
+ def GetSaveData(self):
+ savaData = ""
+ cntData = ""
+ cnt = 0
+
+ dbData = DBStruct.tagDBEventTrig()
+ for key, value in self.__eventDict.items():
+ if not value:
+ continue
+ dbData.clear()
+ dbData.EventID = key
+ dbData.EventLen = len(dbData.EventID)
+ dbData.EventValue = value
+ cnt += 1
+ savaData += dbData.getBuffer()
+
+ GameWorld.Log("Save DBEventTrig count :%s len=%s" % (cnt, len(savaData)))
+ return CommFunc.WriteDWORD(cntData, cnt) + savaData
+
+ # 从数据库载入数据
+ def LoadPyGameData(self, datas, pos, dataslen):
+
+ cnt, pos = CommFunc.ReadDWORD(datas, pos)
+ GameWorld.Log("Load DBEventTrig count :%s" % cnt)
+
+ dbData = DBStruct.tagDBEventTrig()
+ for _ in xrange(cnt):
+ pos += dbData.readData(datas, pos, dataslen)
+ self.__eventDict[dbData.EventID] = dbData.EventValue
+
+ return pos
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
index 44d3fd7..293d8de 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
@@ -480,6 +480,13 @@
self.__familyIDDict.pop(familyID, None)
return family
+ def DelAllFamily(self):
+ for index in range(self.GetCount())[::-1]:
+ family = self.GetAt(index)
+ familyID = family.GetID()
+ self.DelFamily(familyID)
+ return
+
def GetCount(self): return len(self.__familyList)
def GetAt(self, index):
family = None
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBMail.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBMail.py
index bd9a051..5a65c35 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBMail.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBMail.py
@@ -329,6 +329,13 @@
playerStateDict = self.__serverMailPlayerStateDict.pop(guid, {})
return playerStateDict
+ def DelAllMail(self):
+ self.__personalMailDict = {}
+ self.__mailItemDict = {}
+ self.__serverMailDict = {}
+ self.__serverMailPlayerStateDict = {}
+ return
+
# 保存数据 存数据库和realtimebackup
def GetSaveData(self):
saveData = ""
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBPlayerViewCache.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBPlayerViewCache.py
index a108d0d..4acf923 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBPlayerViewCache.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBPlayerViewCache.py
@@ -223,6 +223,13 @@
self.__serverIDRangePlayerIDDict = {}
return
+ def DelAllCache(self):
+ self.__viewCacheList = []
+ self.__idIndexDict = {}
+ self.__needSort = False
+ self.__serverIDRangePlayerIDDict = {}
+ return
+
def GetCount(self): return len(self.__viewCacheList)
def At(self, index):
viewCache = self.__viewCacheList[index]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py
new file mode 100644
index 0000000..834e883
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.ClearOpenServerDay
+#
+# @todo:清除开服天
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 清除开服天
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import ShareDefine
+import GameWorldEvent
+import DBDataMgr
+import ChPlayer
+
+import time
+
+#---------------------------------------------------------------------
+## 执行逻辑
+# @param curPlayer 当前玩家
+# @param cmdList 参数
+# @return None
+# @remarks 函数详细说明.
+def OnExec(curPlayer, cmdList):
+ #重置开服天,设置非合服
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerWeek, 0)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerDay, 0)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_IsMixServer, 0)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_MixServerDay, 0)
+
+ curTime = int(time.time())
+ GameWorldEvent.SetInitOpenServerTime(curTime)
+
+ if curPlayer:
+ ChPlayer.Sync_OpenServerDay(curPlayer)
+ ServerDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+ IsMixServer = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServer)
+ MixDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_MixServerDay) + 1
+ OpenWeekday = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OpenServerWeekday)
+ GameWorld.DebugAnswer(curPlayer, '开服星期%s, 天数:%s 是否合服:%s, 合服天数:%s' % (OpenWeekday, ServerDay, IsMixServer, MixDay))
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetOpenServerDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetOpenServerDay.py
new file mode 100644
index 0000000..e836a50
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/GetOpenServerDay.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.GetOpenServerDay
+#
+# @todo:获取开服天
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 获取开服天
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import DBDataMgr
+import ShareDefine
+import GameWorld
+
+## 执行逻辑
+# @param curPlayer 当前玩家
+# @param cmdList 参数
+# @return None
+# @remarks 函数详细说明.
+def OnExec(curPlayer, cmdList):
+ ServerDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+ IsMixServer = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServer)
+ MixDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_MixServerDay) + 1
+ OpenWeekday = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OpenServerWeekday)
+ GameWorld.DebugAnswer(curPlayer, '开服星期%s, 天数:%s 是否合服:%s, 合服天数:%s' % (OpenWeekday, ServerDay, IsMixServer, MixDay))
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py
new file mode 100644
index 0000000..2b7b51c
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.test_OnDay
+#
+# @todo:模拟过天
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 模拟过天
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerEventCounter
+import GameWorldEvent
+
+def OnExec(curPlayer, gmList):
+ __DoExec(GameWorld.GetGameWorld().GetTick())
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
+def __DoExec(tick):
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ PlayerEventCounter.GMDateTime(curPlayer, "GMOnDay")
+
+ GameWorldEvent.OnHour(tick)
+ GameWorldEvent.OnDay(tick)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnHour.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnHour.py
new file mode 100644
index 0000000..edcf194
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnHour.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.test_OnHour
+#
+# @todo:模式过小时
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 模式过小时
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerEventCounter
+import GameWorldEvent
+
+def OnExec(curPlayer, gmList):
+ __DoExec(GameWorld.GetGameWorld().GetTick())
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
+def __DoExec(tick):
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ PlayerEventCounter.GMDateTime(curPlayer, "GMOnHour")
+
+ GameWorldEvent.OnHour(tick)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnMonth.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnMonth.py
new file mode 100644
index 0000000..d9db5f3
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnMonth.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.test_OnMonth
+#
+# @todo:模拟过月
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 模拟过月
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerEventCounter
+import GameWorldEvent
+
+def OnExec(curPlayer, gmList):
+ __DoExec(GameWorld.GetGameWorld().GetTick())
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
+def __DoExec(tick):
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ PlayerEventCounter.GMDateTime(curPlayer, "GMOnMonth")
+
+ GameWorldEvent.OnHour(tick)
+ GameWorldEvent.OnDay(tick)
+ GameWorldEvent.OnWeek(tick)
+ GameWorldEvent.OnMonth(tick)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnWeek.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnWeek.py
new file mode 100644
index 0000000..c37ae06
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnWeek.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.test_OnWeek
+#
+# @todo:模拟过周
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 模拟过周
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerEventCounter
+import GameWorldEvent
+
+def OnExec(curPlayer, gmList):
+ __DoExec(GameWorld.GetGameWorld().GetTick())
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
+def __DoExec(tick):
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ PlayerEventCounter.GMDateTime(curPlayer, "GMOnWeek")
+
+ GameWorldEvent.OnHour(tick)
+ GameWorldEvent.OnDay(tick)
+ GameWorldEvent.OnWeek(tick)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnYear.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnYear.py
new file mode 100644
index 0000000..4ef0c9c
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnYear.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.test_OnYear
+#
+# @todo:模拟过年
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 模拟过年
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerEventCounter
+import GameWorldEvent
+
+def OnExec(curPlayer, gmList):
+ __DoExec(GameWorld.GetGameWorld().GetTick())
+
+ # 暂时同步GameServer,之后可去除
+ return True
+
+def __DoExec(tick):
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if not GameWorld.IsNormalPlayer(curPlayer):
+ continue
+ PlayerEventCounter.GMDateTime(curPlayer, "GMOnYear")
+
+ GameWorldEvent.OnHour(tick)
+ GameWorldEvent.OnDay(tick)
+ GameWorldEvent.OnWeek(tick)
+ GameWorldEvent.OnMonth(tick)
+ GameWorldEvent.OnYear(tick)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 6092f9c..77f4ad0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -1318,6 +1318,10 @@
## 服务器组ID,必须唯一,代表这台物理服务器
return ToIntDef(ReadChConfig.GetPyMongoConfig("platform", "GroupID"), 0)
+def GetServerID():
+ ## 当前服务器ID
+ return 87
+
def GetMainServerID(serverID):
## 获取服务器ID所属主服ID
ServerIDMainServerDict = IpyGameDataPY.GetConfigEx("ServerIDMainServerDict")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
new file mode 100644
index 0000000..9e4ecb5
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
@@ -0,0 +1,309 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GameWorldLogic.GameWorldEvent
+#
+# @todo:服务器世界事件
+# @author hxp
+# @date 2025-05-15
+# @version 1.0
+#
+# 详细描述: 服务器世界事件
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-05-15 10:35"""
+#-------------------------------------------------------------------------------
+
+import DBDataMgr
+import GameWorld
+import PlayerEventCounter
+import ShareDefine
+import PyGameData
+
+import datetime
+import time
+
+def Get_Server_Year(): return DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_Server_Year)
+def Set_Server_Year():
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_Server_Year, datetime.datetime.today().year)
+ return
+def Get_Server_Month(): return DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_Server_Month)
+def Set_Server_Month():
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_Server_Month, datetime.datetime.today().month)
+ return
+def Get_Server_Week(): return DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_Server_Week)
+def Set_Server_Week():
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_Server_Week, datetime.datetime.isocalendar(datetime.datetime.today())[1])
+ return
+def Get_Server_Day(): return DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_Server_Day)
+def Set_Server_Day():
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_Server_Day, datetime.datetime.today().day)
+ return
+def Get_Server_Hour(): return DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_Server_Hour)
+def Set_Server_Hour():
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_Server_Hour, datetime.datetime.today().hour)
+ return
+
+def InitServerTime():
+ ## 初始化服务器时间
+ if not Get_Server_Year():
+ Set_Server_Hour()
+ Set_Server_Day()
+ Set_Server_Week()
+ Set_Server_Month()
+ Set_Server_Year()
+ GameWorld.Log('###服务器新开, 初始化服务器时间 !')
+
+ return Get_Server_Hour(), Get_Server_Day(), Get_Server_Week(), Get_Server_Month(), Get_Server_Year()
+
+def InitGameWorld(tick):
+ ## GameWorld初始化
+ if PyGameData.g_initGameTime:
+ return
+ PyGameData.g_initGameTime = int(time.time())
+ serverID = GameWorld.GetServerID()
+ GameWorld.Log("服务器启动初始化InitGameWorld: serverID=%s" % serverID)
+ DBDataMgr.OnServerStart() # 优先加载公共数据
+ LoadDBPlayer()
+
+ #初始话开服时间、星期几
+ initOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_InitOpenServerTime)
+ openServerWeekday = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OpenServerWeekday)
+ if initOpenServerTime <= 0 or openServerWeekday <= 0:
+ #记录首次开发时间(现实时间戳)
+ SetInitOpenServerTime(initOpenServerTime if initOpenServerTime else int(time.time()))
+
+ #合服首次启动加载处理
+ __DoMixServerInit()
+
+ # 其他功能初始化
+
+
+ OnHighProcess(tick) # 主动触发一次高精度的调用,确保服务器启动后一些功能活动等的数据会被加载
+ OnMinute(tick)
+
+ GameWorld.Log("=============================== 服务器启动成功 ===================================")
+ isCrossServer = GameWorld.IsCrossServer()
+ if isCrossServer:
+ pass
+ else:
+ serverGroupID = GameWorld.GetServerGroupID()
+ GameWorld.Log("服务器启动成功: ServerGroupID=%s,serverID=%s" % (serverGroupID, serverID))
+ GameWorld.GetGameWorld().SetGameWorldDict(ShareDefine.Def_WorldKey_GameWorldInitOK, 1)
+ return
+
+def AllMapServerInitOK(tick):
+ return
+
+def LoadDBPlayer():
+ if GameWorld.IsCrossServer():
+ return
+ #PlayerDBOper.FindDBOper(PlayerDBOper.Table_DBPlayer, {}, {"PlayerID":1, "AccID":1, "_id":0}, LoadDBPlayerRet)
+ return
+
+def GMSetOpenServerTime(openServerTime):
+ '''GM设置开服时间
+ @param openServerTime: 开服时间戳
+ @return: 1-成功;-1-设置的时间异常;-2-已经设置过且开服了,不能重复设置
+ '''
+ serverID = GameWorld.GetServerID()
+ curTime = int(time.time())
+ if openServerTime < curTime:
+ GameWorld.ErrLog("当前时间已经超过设置的开服时间,不能设置! serverID=%s" % serverID)
+ #GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_InvalidTime, "The set time is less than the current time.")
+ return -1
+ setOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_SetOpenServerTime)
+ if setOpenServerTime and curTime > setOpenServerTime:
+ GameWorld.ErrLog("已经设置过且开服了,不能重复设置! serverID=%s" % serverID)
+ #GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ServerAlreadyOpen, "The server has been opened.")
+ return -2
+
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_SetOpenServerTime, openServerTime)
+ GameWorld.Log("GM设置开服时间: serverID=%s,%s,%s" % (serverID, GameWorld.ChangeTimeNumToStr(openServerTime), openServerTime))
+ if openServerTime == curTime:
+ OnNewServerOpen(GameWorld.GetGameWorld().GetTick())
+
+ return 1
+
+def DoCheckNewServerOpen(tick):
+ setOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_SetOpenServerTime)
+ if not setOpenServerTime:
+ #GameWorld.DebugLog("没有指定开服时间!")
+ return
+ curOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_InitOpenServerTime)
+ if curOpenServerTime == setOpenServerTime:
+ #GameWorld.DebugLog("已经正式开服过了!")
+ return
+ curTime = int(time.time())
+ if curTime < setOpenServerTime:
+ #GameWorld.DebugLog("还未到正式开服时间!")
+ return
+ OnNewServerOpen(tick)
+ return
+
+def OnNewServerOpen(tick):
+ '''新服开启需要处理的逻辑'''
+
+ serverID = GameWorld.GetServerID()
+ GameWorld.Log("执行正式开服重置逻辑... serverID=%s" % serverID)
+
+ setOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_SetOpenServerTime)
+ if not setOpenServerTime:
+ return
+
+ #清DBGSTrig
+ excludeList = [ShareDefine.Def_InitOpenServerTime, ShareDefine.Def_SetOpenServerTime]
+ DBDataMgr.GetEventTrigMgr().DelAllKey(excludeList)
+ #清家族
+ DBDataMgr.GetFamilyMgr().DelAllFamily()
+ #清邮件
+ DBDataMgr.GetMailMgr().DelAllMail()
+ DBDataMgr.GetPlayerViewCacheMgr().DelAllCache()
+
+ SetInitOpenServerTime(setOpenServerTime)
+ AllMapServerInitOK(tick)
+
+ GameWorld.GetGameWorld().SaveGameServerData()
+ GameWorld.SendGameError("ClearOpenServerOK")
+ return
+
+def SetInitOpenServerTime(initTime):
+ openDatetime = GameWorld.ChangeTimeNumToDatetime(initTime)
+ openServerWeekday = openDatetime.weekday() + 1
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_InitOpenServerTime, initTime)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OpenServerWeekday, openServerWeekday)
+ GameWorld.Log("设置开服时间: %s(%s), 周%s" % (openDatetime, initTime, openServerWeekday))
+ # 需要这个参数主要是GM工具会判断是否有设置过,所以该值一般只有GM命令或工具才能设置
+ setOpenServerTime = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_SetOpenServerTime)
+ if setOpenServerTime and setOpenServerTime != initTime:
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_SetOpenServerTime, initTime)
+ GameWorld.Log(" 同步更新 Def_SetOpenServerTime=%s" % initTime)
+ return
+
+def __DoMixServerInit():
+ isMixServer = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServer)
+ if not isMixServer:
+ GameWorld.DebugLog("非合服,不处理合服首次启动数据加载!")
+ return
+
+ isMixServerInitOK = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServerInitOK)
+ if isMixServerInitOK:
+ GameWorld.DebugLog("合服首次启动加载已经处理过!")
+ return
+
+ GameWorld.Log("合服首次启动加载处理...")
+
+ # 清除指定通用数据,一般是合服工具删,这里可以再做个补充
+ #universalRecMgr = GameWorld.GetUniversalRecMgr()
+ #delRecTypeList = []
+ #GameWorld.Log("清除指定通用数据 delRecTypeList=%s" % str(delRecTypeList))
+ #for delRecType in delRecTypeList:
+ # universalRecMgr.Delete(delRecType)
+
+ # 删除过期的通用数据
+ #__DelOutofdayRecData(universalRecMgr)
+
+ # 设置合服首次启动加载成功
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_IsMixServerInitOK, 1)
+
+ # 设置本次合服时的开服天数、世界等级
+ serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_LastMixServerDay, serverDay)
+ GameWorld.Log(" 合服首次启动加载成功! serverDay=%s" % (serverDay))
+ return
+
+def OnHighProcess(tick):
+ ## 每秒分钟执行一次
+ return
+
+def OnMinute(tick):
+ ## 每整分钟执行一次
+ curTime = GameWorld.GetCurrentTime()
+ #检查服务器正式开服
+ DoCheckNewServerOpen(tick)
+ DBDataMgr.OnMinute(curTime)
+ DoLogic_GameWorldEvenByTime(tick)
+
+ #其他功能逻辑
+ #GameWorldActionControl.Dispose_OperationActionState()
+ #GameWorldActionControl.Dispose_DailyActionState()
+ #GameWorldActionControl.Dispose_FBStateTime()
+ return
+
+def DoLogic_GameWorldEvenByTime(tick):
+ #-----------服务器当前时间
+ curTime = datetime.datetime.today()
+ curTimeHour = curTime.hour
+ curTimeDay = curTime.day
+ curTimeWeek = datetime.datetime.isocalendar(curTime)[1]
+ curTimeMonth = curTime.month
+ curTimeYear = curTime.year
+
+ #-----------服务器记录的时间
+ serverHour , serverDay , serverWeek , serverMonth , serverYear = InitServerTime()
+
+ #-----------开始比对时间
+ #OnHour事件
+ if (serverHour != curTimeHour or serverDay != curTimeDay or serverMonth != curTimeMonth or serverYear != curTimeYear):
+ Set_Server_Hour()
+ OnHour(tick)
+
+ #OnDay事件
+ if (serverDay != curTimeDay or serverMonth != curTimeMonth or serverYear != curTimeYear):
+ Set_Server_Day()
+ OnDay(tick)
+
+ #OnWeek事件
+ #不考虑隔年情况,如2009,12,31日关服->2010,12,31日开服(不触发OnWeek)
+ if (serverWeek != curTimeWeek):
+ Set_Server_Week()
+ OnWeek(tick)
+
+ #OnMonth事件
+ if (serverMonth != curTimeMonth or serverYear != curTimeYear):
+ Set_Server_Month()
+ OnMonth(tick)
+
+ #OnYear事件
+ if serverYear != curTimeYear:
+ Set_Server_Year()
+ OnYear(tick)
+
+ return
+
+def OnHour(tick):
+ GameWorld.Log("Server -> OnHour!")
+ PlayerEventCounter.DoLogic_OnHour(tick)
+ return
+
+def OnDay(tick):
+ GameWorld.Log("Server -> OnDay!")
+ #设定服务器当前天事件
+ eventMgr = DBDataMgr.GetEventTrigMgr()
+ eventMgr.SetValueIncrement(ShareDefine.Def_ServerDay)
+ isMixServer = eventMgr.GetValue(ShareDefine.Def_IsMixServer)
+ if isMixServer:
+ eventMgr.SetValueIncrement(ShareDefine.Def_MixServerDay)
+
+ PlayerEventCounter.DoLogic_OnDay(tick)
+ return
+
+def OnWeek(tick):
+ GameWorld.Log("Server -> OnWeek!")
+ eventMgr = DBDataMgr.GetEventTrigMgr()
+ eventMgr.SetValueIncrement(ShareDefine.Def_ServerWeek)
+
+ PlayerEventCounter.DoLogic_OnWeek(tick)
+ return
+
+def OnMonth(tick):
+ GameWorld.Log("Server -> OnMonth!")
+ PlayerEventCounter.DoLogic_OnMonth(tick)
+ return
+
+def OnYear(tick):
+ GameWorld.Log("Server -> OnYear!")
+ PlayerEventCounter.DoLogic_OnYear(tick)
+ return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
index fa6d995..7a28ab7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -44,7 +44,6 @@
import EventShell
import FBLogic
import FBCommon
-import ShareDefine
import EventReport
import ItemCommon
import PyGameData
@@ -52,7 +51,7 @@
import GameMap
import NPCRealmRefresh
import IpyGameDataPY
-import DBDataMgr
+import GameWorldEvent
#---------------------------------------------------------------------
## 副本开启
# @param gameWorld IPY_GameWorld
@@ -593,9 +592,7 @@
# @return None
# @remarks 函数详细说明.
def InitGameWorld(tick):
- if not PyGameData.g_initGame:
- PyGameData.g_initGame = True
- DBDataMgr.OnServerStart()
+ GameWorldEvent.InitGameWorld(tick)
gameWorld = GameWorld.GetGameWorld()
ItemCommon.InitPyItem()
EventShell.DoReloadRefresh()
@@ -778,12 +775,15 @@
def __OnMapMinute(curTime, tick):
## 地图层级每分钟处理, 每分钟最多只会处理一次, 无视虚拟分线
+ if not PyGameData.g_initGameTime:
+ return
+
curMinute = curTime.minute
if curMinute == PyGameData.g_mapLastProcess_Minute:
return
- if PyGameData.g_initGame:
- DBDataMgr.OnMinute(curTime)
PyGameData.g_mapLastProcess_Minute = curMinute
+ GameWorldEvent.OnMinute(tick)
+
PlayerTeam.OnCheckTeamPlayerDisconnectTimeout(tick)
__CheckIpyDataRecycle(curTime)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index d205783..abc747b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -173,6 +173,7 @@
import PlayerActYunshi
import PlayerActTask
import PlayerMail
+import DBDataMgr
import datetime
import time
@@ -6076,6 +6077,23 @@
serverTime = GameWorld.GetCurrentTime()
if not serverTime:
return
+
+ clientPack = ChPyNetSendPack.tagMCOpenServerDay()
+ clientPack.Day = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay)
+ clientPack.IsMixServer = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServer)
+ clientPack.MixDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_MixServerDay)
+ clientPack.OpenWeekday = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OpenServerWeekday)
+ clientPack.NowYear = serverTime.year
+ clientPack.NowMonth = serverTime.month
+ clientPack.NowDay = serverTime.day
+ clientPack.NowHour = serverTime.hour
+ clientPack.NowMinute = serverTime.minute
+ clientPack.NowSecond = serverTime.second
+ clientPack.NowMicSecond = serverTime.microsecond
+ clientPack.WeekOfYear = GameWorld.GetWeekOfYear()
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+
+ #旧包先保留,之后删除
gw = GameWorld.GetGameWorld()
packData = ChPyNetSendPack.tagOpenServerDay()
packData.Clear()
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:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
index cdcf8db..eb1cf85 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
@@ -91,7 +91,7 @@
mailState = mailObj.GetMailState()
mailItemCount = mailMgr.GetMailItemCount(guid)
if mailItemCount and mailState != ShareDefine.MailState_Got:
- #GameWorld.DebugLog("个人邮件有物品邮件未领取不删除! %s" % guid, playerID)
+ #GameWorld.DebugLog("个人邮件有物品未领取不删除! %s" % guid, playerID)
continue
mailMgr.DelPersonalMail(playerID, guid)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMDateTime.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMDateTime.py
deleted file mode 100644
index d3c25a4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GMDateTime.py
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_GMDateTime
-# @todo: GM命令test_onHour , test_OnDay, test_OnWeek
-#
-# @author: panwei
-# @date 2010-03-21
-# @version 1.4
-#
-# @note: GM命令test_onHour , test_OnDay, test_OnWeek
-#---------------------------------------------------------------------
-# @change: "2010-05-12 18:30" zhengyang 添加注释
-# @change: "2010-06-10 17:46" panwei 将写死的任务1调用修改为公共调用
-# @change: "2014-10-28 19:30" hxp 增加test_OnYear
-# @change: "2015-06-17 12:00" ljd 增加test_OnMonth
-#---------------------------------------------------------------------
-#"""Version = 2015-06-17 12:00"""
-#------------------------------------------------------------------------------
-#导入
-import ChConfig
-import GameWorld
-import QuestCommon
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [str ]
-# @param tick 当前时间
-# @return None or ""
-# @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
- #GameWorld.DebugLog("GY_Query_GMDateTime query_ID=%s,packCMDList=%s" % (query_ID, packCMDList))
-
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
- if not curPlayer or curPlayer.IsEmpty():
- return ''
-
- if packCMDList == 'GMOnHour':
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
- return
-
- if packCMDList == '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 packCMDList == 'GMOnWeek':
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
- return
-
- if packCMDList == 'GMOnMonth':
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
- return
-
- if packCMDList == 'GMOnYear':
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnHour, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDay, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnDayEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeek, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnWeekEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonth, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnMonthEx, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnYear, 0)
- return
-
- GameWorld.Log( 'GY_Query_GMDateTime err =%s'%( packCMDList ) )
- return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
index b6294d7..1eb9ee8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyGameData.py
@@ -15,7 +15,7 @@
#"""Version = 2017-09-05 21:30"""
#-------------------------------------------------------------------------------
-g_initGame = False
+g_initGameTime = 0 # 初始化游戏时间戳
g_pyGameDataManager = None
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e0d4613..f4893a8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -18,6 +18,31 @@
# 游戏默认编码
Def_Game_Character_Encoding = 'gbk'
+# ------------------------- DBEventTrig事件key -------------------------
+Def_Server_Year = 'Def_Server_Year' #服务器开服自动逻辑处理 年
+Def_Server_Month = 'Def_Server_Month' #服务器开服自动逻辑处理 月
+Def_Server_Week = 'Def_Server_Week' #服务器开服自动逻辑处理 周
+Def_Server_Day = 'Def_Server_Day' #服务器开服自动逻辑处理 日
+Def_Server_Hour = 'Def_Server_Hour' #服务器开服自动逻辑处理 小时
+Def_ServerWeek = 'ServerWeek' #服务器运行了几周
+Def_ServerDay = 'ServerDay' #服务器运行了几天
+Def_OpenServerWeekday = 'OpenServerWeekday' #开服是周几, 1代表周一
+Def_IsMixServer = 'IsMixServer' #服务器是否是合服服务器
+Def_MixServerDay = 'MixServerDay' #服务器已经合服多少天
+Def_IsMixServerInitOK = 'IsMixServerInitOK' #服务器合服首次启动OK
+Def_LastMixServerDay = 'LastMixServerDay' #上次合服时的开服天数
+#首次开服时间,注意不要用该日期做开服天相关的功能逻辑,如果要用开服天,请用 Def_ServerDay
+''' 原因:
+因为目前开服天的逻辑大部分是用 Def_ServerDay,当出现服务器宕机超过24小时时,就会导致 Def_ServerDay 与 Def_InitOpenServerTime 不对应
+所以为了功能逻辑和数据的统一性,开服天相关的功能逻辑必须用 Def_ServerDay
+Def_InitOpenServerTime 目前仅用于预先设置开服日期用
+'''
+Def_InitOpenServerTime = 'InitOpenServerTime'
+Def_SetOpenServerTime = 'SetOpenServerTime' # GM工具预定的开服时间
+
+# ------------------------- WorldKey -------------------------
+Def_WorldKey_GameWorldInitOK = 'GameWorldInitOK' #GameWold是否初始化完成OK
+
#---奇迹, 职业枚举定义---
(
PlayerJob_None, # 无
--
Gitblit v1.8.0