8180 【后端】【主干】优化组队打BOSS(优化掉落表现,组队打掉多份的时候只能看到归属自己的物品)
1个文件已修改
12 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -4394,7 +4394,7 @@
    #  @param HurtType 伤血类型
    #  @param HurtID 伤血ID
    #  @return 返回值无意义
    def __NPCDropItem(self, dropPlayer, hurtType, hurtID, ownerPlayerList=[]):
    def __NPCDropItem(self, dropPlayer, hurtType, hurtID, ownerPlayerList=[], isOnlySelfSee=False):
        if not dropPlayer:
            return
        curNPC = self.__Instance
@@ -4493,7 +4493,7 @@
                    SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr)
                    
            else:
                self.__MapCreateItem(curItem, resultX, resultY, ownerType, ownerID)
                self.__MapCreateItem(curItem, resultX, resultY, ownerType, ownerID, isOnlySelfSee=isOnlySelfSee)
        return
    #---------------------------------------------------------------------
    ## NPC被杀死逻辑处理
@@ -4705,7 +4705,7 @@
            #调用物品掉落,boss一人一份
            if isGameBoss and hurtType in [ChConfig.Def_NPCHurtTypePlayer, ChConfig.Def_NPCHurtTypeTeam, ChConfig.Def_NPCHurtTypeSpecial]:
                for curPlayer in ownerPlayerList:
                    self.__NPCDropItem(curPlayer, ChConfig.Def_NPCHurtTypePlayer, curPlayer.GetPlayerID(), [curPlayer])
                    self.__NPCDropItem(curPlayer, ChConfig.Def_NPCHurtTypePlayer, curPlayer.GetPlayerID(), [curPlayer], isOnlySelfSee=True)
            elif dropPlayer:
                self.__NPCDropItem(dropPlayer, hurtType, hurtID, ownerPlayerList)
                    
@@ -5161,7 +5161,7 @@
        #调用物品掉落,boss一人一份
        if isGameBoss and hurtType in [ChConfig.Def_NPCHurtTypePlayer, ChConfig.Def_NPCHurtTypeTeam, ChConfig.Def_NPCHurtTypeSpecial]:
            for curPlayer in ownerPlayerList:
                self.__NPCDropItem(curPlayer, ChConfig.Def_NPCHurtTypePlayer, curPlayer.GetPlayerID(), [curPlayer])
                self.__NPCDropItem(curPlayer, ChConfig.Def_NPCHurtTypePlayer, curPlayer.GetPlayerID(), [curPlayer], isOnlySelfSee=True)
        elif dropPlayer:
            self.__NPCDropItem(dropPlayer, hurtType, hurtID, ownerPlayerList)
        #GameWorld.Log("队伍杀死怪物奖励,逻辑成功结束")
@@ -5379,7 +5379,7 @@
    #  @param dropType: 掉落类型
    #  @param ownerID: 归属者
    #  @return: None
    def __MapCreateItem(self, curItem, posX, posY, dropType, ownerID):
    def __MapCreateItem(self, curItem, posX, posY, dropType, ownerID, isOnlySelfSee=False):
        if not curItem:
            return
        
@@ -5398,7 +5398,7 @@
        # 在地上添加物品(统一接口)
        dropNPCID = 0 if not ChConfig.IsGameBoss(curNPC) else curNPCID
        specOwnerIDList = [player.GetPlayerID() for player in self.__ownerPlayerList] if dropType == ChConfig.Def_NPCHurtTypeSpecial else []
        curMapItem = ChItem.AddMapDropItem(posX, posY, curItem, ownerInfo=[dropType, ownerID, specOwnerIDList], dropNPCID=dropNPCID)
        curMapItem = ChItem.AddMapDropItem(posX, posY, curItem, ownerInfo=[dropType, ownerID, specOwnerIDList], dropNPCID=dropNPCID, isOnlySelfSee=isOnlySelfSee)
        
        #设置该物品生前拥有者(那个NPC掉落的)
        if curMapItem == None: