From 7edbbb07b1e442a11a65c76b48f8238ffb520d79 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 三月 2020 12:05:27 +0800
Subject: [PATCH] 8399 每日灵石礼包修改(改为运营活动)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py | 245 +++++++++++++++++++++++++++++++++++++++++++++++++
PyNetPack | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 7 +
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4
8 files changed, 270 insertions(+), 5 deletions(-)
diff --git a/PyNetPack b/PyNetPack
index 5d2c941..8f2ab74 160000
--- a/PyNetPack
+++ b/PyNetPack
@@ -1 +1 @@
-Subproject commit 5d2c941bb636d7725df79f71f03afb2375bb2db8
+Subproject commit 8f2ab740c1e7139456629265d52d237a273b8177
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 7523028..debc9a8 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -204,6 +204,7 @@
OperationActionName_SpringSale = "ActSpringSale" # 限时特惠活动
OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
+OperationActionName_DailyGiftbag = "ActDailyGiftbag" # 每日礼包活动
OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
@@ -225,7 +226,8 @@
OperationActionName_RealmPoint, OperationActionName_FlashSale,
OperationActionName_WishingWell, OperationActionName_TotalRecharge,
OperationActionName_WeekParty, OperationActionName_LoginAward,
- OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure] \
+ OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
+ OperationActionName_DailyGiftbag] \
+ FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 16143ec..224bf86 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3699,6 +3699,10 @@
Def_PDict_FlashGiftbagBuyCount = "FlashGiftbagBuyCount_%s" # 限时礼包已购买次数,参数(礼包ID)
Def_PDict_FlashGiftbagMailState = "FlashGiftbagMailState" # 玩家身上的活动更新提醒邮件状态
+#每日礼包活动
+Def_PDict_DailyGiftbagID = "DailyGiftbagID" # 玩家身上的每日礼包活动ID,唯一标识,取活动开始日期time
+Def_PDict_DailyGiftbagBuyCount = "DailyGiftbagBuyCount_%s" # 每日礼包已购买次数,参数(礼包ID)
+
#BOSS复活
Def_PDict_BossRebornID = "BossRebornID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
Def_PDict_BossRebornTemplateID = "BossRebornTemplateID" # 玩家身上的BOSS复活模板ID
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 f16d602..9273980 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -97,6 +97,7 @@
import GameLogic_XMZZ
import PlayerFlashSale
import PlayerFlashGiftbag
+import PlayerDailyGiftbag
import PlayerCostRebate
import PlayerActTotalRecharge
import PlayerSpringSale
@@ -634,6 +635,8 @@
PlayerSpringSale.OnPlayerLogin(curPlayer)
#限时礼包
PlayerFlashGiftbag.OnPlayerLogin(curPlayer)
+ #每日礼包
+ PlayerDailyGiftbag.OnPlayerLogin(curPlayer)
#限时抢购
PlayerFlashSale.OnPlayerLogin(curPlayer)
# 世界boss
@@ -5296,7 +5299,7 @@
PlayerActivity.GetActivityPlaceReward(curPlayer)
# 每日免费直购礼包
elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
- PlayerCoin.OnGetDayFreeGoldGift(curPlayer)
+ PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
# 仙盟活跃度奖励
elif rewardType == ChConfig.Def_RewardType_FamilyActivity:
PlayerFamily.GetFamilyActivityAward(curPlayer, dataEx)
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 6a42394..7eaddd0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -43,6 +43,7 @@
import IpyGameDataPY
import ShareDefine
import PlayerFlashGiftbag
+import PlayerDailyGiftbag
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerGoldGift
@@ -218,7 +219,11 @@
addGold, prizeGold, giveItemList, notifyMark = ctgResultInfo
elif ipyData.GetGiftbagID():
- if not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict):
+ giftbagID = ipyData.GetGiftbagID()
+ if 100 <= giftbagID < 199:
+ if not PlayerDailyGiftbag.OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict):
+ return
+ elif not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict):
return
else:
#用于支付其他的商品,待扩展...
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py
new file mode 100644
index 0000000..48c7724
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py
@@ -0,0 +1,245 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerDailyGiftbag
+#
+# @todo:每日礼包
+# @author hxp
+# @date 2020年3月12日
+# @version 1.0
+#
+# 详细描述: 每日礼包
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2020年3月12日 12:00"""
+#-------------------------------------------------------------------------------
+
+import PyGameData
+import ShareDefine
+import PlayerControl
+import IpyGameDataPY
+import NetPackCommon
+import ChPyNetSendPack
+import DataRecordPack
+import ItemControler
+import IPY_GameWorld
+import ItemCommon
+import GameWorld
+import ChConfig
+
+def OnPlayerLogin(curPlayer):
+ __CheckPlayerDailyGiftbagAction(curPlayer)
+ return
+
+def RefreshDailyGiftbagActionInfo():
+ ## 收到GameServer同步的活动信息,刷新活动信息
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if curPlayer.GetID() == 0:
+ continue
+ __CheckPlayerDailyGiftbagAction(curPlayer)
+ return
+
+def __CheckPlayerDailyGiftbagAction(curPlayer):
+ ## 检查玩家每日礼包活动数据信息
+
+ playerID = curPlayer.GetPlayerID()
+
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
+ actID = actInfo.get(ShareDefine.ActKey_ID, 0)
+ state = actInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
+ return
+
+ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagID) # 玩家身上的活动ID
+ cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
+ if not cfgIpyData:
+ return
+ giftbagType = cfgIpyData.GetGiftbagType()
+
+ isReset = False
+ if actID != playerActID:
+ isReset = True
+ __ResetGiftbagItemBuyCount(curPlayer, giftbagType)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagID, actID)
+ GameWorld.DebugLog("每日礼包重置! actID=%s,playerActID=%s,state=%s,giftbagType=%s" % (actID, playerActID, state, giftbagType), playerID)
+ else:
+ GameWorld.DebugLog("每日礼包活动ID不变,不处理!", curPlayer.GetPlayerID())
+ SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
+
+ Sync_DailyGiftbagActionInfo(curPlayer)
+ return isReset
+
+def __ResetGiftbagItemBuyCount(curPlayer, giftbagType):
+ ##重置每日礼包限购物品次数
+
+ giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
+ if not giftbagIpyDataList:
+ return
+ for giftIpyData in giftbagIpyDataList:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagBuyCount % giftIpyData.GetGiftbagID(), 0)
+ SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
+ return
+
+def OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict, isCTG=True):
+ ## 玩家订购每日礼包
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
+ if not actInfo:
+ if isCTG:
+ DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag action info is null!", addDRDict)
+ return
+
+ state = actInfo.get(ShareDefine.ActKey_State, 0)
+ if not state:
+ if isCTG:
+ DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag state is 0!", addDRDict)
+ return
+
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+ cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
+ if not cfgIpyData:
+ if isCTG:
+ DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag GiftbagType is null!", addDRDict)
+ return
+ giftbagType = cfgIpyData.GetGiftbagType()
+
+ giftbagIpyData = IpyGameDataPY.GetIpyGameData("DailyGiftbag", giftbagType, giftbagID)
+ if not giftbagIpyData:
+ if isCTG:
+ DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag giftbagType=%s giftbagID=%s can not found!"
+ % (giftbagType, giftbagID), addDRDict)
+ return
+
+ giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob())
+ addDRDict.update({"giftbagType":giftbagType, "giftbagID":giftbagID, "giftItemList":giftItemList})
+ buyCountLimit = giftbagIpyData.GetBuyCountLimit()
+ buyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID)
+ if buyCountLimit:
+ addDRDict.update({"buyCountLimit":buyCountLimit, "buyCount":buyCount})
+ if buyCount >= buyCountLimit:
+ if isCTG:
+ DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag Pay count limit !buyCount=%s,buyCountLimit=%s"
+ % (buyCount, buyCountLimit), addDRDict)
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID, buyCount + 1)
+
+ if giftItemList:
+ needSpace = len(giftItemList)
+ emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+ if emptySpace < needSpace:
+ PlayerControl.SendMailByKey("", [curPlayer.GetPlayerID()], giftItemList)
+ else:
+ for itemID, itemCount, isBind in giftItemList:
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem],
+ event=[ChConfig.ItemGive_CTG, True, addDRDict])
+
+ SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
+ return True
+
+def OnGetDailyFreeGiftbag(curPlayer):
+ ## 领取每日免费直购礼包
+ giftbagID = 0 # 免费礼包ID固定为0
+ addDRDict = {}
+ OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict, False)
+ return
+
+def __GetJobItemList(itemList, job):
+ jobItemList = []
+ for itemID, itemCnt, isBind in itemList:
+ if type(itemID) == int:
+ jobItemList.append([itemID, itemCnt, isBind])
+ elif job in itemID:
+ jobItemList.append([itemID[job], itemCnt, isBind])
+ return jobItemList
+
+def SyncDailyGiftbagBuyCount(curPlayer, giftbagType):
+ ## 通知每日礼包玩家活动信息
+
+ giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
+ if not giftbagIpyDataList:
+ return
+
+ giftbagBuyInfo = ChPyNetSendPack.tagMCDailyGiftbagPlayerInfo()
+ giftbagBuyInfo.BuyCountList = []
+ for giftIpyData in giftbagIpyDataList:
+ giftbagID = giftIpyData.GetGiftbagID()
+ buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID)
+ if buyCnt <= 0:
+ continue
+ buyCountInfo = ChPyNetSendPack.tagMCDailyGiftbagBuyCount()
+ buyCountInfo.GiftbagID = giftbagID
+ buyCountInfo.BuyCount = buyCnt
+ giftbagBuyInfo.BuyCountList.append(buyCountInfo)
+ giftbagBuyInfo.Count = len(giftbagBuyInfo.BuyCountList)
+ NetPackCommon.SendFakePack(curPlayer, giftbagBuyInfo)
+ return
+
+def Sync_DailyGiftbagActionInfo(curPlayer):
+ ## 通知每日礼包活动信息
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
+ if not actInfo:
+ return
+
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not cfgID:
+ return
+
+ cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
+ if not cfgIpyData:
+ return
+ giftbagType = cfgIpyData.GetGiftbagType()
+
+ giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
+ if not giftbagIpyDataList:
+ return
+
+ # 取玩家APPID,混服使用
+ appID = GameWorld.GetPlayerPlatform(curPlayer)
+
+ packInfo = ChPyNetSendPack.tagMCDailyGiftbagInfo()
+ packInfo.GiftbagInfo = []
+
+ for giftIpyData in giftbagIpyDataList:
+ giftbagID = giftIpyData.GetGiftbagID()
+ orderIpyData = GetGiftbagIDOrderInfoIpyData(giftbagID, appID)
+
+ giftBag = ChPyNetSendPack.tagMCDailyGiftbag()
+ giftBag.GiftID = giftbagID
+ giftBag.OrderInfo = "" if not orderIpyData else orderIpyData.GetOrderInfo()
+ giftBag.OrderInfoLen = len(giftBag.OrderInfo)
+ giftBag.BuyCountLimit = giftIpyData.GetBuyCountLimit()
+ giftBag.RMB = 0 if not orderIpyData else int(orderIpyData.GetPayRMBNum())
+ giftBag.ItemInfo = []
+ for itemID, itemCount, isBind in __GetJobItemList(giftIpyData.GetGiftItemList(), curPlayer.GetJob()):
+ item = ChPyNetSendPack.tagMCDailyGiftbagItem()
+ item.ItemID = itemID
+ item.ItemCount = itemCount
+ giftBag.ItemInfo.append(item)
+ giftBag.GiftItemCount = len(giftBag.ItemInfo)
+ packInfo.GiftbagInfo.append(giftBag)
+
+ packInfo.GiftbagCount = len(packInfo.GiftbagInfo)
+ NetPackCommon.SendFakePack(curPlayer, packInfo)
+ return
+
+def GetGiftbagIDOrderInfoIpyData(giftbagID, appID):
+ ## 获取礼包ID对应数据配置
+ key = "GiftbagIpyDataDict"
+ GiftbagIpyDataDict = IpyGameDataPY.GetConfigEx(key)
+ if not GiftbagIpyDataDict:
+ GiftbagIpyDataDict = {}
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetOrderInfoCount()):
+ ipyData = ipyDataMgr.GetOrderInfoByIndex(i)
+ if not ipyData.GetGiftbagID():
+ continue
+ GiftbagIpyDataDict[(ipyData.GetGiftbagID(), ipyData.GetAppID())] = ipyData
+ IpyGameDataPY.SetConfigEx(key, GiftbagIpyDataDict)
+ return GiftbagIpyDataDict.get((giftbagID, appID))
+
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 230dd3c..8ef3d65 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -81,6 +81,7 @@
import PlayerFeastWeekParty
import PlayerActLogin
import PlayerFlashGiftbag
+import PlayerDailyGiftbag
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerFeastRedPacket
@@ -1336,6 +1337,9 @@
elif actionName == ShareDefine.OperationActionName_FlashGiftbag:
PlayerFlashGiftbag.RefreshFlashGiftbagActionInfo()
+
+ elif actionName == ShareDefine.OperationActionName_DailyGiftbag:
+ PlayerDailyGiftbag.RefreshDailyGiftbagActionInfo()
elif actionName == ShareDefine.OperationActionName_FairyCeremony:
PlayerFairyCeremony.RefreshOperationAction_FairyCeremony()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 7523028..debc9a8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -204,6 +204,7 @@
OperationActionName_SpringSale = "ActSpringSale" # 限时特惠活动
OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
+OperationActionName_DailyGiftbag = "ActDailyGiftbag" # 每日礼包活动
OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
@@ -225,7 +226,8 @@
OperationActionName_RealmPoint, OperationActionName_FlashSale,
OperationActionName_WishingWell, OperationActionName_TotalRecharge,
OperationActionName_WeekParty, OperationActionName_LoginAward,
- OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure] \
+ OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
+ OperationActionName_DailyGiftbag] \
+ FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell,
--
Gitblit v1.8.0