From ba67d86ccc7dde96a4fe2bb2ae3abfbd0aacc561 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 十一月 2025 12:00:10 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(增加每日任务类型 6 ~ 10)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py |   75 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index eaaabdb..d429bc5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -21,6 +21,7 @@
 import IPY_GameWorld
 import ItemControler
 import ChPyNetSendPack
+import PlayerActivity
 import NetPackCommon
 import PlayerControl
 import PlayerOnline
@@ -38,6 +39,7 @@
 def OnPlayerLogin(curPlayer):
     Sync_HeroInfo(curPlayer)
     Sync_PlayerHeroInfo(curPlayer)
+    Sync_LineupRecommendInfo(curPlayer)
     return
 
 def OnPlayerFirstLogin(curPlayer):
@@ -349,6 +351,8 @@
     heroItem.SetUserAttr(ShareDefine.Def_IudetHeroLV, updHeroLV)
     
     PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate([itemIndex])
+    
+    PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroLVUP, 1)
     return
 
 def GetHeroLVMax(heroItem):
@@ -467,6 +471,7 @@
     item.SetUserAttr(ShareDefine.Def_IudetHeroStar, updStar)
     if addStar > 0:
         __DoHeroStarTalentUp(item, addStar)
+        PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroStarUP, addStar)
     if isSync:
         heroItem.Sync_Item()
     
@@ -1415,7 +1420,7 @@
     for syncItem in syncItemDict.values():
         syncItem.Sync_Item()
         
-    lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID)
+    lineup = PlayerOnline.GetOnlinePlayer(curPlayer).GetLineup(lineupID, False)
     lineup.UpdLineup(heroItemDict, shapeType)
     return
 
@@ -1431,6 +1436,41 @@
 #    curPlayer.SetResetItemTick(0)
 #    ItemControler.ResetItem(curPlayer, ShareDefine.rptHero, 0, 0, tick)
 #    return
+
+def GetLineupRecommendAward(curPlayer, recommendID, index):
+    ## 领取阵容推荐奖励
+    index = GameWorld.ToIntDef(index)
+    awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroRecommend % recommendID)
+    if awardState & pow(2, index):
+        GameWorld.DebugLog("阵容推荐奖励已领取! recommendID=%s,index=%s" % (recommendID, index))
+        return
+    ipyData = IpyGameDataPY.GetIpyGameData("LineupRecommend", recommendID)
+    if not ipyData:
+        return
+    heroIDList = ipyData.GetHeroIDList()
+    if index >= len(heroIDList):
+        return
+    heroID = heroIDList[index]
+    heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
+    if not heroIpyData:
+        return
+    quality = heroIpyData.GetQuality()
+    qualityIpyData = IpyGameDataPY.GetIpyGameData("HeroQuality", quality)
+    if not qualityIpyData:
+        return
+    awardMoneyInfo = qualityIpyData.GetRecommendAwardMoney()
+    if not awardMoneyInfo or len(awardMoneyInfo) != 2:
+        return
+    moneyType, moneyValue = awardMoneyInfo
+    if GetHeroActivite(curPlayer, heroID) != 1:
+        GameWorld.DebugLog("武将未获得过,不可激活阵容推荐! heroID=%s" % (heroID))
+        return
+    awardState |= pow(2, index)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HeroRecommend % recommendID, awardState)
+    GameWorld.DebugLog("阵容推荐领奖! recommendID=%s,index=%s,heroID=%s,awardState=%s" % (recommendID, index, heroID, awardState))
+    PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, "LineupRecommend", notifyAward=True)
+    Sync_LineupRecommendInfo(curPlayer, [recommendID])
+    return
 
 def RefreshLordAttr(curPlayer):
     ## 刷新主公属性
@@ -1448,6 +1488,8 @@
     for index in range(ipyDataMgr.GetHeroCount()):
         ipyData = ipyDataMgr.GetHeroByIndex(index)
         heroID = ipyData.GetHeroID()
+        if not ipyData.GetPlayerCanUse():
+            continue
         if not GetHeroBookInitState(curPlayer, heroID):
             # 图鉴未激活
             continue
@@ -1476,6 +1518,8 @@
         ipyDataMgr = IpyGameDataPY.IPY_Data()
         for index in range(ipyDataMgr.GetHeroCount()):
             ipyData = ipyDataMgr.GetHeroByIndex(index)
+            if not ipyData.GetPlayerCanUse():
+                continue
             syncHeroIDList.append(ipyData.GetHeroID())
     
     if not syncHeroIDList:
@@ -1518,7 +1562,7 @@
     lineupList = []
     olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
     for lineupID in syncIDList:
-        lineup = olPlayer.GetLineup(lineupID)
+        lineup = olPlayer.GetLineup(lineupID, False)
         if not lineup:
             continue
         
@@ -1551,3 +1595,30 @@
     clientPack.AwakeRebirthCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroAwakeRebirthCnt)
     NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
+
+def Sync_LineupRecommendInfo(curPlayer, syncIDList=None):
+    
+    recommendList = []
+    ipyDataMgr = IpyGameDataPY.IPY_Data()
+    for index in range(ipyDataMgr.GetLineupRecommendCount()):
+        ipyData = ipyDataMgr.GetLineupRecommendByIndex(index)
+        recommendID = ipyData.GetRecommendID()
+        awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroRecommend % recommendID)
+        if syncIDList != None:
+            if recommendID not in syncIDList:
+                continue
+        elif not awardState:
+            continue
+        recommend = ChPyNetSendPack.tagSCLineupRecommend()
+        recommend.RecommendID = recommendID
+        recommend.AwardState = awardState
+        recommendList.append(recommend)
+        
+    if not recommendList:
+        return
+    
+    clientPack = ChPyNetSendPack.tagSCLineupRecommendInfo()
+    clientPack.RecommendList = recommendList
+    clientPack.Count = len(clientPack.RecommendList)
+    NetPackCommon.SendFakePack(curPlayer, clientPack)
+    return

--
Gitblit v1.8.0