From c63ffd10aecb12b2e09dae603cf9a0f824f6482c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 15:46:15 +0800
Subject: [PATCH] 16 卡牌服务端(合成目标物品与材料物品不在同一背包时支持合成;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 73211db..c2bb1c8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -123,6 +123,10 @@
     #重新加载已经预存的脚本
     for name, reloadPath in sys.modules.items():
         try:
+            pathStr = str(reloadPath)
+            if "\\Lib\\" in pathStr or "\\DLLs\\" in pathStr:
+                #DebugLog("Py库脚本不重读,会引起类继承出现问题导致报错! %s, %s" % (name, reloadPath))
+                continue
             if name in ["PyGameData"]:
                 DebugLog("%s 模块不重读!" % name)
                 continue
@@ -509,7 +513,7 @@
 def CanHappen(rate, maxRate=ShareDefine.Def_MaxRateValue):
     if rate <= 0:
         return 0
-    if random.randint(0, maxRate -1) < rate:
+    if rate >= maxRate or random.randint(0, maxRate -1) < rate:
         return 1
     
     return 0
@@ -974,6 +978,16 @@
     dateTimeB = datetime.datetime(dateTimeB.year, dateTimeB.month, dateTimeB.day, 0, 0, 0)
     return (dateTimeA - dateTimeB).days
 
+def GetEndTimeByZeroTime(startTime, addDays):
+    ## 获取结束时间,根据0点结束计算
+    # @param startTime: 起始时间戳
+    # @param addDays: 增加的天数,如果是1天实际为当天,即1代表当天
+    startDate = ChangeTimeNumToDatetime(startTime)
+    startZeroDate = datetime.datetime(startDate.year, startDate.month, startDate.day, 23, 59, 59)
+    startZeroTime = int(time.mktime(startZeroDate.timetuple()))
+    endTime = startTime + (startZeroTime - startTime) + max(addDays - 1, 0) * 24 * 3600
+    return endTime
+
 #---------------------------------------------------------------------
 ##获取与当前时间相差天数的datetime格式数据
 # @param diffDays 差距天数
@@ -1435,6 +1449,10 @@
     paInfoList = infoList[:-2]
     platformAccID = Def_AccID_Split_Sign.join(paInfoList)
     return platformAccID
+def GetAppIDByAccID(gameAccID):
+    ## 根据账号获取appID
+    infoList = gameAccID.split(Def_AccID_Split_Sign)
+    return infoList[-2]
 
 def GetSessionID(curPlayer):
     return md5.md5(curPlayer.GetAccID() + curPlayer.GetAccountData().GetLastLoginTime() +'mobile').hexdigest()
@@ -1731,6 +1749,8 @@
     randList = []
     weight = 0
     for info in weightList:
+        if not info[0]:
+            continue
         weight += info[0]
         randList.append([weight, info[1] if len(info) == 2 else info[1:]])
     if not randList:
@@ -1932,7 +1952,7 @@
     ## 跨服服务器时间
     if IsCrossServer():
         return GetCurrentDataTimeStr()
-    lastCrossServerTime, lastServerTime, _ = PyGameData.g_crossServerTimeInfo
+    lastCrossServerTime, lastServerTime = PyGameData.g_crossServerTimeInfo
     if not lastCrossServerTime:
         return GetCurrentDataTimeStr()
     curTime = int(time.time())

--
Gitblit v1.8.0