ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -20,12 +20,14 @@
import TurnAttack
import ShareDefine
import IpyGameDataPY
import PlayerSuccess
import PlayerControl
import PlayerActivity
import ChPyNetSendPack
import ItemControler
import IPY_GameWorld
import NetPackCommon
import PlayerBeauty
import PlayerArena
import PlayerLLMJ
import ItemCommon
@@ -33,7 +35,6 @@
import NPCCommon
import BattleObj
import ChEquip
import ObjPool
import random
@@ -121,12 +122,18 @@
    # 其他战利品掉落
    bootyDropNeedDict = IpyGameDataPY.GetFuncEvalCfg("MainBootyDrop", 1, {})
    bootyDropCntDict = IpyGameDataPY.GetFuncEvalCfg("MainBootyDrop", 2, {})
    for itemID, dropUpper in DailyBootyUpperList:
    for itemID, baseUpper in DailyBootyUpperList:
        if spaceCount <= 0:
            GameWorld.DebugLog("掉落背包已满!", playerID)
            break
        if dropUpper <= 0:
        if baseUpper <= 0:
            continue
        dropUpper = baseUpper
        addPer = 0
        addPer += PlayerBeauty.GetBeautyEffInfo(curPlayer, PlayerBeauty.EffType_BootyPer)[0] # 战利品上限提高百分比
        if addPer:
            dropUpper = int(baseUpper * (100 + addPer) / 100.0)
            GameWorld.DebugLog("红颜提高战利品掉落上限: itemID=%s,baseUpper=%s,addPer=%s,dropUpper=%s" % (itemID, baseUpper, addPer, dropUpper))
        todyDropCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BootyDropToday % itemID)
        if todyDropCnt >= dropUpper:
            GameWorld.DebugLog("战利品已达今日掉落上限! itemID=%s,todyDropCnt=%s >= %s" % (itemID, todyDropCnt, dropUpper), playerID)
@@ -152,6 +159,7 @@
                curMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_ArenaTicket)
                storeMax = PlayerArena.GetArenaTicketStoreMax(curPlayer)
                if curMoney >= storeMax:
                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntBooty % itemID, 0)
                    GameWorld.DebugLog("挑战券已达存储上限! itemID=%s,curMoney=%s >= %s" % (itemID, curMoney, storeMax), playerID)
                    continue
                
@@ -220,6 +228,13 @@
        bossType = npcData.GetBossType()
        bossTypeList.append(bossType)
        
    # 支持未击杀结算掉落,防止一次性掉太多导致玩家一直堆积未结算的掉落,前端在掉落背包满处理完后会补发一次请求处理未结算掉落
    if not bossTypeList:
        bossType = 0 # 默认小怪
        bossTypeList = [bossType]
        GameWorld.DebugLogEx("未击杀结算掉落默认按小怪掉落! bossTypeList=%s" % bossTypeList)
    for bossType in bossTypeList:
        if bossType in bossTypeDropRateDict:
            continue
        
@@ -360,7 +375,7 @@
#    tagHead        Head;
#    BYTE        Count;
#    WORD        IndexList[Count];    // 掉落背包中的物品格子索引列表
#    BYTE        OPType;        // 0 - 拾取非装备物品;1 - 分解;2 - 穿戴/替换;
#    BYTE        OPType;        // 0 - 拾取非装备物品;1 - 分解;2 - 穿戴/替换;3-结算未掉落物品;
#    BYTE        OPValue;        // 操作额外指令值,由操作类型决定,如穿戴时可发送穿戴后是否自动分解
#};
def OnMainDropItemOP(index, clientData, tick):
@@ -373,6 +388,8 @@
        __doEquipMainEquip(curPlayer, itemIndexList, opValue)
    elif opType == 1:
        __doDecomposeMainEquip(curPlayer, itemIndexList)
    elif opType == 3: # 结算未掉落物品
        __doMainDrop(curPlayer, [])
    else:
        __doPickupMainItem(curPlayer, itemIndexList)
        
@@ -425,6 +442,7 @@
    ChEquip.RefreshRoleEquipAttr(curPlayer)
    
    PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_EquipColor)
    PlayerSuccess.UpdateEquipSuccess(curPlayer)
    return
def __doDecomposeMainEquip(curPlayer, itemIndexList):
@@ -474,10 +492,11 @@
    moneyTotal = int(round(moneyTotal)) # 四舍五入取整
    GameWorld.DebugLog("moneyTotal=%s,mjExTotal=%s" % (moneyTotal, mjExTotal), playerID)
    
    PlayerControl.GiveMoney(curPlayer, moneyType, moneyTotal, "DecomposeMainEquip", isSysHint=False)
    PlayerControl.GiveMoney(curPlayer, moneyType, moneyTotal, isSysHint=False)
    PlayerLLMJ.AddExpDecompose(curPlayer, mjExTotal)
    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_EquipDecompose, decomposeCnt)
    PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_EquipDecompose, decomposeCnt)
    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAEquipDecompose, decomposeCnt)
    return
def __doPickupMainItem(curPlayer, itemIndexList):
@@ -515,11 +534,10 @@
        syncItemIDList = GetBootyItemIDList()
    else:
        syncItemIDList = [itemID]
    poolMgr = ObjPool.GetPoolMgr()
    clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCDropBootyInfo)
    clientPack = ChPyNetSendPack.tagSCDropBootyInfo()
    clientPack.DropBootyList = []
    for itemID in syncItemIDList:
        dropBooty = poolMgr.acquire(ChPyNetSendPack.tagSCDropBooty)
        dropBooty = ChPyNetSendPack.tagSCDropBooty()
        dropBooty.ItemID = itemID
        dropBooty.TodayDropCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BootyDropToday % itemID)
        clientPack.DropBootyList.append(dropBooty)
@@ -527,9 +545,10 @@
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
def OnTurnFightOver(turnFight, mapID, funcLineID, overMsg):
    ## 回合战斗结束
    
    curPlayer = turnFight.curPlayer
    if not curPlayer:
        return