8796 【越南】【英语】【BT】【砍树】在线奖励改为优先取对应创角天奖励,没有则取每日奖励;
4个文件已修改
87 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerAward.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetOnlineTime.py 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnlinePrize.py 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3690,7 +3690,7 @@
Def_Player_Dict_VIPKillLVExp = "VIPKillLVExp" #VIP杀怪等级 - 经验
Def_Player_Dict_VIPKillLVExpPoint = "VIPKillLVExpPoint" #VIP杀怪等级 - 经验点
Def_PDict_OnlinePrizeNote = "OnlinePrizeNote%s"  # 当日在线奖励领取信息,记录信息 参数天数
Def_PDict_OnlinePrizeNote = "OnlinePrizeNote"  # 当日在线奖励领取信息
Def_PDict_OpenSererDailyAward = "OpenSererDailyAward"  # 开服每日奖励记录
Def_PDict_CreateRoleAwardState = "CreateRoleAwardState"  # 创角奖励领取记录
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)
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
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