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
sostituite il codice qui sopra con
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
sostituite il codice qui sopra con
Facile no? Dovrebbe essere tutto.
Saluti,
Acqua
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)
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)
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
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
Saluti,
Acqua