From 63d62011dc3639c1b6a0ea3f920e9ec6bada71f2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 三月 2021 18:13:39 +0800
Subject: [PATCH] 8650 【主干】【BT2】活动规则优化(充值返利仙玉 移到主干,为节日活动类型,改为仅直充仙玉有效,配表为仙玉);
---
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 44 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 278 ++++++++++++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 58 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 5
PySysDB/PySysDBPY.h | 22 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py | 193 ++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 4
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 278 ++++++++++++++++-
PySysDB/PySysDBG.h | 16 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 5
11 files changed, 870 insertions(+), 36 deletions(-)
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index 21b5409..ff1623b 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -590,6 +590,22 @@
BYTE IsDayReset; //是否每天重置
};
+//累计充值返利仙玉活动表
+
+struct tagActRechargeRebateGold
+{
+ DWORD _CfgID; //配置ID
+ char ActMark; //活动组标记
+ list PlatformList; //活动平台列表["平台A", "平台A", ...],配[]代表所有
+ list ServerGroupIDList; //服务器ID列表
+ char StartDate; //开启日期
+ char EndDate; //结束日期
+ dict NotifyInfoStart; //全服提示信息 - 相对开始时间
+ dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
+ list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
+ BYTE IsDayReset; //是否每天重置
+};
+
//成长必买活动表
struct tagActGrowupBuy
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 4e12bc2..9b42e90 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1623,6 +1623,28 @@
char NotifyKey; //全服广播key,默认两个参数(玩家名, 档位额度)
};
+//累计充值返利仙玉活动表
+
+struct tagActRechargeRebateGold
+{
+ DWORD _CfgID; //配置ID
+ char StartDate; //开启日期
+ char EndDate; //结束日期
+ WORD LVLimit; //限制等级
+ BYTE IsDayReset; //是否每天重置
+ list TemplateIDList; //模板ID列表
+};
+
+//累计充值返利仙玉模板表
+
+struct tagRechargeRebateGoldTemplate
+{
+ DWORD _TemplateID; //模板ID
+ DWORD RMBMin; //充值RMB最小值
+ DWORD RMBMax; //充值RMB最大值
+ WORD RebateRate; //返利仙玉比例百分比
+};
+
//成长必买活动表
struct tagActGrowupBuy
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 0b88bbe..0e668e5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -3352,8 +3352,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -4318,7 +4318,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4559,7 +4559,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -6650,7 +6650,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -7717,7 +7717,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -7773,7 +7773,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -9513,7 +9513,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -11379,8 +11379,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -12397,7 +12397,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -15591,7 +15591,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -18169,7 +18169,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -22810,7 +22810,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
EquipClassLV = 0 #(BYTE EquipClassLV)
ItemDataSize = 0 #(WORD ItemDataSize)
- ItemData = "" #(String ItemData)//物品记录
+ ItemData = "" #(String ItemData)//物品记录
data = None
def __init__(self):
@@ -23109,7 +23109,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -23606,7 +23606,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -25431,6 +25431,196 @@
m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
+
+
+#------------------------------------------------------
+# AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
+
+class tagMCActRechargeRebate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RMBMin", c_int), # 充值RMB最小值
+ ("RMBMax", c_int), # 充值RMB最大值,0代表无上限
+ ("RebateRate", c_ushort), # 返利仙玉比例百分比
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.RMBMin = 0
+ self.RMBMax = 0
+ self.RebateRate = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRechargeRebate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
+ RMBMin:%d,
+ RMBMax:%d,
+ RebateRate:%d
+ '''\
+ %(
+ self.RMBMin,
+ self.RMBMax,
+ self.RebateRate
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateDay(Structure):
+ Rebates = 0 #(BYTE Rebates)// 返利档数
+ RebateInfo = list() #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Rebates):
+ temRebateInfo = tagMCActRechargeRebate()
+ _pos = temRebateInfo.ReadData(_lpData, _pos)
+ self.RebateInfo.append(temRebateInfo)
+ return _pos
+
+ def Clear(self):
+ self.Rebates = 0
+ self.RebateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.Rebates):
+ length += self.RebateInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Rebates)
+ for i in range(self.Rebates):
+ data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rebates:%d,
+ RebateInfo:%s
+ '''\
+ %(
+ self.Rebates,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateGoldInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ RebateDays = 0 #(BYTE RebateDays)
+ RebateDayInfo = list() #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RebateDays):
+ temRebateDayInfo = tagMCActRechargeRebateDay()
+ _pos = temRebateDayInfo.ReadData(_lpData, _pos)
+ self.RebateDayInfo.append(temRebateDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.IsDayReset = 0
+ self.RebateDays = 0
+ self.RebateDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.RebateDays):
+ length += self.RebateDayInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.RebateDays)
+ for i in range(self.RebateDays):
+ data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ IsDayReset:%d,
+ RebateDays:%d,
+ RebateDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.IsDayReset,
+ self.RebateDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
#------------------------------------------------------
@@ -30509,6 +30699,58 @@
#------------------------------------------------------
+# AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
+
+class tagMCRechargeRebateGoldPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RechargeRMBTotal", c_int), # 活动已累计充值RMB
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x30
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x30
+ self.RechargeRMBTotal = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRechargeRebateGoldPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ RechargeRMBTotal:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RechargeRMBTotal
+ )
+ return DumpString
+
+
+m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
+
+
+#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class tagMCSpringSaleItem(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 70b7582..dae834d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -493,6 +493,19 @@
("BYTE", "IsDayReset", 0),
),
+ "ActRechargeRebateGold":(
+ ("DWORD", "CfgID", 1),
+ ("char", "ActMark", 0),
+ ("list", "PlatformList", 0),
+ ("list", "ServerGroupIDList", 0),
+ ("char", "StartDate", 0),
+ ("char", "EndDate", 0),
+ ("dict", "NotifyInfoStart", 0),
+ ("dict", "NotifyInfoEnd", 0),
+ ("list", "NotifyInfoLoop", 0),
+ ("BYTE", "IsDayReset", 0),
+ ),
+
"ActGrowupBuy":(
("DWORD", "CfgID", 1),
("char", "ActMark", 0),
@@ -1649,6 +1662,33 @@
def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+# 累计充值返利仙玉活动表
+class IPY_ActRechargeRebateGold():
+
+ def __init__(self):
+ self.CfgID = 0
+ self.ActMark = ""
+ self.PlatformList = []
+ self.ServerGroupIDList = []
+ self.StartDate = ""
+ self.EndDate = ""
+ self.NotifyInfoStart = {}
+ self.NotifyInfoEnd = {}
+ self.NotifyInfoLoop = []
+ self.IsDayReset = 0
+ return
+
+ def GetCfgID(self): return self.CfgID # 配置ID
+ def GetActMark(self): return self.ActMark # 活动组标记
+ def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+ def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
+ def GetStartDate(self): return self.StartDate # 开启日期
+ def GetEndDate(self): return self.EndDate # 结束日期
+ def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
+ def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
+ def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+ def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+
# 成长必买活动表
class IPY_ActGrowupBuy():
@@ -2156,6 +2196,8 @@
self.ipyActWishingWellLen = len(self.ipyActWishingWellCache)
self.ipyActRechargePrizeCache = self.__LoadFileData("ActRechargePrize", IPY_ActRechargePrize)
self.ipyActRechargePrizeLen = len(self.ipyActRechargePrizeCache)
+ self.ipyActRechargeRebateGoldCache = self.__LoadFileData("ActRechargeRebateGold", IPY_ActRechargeRebateGold)
+ self.ipyActRechargeRebateGoldLen = len(self.ipyActRechargeRebateGoldCache)
self.ipyActGrowupBuyCache = self.__LoadFileData("ActGrowupBuy", IPY_ActGrowupBuy)
self.ipyActGrowupBuyLen = len(self.ipyActGrowupBuyCache)
self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
@@ -2446,6 +2488,8 @@
def GetActWishingWellByIndex(self, index): return self.ipyActWishingWellCache[index]
def GetActRechargePrizeCount(self): return self.ipyActRechargePrizeLen
def GetActRechargePrizeByIndex(self, index): return self.ipyActRechargePrizeCache[index]
+ def GetActRechargeRebateGoldCount(self): return self.ipyActRechargeRebateGoldLen
+ def GetActRechargeRebateGoldByIndex(self, index): return self.ipyActRechargeRebateGoldCache[index]
def GetActGrowupBuyCount(self): return self.ipyActGrowupBuyLen
def GetActGrowupBuyByIndex(self, index): return self.ipyActGrowupBuyCache[index]
def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index cff9187..3e7a6d9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3708,6 +3708,11 @@
Def_PDict_TotalRechargeAwardRecord = "TotalRechargeAwardRecord_%s" # 累计充值领奖记录,参数:(活动编号)
Def_PDict_TotalRechargeWorldLV = "TotalRechargeWorldLV_%s" #累计充值活动开启时世界等级,参数:(活动编号)
+#累计充值返利仙玉活动
+Def_PDict_RechargeRebateGoldID = "RechargeRebateGoldID" # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值
+Def_PDict_RechargeRebateGoldTemplateID = "RechargeRebateGoldTempID" # 玩家身上活动模板ID
+Def_PDict_RechargeRebateGoldRMB = "RechargeRebateGoldRMB" # 活动累计充值RMB值
+
#充值返利活动
Def_PDict_RechargePrizeID = "RechargePrizeID" # 玩家身上的重置返利活动ID,唯一标识,取活动开始日期time值
Def_PDict_RechargePrizeCount = "RechargePrizeCount_%s" # 返利奖励次数,参数(充值表充值ID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 0b88bbe..0e668e5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -3352,8 +3352,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -4318,7 +4318,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4559,7 +4559,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -6650,7 +6650,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -7717,7 +7717,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -7773,7 +7773,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -9513,7 +9513,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -11379,8 +11379,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -12397,7 +12397,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -15591,7 +15591,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -18169,7 +18169,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -22810,7 +22810,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
EquipClassLV = 0 #(BYTE EquipClassLV)
ItemDataSize = 0 #(WORD ItemDataSize)
- ItemData = "" #(String ItemData)//物品记录
+ ItemData = "" #(String ItemData)//物品记录
data = None
def __init__(self):
@@ -23109,7 +23109,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -23606,7 +23606,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -25431,6 +25431,196 @@
m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
+
+
+#------------------------------------------------------
+# AA 29 累计充值返利仙玉活动信息 #tagMCActRechargeRebateGoldInfo
+
+class tagMCActRechargeRebate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("RMBMin", c_int), # 充值RMB最小值
+ ("RMBMax", c_int), # 充值RMB最大值,0代表无上限
+ ("RebateRate", c_ushort), # 返利仙玉比例百分比
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.RMBMin = 0
+ self.RMBMax = 0
+ self.RebateRate = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRechargeRebate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 29 累计充值返利仙玉活动信息 //tagMCActRechargeRebateGoldInfo:
+ RMBMin:%d,
+ RMBMax:%d,
+ RebateRate:%d
+ '''\
+ %(
+ self.RMBMin,
+ self.RMBMax,
+ self.RebateRate
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateDay(Structure):
+ Rebates = 0 #(BYTE Rebates)// 返利档数
+ RebateInfo = list() #(vector<tagMCActRechargeRebate> RebateInfo)// 返利档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Rebates,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Rebates):
+ temRebateInfo = tagMCActRechargeRebate()
+ _pos = temRebateInfo.ReadData(_lpData, _pos)
+ self.RebateInfo.append(temRebateInfo)
+ return _pos
+
+ def Clear(self):
+ self.Rebates = 0
+ self.RebateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.Rebates):
+ length += self.RebateInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Rebates)
+ for i in range(self.Rebates):
+ data = CommFunc.WriteString(data, self.RebateInfo[i].GetLength(), self.RebateInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rebates:%d,
+ RebateInfo:%s
+ '''\
+ %(
+ self.Rebates,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRechargeRebateGoldInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ RebateDays = 0 #(BYTE RebateDays)
+ RebateDayInfo = list() #(vector<tagMCActRechargeRebateDay> RebateDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RebateDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RebateDays):
+ temRebateDayInfo = tagMCActRechargeRebateDay()
+ _pos = temRebateDayInfo.ReadData(_lpData, _pos)
+ self.RebateDayInfo.append(temRebateDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x29
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.LimitLV = 0
+ self.IsDayReset = 0
+ self.RebateDays = 0
+ self.RebateDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.RebateDays):
+ length += self.RebateDayInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.RebateDays)
+ for i in range(self.RebateDays):
+ data = CommFunc.WriteString(data, self.RebateDayInfo[i].GetLength(), self.RebateDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ LimitLV:%d,
+ IsDayReset:%d,
+ RebateDays:%d,
+ RebateDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.LimitLV,
+ self.IsDayReset,
+ self.RebateDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRechargeRebateGoldInfo=tagMCActRechargeRebateGoldInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargeRebateGoldInfo.Head.Cmd,m_NAtagMCActRechargeRebateGoldInfo.Head.SubCmd))] = m_NAtagMCActRechargeRebateGoldInfo
#------------------------------------------------------
@@ -30509,6 +30699,58 @@
#------------------------------------------------------
+# AA 30 累计充值返利仙玉玩家活动信息 #tagMCRechargeRebateGoldPlayerInfo
+
+class tagMCRechargeRebateGoldPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("RechargeRMBTotal", c_int), # 活动已累计充值RMB
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x30
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x30
+ self.RechargeRMBTotal = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRechargeRebateGoldPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 30 累计充值返利仙玉玩家活动信息 //tagMCRechargeRebateGoldPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ RechargeRMBTotal:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.RechargeRMBTotal
+ )
+ return DumpString
+
+
+m_NAtagMCRechargeRebateGoldPlayerInfo=tagMCRechargeRebateGoldPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRebateGoldPlayerInfo.Cmd,m_NAtagMCRechargeRebateGoldPlayerInfo.SubCmd))] = m_NAtagMCRechargeRebateGoldPlayerInfo
+
+
+#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class tagMCSpringSaleItem(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 6c71431..57f547e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1283,6 +1283,22 @@
("char", "NotifyKey", 0),
),
+ "ActRechargeRebateGold":(
+ ("DWORD", "CfgID", 1),
+ ("char", "StartDate", 0),
+ ("char", "EndDate", 0),
+ ("WORD", "LVLimit", 0),
+ ("BYTE", "IsDayReset", 0),
+ ("list", "TemplateIDList", 0),
+ ),
+
+ "RechargeRebateGoldTemplate":(
+ ("DWORD", "TemplateID", 1),
+ ("DWORD", "RMBMin", 0),
+ ("DWORD", "RMBMax", 0),
+ ("WORD", "RebateRate", 0),
+ ),
+
"ActGrowupBuy":(
("DWORD", "CfgID", 1),
("char", "StartDate", 0),
@@ -4357,6 +4373,40 @@
def GetAwardItem(self): return self.AwardItem # 返利物品信息列表 {职业:[(物品ID,个数,是否绑定),...]}
def GetNotifyKey(self): return self.NotifyKey # 全服广播key,默认两个参数(玩家名, 档位额度)
+# 累计充值返利仙玉活动表
+class IPY_ActRechargeRebateGold():
+
+ def __init__(self):
+ self.CfgID = 0
+ self.StartDate = ""
+ self.EndDate = ""
+ self.LVLimit = 0
+ self.IsDayReset = 0
+ self.TemplateIDList = []
+ return
+
+ def GetCfgID(self): return self.CfgID # 配置ID
+ def GetStartDate(self): return self.StartDate # 开启日期
+ def GetEndDate(self): return self.EndDate # 结束日期
+ def GetLVLimit(self): return self.LVLimit # 限制等级
+ def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+ def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+
+# 累计充值返利仙玉模板表
+class IPY_RechargeRebateGoldTemplate():
+
+ def __init__(self):
+ self.TemplateID = 0
+ self.RMBMin = 0
+ self.RMBMax = 0
+ self.RebateRate = 0
+ return
+
+ def GetTemplateID(self): return self.TemplateID # 模板ID
+ def GetRMBMin(self): return self.RMBMin # 充值RMB最小值
+ def GetRMBMax(self): return self.RMBMax # 充值RMB最大值
+ def GetRebateRate(self): return self.RebateRate # 返利仙玉比例百分比
+
# 成长必买活动表
class IPY_ActGrowupBuy():
@@ -5577,6 +5627,10 @@
self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
self.ipyTotalRechargeTemplateCache = self.__LoadFileData("TotalRechargeTemplate", IPY_TotalRechargeTemplate)
self.ipyTotalRechargeTemplateLen = len(self.ipyTotalRechargeTemplateCache)
+ self.ipyActRechargeRebateGoldCache = self.__LoadFileData("ActRechargeRebateGold", IPY_ActRechargeRebateGold)
+ self.ipyActRechargeRebateGoldLen = len(self.ipyActRechargeRebateGoldCache)
+ self.ipyRechargeRebateGoldTemplateCache = self.__LoadFileData("RechargeRebateGoldTemplate", IPY_RechargeRebateGoldTemplate)
+ self.ipyRechargeRebateGoldTemplateLen = len(self.ipyRechargeRebateGoldTemplateCache)
self.ipyActGrowupBuyCache = self.__LoadFileData("ActGrowupBuy", IPY_ActGrowupBuy)
self.ipyActGrowupBuyLen = len(self.ipyActGrowupBuyCache)
self.ipyMagicWeaponFBCache = self.__LoadFileData("MagicWeaponFB", IPY_MagicWeaponFB)
@@ -6095,6 +6149,10 @@
def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
def GetTotalRechargeTemplateCount(self): return self.ipyTotalRechargeTemplateLen
def GetTotalRechargeTemplateByIndex(self, index): return self.ipyTotalRechargeTemplateCache[index]
+ def GetActRechargeRebateGoldCount(self): return self.ipyActRechargeRebateGoldLen
+ def GetActRechargeRebateGoldByIndex(self, index): return self.ipyActRechargeRebateGoldCache[index]
+ def GetRechargeRebateGoldTemplateCount(self): return self.ipyRechargeRebateGoldTemplateLen
+ def GetRechargeRebateGoldTemplateByIndex(self, index): return self.ipyRechargeRebateGoldTemplateCache[index]
def GetActGrowupBuyCount(self): return self.ipyActGrowupBuyLen
def GetActGrowupBuyByIndex(self, index): return self.ipyActGrowupBuyCache[index]
def GetMagicWeaponFBCount(self): return self.ipyMagicWeaponFBLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 6a6ccbc..abc2233 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -106,6 +106,7 @@
import PlayerActCollectWords
import PlayerActTotalRecharge
import PlayerActRechargePrize
+import PlayerActRechargeRebateGold
import PlayerSpringSale
import PlayerFairyCeremony
import PlayerNewFairyCeremony
@@ -648,6 +649,8 @@
PlayerCostRebate.OnPlayerLogin(curPlayer)
#累计充值
PlayerActTotalRecharge.OnPlayerLogin(curPlayer)
+ #累计充值返利仙玉
+ PlayerActRechargeRebateGold.OnPlayerLogin(curPlayer)
#充值返利
PlayerActRechargePrize.OnPlayerLogin(curPlayer)
#成长必买
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py
new file mode 100644
index 0000000..25b9135
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActRechargeRebateGold.py
@@ -0,0 +1,193 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerActRechargeRebateGold
+#
+# @todo:累计充值返利仙玉活动
+# @author hxp
+# @date 2020-10-15
+# @version 1.0
+#
+# 详细描述: 累计充值返利仙玉活动(活动结束邮件发放,只算最高一档)
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2020-10-15 12:00"""
+#-------------------------------------------------------------------------------
+
+import ChConfig
+import ShareDefine
+import PlayerControl
+import PyGameData
+import GameWorld
+import NetPackCommon
+import ChPyNetSendPack
+import IpyGameDataPY
+
+def OnPlayerLogin(curPlayer):
+ isReset = __CheckPlayerRechargeRebateGoldAction(curPlayer)
+ if not isReset:
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
+ # 活动中同步活动信息
+ if actInfo.get(ShareDefine.ActKey_State):
+ Sync_RechargeRebateGoldActionInfo(curPlayer)
+ Sync_RechargeRebateGoldPlayerInfo(curPlayer)
+ return
+
+def RefreshRechargeRebateGoldActionInfo():
+ ## 收到GameServer同步的活动信息,刷新活动信息
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if curPlayer.GetID() == 0:
+ continue
+ __CheckPlayerRechargeRebateGoldAction(curPlayer)
+ return
+
+def __CheckPlayerRechargeRebateGoldAction(curPlayer):
+ ## 检查玩家累计充值活动数据信息
+
+ playerID = curPlayer.GetPlayerID()
+
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
+ actID = actInfo.get(ShareDefine.ActKey_ID, 0)
+ state = actInfo.get(ShareDefine.ActKey_State, 0)
+
+ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldID) # 玩家身上的活动ID
+ templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
+ playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldTemplateID)
+
+ # 活动ID 相同的话不处理
+ if actID == playerActID:
+ GameWorld.DebugLog("累计充值返利仙玉活动ID不变,不处理!", playerID)
+ if state:
+ if playerTemplateID != templateID and templateID:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldTemplateID, templateID)
+ GameWorld.DebugLog(" 活动模板ID变更,更新玩家身上模板ID记录!playerTemplateID=%s,updTemplateID=%s"
+ % (playerTemplateID, templateID), playerID)
+ return
+
+ GameWorld.DebugLog("累计充值返利仙玉活动重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
+
+ totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB)
+ if playerActID and playerTemplateID and totalRMB > 0:
+ __SendRebateGoldMail(curPlayer, playerTemplateID, totalRMB)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldID, actID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldTemplateID, templateID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldRMB, 0)
+
+ Sync_RechargeRebateGoldActionInfo(curPlayer)
+ Sync_RechargeRebateGoldPlayerInfo(curPlayer)
+ return True
+
+def GetTemplateID(cfgID, dayIndex):
+ if cfgID == None or dayIndex == None:
+ return 0
+ ipyData = IpyGameDataPY.GetIpyGameData("ActRechargeRebateGold", cfgID)
+ if not ipyData:
+ return 0
+ templateIDList = ipyData.GetTemplateIDList()
+ templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
+ return templateID
+
+def __SendRebateGoldMail(curPlayer, playerTemplateID, totalRMB):
+ ## 发送返利奖励邮件,取最大奖励档发奖励
+
+ playerID = curPlayer.GetPlayerID()
+ GameWorld.DebugLog("累计充值返利仙玉发送奖励邮件! playerTemplateID=%s,totalRMB=%s" % (playerTemplateID, totalRMB), playerID)
+
+ ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargeRebateGoldTemplate", playerTemplateID)
+ if not ipyDataList:
+ return
+
+ rebateIpyData = None
+ for ipyData in ipyDataList:
+ rmbMin = ipyData.GetRMBMin()
+ rmbMax = ipyData.GetRMBMax()
+ if (rmbMin <= totalRMB <= rmbMax) or (rmbMin <= totalRMB and rmbMax == 0):
+ rebateIpyData = ipyData
+ break
+
+ if not rebateIpyData:
+ GameWorld.DebugLog("玩家无返利仙玉奖励!", playerID)
+ return
+
+ rebateRate = rebateIpyData.GetRebateRate()
+ addItemList = []
+ paramList = [totalRMB, rebateRate]
+ gold = min(int(totalRMB * rebateRate / 100.0), ShareDefine.Def_UpperLimit_DWord)
+ GameWorld.DebugLog(" 返利仙玉百分比=%s%%, gold=%s" % (rebateRate, gold), playerID)
+ PlayerControl.SendMailByKey("RechargeRebateGold", [playerID], addItemList, paramList, gold)
+ return
+
+def AddRechargeRebateGoldRMB(curPlayer, addRMB):
+ ## 增加活动已累计充值RMB, 主干分支记录的是仙玉,只算直充,主干没有RMB对应比例配置,直接记录仙玉
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
+ if not actInfo:
+ return
+
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+
+ totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB) + addRMB
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RechargeRebateGoldRMB, totalRMB)
+
+ GameWorld.DebugLog("累计充值返利仙玉活动增加玩家累计充值RMB: addRMB=%s,totalRMB=%s" % (addRMB, totalRMB), curPlayer.GetPlayerID())
+ Sync_RechargeRebateGoldPlayerInfo(curPlayer)
+ return
+
+
+def Sync_RechargeRebateGoldPlayerInfo(curPlayer):
+ ## 通知累计充值返利仙玉活动玩家数据信息
+ playerActInfo = ChPyNetSendPack.tagMCRechargeRebateGoldPlayerInfo()
+ playerActInfo.RechargeRMBTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RechargeRebateGoldRMB)
+ NetPackCommon.SendFakePack(curPlayer, playerActInfo)
+ return
+
+def Sync_RechargeRebateGoldActionInfo(curPlayer):
+ ## 通知累计充值返利仙玉活动信息
+
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RechargeRebateGold, {})
+ if not actInfo:
+ return
+
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
+ ipyData = IpyGameDataPY.GetIpyGameData("ActRechargeRebateGold", cfgID)
+ if not ipyData:
+ return
+
+ templateIDList = ipyData.GetTemplateIDList()
+ if not templateIDList:
+ return
+
+ openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
+ actInfo = ChPyNetSendPack.tagMCActRechargeRebateGoldInfo()
+ actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
+ actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+ actInfo.LimitLV = ipyData.GetLVLimit()
+ actInfo.IsDayReset = ipyData.GetIsDayReset()
+ actInfo.RebateDayInfo = []
+ for templateID in templateIDList:
+ ipyDataList = IpyGameDataPY.GetIpyGameDataList("RechargeRebateGoldTemplate", templateID)
+ if not ipyDataList:
+ continue
+
+ dayInfo = ChPyNetSendPack.tagMCActRechargeRebateDay()
+ dayInfo.RebateInfo = []
+ for dayIpyData in ipyDataList:
+ rebateInfo = ChPyNetSendPack.tagMCActRechargeRebate()
+ rebateInfo.RMBMin = dayIpyData.GetRMBMin()
+ rebateInfo.RMBMax = dayIpyData.GetRMBMax()
+ rebateInfo.RebateRate = dayIpyData.GetRebateRate()
+ dayInfo.RebateInfo.append(rebateInfo)
+
+ dayInfo.Rebates = len(dayInfo.RebateInfo)
+ actInfo.RebateDayInfo.append(dayInfo)
+
+ actInfo.RebateDays = len(actInfo.RebateDayInfo)
+ NetPackCommon.SendFakePack(curPlayer, actInfo)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 37e3e90..626f633 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -48,6 +48,7 @@
import PlayerNewFairyCeremony
import PlayerGoldGift
import PlayerActTotalRecharge
+import PlayerActRechargeRebateGold
import PlayerActRechargePrize
import CrossActCTGBillboard
import PlayerActGrowupBuy
@@ -437,6 +438,10 @@
#跨服充值排行活动
CrossActCTGBillboard.AddCTGRMB(curPlayer, orderCoin)
+ # 只算充仙玉的
+ if coinType == CoinType_Gold:
+ PlayerActRechargeRebateGold.AddRechargeRebateGoldRMB(curPlayer, addGold)
+
#仙界盛典-充值大礼
PlayerFairyCeremony.OnFCRecharge(curPlayer)
PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index fca3e36..5ce8c2d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -77,6 +77,7 @@
import CrossActCTGBillboard
import PlayerActCollectWords
import PlayerActTotalRecharge
+import PlayerActRechargeRebateGold
import PlayerActRechargePrize
import PlayerActGrowupBuy
import PlayerSpringSale
@@ -1414,6 +1415,9 @@
elif actionName == ShareDefine.OperationActionName_GrowupBuy:
PlayerActGrowupBuy.RefreshGrowupBuyActionInfo()
+ elif actionName == ShareDefine.OperationActionName_RechargeRebateGold:
+ PlayerActRechargeRebateGold.RefreshRechargeRebateGoldActionInfo()
+
return
if key.startswith(ShareDefine.Def_Notify_WorldKey_CrossActInfo[:-2]):
--
Gitblit v1.8.0