hxp
4 天以前 07423ad90ce28a8817671e8266a4aba2ea294935
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -958,7 +958,7 @@
def OnPlayerLogin(curPlayer):
    DoGMForbidenTalkOnLogin(curPlayer)
    #DoGMForbidenTalkOnLogin(curPlayer)
    curPlayer.SetDict(ChConfig.Def_PDict_DayOnlineCalcTime, int(time.time()))
    return
@@ -1113,7 +1113,7 @@
    playerControl.RefreshAllState()
            
    #玩家下线更新排行榜
    PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
    #PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
    
    #玩家下线通知gameserver记录缓存(放在下线更新排行榜之后,方便Gameserver判断是否需要存入数据库中)
    PlayerViewCache.OnPlayerLogout(curPlayer)
@@ -3311,6 +3311,7 @@
            
        #不需要做升级任务, 设置玩家经验
        SetPlayerTotalExp(curPlayer, curTotalExp) 
        DoDeleteTestRebate(curPlayer)
        return
    
    def __GiveLVMailAward(self, curLV):
@@ -4094,20 +4095,21 @@
    GameWorld.DebugLog("SetPlayerAccState %s" % (accState), curPlayer.GetPlayerID())
    return
def DoGMForbidenTalkOnLogin(curPlayer):
    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
        __SetGMForbidenTalkValue(curPlayer, 2)
        __SetGMForbidenTalkValue(curPlayer, 1)
    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
        __SetGMForbidenTalkValue(curPlayer, 1)
    else:
        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
    return
#GM命令支持离线玩家上线后处理,且 PlayerGMOper 也有上线触发逻辑处理,故暂屏蔽
#def DoGMForbidenTalkOnLogin(curPlayer):
#    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
#    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
#
#    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
#        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
#        __SetGMForbidenTalkValue(curPlayer, 2)
#        __SetGMForbidenTalkValue(curPlayer, 1)
#    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
#        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
#        __SetGMForbidenTalkValue(curPlayer, 1)
#    else:
#        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
#    return
def IsMainLevelPass(curPlayer, lvID):
    ## 判断玩家是否过关某个主线关卡ID
@@ -4149,8 +4151,7 @@
        PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
        PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
        PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAMainLevel, lvID)
        if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
            PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
        OpenServerActivity.UpdOSA_MainLevelBillboard(curPlayer, lvID)
        DataRecordPack.DR_MainLevelPass(curPlayer, lvID)
    return value
def GetMainLevelPassInfo(curPlayer):
@@ -4617,4 +4618,35 @@
        if not curSummon:
            continue
        curSummon.SetSightLevel(sightLevel)
    return
    return
def DoDeleteTestRebate(curPlayer):
    playerID = curPlayer.GetPlayerID()
    appID = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 1)
    if GameWorld.GetAppIDByAccID(curPlayer.GetAccID()) != appID:
        #GameWorld.DebugLog("非返利渠道AppID! appID=%s" % appID, playerID)
        return
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DeleteTestRebate):
        GameWorld.DebugLog("删档测试返利已经处理过,不再请求!", playerID)
        return
    if curPlayer.GetLV() < IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 2):
        GameWorld.DebugLog("等级不足不处理删档测试返利! lv=%s" % curPlayer.GetLV(), playerID)
        return
    rebateRate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 5)
    if rebateRate <= 0:
        GameWorld.DebugLog("没有返利比例不处理!", playerID)
        return
    curTime = int(time.time())
    testEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 3) # 删档测试结束日期
    testEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % testEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
    if curTime <= testEndTime:
        GameWorld.DebugLog("删档测试期间不处理删档测试返利! testEndDate=%s" % testEndDate, playerID)
        return
    rebateEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 4) # 返利结束日期,由公测日期+有效天数得到
    rebateEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % rebateEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
    if curTime > rebateEndTime:
        GameWorld.DebugLog("返利有效期已结束不处理删档测试返利! rebateEndDate=%s" % rebateEndDate, playerID)
        return
    import EventReport
    EventReport.EventReport("DeleteTestRebate", "testEndDate=%s"%(testEndDate), curPlayer, checkNeed=False)
    return