hxp
2025-10-13 732aca3b8264a1cfc49975de2a92a6d6030befe7
129 【战斗】战斗系统-服务端(主线支持定制掉落装备;)
2个文件已修改
36 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3989,6 +3989,7 @@
Def_PDict_UnXiantaoCntEquip = "UnXiantaoCntEquip" # 累计未结算装备掉落的战锤数,有3位小数,即 1234 实际为 1.234
Def_PDict_UnXiantaoCntBooty = "UnXiantaoCntBooty_%s" # 累计未结算战利品掉落的战锤数,参数(itemID)
Def_PDict_BootyDropToday = "BootyDropToday_%s" # 今日已累计掉落战利品数量,参数(itemID)
Def_PDict_AppointDropEquipCnt = "AppointDropEquipCnt" # 定制掉落装备掉落第x次,只记录到配置的最高次数
#天子考验
Def_PDict_TianziHisHurt = "TianziHisHurt_%s" # 历史最高伤害,求余亿部分,参数(bossID)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -220,6 +220,8 @@
        return
    GameWorld.DebugLog("主线掉落装备: unXiantaoCntEquip=%s,dropEquipCnt=%s,treeLV=%s,objDropCntDict=%s" 
                       % (unXiantaoCntEquip, dropEquipCnt, treeLV, objDropCntDict), playerID)
    dropAppointEquipDict = IpyGameDataPY.GetFuncEvalCfg("MainDropAppoint", 1, {})
    appointDropCntMax = max(dropAppointEquipDict) if dropAppointEquipDict else 0
    
    for tagID, dropInfo in objDropCntDict.items():
        tagObj, dropCnt, bossType = dropInfo
@@ -251,15 +253,30 @@
        for _ in range(dropCnt):
            if dropEquipCnt <= 0:
                break
            itemColor = GameWorld.GetResultByRandomList(colorRateList)
            if not itemColor:
                continue
            equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
            if not equipIDList:
                continue
            randEquipID = random.choice(equipIDList)
            
            curItem = ItemControler.GetOutPutItemObj(randEquipID, 1, False, curPlayer=curPlayer)
            setAttrDict = None
            appointDropEquipCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AppointDropEquipCnt) + 1
            if appointDropEquipCnt in dropAppointEquipDict:
                appointInfo = dropAppointEquipDict[appointDropEquipCnt]
                randEquipID = appointInfo[0]
                equipLV = appointInfo[1] if len(appointInfo) > 1 else 0
                appointID = appointInfo[2] if len(appointInfo) > 2 else 0
                setAttrDict = {}
                if equipLV > 0:
                    setAttrDict["%s" % ShareDefine.Def_IudetItemLV] = equipLV
                if appointID:
                    setAttrDict[ShareDefine.Def_CItemKey_AppointID] = appointID
                GameWorld.DebugLog("定制掉落第%s次: equipID=%s,setAttrDict=%s" % (appointDropEquipCnt, randEquipID, setAttrDict))
            else:
                itemColor = GameWorld.GetResultByRandomList(colorRateList)
                if not itemColor:
                    continue
                equipIDList = NPCCommon.__GetEquipIDList(0, color=itemColor, placeList=ChConfig.Def_MainEquipPlaces, findType="MainEquipDrop")
                if not equipIDList:
                    continue
                randEquipID = random.choice(equipIDList)
            curItem = ItemControler.GetOutPutItemObj(randEquipID, 1, False, curPlayer=curPlayer, setAttrDict=setAttrDict)
            if curItem == None:
                continue
            curItem.SetIsBind(1) # 为1时代表是掉落
@@ -269,6 +286,8 @@
            
            dropEquipCnt -= 1
            
            if appointDropEquipCnt <= appointDropCntMax:
                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AppointDropEquipCnt, appointDropEquipCnt)
    return
def GMTestKill(curPlayer, useXiantao):