From 7b595426207daeffce03d7f57ab9cc7000b18c7a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 24 一月 2025 18:39:25 +0800
Subject: [PATCH] 8796 【越南】【英语】【BT】【砍树】在线奖励改为优先取对应创角天奖励,没有则取每日奖励;
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py | 69 +++++++++++-----------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py | 5 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py | 11 +++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 2
4 files changed, 32 insertions(+), 55 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index e475561..1424c4a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3713,7 +3713,7 @@
Def_Player_Dict_VIPKillLVExp = "VIPKillLVExp" #VIP杀怪等级 - 经验
Def_Player_Dict_VIPKillLVExpPoint = "VIPKillLVExpPoint" #VIP杀怪等级 - 经验点
-Def_PDict_OnlinePrizeNote = "OnlinePrizeNote%s" # 当日在线奖励领取信息,记录信息 参数天数
+Def_PDict_OnlinePrizeNote = "OnlinePrizeNote" # 当日在线奖励领取信息
Def_PDict_CreateRoleAwardState = "CreateRoleAwardState" # 创角奖励领取记录
Def_PDict_GameNoticeAwardState = "GameNoticeAwardState" # 玩法前瞻游戏领奖记录
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
index fda51d0..7f0c88c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py
@@ -42,9 +42,8 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginDayCnt, 1)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginDayAward, 0)
PlayerLoginDayAward.NotifyPlayerLoginDayAward(curPlayer)
- #七天在线重置
- for i in range(1,8):
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % i, 0)
+ #在线奖励重置
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, 0)
PlayerOnlinePrize.SendOnlinePrizeInfo(curPlayer)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_EndMailState, 0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py
index b252f31..0d5d558 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py
@@ -30,11 +30,14 @@
# @return None
def OnExec(curPlayer, cmdList):
if len(cmdList) < 1:
- GameWorld.DebugAnswer(curPlayer, '当前在线时间 时间 = %s'%PlayerOnlinePrize.GetOnlineTime(curPlayer))
- GameWorld.DebugAnswer(curPlayer, 'SetOnlineTime 时间ms')
+ GameWorld.DebugAnswer(curPlayer, '当前在线时间秒:%s'%PlayerOnlinePrize.GetOnlineTime(curPlayer))
+ GameWorld.DebugAnswer(curPlayer, 'SetOnlineTime 分 [秒]')
return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, cmdList[0])
+ minutes = cmdList[0]
+ seconds = cmdList[1] if len(cmdList) > 1 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, minutes * 60 + seconds)
+ PlayerOnlinePrize.SetStartCalcOnlineTick(curPlayer)
PlayerOnlinePrize.SendOnlinePrizeInfo(curPlayer)
- GameWorld.DebugAnswer(curPlayer, 'SetOnlineTime OK!')
+ GameWorld.DebugAnswer(curPlayer, '设置在线时间秒:%s' % PlayerOnlinePrize.GetOnlineTime(curPlayer))
return
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 16e5fce..456dce7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py
@@ -19,21 +19,12 @@
import ChConfig
import GameWorld
import ItemControler
-import IPY_GameWorld
-import ItemCommon
import NetPackCommon
import PlayerControl
import IpyGameDataPY
import PlayerTJG
import time
-
-'''
-特殊说明:
- 港台主干要修改为创角七日奖励,但是因为前端热更问题,前端无法使用旧表跟旧封包 A3 08 在线奖励信息 #tagMCOnlinePrize
- 为了保持前后端逻辑统一,后端不再动旧表跟旧封包A308,防止修改后前端报错
- 使用新表及新封包 B1 13 在线奖励信息新 #tagMCOnlinePrizeNew
-'''
#//A5 06 玩家领取在线奖励 #tagCMGetOnlinePrize
#
@@ -48,19 +39,25 @@
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
prizeIndex = clientPack.Index
- GameWorld.DebugLog("领取在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
if prizeIndex <= 0:
GameWorld.DebugLog("prizeIndex需要从1开始,我也不想,保留原逻辑吧!!!")
return
- dayID = creatRoleDay
- ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', dayID)
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('OnlineAwardNew', creatRoleDay)
+ if ipyData:
+ dayID = creatRoleDay
+ GameWorld.DebugLog("领取创角天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
+ else:
+ dayID = 0
+ ipyData = IpyGameDataPY.GetIpyGameData('OnlineAwardNew', 0)
+ GameWorld.DebugLog("领取每天在线奖励: creatRoleDay=%s,prizeIndex=%s" % (creatRoleDay, prizeIndex))
+
if not ipyData:
return
#先纠正一次时间
onlineTime = GetOnlineTime(curPlayer)
#已领
- awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID)
+ awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
awardMark = pow(2, prizeIndex - 1)
if awardInfo & awardMark:
#已领取
@@ -81,32 +78,13 @@
GameWorld.DebugLog("没有配置该索引对应在线奖励!")
return
itemList = awardDict[str(prizeIndex)]
-
- # 检查背包
- needSpace = len(itemList)
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+ if not itemList:
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])
-
- #发包
+ updAwardNote = awardInfo | awardMark
+ GameWorld.DebugLog("在线奖励: %s, updAwardNote=%s" % (itemList, updAwardNote))
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, updAwardNote)
+ ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["OnlinePrize", False, {}])
SendOnlinePrizeInfo(curPlayer)
- return
-
-
-##查询在线奖励
-# @param None
-# @return None
-def QueryOnlinePrize(index, clientPack, tick):
-# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-# # 计算时长
-# CalcOnlineTime(curPlayer, tick, True)
return
def GetOnlineTime(curPlayer):
@@ -125,11 +103,12 @@
# @return None
def CalcOnlineTime(curPlayer):
if PlayerTJG.GetIsTJG(curPlayer):
- return
+ return 0
onlineTime = GetOnlineTime(curPlayer)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, onlineTime)
SetStartCalcOnlineTick(curPlayer, 0)
- return
+ GameWorld.DebugLog("更新记录在线时长: %s" % onlineTime)
+ return onlineTime
##发送奖励信息包
@@ -139,14 +118,10 @@
dataCount = IpyGameDataPY.IPY_Data().GetOnlineAwardNewCount()
if not dataCount:
return
- creatRoleDay = GameWorld.GetCreateRoleDays(curPlayer)
sendPack = ChPyNetSendPack.tagMCOnlinePrizeNew()
sendPack.Clear()
sendPack.OnlineTime = GetOnlineTime(curPlayer) * 1000
- sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % creatRoleDay)] # 创角7日的与前端约定固定只发当天的
-# for i in xrange(dataCount):
-# dayID = i + 1#i+1,增加了每日支持,从0开始,代表每日
-# sendPack.PrizeInfo.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % dayID))
+ sendPack.PrizeInfo = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)] # 固定只发当天的
sendPack.Len = len(sendPack.PrizeInfo)
#通知客户端时间
NetPackCommon.SendFakePack(curPlayer, sendPack)
@@ -177,7 +152,7 @@
__OnlineMailPrize(curPlayer)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayOnlineTime, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % 0, 0) # 重置每日在线奖励
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, 0) # 重置每日在线奖励
if PlayerTJG.GetIsTJG(curPlayer):
return
@@ -199,7 +174,7 @@
return
mailAwardDay = 0 # 昨日非定制的,且有配置0常规的,则补发0的
- prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay)
+ prizeInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OnlinePrizeNote)
onlineTime = GetOnlineTime(curPlayer)
needTimeList = ipyData.GetStageTime()
awardDict = ipyData.GetReward()
@@ -213,7 +188,7 @@
if not itemList:
return
GameWorld.DebugLog('补发昨日在线奖励: mailAwardDay=%s,onlineTime=%s' % (mailAwardDay, onlineTime))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote % mailAwardDay, prizeInfo)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OnlinePrizeNote, prizeInfo)
PlayerControl.SendMailByKey('OnLineAward1', [curPlayer.GetID()], itemList)
return
--
Gitblit v1.8.0