From 824aab9ae8d1b4c8619f96ae821b513ddd65ab43 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 23 三月 2021 16:35:17 +0800
Subject: [PATCH] 8860 【BT2】【主干】【后端】极品白拿功能(返还奖励改为按相差天计算;逻辑购买、领取返还奖励逻辑);
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 6 +++---
PySysDB/PySysDBPY.h | 2 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py | 40 ++++++++++++++++++++--------------------
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index e466149..5ea565625 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1319,7 +1319,7 @@
BYTE _ID; //ID
dict AwardItem; //奖励 {"职业":[[物品ID,个数],...], ...}
WORD NeedMoney; //需要仙玉
- DWORD ReturnTime; //返还时间(s)
+ DWORD ReturnDays; //返还所需天
};
//限时礼包活动表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 7920d3c..85c7c3e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1057,7 +1057,7 @@
("BYTE", "ID", 1),
("dict", "AwardItem", 0),
("WORD", "NeedMoney", 0),
- ("DWORD", "ReturnTime", 0),
+ ("DWORD", "ReturnDays", 0),
),
"ActFlashGiftbag":(
@@ -3910,13 +3910,13 @@
self.ID = 0
self.AwardItem = {}
self.NeedMoney = 0
- self.ReturnTime = 0
+ self.ReturnDays = 0
return
def GetID(self): return self.ID # ID
def GetAwardItem(self): return self.AwardItem # 奖励 {"职业":[[物品ID,个数],...], ...}
def GetNeedMoney(self): return self.NeedMoney # 需要仙玉
- def GetReturnTime(self): return self.ReturnTime # 返还时间(s)
+ def GetReturnDays(self): return self.ReturnDays # 返还所需天
# 限时礼包活动表
class IPY_ActFlashGiftbag():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py
index 0571d83..ff2cbd0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py
@@ -18,14 +18,13 @@
"""Version = 2018-07-10 16:50"""
#---------------------------------------------------------------------
-import IPY_GameWorld
import GameWorld
import ChConfig
+import IPY_GameWorld
import IpyGameDataPY
-import ItemCommon
+import ChPyNetSendPack
import PlayerControl
import ItemControler
-import ChPyNetSendPack
import NetPackCommon
import time
@@ -47,6 +46,9 @@
# @param curPlayer
# @return None
def OnLogin(curPlayer):
+ openTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
+ if not openTime:
+ return
Sync_FreeGoodsInfo(curPlayer)
return
@@ -58,8 +60,11 @@
若玩家在最后一个可领取返还仙玉倒计时结束的当天未领取仙玉,则在隔天凌晨5:00帮其把所有未领取仙玉领取通过邮件发放
'''
openTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
+ if not openTime:
+ return
curTimeNum = int(time.time())
if curTimeNum - openTime <= IpyGameDataPY.GetFuncCfg('FreeGoodsOpenTime'):
+ #GameWorld.DebugLog("极品白拿购买时间未到期,不处理!")
return
giveMoney = 0
giveGoodsIDList = []
@@ -69,18 +74,20 @@
goodsState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsBuyState % goodsID)
if goodsState in [0, 1]:
continue
- if curTimeNum - goodsState - ipyData.GetReturnTime() < 24*3600:
+ buyTime = goodsState
+ passDays = GameWorld.GetDiff_Day(curTimeNum, buyTime)
+ if passDays <= ipyData.GetReturnDays():
giveMoney = 0
giveGoodsIDList = []
+ #GameWorld.DebugLog(" 还有白拿奖励领奖时间未预期,不处理! goodsID=%s,passDays=%s" % (goodsID, passDays))
break
giveMoney += ipyData.GetNeedMoney()
giveGoodsIDList.append(goodsID)
if giveMoney:
- GameWorld.DebugLog(' 极品白拿帮领取返还 giveMoney=%s,giveGoodsIDList=%s'%(giveMoney, giveGoodsIDList), curPlayer.GetID())
+ GameWorld.DebugLog(' 极品白拿邮件返还 giveMoney=%s,giveGoodsIDList=%s' % (giveMoney, giveGoodsIDList), curPlayer.GetID())
for goodsID in giveGoodsIDList:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % goodsID, 1)
PlayerControl.SendMailByKey('WhiteTakeJade', [curPlayer.GetID()], [], [], giveMoney)
-
Sync_FreeGoodsInfo(curPlayer)
return
@@ -98,12 +105,15 @@
goodsState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsBuyState % freeGoodsID)
addDataDict = {"freeGoodsID":freeGoodsID}
if goodsState == 1:
+ GameWorld.DebugLog(' 极品白拿已领取该奖励!', curPlayer.GetID())
return
if goodsState != 0:
#领取返还
-
- if curTimeNum - goodsState < ipyData.GetReturnTime():
- GameWorld.DebugLog(' 极品白拿 未到返还时间!freeGoodsID=%s, passTime=%s' % (freeGoodsID, curTimeNum - goodsState), curPlayer.GetID())
+ buyTime = goodsState
+ passDays = GameWorld.GetDiff_Day(curTimeNum, buyTime)
+ if passDays < ipyData.GetReturnDays():
+ GameWorld.DebugLog(' 极品白拿 未到返还时间!freeGoodsID=%s, buyTime=%s, passDays=%s < %s'
+ % (freeGoodsID, GameWorld.ChangeTimeNumToStr(buyTime), passDays, ipyData.GetReturnDays()), curPlayer.GetID())
return
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % freeGoodsID, 1)
returnMoney = ipyData.GetNeedMoney()
@@ -122,20 +132,10 @@
#给物品
awardItemDict = ipyData.GetAwardItem()
awardItemList = awardItemDict.get(str(curPlayer.GetJob()), [])
- # 检查背包
- needSpace = len(awardItemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.SendMailByKey('WhiteTakeBagFull', [curPlayer.GetID()], awardItemList, [freeGoodsID])
- else:
- # 给物品
- for itemID, itemCount, isBind in awardItemList:
- ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
+ ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, "WhiteTakeBagFull", event=["FreeGoods", False, addDataDict])
Sync_FreeGoodsInfo(curPlayer, [freeGoodsID])
return
-
-
def Sync_FreeGoodsInfo(curPlayer, freeGoodsIDList=[]):
#通知极品白拿信息
--
Gitblit v1.8.0