From b29c07351d8c6be81f3ba2dd28aeffef3c96257f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 07 四月 2021 18:35:41 +0800
Subject: [PATCH] 8886 【BT2】【后端】线下活动支持(增加单笔累充系统)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                    |    7 ++++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                  |    4 ++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py |    9 +++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                |    6 ++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py              |    2 ++
 PySysDB/PySysDBPY.h                                                                                   |    2 +-
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                         |    7 ++++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                       |   11 ++++++++++-
 8 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 57c7409..208d3e6 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1698,7 +1698,7 @@
 struct tagActSingleRechargeAward
 {
 	DWORD		_TemplateID;	//模板ID
-	DWORD		SingleRechargeValue;	//单笔充值额度
+	float		SingleRechargeValue;	//单笔充值额度
 	BYTE		AwardIndex;		//返利奖励索引0~31,同个模板中不重复
 	dict		AwardItem;	//返利物品信息列表 {职业:[(物品ID,个数,是否绑定),...]}
 	char		NotifyKey;		//全服广播key,默认两个参数(玩家名, 档位额度)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 703645b..5f7f9f0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -233,6 +233,7 @@
 OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
 OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
 OperationActionName_ManyDayRecharge = "ActManyDayRecharge" # 多日连充活动
+OperationActionName_SingleRecharge = "ActSingleRecharge" # 单笔累充活动
 #节日活动类型列表 - 该类型无视开服天,日期到了就开启
 FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
                                 OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
@@ -248,7 +249,7 @@
                            OperationActionName_WishingWell, OperationActionName_TotalRecharge,
                            OperationActionName_WeekParty, OperationActionName_LoginAward, 
                            OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
-                           OperationActionName_DailyGiftbag, 
+                           OperationActionName_DailyGiftbag, OperationActionName_SingleRecharge,
                            OperationActionName_CollectWords, OperationActionName_ManyDayRecharge,
                            ] + FeastOperationActionNameList
 #需要记录开启活动时的世界等级的运营活动
@@ -262,14 +263,14 @@
                                    OperationActionName_CollectWords,
                                    OperationActionName_FeastLogin,
                                    OperationActionName_FeastWish, OperationActionName_FeastTravel,
-                                   OperationActionName_ManyDayRecharge,
+                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
                                    ]
 
 #支持多活动分组编号的活动名
 MultiActNumOperationActNameList = [OperationActionName_TotalRecharge, OperationActionName_CollectWords,
                                    OperationActionName_FlashGiftbag, OperationActionName_CostRebate,
                                    OperationActionName_SpringSale, OperationActionName_FlashSale,
-                                   OperationActionName_ManyDayRecharge,
+                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
                                    ]
 
 #跨服运营活动表名定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index be863ca..850282c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3863,6 +3863,13 @@
 Def_PDict_ManyDayRechargeWorldLV = "ManyDayRechargeWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号)
 Def_PDict_ManyDayRechargeValue = "ManyDayRechargeValue_%s_%s"  # 每日累充总额,参数:(活动编号, 天索引)
 Def_PDict_ManyDayRechargeAward = "ManyDayRechargeAward_%s_%s"  # 领奖记录,参数:(活动编号, key编号)
+
+#单笔累充活动
+Def_PDict_SingleRechargeID = "SingleRechargeID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
+Def_PDict_SingleRechargeTemplateID = "SingleRechargeTempID_%s"  # 玩家身上的活动模板ID,参数:(活动编号)
+Def_PDict_SingleRechargeWorldLV = "SingleRechargeWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号)
+Def_PDict_SingleRechargeValue = "SingleRechargeValue_%s"  # 单笔最高累充,参数:(活动编号)
+Def_PDict_SingleRechargeAward = "SingleRechargeAward_%s"  # 领奖记录,参数:(活动编号)
 #-------------------------------------------------------------------------------
 
 #开服活动,Def_PDictType_OpenServerCampaign
@@ -5403,7 +5410,9 @@
 Def_RewardType_DailyRecharge, #永久每日累充奖励39
 Def_RewardType_RechargeGold30, #1元送30倍充值券每日奖励40
 Def_RewardType_ManyDayRecharge, #多日连充41
-)= range(42)
+Def_RewardType_InfiniteMoney, #无限货币42
+Def_RewardType_SingleRecharge, #单笔累充 43
+)= range(44)
 
 
 #boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index a660f70..d873b36 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1337,7 +1337,7 @@
 
                 "ActSingleRechargeAward":(
                         ("DWORD", "TemplateID", 1),
-                        ("DWORD", "SingleRechargeValue", 0),
+                        ("float", "SingleRechargeValue", 0),
                         ("BYTE", "AwardIndex", 0),
                         ("dict", "AwardItem", 0),
                         ("char", "NotifyKey", 0),
@@ -4524,7 +4524,7 @@
     
     def __init__(self):
         self.TemplateID = 0
-        self.SingleRechargeValue = 0
+        self.SingleRechargeValue = 0.0
         self.AwardIndex = 0
         self.AwardItem = {}
         self.NotifyKey = ""
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 eb8cffc..a5f902e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -108,6 +108,7 @@
 import PlayerActRechargePrize
 import PlayerActRechargeRebateGold
 import PlayerActManyDayRecharge
+import PlayerActSingleRecharge
 import PlayerSpringSale
 import PlayerFairyCeremony
 import PlayerNewFairyCeremony
@@ -716,6 +717,8 @@
     PlayerActLogin.OnLogin(curPlayer)
     # 多日连充活动
     PlayerActManyDayRecharge.OnPlayerLogin(curPlayer)
+    # 单笔累充活动
+    PlayerActSingleRecharge.OnPlayerLogin(curPlayer)
     # 仙界盛典活动
     PlayerFairyCeremony.OnLogin(curPlayer)
     # 新仙界盛典活动
@@ -5375,6 +5378,9 @@
     # 领取多日连充领取
     elif rewardType == ChConfig.Def_RewardType_ManyDayRecharge:
         PlayerActManyDayRecharge.OnGetManyDayRechargeAward(curPlayer, dataEx, dataExStr)
+    # 领取单笔累充领取
+    elif rewardType == ChConfig.Def_RewardType_SingleRecharge:
+        PlayerActSingleRecharge.OnGetSingleRechargeAward(curPlayer, dataEx, dataExStr)
     # 领取boss复活活动奖励
     elif rewardType == ChConfig.Def_RewardType_BossReborn:
         PlayerBossReborn.GetBossRebornActionAward(curPlayer, dataEx)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py
index c0de09e..70040ed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActSingleRecharge.py
@@ -25,6 +25,7 @@
 import NetPackCommon
 import GameWorld
 import ChConfig
+import CommFunc
 
 def GetTemplateID(cfgID, dayIndex):
     if not cfgID or dayIndex == None:
@@ -126,7 +127,7 @@
             continue
         
         singleValue = ipyData.GetSingleRechargeValue()
-        if curRechargeValue < singleValue:
+        if curRechargeValue < CommFunc.RMBToCoin(singleValue):
             continue
         awardRecord |= pow(2, awardIndex) 
         
@@ -226,7 +227,7 @@
         GameWorld.DebugLog("找不到该单笔累充活动档位索引奖励!actNum=%s,templateID=%s,awardIndex=%s" % (actNum, templateID, awardIndex), playerID)
         return
     
-    singleValue = awardIpyData.GetSingleRechargeValue()
+    singleValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())
     curRechargeValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeValue % actNum)
     
     if curRechargeValue < singleValue:
@@ -249,7 +250,7 @@
     
     notifyKey = awardIpyData.GetNotifyKey()
     if notifyKey:
-        PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), singleValue])
+        PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), awardIpyData.GetSingleRechargeValue()])
         
     for itemID, itemCount, isAuctionItem in awardItemList:
         ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], event=["SingleRechargeAward", False, {}])
@@ -321,7 +322,7 @@
         for awardIpyData in ipyDataList:
             awardInfo = ChPyNetSendPack.tagMCActSingleRechargeAward()
             awardInfo.AwardIndex = awardIpyData.GetAwardIndex()
-            awardInfo.SingleRechargeValue = awardIpyData.GetSingleRechargeValue()
+            awardInfo.SingleRechargeValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())
             awardInfo.AwardItem = []
             awardItemList = GameWorld.GetDictValueByRangeKey(awardIpyData.GetAwardItem(), actWorldLV, [])
             for itemID, itemCount, isBind in awardItemList:
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 f8cef98..71a6a71 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -50,6 +50,7 @@
 import PlayerActTotalRecharge
 import PlayerActRechargeRebateGold
 import PlayerActManyDayRecharge
+import PlayerActSingleRecharge
 import PlayerActRechargePrize
 import CrossActCTGBillboard
 import PlayerActGrowupBuy
@@ -450,6 +451,7 @@
     PlayerGoldGift.OnPlayerChargeGold(curPlayer)
     #累积充值X元
     PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin)
+    PlayerActSingleRecharge.UpdSingleRechargeValue(curPlayer, orderCoin, coinType) # 单笔累充
     PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin)
     PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin)
     #开服活动
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 703645b..5f7f9f0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -233,6 +233,7 @@
 OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
 OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
 OperationActionName_ManyDayRecharge = "ActManyDayRecharge" # 多日连充活动
+OperationActionName_SingleRecharge = "ActSingleRecharge" # 单笔累充活动
 #节日活动类型列表 - 该类型无视开服天,日期到了就开启
 FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
                                 OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
@@ -248,7 +249,7 @@
                            OperationActionName_WishingWell, OperationActionName_TotalRecharge,
                            OperationActionName_WeekParty, OperationActionName_LoginAward, 
                            OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
-                           OperationActionName_DailyGiftbag, 
+                           OperationActionName_DailyGiftbag, OperationActionName_SingleRecharge,
                            OperationActionName_CollectWords, OperationActionName_ManyDayRecharge,
                            ] + FeastOperationActionNameList
 #需要记录开启活动时的世界等级的运营活动
@@ -262,14 +263,14 @@
                                    OperationActionName_CollectWords,
                                    OperationActionName_FeastLogin,
                                    OperationActionName_FeastWish, OperationActionName_FeastTravel,
-                                   OperationActionName_ManyDayRecharge,
+                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
                                    ]
 
 #支持多活动分组编号的活动名
 MultiActNumOperationActNameList = [OperationActionName_TotalRecharge, OperationActionName_CollectWords,
                                    OperationActionName_FlashGiftbag, OperationActionName_CostRebate,
                                    OperationActionName_SpringSale, OperationActionName_FlashSale,
-                                   OperationActionName_ManyDayRecharge,
+                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
                                    ]
 
 #跨服运营活动表名定义

--
Gitblit v1.8.0