From 75c9a27cbaf01b12d56351390d7f91e9ae2b1c27 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 24 八月 2021 16:14:59 +0800
Subject: [PATCH] 8796 【主干】【gt_1.101.1】【后端】Part1 2、每日在线送符印寻宝20次(创角7日在线改为使用新表及新封包B113通知);

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py |   33 ++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py          |   74 ++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py            |   14 +-
 PySysDB/PySysDBPY.h                                                                             |    4 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                               |   74 ++++++++++++++++++
 5 files changed, 173 insertions(+), 26 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index d9d8d3a..efa6826 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1246,9 +1246,9 @@
 	dict		Reward;	//奖励 {"职业":[[物品ID,个数],...], ...}
 };
 
-//七天在线奖励表
+//七天在线奖励表新
 
-struct tagOnlineAward
+struct tagOnlineAwardNew
 {
 	BYTE		_DayID;	//天数
 	list		StageTime;	//阶段所需时间(分钟)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index c038c90..76b41e7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -35669,6 +35669,80 @@
 
 
 #------------------------------------------------------
+# B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
+
+class  tagMCOnlinePrizeNew(Structure):
+    Head = tagHead()
+    OnlineTime = 0    #(DWORD OnlineTime)//在线时间毫秒
+    Len = 0    #(BYTE Len)
+    PrizeInfo = list()    #(vector<DWORD> PrizeInfo)//领奖记录
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x13
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Len):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.PrizeInfo.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x13
+        self.OnlineTime = 0
+        self.Len = 0
+        self.PrizeInfo = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 4 * self.Len
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.OnlineTime)
+        data = CommFunc.WriteBYTE(data, self.Len)
+        for i in range(self.Len):
+            data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                OnlineTime:%d,
+                                Len:%d,
+                                PrizeInfo:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.OnlineTime,
+                                self.Len,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCOnlinePrizeNew=tagMCOnlinePrizeNew()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrizeNew.Head.Cmd,m_NAtagMCOnlinePrizeNew.Head.SubCmd))] = m_NAtagMCOnlinePrizeNew
+
+
+#------------------------------------------------------
 # B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime
 
 class  tagMCPlayerDeadTime(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c038c90..76b41e7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -35669,6 +35669,80 @@
 
 
 #------------------------------------------------------
+# B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
+
+class  tagMCOnlinePrizeNew(Structure):
+    Head = tagHead()
+    OnlineTime = 0    #(DWORD OnlineTime)//在线时间毫秒
+    Len = 0    #(BYTE Len)
+    PrizeInfo = list()    #(vector<DWORD> PrizeInfo)//领奖记录
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x13
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.OnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Len):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.PrizeInfo.append(value)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x13
+        self.OnlineTime = 0
+        self.Len = 0
+        self.PrizeInfo = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 1
+        length += 4 * self.Len
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.OnlineTime)
+        data = CommFunc.WriteBYTE(data, self.Len)
+        for i in range(self.Len):
+            data = CommFunc.WriteDWORD(data, self.PrizeInfo[i])
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                OnlineTime:%d,
+                                Len:%d,
+                                PrizeInfo:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.OnlineTime,
+                                self.Len,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCOnlinePrizeNew=tagMCOnlinePrizeNew()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlinePrizeNew.Head.Cmd,m_NAtagMCOnlinePrizeNew.Head.SubCmd))] = m_NAtagMCOnlinePrizeNew
+
+
+#------------------------------------------------------
 # B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime
 
 class  tagMCPlayerDeadTime(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index eb64222..361832c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1006,7 +1006,7 @@
                         ("dict", "Reward", 0),
                         ),
 
-                "OnlineAward":(
+                "OnlineAwardNew":(
                         ("BYTE", "DayID", 1),
                         ("list", "StageTime", 0),
                         ("dict", "Reward", 0),
@@ -3930,8 +3930,8 @@
     def GetDayID(self): return self.DayID # 天数
     def GetReward(self): return self.Reward # 奖励 {"职业":[[物品ID,个数],...], ...}
 
-# 七天在线奖励表
-class IPY_OnlineAward():
+# 七天在线奖励表新
+class IPY_OnlineAwardNew():
     
     def __init__(self):
         self.DayID = 0
@@ -6007,8 +6007,8 @@
         self.ipyOSCBillTagAwardLen = len(self.ipyOSCBillTagAwardCache)
         self.ipyLoginDayAwardCache = self.__LoadFileData("LoginDayAward", IPY_LoginDayAward)
         self.ipyLoginDayAwardLen = len(self.ipyLoginDayAwardCache)
-        self.ipyOnlineAwardCache = self.__LoadFileData("OnlineAward", IPY_OnlineAward)
-        self.ipyOnlineAwardLen = len(self.ipyOnlineAwardCache)
+        self.ipyOnlineAwardNewCache = self.__LoadFileData("OnlineAwardNew", IPY_OnlineAwardNew)
+        self.ipyOnlineAwardNewLen = len(self.ipyOnlineAwardNewCache)
         self.ipySpringSaleCache = self.__LoadFileData("SpringSale", IPY_SpringSale)
         self.ipySpringSaleLen = len(self.ipySpringSaleCache)
         self.ipyOrderInfoCache = self.__LoadFileData("OrderInfo", IPY_OrderInfo)
@@ -6557,8 +6557,8 @@
     def GetOSCBillTagAwardByIndex(self, index): return self.ipyOSCBillTagAwardCache[index]
     def GetLoginDayAwardCount(self): return self.ipyLoginDayAwardLen
     def GetLoginDayAwardByIndex(self, index): return self.ipyLoginDayAwardCache[index]
-    def GetOnlineAwardCount(self): return self.ipyOnlineAwardLen
-    def GetOnlineAwardByIndex(self, index): return self.ipyOnlineAwardCache[index]
+    def GetOnlineAwardNewCount(self): return self.ipyOnlineAwardNewLen
+    def GetOnlineAwardNewByIndex(self, index): return self.ipyOnlineAwardNewCache[index]
     def GetSpringSaleCount(self): return self.ipySpringSaleLen
     def GetSpringSaleByIndex(self, index): return self.ipySpringSaleCache[index]
     def GetOrderInfoCount(self): return self.ipyOrderInfoLen
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 bc5658c..16e5fce 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
@@ -28,6 +28,13 @@
 
 import time
 
+'''
+特殊说明:
+     港台主干要修改为创角七日奖励,但是因为前端热更问题,前端无法使用旧表跟旧封包 A3 08 在线奖励信息 #tagMCOnlinePrize
+     为了保持前后端逻辑统一,后端不再动旧表跟旧封包A308,防止修改后前端报错
+     使用新表及新封包  B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
+'''
+
 #//A5 06 玩家领取在线奖励 #tagCMGetOnlinePrize
 #
 #struct   tagCMGetOnlinePrize
@@ -41,20 +48,12 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
     prizeIndex = clientPack.Index
-    isDaily = 0 # 主干固定为0,非每日
-    GameWorld.DebugLog("领取每日在线奖励: isDaily=%s,prizeIndex=%s" % (isDaily, prizeIndex))
+    GameWorld.DebugLog("领取在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
     if prizeIndex <= 0:
         GameWorld.DebugLog("prizeIndex需要从1开始,我也不想,保留原逻辑吧!!!")
         return
-    if isDaily:
-        dayID = 0 # 0代表每日的
-        ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', creatRoleDay)
-        if ipyData:
-            GameWorld.DebugLog("当天有创角天定制在线奖励,不能领取日常在线奖励!creatRoleDay=%s" % creatRoleDay)
-            return
-    else:
-        dayID = creatRoleDay
-    ipyData = IpyGameDataPY.GetIpyGameData('OnlineAward', dayID)
+    dayID = creatRoleDay
+    ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', dayID)
     if not ipyData:
         return
     #先纠正一次时间
@@ -137,15 +136,15 @@
 # @param None
 # @return None
 def SendOnlinePrizeInfo(curPlayer):
-    onlineAwardCount = IpyGameDataPY.IPY_Data().GetOnlineAwardCount()
-    if not onlineAwardCount:
+    dataCount = IpyGameDataPY.IPY_Data().GetOnlineAwardNewCount()
+    if not dataCount:
         return
     creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
-    sendPack = ChPyNetSendPack.tagMCOnlinePrize()
+    sendPack = ChPyNetSendPack.tagMCOnlinePrizeNew()
     sendPack.Clear()
     sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000
     sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay)] # 创角7日的与前端约定固定只发当天的
-#    for i in xrange(onlineAwardCount):
+#    for i in xrange(dataCount):
 #        dayID = i + 1#i+1,增加了每日支持,从0开始,代表每日
 #        sendPack.PrizeInfo.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID))
     sendPack.Len = len(sendPack.PrizeInfo)
@@ -193,9 +192,9 @@
     if creatRoleDay <= 1:
         return
     mailAwardDay = creatRoleDay - 1
-    ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', mailAwardDay)
+    ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAwardNew', mailAwardDay)
     if not ipyData:
-        ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', 0)
+        ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAwardNew', 0)
         if not ipyData:
             return
         mailAwardDay = 0 # 昨日非定制的,且有配置0常规的,则补发0的

--
Gitblit v1.8.0