From 4062fd563a5c50118556bee85451a43dcf530983 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 13 四月 2019 14:45:02 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(自定义场景无奖励也回包,防止卡流程)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py |   41 ++++++++++++++++++++++-------------------
 1 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
index 3f3bafd..8590cf6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
+++ b/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

--
Gitblit v1.8.0