From 789490b7d362160f7fca4580df6176498e1eb271 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 十一月 2024 15:19:13 +0800
Subject: [PATCH] 10302 【越南】【英语】【砍树】【tqxbqy】【btgotq】仙缘-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py |   49 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py
index 965e97c..c16ecfd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py
@@ -32,11 +32,36 @@
         actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
         isReset = __CheckPlayerActTaskAction(curPlayer, actNum)
         # 活动中同步活动信息
-        if not isReset and actInfo.get(ShareDefine.ActKey_State):
+        if not isReset and actInfo.get(ShareDefine.ActKey_State) and curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum):
             Sync_ActTaskActionInfo(curPlayer, actNum)
             Sync_ActTaskPlayerValueInfo(curPlayer, actNum)
             Sync_ActTaskPlayerInfo(curPlayer, actNum)
             
+    return
+
+def OnDay(curPlayer):
+    OnCheckRelateFuncAct(curPlayer)
+    return
+
+def OnCheckRelateFuncAct(curPlayer, openFuncIDList=None):
+    ## 检查关联功能ID开启的活动
+    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ActTask, {}).values():
+        if not actInfo.get(ShareDefine.ActKey_State):
+            continue
+        cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
+        ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID)
+        if not ipyData:
+            continue
+        if not hasattr(ipyData, "GetRelateFuncID"):
+            continue
+        relateFuncID = ipyData.GetRelateFuncID()
+        if not relateFuncID:
+            continue
+        if openFuncIDList and relateFuncID not in openFuncIDList:
+            continue
+        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
+        __CheckPlayerActTaskAction(curPlayer, actNum)
+        
     return
 
 def RefreshActTaskActionInfo(actNum):
@@ -62,6 +87,12 @@
     playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum) # 玩家身上的活动ID
     lastTempID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskTempID % actNum)
     
+    funcActInfo = GameWorld.GetActRelateFuncInfo(curPlayer, "ActTask", actInfo, playerActID)
+    if funcActInfo:
+        isInAct, actID = funcActInfo
+        if not isInAct:
+            return
+        
     # 活动ID 相同的话不处理
     if actID == playerActID:
         GameWorld.DebugLog("任务活动ID不变,不处理! actNum=%s,actID=%s" % (actNum, actID), playerID)
@@ -121,7 +152,8 @@
         actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
         if not actInfo.get(ShareDefine.ActKey_State):
             continue
-        
+        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum):
+            continue
         cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
         ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID)
         if not ipyData:
@@ -150,7 +182,7 @@
         
     return
     
-def AddActTaskValue(curPlayer, taskType, addValue):
+def AddActTaskValue(curPlayer, taskType, addValue=1):
     ## 增加任务活动进度值
     
     playerID = curPlayer.GetPlayerID()
@@ -158,7 +190,8 @@
         actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
         if not actInfo.get(ShareDefine.ActKey_State):
             continue
-        
+        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum):
+            continue
         cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
         ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID)
         if not ipyData:
@@ -350,6 +383,9 @@
         return
     if not actInfo.get(ShareDefine.ActKey_State):
         return
+    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum) # 玩家身上的活动ID
+    if not playerActID:
+        return
     cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
     ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID)
     if not ipyData:
@@ -359,7 +395,10 @@
     if not taskIpyDataList:
         return
     
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
+    if hasattr(ipyData, "GetRelateFuncID") and ipyData.GetRelateFuncID():
+        startDateStr, endDateStr = GameWorld.GetActRelateFuncDate(ipyData, playerActID, True)
+    else:
+        startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
     actPack = ChPyNetSendPack.tagMCActTaskInfo()
     actPack.Clear()
     actPack.ActNum = actNum

--
Gitblit v1.8.0