From 77b0f4f5acec30f9be8c7eeadfc25d9641ca26f3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 26 五月 2025 11:46:13 +0800
Subject: [PATCH] 16 卡牌服务端(删除脱机挂)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |  181 ---------------------------------------------
 1 files changed, 0 insertions(+), 181 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 44004d6..89c5afb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -765,187 +765,6 @@
             return
     return ipyDrop
 
-def GetNPCDropInfoTJG(dropPlayer, mapID, npcID, killCount):
-    '''脱机挂杀怪掉落专用函数
-    只算: 1.饼图装备掉落 + 2.指定物品ID掉落 + 3.金币掉落
-    '''
-    ipyDrop = GetNPCDropIpyData(npcID)
-    if not ipyDrop:
-        return
-    
-    realmNPCIpyData = None
-    realmMapIDList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 1)
-    realmDifficulty = PlayerControl.GetRealmDifficulty(dropPlayer)
-    if mapID in realmMapIDList and realmDifficulty:
-        realmLV = PlayerControl.GetDifficultyRealmLV(realmDifficulty)
-        realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, realmLV)
-        #if realmNPCIpyData:
-        #    maxDropLV = realmNPCIpyData.GetMaxDrapLV()
-            
-    #脱机暂不限制最大等级掉落
-    #playerLV = dropPlayer.GetLV()
-    #maxDropLV = ipyDrop.GetMaxDropLV()
-    #if maxDropLV and playerLV > maxDropLV:
-    #    GameWorld.DebugLog("超过最大可掉落等级,不掉落物品!npcID=%s,playerLV(%s) > maxDropLV(%s)" % (npcID, playerLV, maxDropLV))
-    #    return
-    
-    playerID = dropPlayer.GetPlayerID()
-    npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
-    if not npcData:
-        return
-    
-    dropIDList = [] # 掉落的ID列表
-    itemJobList = [dropPlayer.GetJob()] if ipyDrop.GetIsDropJobSelf() else IpyGameDataPY.GetFuncEvalCfg("OpenJob", 1) # 掉落装备职业列表
-    
-    equipDropRatePlus = PlayerControl.GetDropEquipPer(dropPlayer)
-    equipDropDoCountPlus = PlayerControl.GetDropEquipDoCount(dropPlayer)
-    
-    dropRatePlusValue = ipyDrop.GetCanDropRatePlus()
-    if not dropRatePlusValue & pow(2, 0):
-        equipDropRatePlus = 0
-        
-    if not dropRatePlusValue & pow(2, 1):
-        equipDropDoCountPlus = 0
-        
-    doCountAdd = 0
-    doCountRate = ChConfig.Def_MaxRateValue
-    
-    GameWorld.DebugLog("脱机挂杀怪掉落: npcID=%s,killCount=%s,itemJobList=%s,dropRatePlusValue=%s,equipDropRatePlus=%s,equipDropDoCountPlus=%s" 
-                       % (npcID, killCount, itemJobList, dropRatePlusValue, equipDropRatePlus, equipDropDoCountPlus), playerID)
-    
-    dropEquipInfoList = [] # [(阶,颜色, 件数), ...]
-    # 1.装备只算饼图概率
-    pieRateDoCnt = ipyDrop.GetPieRateDoCnt()
-    if pieRateDoCnt and ipyDrop.GetPieRateDrop():
-        pieRateDoCnt = __GetNPCDropDoCountChange(pieRateDoCnt, doCountRate + equipDropDoCountPlus, doCountAdd)
-        pieRateDoCnt *= killCount
-        pieRateDropList = ipyDrop.GetPieRateDrop() # [(概率,0),(概率,(阶,颜色)),...]
-        if equipDropRatePlus:
-            dropRateList = GameWorld.GetPlusPieList(pieRateDropList, equipDropRatePlus)
-            GameWorld.DebugLog("    装备配置饼图: %s,equipDropRatePlus=%s" % (pieRateDropList, equipDropRatePlus), playerID)
-        else:
-            dropRateList = pieRateDropList
-        preRate = 0
-        maxRate = dropRateList[-1][0]
-        GameWorld.DebugLog("    装备掉落饼图: %s,maxRate=%s" % (dropRateList, maxRate), playerID)
-        for rateInfo in dropRateList:
-            rate, equipInfo = rateInfo
-            curRate = rate - preRate
-            if not curRate:
-                break
-            preRate = rate
-            if not equipInfo:
-                continue
-            classLV, color = equipInfo
-            totalRate = curRate * pieRateDoCnt # 总概率
-            dropCount = totalRate / maxRate # 可掉落件数
-            rateEx = totalRate % maxRate # 剩余概率
-            if GameWorld.CanHappen(rateEx, maxRate):
-                dropCount += 1
-            GameWorld.DebugLog("    装备掉率: curRate=%s,totalRate=%s,rateEx=%s,dropCount=%s,classLV=%s,color=%s" 
-                               % (curRate, totalRate, rateEx, dropCount, classLV, color), playerID)
-            if not dropCount:
-                continue
-            dropEquipInfoList.append([classLV, color, dropCount])
-        GameWorld.DebugLog("    装备掉落结果: killCount=%s,[阶,颜色,件数]=%s" % (killCount, dropEquipInfoList), playerID)
-        
-    colorSuitRateDict = ipyDrop.GetEquipColorSuitInfo() # 装备颜色对应套装概率 {颜色:套装概率, ...}
-    colorSuitPlaceKeyInfoDict = ipyDrop.GetEquipPartKeyRateInfo() # 装备部位集合信息 {(颜色,是否套装):部位集合key, ...}
-    dropEquipIDDict = {}
-    for classLV, color, dropCount in dropEquipInfoList:
-        if realmNPCIpyData:
-            classLV = realmNPCIpyData.GetEquipClassLV()
-            GameWorld.DebugLog("    脱机掉落对应难度境界装备: classLV=%s" % classLV, playerID)
-        suitCountDict = {} # {套装:件数, ...}
-        if color in colorSuitRateDict:
-            suitRate = colorSuitRateDict[color]
-            for _ in xrange(dropCount):
-                isSuit = GameWorld.CanHappen(suitRate, maxRate=Def_NPCMaxDropRate)
-                suitCountDict[isSuit] = suitCountDict.get(isSuit, 0) + 1
-        else:
-            suitCountDict[0] = dropCount
-            
-        for isSuit, curDropCount in suitCountDict.items():
-            colorSuitKey = (color, isSuit)
-            if colorSuitKey not in colorSuitPlaceKeyInfoDict:
-                GameWorld.ErrLog("未配置颜色是否套装对应部位集合key! npcID=%s,color=%s,isSuit=%s" % (npcID, color, isSuit))
-                continue
-            placeKey = colorSuitPlaceKeyInfoDict[colorSuitKey]
-            placeList = GetEquipPlaceByPlaceKey(placeKey)
-            if not placeList:
-                GameWorld.ErrLog("部位集合key不存在!npcID=%s,placeKey=%s" % (npcID, placeKey))
-                continue
-            randEquipIDList = __GetEquipIDList(npcID, classLV, color, isSuit, placeList, itemJobList)
-            if not randEquipIDList:
-                continue
-            for _ in xrange(curDropCount):
-                randItemID = random.choice(randEquipIDList)
-                dropIDList.append(randItemID)
-                dropEquipIDDict[randItemID] = [color, placeKey]
-                GameWorld.DebugLog("    掉落装备: npcID=%s,itemID=%s,classLV=%s,color=%s,isSuit=%s,placeKey=%s,itemJobList=%s,randEquipIDList=%s" 
-                                   % (npcID, randItemID, classLV, color, isSuit, placeKey, itemJobList, randEquipIDList), playerID)
-                
-    # 2. 指定物品ID库
-    itemIDDropRateDict = ipyDrop.GetItemIDDropRate() # {物品ID:概率, ...}
-    itemIDDropMaxCntDict = ipyDrop.GetItemIDMaxDropCount() # {物品ID:最大掉落个数,...}
-    for itemID, dropRate in itemIDDropRateDict.items():
-        
-        if not dropRate:
-            continue
-        
-        doCnt = itemIDDropMaxCntDict.get(itemID, 1) # 默认1个
-        doCnt = __GetNPCDropDoCountChange(doCnt, doCountRate, doCountAdd)
-        doCnt *= killCount
-        
-        totalRate = dropRate * doCnt
-        dropCount = totalRate / Def_NPCMaxDropRate # 可掉落件数
-        rateEx = totalRate % Def_NPCMaxDropRate # 剩余概率
-        if GameWorld.CanHappen(rateEx, Def_NPCMaxDropRate):
-            dropCount += 1
-        dropIDList += [itemID] * dropCount
-        GameWorld.DebugLog("    指定物品掉落: itemID=%s,dropRate=%s,doCnt=%s,totalRate=%s,dropCount=%s" 
-                           % (itemID, dropRate, doCnt, totalRate, dropCount), playerID)
-    
-    # 检查掉落互斥ID组
-    dropIDList = __RemoveMutexDropID(dropIDList, IpyGameDataPY.GetFuncCfg("MutexDrop", 1))
-    
-    # 掉落金币
-    dropMoneyDoCnt = ipyDrop.GetDropMoneyDoCnt()
-    dropMoneyRate = ipyDrop.GetDropMoneyRate()
-    moneyTotalRate = dropMoneyRate * dropMoneyDoCnt * killCount
-    dropMoneyCnt = moneyTotalRate / ChConfig.Def_NPCMapDropRate
-    if GameWorld.CanHappen(moneyTotalRate % ChConfig.Def_NPCMapDropRate, ChConfig.Def_NPCMapDropRate):
-        dropMoneyCnt += 1
-    dropMoney = 0
-    if dropMoneyCnt:
-        dropMoney = __GetDropMoneyValue(dropPlayer, ipyDrop, realmNPCIpyData) * dropMoneyCnt
-        GameWorld.DebugLog("    金币掉率: dropMoneyRate=%s,moneyTotalRate=%s,dropMoneyCnt=%s,dropMoney=%s" 
-                           % (dropMoneyRate, moneyTotalRate, dropMoneyCnt, dropMoney), playerID)
-    dropIDCountDict = {}
-    for dropID in dropIDList:
-        dropIDCountDict[dropID] = dropIDCountDict.get(dropID, 0) + 1
-        
-    # 集字掉落
-    dropWordsCountDict = PlayerActCollectWords.OnGetDropWordsItemDict(dropPlayer, npcData, killCount)
-    for dropID, dropCount in dropWordsCountDict.items():
-        dropIDCountDict[dropID] = dropIDCountDict.get(dropID, 0) + dropCount
-        
-    # 垃圾分类
-    giveGarbageItemList = PlayerActGarbageSorting.AddActGarbageTaskProgress(dropPlayer, ChConfig.Def_GarbageTask_KillNPC, killCount, isTJG=True)
-    for dropID, dropCount, _ in giveGarbageItemList:
-        dropIDCountDict[dropID] = dropIDCountDict.get(dropID, 0) + dropCount
-                
-    auctionIDList = []
-    if ipyDrop.GetAucionItemCanSell():
-        for dropID in dropIDCountDict.keys():
-            if IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", dropID):
-                auctionIDList.append(dropID)
-                
-    if dropIDCountDict:
-        GameWorld.DebugLog("    最终掉落: npcID=%s,killCount=%s,dropIDCountDict=%s,auctionIDList=%s,dropMoney=%s" 
-                           % (npcID, killCount, dropIDCountDict, auctionIDList, dropMoney), playerID)
-    return dropIDCountDict, auctionIDList, dropMoney
-
 def GetNPCDropInfo(dropPlayer, mapID, npcID, ownerPlayerList=[], ipyDrop=None, isSingle=True, isKillCountDrop=True, curGrade=0):
     '''获取NPC掉落信息, 击杀及扫荡通用,调用该函数获得掉落信息,然后再看掉落地板上还是直接放入背包
         @param dropPlayer: 用于判断调用相关用的玩家示例,该玩家并不一定是击杀者,只是按一定规则设定的掉落判断依据的玩家

--
Gitblit v1.8.0