From 7b595426207daeffce03d7f57ab9cc7000b18c7a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 24 一月 2025 18:39:25 +0800
Subject: [PATCH] 8796 【越南】【英语】【BT】【砍树】在线奖励改为优先取对应创角天奖励,没有则取每日奖励;

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py |   69 +++++++++++-----------------------
 1 files changed, 22 insertions(+), 47 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
index 16e5fce..456dce7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
@@ -19,21 +19,12 @@
 import ChConfig
 import GameWorld
 import ItemControler
-import IPY_GameWorld
-import ItemCommon
 import NetPackCommon
 import PlayerControl
 import IpyGameDataPY
 import PlayerTJG
 
 import time
-
-'''
-特殊说明:
-     港台主干要修改为创角七日奖励,但是因为前端热更问题,前端无法使用旧表跟旧封包 A3 08 在线奖励信息 #tagMCOnlinePrize
-     为了保持前后端逻辑统一,后端不再动旧表跟旧封包A308,防止修改后前端报错
-     使用新表及新封包  B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
-'''
 
 #//A5 06 玩家领取在线奖励 #tagCMGetOnlinePrize
 #
@@ -48,19 +39,25 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
     prizeIndex = clientPack.Index
-    GameWorld.DebugLog("领取在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
     if prizeIndex <= 0:
         GameWorld.DebugLog("prizeIndex需要从1开始,我也不想,保留原逻辑吧!!!")
         return
-    dayID = creatRoleDay
-    ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', dayID)
+    ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAwardNew', creatRoleDay)
+    if ipyData:
+        dayID = creatRoleDay
+        GameWorld.DebugLog("领取创角天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
+    else:
+        dayID = 0
+        ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', 0)
+        GameWorld.DebugLog("领取每天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
+        
     if not ipyData:
         return
     #先纠正一次时间
     onlineTime = GetOnlineTime(curPlayer)
     
     #已领
-    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID)
+    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
     awardMark = pow(2, prizeIndex - 1)
     if awardInfo & awardMark:
         #已领取
@@ -81,32 +78,13 @@
         GameWorld.DebugLog("没有配置该索引对应在线奖励!")
         return
     itemList = awardDict[str(prizeIndex)]
-    
-    # 检查背包
-    needSpace = len(itemList)
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+    if not itemList:
         return
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % dayID, awardInfo | awardMark)
-    
-    # 给物品
-    for itemID, itemCount in itemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-        
-    #发包
+    updAwardNote = awardInfo | awardMark
+    GameWorld.DebugLog("在线奖励: %s, updAwardNote=%s" % (itemList, updAwardNote))
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, updAwardNote)
+    ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["OnlinePrize", False, {}])
     SendOnlinePrizeInfo(curPlayer)
-    return
-
-
-##查询在线奖励
-# @param None
-# @return None
-def QueryOnlinePrize(index, clientPack, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    # 计算时长
-#    CalcOnlineTime(curPlayer, tick, True)
     return
 
 def GetOnlineTime(curPlayer):
@@ -125,11 +103,12 @@
 # @return None
 def CalcOnlineTime(curPlayer):
     if PlayerTJG.GetIsTJG(curPlayer):
-        return
+        return 0
     onlineTime = GetOnlineTime(curPlayer)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, onlineTime)
     SetStartCalcOnlineTick(curPlayer, 0)
-    return
+    GameWorld.DebugLog("更新记录在线时长: %s" % onlineTime)
+    return onlineTime
 
     
 ##发送奖励信息包
@@ -139,14 +118,10 @@
     dataCount = IpyGameDataPY.IPY_Data().GetOnlineAwardNewCount()
     if not dataCount:
         return
-    creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
     sendPack = ChPyNetSendPack.tagMCOnlinePrizeNew()
     sendPack.Clear()
     sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000
-    sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay)] # 创角7日的与前端约定固定只发当天的
-#    for i in xrange(dataCount):
-#        dayID = i + 1#i+1,增加了每日支持,从0开始,代表每日
-#        sendPack.PrizeInfo.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID))
+    sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)] # 固定只发当天的
     sendPack.Len = len(sendPack.PrizeInfo)
     #通知客户端时间
     NetPackCommon.SendFakePack(curPlayer, sendPack)
@@ -177,7 +152,7 @@
     __OnlineMailPrize(curPlayer)
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % 0, 0) # 重置每日在线奖励
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, 0) # 重置每日在线奖励
    
     if PlayerTJG.GetIsTJG(curPlayer):
         return
@@ -199,7 +174,7 @@
             return
         mailAwardDay = 0 # 昨日非定制的,且有配置0常规的,则补发0的
         
-    prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay)
+    prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
     onlineTime = GetOnlineTime(curPlayer)
     needTimeList = ipyData.GetStageTime()
     awardDict = ipyData.GetReward()
@@ -213,7 +188,7 @@
     if not itemList:
         return
     GameWorld.DebugLog('补发昨日在线奖励: mailAwardDay=%s,onlineTime=%s' % (mailAwardDay, onlineTime))
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay, prizeInfo)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, prizeInfo)
     PlayerControl.SendMailByKey('OnLineAward1', [curPlayer.GetID()], itemList)
     return
             

--
Gitblit v1.8.0