From 58f1009d34c618f9d933e44b80ef95717c5ad246 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 27 七月 2021 17:00:14 +0800
Subject: [PATCH] 8796 【BT2】【后端】Part1 2、每日在线送符印寻宝20次(原创角7日在线奖励增加支持每日在线奖励);
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py | 77 +++++++++++++++++++++++---------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 8 +++-
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 8 +++-
3 files changed, 58 insertions(+), 35 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 6eb0e4a..68ec094 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -10398,6 +10398,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Index", c_ubyte), # 奖励索引,其他按顺序
+ ("IsDaily", c_ubyte), # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
]
def __init__(self):
@@ -10415,6 +10416,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x06
self.Index = 0
+ self.IsDaily = 0
return
def GetLength(self):
@@ -10427,12 +10429,14 @@
DumpString = '''//A5 06 玩家领取在线奖励 //tagCMGetOnlinePrize:
Cmd:%s,
SubCmd:%s,
- Index:%d
+ Index:%d,
+ IsDaily:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index
+ self.Index,
+ self.IsDaily
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 6eb0e4a..68ec094 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -10398,6 +10398,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Index", c_ubyte), # 奖励索引,其他按顺序
+ ("IsDaily", c_ubyte), # 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
]
def __init__(self):
@@ -10415,6 +10416,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x06
self.Index = 0
+ self.IsDaily = 0
return
def GetLength(self):
@@ -10427,12 +10429,14 @@
DumpString = '''//A5 06 玩家领取在线奖励 //tagCMGetOnlinePrize:
Cmd:%s,
SubCmd:%s,
- Index:%d
+ Index:%d,
+ IsDaily:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index
+ self.Index,
+ self.IsDaily
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
index ae32afd..22f1088 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
@@ -28,16 +28,32 @@
import time
-##领取在线奖励
-# @param None
-# @return None
+#//A5 06 玩家领取在线奖励 #tagCMGetOnlinePrize
+#
+#struct tagCMGetOnlinePrize
+#
+#{
+# tagHead Head;
+# BYTE Index; // 奖励索引,其他按顺序
+# BYTE IsDaily; // 是否领取每日日常的奖励,是发1,如果领取定制创角天奖励的则默认发0即可
+#};
def GetOnlinePrize(index, clientPack, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)#GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
- dayID = creatRoleDay
+ creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
prizeIndex = clientPack.Index
- if not __GetOnlineIsOpen(curPlayer):
+ isDaily = clientPack.IsDaily
+ GameWorld.DebugLog("领取每日在线奖励: isDaily=%s,prizeIndex=%s" % (isDaily, prizeIndex))
+ if prizeIndex <= 0:
+ GameWorld.DebugLog("prizeIndex需要从1开始,我也不想,保留原逻辑吧!!!")
return
+ if isDaily:
+ dayID = 0 # 0代表每日的
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', creatRoleDay)
+ if ipyData:
+ GameWorld.DebugLog("当天有创角天定制在线奖励,不能领取日常在线奖励!creatRoleDay=%s" % creatRoleDay)
+ return
+ else:
+ dayID = creatRoleDay
ipyData = IpyGameDataPY.GetIpyGameData('OnlineAward', dayID)
if not ipyData:
return
@@ -54,6 +70,7 @@
stageTimeList = ipyData.GetStageTime()
if prizeIndex - 1 >= len(stageTimeList):
+ GameWorld.DebugLog("不存在该在线奖励索引!")
return
needTime = stageTimeList[prizeIndex - 1]
if needTime * 60 > onlineTime:
@@ -62,6 +79,7 @@
awardDict = ipyData.GetReward()
if str(prizeIndex) not in awardDict:
+ GameWorld.DebugLog("没有配置该索引对应在线奖励!")
return
itemList = awardDict[str(prizeIndex)]
@@ -71,15 +89,13 @@
if needSpace > packSpace:
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
return
-
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % dayID, awardInfo | awardMark)
# 给物品
for itemID, itemCount in itemList:
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % dayID, awardInfo | awardMark)
-
+
#发包
SendOnlinePrizeInfo(curPlayer)
return
@@ -116,24 +132,20 @@
SetStartCalcOnlineTick(curPlayer, 0)
return
-def __GetOnlineIsOpen(curPlayer):
- dayCnt = IpyGameDataPY.IPY_Data().GetOnlineAwardCount()
- creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)#GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
- return creatRoleDay <= dayCnt
-
##发送奖励信息包
# @param None
# @return None
def SendOnlinePrizeInfo(curPlayer):
- if not __GetOnlineIsOpen(curPlayer):
+ onlineAwardCount = IpyGameDataPY.IPY_Data().GetOnlineAwardCount()
+ if not onlineAwardCount:
return
sendPack = ChPyNetSendPack.tagMCOnlinePrize()
sendPack.Clear()
- sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000#curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayOnlineTime)
+ sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000
sendPack.PrizeInfo = []
- for i in xrange(IpyGameDataPY.IPY_Data().GetOnlineAwardCount()):
- dayID = i+1
+ for i in xrange(onlineAwardCount):
+ dayID = i#i+1,增加了每日支持,从0开始,代表每日
sendPack.PrizeInfo.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID))
sendPack.Len = len(sendPack.PrizeInfo)
#通知客户端时间
@@ -165,6 +177,7 @@
__OnlineMailPrize(curPlayer)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % 0, 0) # 重置每日在线奖励
if PlayerTJG.GetIsTJG(curPlayer):
return
@@ -172,21 +185,22 @@
SendOnlinePrizeInfo(curPlayer)
return
-
-
-
+
def __OnlineMailPrize(curPlayer):
#邮件补发奖励
- creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)-1#GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
- if not creatRoleDay:
+ creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
+ if creatRoleDay <= 1:
return
-
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', creatRoleDay)
+ mailAwardDay = creatRoleDay - 1
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', mailAwardDay)
if not ipyData:
- return
- prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay)
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAward', 0)
+ if not ipyData:
+ return
+ mailAwardDay = 0 # 昨日非定制的,且有配置0常规的,则补发0的
+
+ prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay)
onlineTime = GetOnlineTime(curPlayer)
- GameWorld.DebugLog('creatRoleDay=%s,onlineTime=%s' % (creatRoleDay, onlineTime))
needTimeList = ipyData.GetStageTime()
awardDict = ipyData.GetReward()
itemList = []
@@ -198,7 +212,8 @@
if not itemList:
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay, prizeInfo)
+ GameWorld.DebugLog('补发昨日在线奖励: mailAwardDay=%s,onlineTime=%s' % (mailAwardDay, onlineTime))
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay, prizeInfo)
PlayerControl.SendMailByKey('OnLineAward1', [curPlayer.GetID()], itemList)
return
--
Gitblit v1.8.0