From ee43f12300d1085a28dd44bdc802bee9917c5e0d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 四月 2024 16:42:28 +0800
Subject: [PATCH] 10138 内存分析(修复跨服运营活动读取活动配置属性bug)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py |    8 +++++---
 ServerPython/CoreServerGroup/GameServer/Script/CommFunc.py                          |   11 +++++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/CommFunc.py b/ServerPython/CoreServerGroup/GameServer/Script/CommFunc.py
index 6a580bd..c2cc476 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/CommFunc.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/CommFunc.py
@@ -27,6 +27,7 @@
 import datetime
 import subprocess
 import binascii
+import inspect
 #---------------------------------------------------------------------
 #全局变量
 
@@ -567,3 +568,13 @@
     # 由于float会有不精确的现象出现xxx.9999999的问题,所以这里计算出的结果向上取整
     return int(math.ceil(round(floatRMB * 100)))
 
+def get_class_method(cls, startswith=""):
+    ## 获取类中的所有方法
+    methods = []
+    members = inspect.getmembers(cls)
+    for member_name, member in members:
+        if startswith and not member_name.startswith(startswith):
+            continue
+        if inspect.ismethod(member):
+            methods.append(member_name)
+    return methods
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
index 1e3bd1d..f37a3c1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
@@ -25,6 +25,7 @@
 import CrossRealmMsg
 import PyGameData
 import ChConfig
+import CommFunc
 
 import datetime
 import time
@@ -404,10 +405,11 @@
             
             # ipyData 活动时间表信息由跨服服务器同步子服,活动内容取子服自己的
             ipyDataDict = {}
-            for k, v in ipyData.__dict__.items():
-                if k in ["NotifyInfoStart", "NotifyInfoEnd", "NotifyInfoLoop", "ServerIDRangeList"]:
+            methods = CommFunc.get_class_method(ipyData, "Get") # 获取所有Get开头的方法
+            for method_name in methods:
+                if method_name in ["GetNotifyInfoStart", "GetNotifyInfoEnd", "GetNotifyInfoLoop", "GetServerIDRangeList"]:
                     continue
-                ipyDataDict[k] = v
+                ipyDataDict[method_name[3:]] = getattr(ipyData, method_name)()
             ipyDataDict.update({"StartDate":startDateStr, "EndDate":endDateStr})
             GameWorld.Log("        ipyDataDict=%s" % ipyDataDict)
             

--
Gitblit v1.8.0