2549 【BUG】【1.3】玩家登录时过天处理离线期间所获得的助战仙缘币异常
3个文件已修改
37 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFBHelpBattle.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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
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):