From 1ee23ed9a201181eca6b2da5fb256ca9af0639f2 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 十二月 2019 18:11:08 +0800 Subject: [PATCH] 8359 【主干】活跃兑换(改为后端计算倒计时;优化次数启动及结算模式) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py | 84 +++++++++++++++++++++++++---------------- 1 files changed, 51 insertions(+), 33 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py index 02507ad..811a4f3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py @@ -25,14 +25,18 @@ import GameWorld import ChConfig +def GetShopTypeList(cfgID, dayIndex, woldLV): + if cfgID == None or dayIndex == None: + return [] + ipyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID) + if not ipyData: + return [] + shopTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetShopTypeList(), woldLV, []) + todayShopType = shopTypeList[-1] if dayIndex >= len(shopTypeList) else shopTypeList[dayIndex] + return todayShopType def OnPlayerLogin(curPlayer): - isReset = __CheckPlayerSpringSaleAction(curPlayer) - if not isReset: - actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {}) - # 活动中同步活动信息 - if actInfo.get(ShareDefine.ActKey_State): - Sync_SpringSaleActionInfo(curPlayer) + __CheckPlayerSpringSaleAction(curPlayer) return def RefreshSpringSaleActionInfo(): @@ -53,24 +57,32 @@ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {}) actID = actInfo.get(ShareDefine.ActKey_ID, 0) state = actInfo.get(ShareDefine.ActKey_State, 0) - shopTypeList = actInfo.get(ShareDefine.ActKey_ShopTypeList, []) - #if not state or not shopTypeList: - # return - + cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0) + woldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0) playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleID) # 玩家身上的活动ID - - # 活动ID 相同的话不处理 - if actID == playerActID: - GameWorld.DebugLog("限时特惠活动ID不变,不处理!", curPlayer.GetPlayerID()) - return - - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID) - FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList) - - GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID) - - Sync_SpringSaleActionInfo(curPlayer) - return True + isReset = False + if actID != playerActID: + isReset = True + shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), woldLV) + FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, 0) + #Sync_SpringSaleActionInfo(curPlayer) + GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID) + else: + GameWorld.DebugLog("限时特惠活动ID不变,不处理!", playerID) + + playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleMailState) # 玩家身上的活动提醒邮件状态 + if actID and state and state != playerMailState: + springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID) + if springSaleIpyData and springSaleIpyData.GetMailKey() and curPlayer.GetLV() >= springSaleIpyData.GetLVLimit(): + PlayerControl.SendMailByKey(springSaleIpyData.GetMailKey(), [playerID], springSaleIpyData.GetMailItemPrize()) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, state) + GameWorld.DebugLog(" 发送新限时特惠邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID) + + if cfgID: + Sync_SpringSaleActionInfo(curPlayer) + return isReset def Sync_SpringSaleActionInfo(curPlayer): ## 通知限时特惠活动信息 @@ -78,13 +90,15 @@ if not actInfo: return - if not actInfo.get(ShareDefine.ActKey_State): - return + #需要提前通知,所以去掉此限制 + #if not actInfo.get(ShareDefine.ActKey_State): + # return cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0) - shopTypeList = actInfo.get(ShareDefine.ActKey_ShopTypeList, 0) - - if not cfgID or not shopTypeList: + if not cfgID: + return + shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0)) + if not shopTypeList: return springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID) @@ -96,10 +110,12 @@ if len(startTimeList) != len(endTimeList): GameWorld.ErrLog("限时特惠开关时间时分配置错误!cfgID=%s" % cfgID) return - + job = curPlayer.GetJob() + openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1 packInfo = ChPyNetSendPack.tagMCSpringSaleInfo() - packInfo.StartDate = springSaleIpyData.GetStartDate() - packInfo.EndtDate = springSaleIpyData.GetEndDate() + packInfo.StartDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetStartDate(), openServerDay) + packInfo.EndtDate = GameWorld.GetOperationActionDateStr(springSaleIpyData.GetEndDate(), openServerDay) + packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes() packInfo.ActivityTime = [] for i, startTime in enumerate(startTimeList): timeInfo = ChPyNetSendPack.tagMCSpringSaleTime() @@ -129,12 +145,14 @@ giftBag.ItemInfo = [] itemList = [[itemIpyData.GetItemID(), itemIpyData.GetItemCnt(), itemIpyData.GetIsBind()]] itemList += itemIpyData.GetItemListEx() + jobItemList = itemIpyData.GetJobItem() for itemID, itemCount, isBind in itemList: item = ChPyNetSendPack.tagMCSpringSaleItem() - item.ItemID = itemID + jobItemID = FunctionNPCCommon.GetShopJobItem(job, itemID, jobItemList) + item.ItemID = jobItemID item.ItemCount = itemCount item.IsBind = isBind - item.IsMainItem = int(itemID == itemIpyData.GetMainItemID()) + item.IsMainItem = int(itemID == FunctionNPCCommon.GetShopJobItem(job, itemIpyData.GetMainItemID(), jobItemList)) giftBag.ItemInfo.append(item) giftBag.GiftItemCount = len(giftBag.ItemInfo) shop.GiftbagInfo.append(giftBag) -- Gitblit v1.8.0