From 3d42020890832d98b0ef6fcd66c300a85283662d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 四月 2024 16:44:51 +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 698833f..cd2c8b6 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
 #---------------------------------------------------------------------
 #全局变量
 
@@ -568,3 +569,13 @@
     # 由于float会有不精确的现象出现xxx.9999999或xxx.0000000000001的问题,所以这里计算出的结果向上取整
     return int(math.ceil(round(floatRMB * rate)))
 
+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 e4b9461..02a95d7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossActionControl.py
@@ -26,6 +26,7 @@
 import PyGameData
 import PlayerFB
 import ChConfig
+import CommFunc
 
 import datetime
 import time
@@ -405,10 +406,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