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