3040 【BUG】【2.0】【1.6】跨服pk,快速点击购买次数,可以超出上限
1个文件已修改
41 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
@@ -238,10 +238,17 @@
    
    # 进行匹配
    if requestType == 1:
        if not CheckHavePKCount(curPlayer):
            GameWorld.DebugLog("PK次数不足,无法发起匹配!", curPlayer.GetPlayerID())
            return
        dayFreeMatchCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 1)
        if dayFreeMatchCountMax:
            todayPKCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
            todayBuyCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
            todayItemAddCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
            if todayPKCount >= (dayFreeMatchCountMax + todayBuyCount + todayItemAddCount):
                GameWorld.DebugLog("PK次数不足,无法发起匹配! todayPKCount=%s >= (dayFreeMatchCountMax=%s + todayBuyCount=%s + todayItemAddCount=%s)"
                                   % (todayPKCount, dayFreeMatchCountMax, todayBuyCount, todayItemAddCount), playerID)
                return
        dataMsg = {
                   "seasonID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID), # 赛季ID
                   "pkZoneID":GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID), # PK赛区
@@ -269,18 +276,6 @@
        GameWorld.Log("    发送取消匹配到GameServer sendMsg=%s" % str(sendMsg), playerID)
        
    return
def CheckHavePKCount(curPlayer):
    ## 检查是否有PK次数
    dayFreeMatchCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 1)
    if dayFreeMatchCountMax:
        todayPKCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
        todayBuyCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
        todayItemAddCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
        if todayPKCount >= (dayFreeMatchCountMax + todayBuyCount + todayItemAddCount):
            return False
    return True
def CrossServerMsg_PKOverInfo(curPlayer, overInfo):
    ## 收到跨服服务器的PK结算信息
@@ -447,11 +442,19 @@
    if not IsCrossRealmPKMatchState():
        GameWorld.DebugLog("跨服匹配未开启,不可进行购买次数!", playerID)
        return
    if CheckHavePKCount(curPlayer):
        GameWorld.DebugLog("有PK次数,不需要购买次数!", playerID)
    dayFreeMatchCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 1)
    if not dayFreeMatchCountMax:
        GameWorld.DebugLog("每日匹配次数没有限制,不需要购买次数!", playerID)
        return
    todayPKCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayPKCount)
    todayBuyCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
    todayItemAddCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_ItemAddCount)
    canPKCount = dayFreeMatchCountMax + todayBuyCount + todayItemAddCount - todayPKCount
    if canPKCount >= dayFreeMatchCountMax:
        GameWorld.DebugLog("可PK次数不能大于每日免费次数!", playerID)
        return
    dayBuyCountMax = IpyGameDataPY.GetFuncCfg("CrossRealmPKMatchCount", 2)
    todayBuyCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
    #todayBuyCount  = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayBuyCount)
    if dayBuyCountMax and todayBuyCount >= dayBuyCountMax:
        GameWorld.DebugLog("今日购买次数已满,无法购买!todayBuyCount=%s" % (todayBuyCount), playerID)
        return