Discussione [Fix]Metalli Magici e Papiri Consacrati sovrapponibili

Stato
Discussione chiusa ad ulteriori risposte.

HDueO

Utente Bronze
2 Agosto 2016
19
4
22
37
Ultima modifica:
Hola,

giusto qualche ora fa ho pensato bene di risolvere un famoso bug di m2.
Molti server admin e dev probabilmente lo conoscono bene, vi è mai capitato di sentirvi chiedere: "Perchè non posso sovrapporre i Metalli Magici o i Papiri Consacrati senza doverli buttare a terra??!". Non so voi ma a me è successo..
Non conosco con certezza se questo bugfix sia già pubblico ma nel dubbio ve lo posto.
Trovate il file uiinventory.py e cercate la funzione __DropSrcItemToDestItemInInventory
Python:
def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
        if srcItemSlotPos == dstItemSlotPos:
            return
                  
        if item.IsRefineScroll(srcItemVID):
                self.RefineItem(srcItemSlotPos, dstItemSlotPos)
                self.wndItem.SetUseMode(False)
sostituite il codice qui sopra con
Python:
def __isSameItem(self, srcItemVNum, dstSlotPos): # bugfix
     return srcItemVNum == player.GetItemIndex(dstSlotPos)

def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
        if srcItemSlotPos == dstItemSlotPos:
            return
                  
        if item.IsRefineScroll(srcItemVID):
            if self.__isSameItem(srcItemVID,dstItemSlotPos): # bugfix!
                self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
            else:
                self.RefineItem(srcItemSlotPos, dstItemSlotPos)
                self.wndItem.SetUseMode(False)
Quanto fatto ci permetterà di inviare il giusto pacchetto al server che si occuperà della sovrapposizione.
Ora, per mostrare correttamente all'utente la possibilità di sovrapporre gli oggetti in questione tornate in uiinventory.py e trovate
Python:
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
        if srcSlotPos == dstSlotPos:
            return False
          
        if item.IsRefineScroll(srcItemVNum):
            if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
                return True
        elif item.IsMetin(srcItemVNum):
            if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
                return True
sostituite il codice qui sopra con
Python:
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
        if srcSlotPos == dstSlotPos:
            return False
          
        if item.IsRefineScroll(srcItemVNum):
            if self.__isSameItem(srcItemVNum,dstSlotPos) or player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos): # bugfix
                return True
        elif item.IsMetin(srcItemVNum):
            if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
                return True
Facile no? Dovrebbe essere tutto.
Saluti,

Acqua
 
Stato
Discussione chiusa ad ulteriori risposte.