From 54b3ca452de08e8cf5723a0715cc0c3853c2df3a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 01 十二月 2018 16:35:48 +0800
Subject: [PATCH] 2549 【BUG】【1.3】玩家登录时过天处理离线期间所获得的助战仙缘币异常
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py | 6 +++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py | 28 +++++++++++++++++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 3 +++
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py
index 492fbc7..854b607 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py
@@ -174,7 +174,7 @@
if playerID not in PyGameData.g_fbHelpBattleRecord:
return
unNotifyRecordList = PyGameData.g_fbHelpBattleRecord.pop(playerID)
- SendMapServer_FBHelpBattleRecord(curPlayer, unNotifyRecordList)
+ SendMapServer_FBHelpBattleRecord(curPlayer, unNotifyRecordList, True)
return
def OnMinuteProcess():
@@ -544,7 +544,7 @@
return
-def SendMapServer_FBHelpBattleRecord(curPlayer, syncHelpRecordList):
+def SendMapServer_FBHelpBattleRecord(curPlayer, syncHelpRecordList, isLogin=False):
if not syncHelpRecordList:
return
@@ -552,7 +552,7 @@
for record in syncHelpRecordList:
helpRecordList.append([record.callPlayerID, record.callPlayerName, record.mapID, record.funcLineID,
record.xianyuanCoinAdd, record.relation, record.vipLV, record.recordTime])
- addXianyuanCoinMsg = str(["HelpRecord", helpRecordList])
+ addXianyuanCoinMsg = str(["HelpRecord", helpRecordList, isLogin])
curPlayer.MapServer_QueryPlayerResult(0, 0, 'FBHelpBattle', addXianyuanCoinMsg, len(addXianyuanCoinMsg))
GameWorld.DebugLog(" MapServer_QueryPlayerResult %s" % addXianyuanCoinMsg, curPlayer.GetPlayerID())
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 5ebb877..a1a2f2d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3203,6 +3203,9 @@
Def_PDict_EquipTotalBaseDef = "EquipTotalBaseDef" # 装备累计基础防御
Def_PDict_EquipTotalBaseHP = "EquipTotalBaseHP" # 装备累计基础生命
+Def_PDict_TodayXianyuanCoinOnLogin = "TodayXianyuanCoinOnLogin" # 登录时触发过天后今日还需要增加的仙缘币
+Def_PDict_LoginAddTodayXianyuanCoinTime = "LoginAddTodayXianyuanCoinTime" # 登录时记录当天增加仙缘币的time值
+
#---玩家字典KEY,存于数据库---
#===========================================================================
# //玩家通用字典 RoleNomalDict
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
index fcf12f7..7a14d03 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
@@ -34,6 +34,8 @@
import IPY_GameWorld
import PlayerActivity
+import time
+
def DoPlayerOnDay(curPlayer):
checkInInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HelpBattleCheckInCount)
checkInCount = checkInInfo / 10 # 累计登记
@@ -44,7 +46,19 @@
SyncCheckInState(curPlayer, 0, False)
# 重置每日已获得仙缘币
- PlayerControl.SetTodayXianyuanCoin(curPlayer, 0)
+ ondaySetXianyuanCoin = 0
+ ondayLoginSetXianyuanCoin = curPlayer.GetDictByKey(ChConfig.Def_PDict_TodayXianyuanCoinOnLogin)
+ if ondayLoginSetXianyuanCoin:
+ # 这里做时间比较,预防玩家登录后就没有再切换地图,再次在该地图过天会导致设置值错误问题
+ loginAddCoinTime = curPlayer.GetDictByKey(ChConfig.Def_PDict_LoginAddTodayXianyuanCoinTime)
+ if GameWorld.CheckTimeIsSameServerDayEx(loginAddCoinTime):
+ ondaySetXianyuanCoin = ondayLoginSetXianyuanCoin
+ GameWorld.DebugLog("玩家过天时,登录增加仙缘币有值,仍然是同一天,仙缘币重置为登录时增加的仙缘币!ondayLoginSetXianyuanCoin=%s" % ondayLoginSetXianyuanCoin)
+ else:
+ GameWorld.DebugLog("玩家过天时,登录增加仙缘币有值,但是不是同一天了,仙缘币重置为0!")
+ PlayerControl.SetTodayXianyuanCoin(curPlayer, ondaySetXianyuanCoin)
+ GameWorld.DebugLog("玩家过天设置今日已获得仙缘币: ondaySetXianyuanCoin=%s,ondayLoginSetXianyuanCoin=%s"
+ % (ondaySetXianyuanCoin, ondayLoginSetXianyuanCoin))
return
def DoPlayerLogin(curPlayer):
@@ -382,7 +396,7 @@
def __OnHelpBattleRecord(curPlayer, msgList, tick):
## 助战记录同步
- cmd, helpRecordList = msgList
+ cmd, helpRecordList, isLogin = msgList
playerID = curPlayer.GetPlayerID()
GameWorld.DebugLog("__OnHelpBattleRecord %s,helpRecordList=%s" % (cmd, helpRecordList), playerID)
@@ -420,12 +434,16 @@
NetPackCommon.SendFakePack(curPlayer, recordPack)
addDataDict = {"HelpList":drList}
- GameWorld.DebugLog(" addXianyuanCoinTotal=%s,addXianyuanCoinTotalTotay=%s,totalHelpCount=%s"
- % (addXianyuanCoinTotal, addXianyuanCoinTotalTotay, totalHelpCount), playerID)
+ GameWorld.DebugLog(" addXianyuanCoinTotal=%s,addXianyuanCoinTotalTotay=%s,totalHelpCount=%s,isLogin=%s"
+ % (addXianyuanCoinTotal, addXianyuanCoinTotalTotay, totalHelpCount, isLogin), playerID)
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanCoin, addXianyuanCoinTotal, addDataDict=addDataDict, isSysHint=False)
if addXianyuanCoinTotalTotay:
PlayerControl.AddTodayXianyuanCoin(curPlayer, addXianyuanCoinTotalTotay)
-
+ if isLogin:
+ curPlayer.SetDict(ChConfig.Def_PDict_TodayXianyuanCoinOnLogin, addXianyuanCoinTotalTotay)
+ curPlayer.SetDict(ChConfig.Def_PDict_LoginAddTodayXianyuanCoinTime, int(time.time()))
+ GameWorld.Log(" 登录时今日助战信息: addXianyuanCoinTotalTotay=%s" % (addXianyuanCoinTotalTotay), playerID)
+
# 更新总助战次数,更新排行榜
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HelpBattleTotalCount, totalHelpCount)
if totalHelpCount >= IpyGameDataPY.GetFuncCfg("HelpBattleRefresh", 4):
--
Gitblit v1.8.0