Yardım envanter sağ click ve sürükleme sorunu

  • Konuyu açan Konuyu açan enes turan
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 10
  • Gösterim Gösterim 125
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

enes turan

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
559
Çözümler
35
Beğeni
281
Puan
909
Ticaret Puanı
0
merhabalar

Official-Additional-Equipment-Page sistemini ekledikten sonra item sürükleyerek item çıkartırken şöyle bir syseer düşüyor

Kod:
Genişlet Daralt Kopyala
0805 21:30:24335 :: Traceback (most recent call last):

0805 21:30:24335 ::   File "ui.py", line 1475, in OnSelectItemSlot

0805 21:30:24336 ::   File "ui.py", line 82, in __call__

0805 21:30:24336 ::   File "ui.py", line 73, in __call__

0805 21:30:24337 ::   File "uiequipmentdialog.py", line 383, in SelectItemSlot

0805 21:30:24337 ::   File "mousemodule.py", line 175, in AttachObject

0805 21:30:24337 :: AttributeError
0805 21:30:24337 :: :
0805 21:30:24337 :: 'NoneType' object has no attribute 'SetNumber'

birde mesela takılı olan bir itemi değiştirmek istediğimde de değişmiyor ilk önce takılı itemi çıkarmam gerekiyor ve bunda syserr de düşmüyor yardımcı olurmusunuz ?
 

Dosya Eklentileri

Son düzenleme:
uiequipment 383 te ne var ben bu hatayı çözmüştüm de nasıl çözdüm görürsem hatırlarım belki
 
uiequipment 383 te ne var ben bu hatayı çözmüştüm de nasıl çözdüm görürsem hatırlarım belki
Python:
Genişlet Daralt Kopyala
                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
    ##383            mousemodule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
                    snd.PlaySound("sound/ui/pick.wav")

bu kod var
 
Python:
Genişlet Daralt Kopyala
                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
    ##383            mousemodule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
                    snd.PlaySound("sound/ui/pick.wav")

bu kod var
ben eve gidene kadar çözülmezse hazır dosyayı atarım
 
buradan karşılaştır bakalım ne çıkıcak

uiequipmentdialog:
Genişlet Daralt Kopyala
import ui
import chr
import player
import app
if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
    import net
    import constinfo
    import mousemodule
    import chat
    import localeinfo
    import uicommon
    import item
    import uiprivateshopbuilder
    import uiinventory
    import player
    import ime
    import snd
    import wndMgr

    BASE_TAB = -1
    FIRST_EQUIPMENT = 0
    SECOND_EQUIPMENT = 1
import uiRenderTarget

class EquipmentDialog(ui.ScriptWindow):

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        wndCostume = None
        isOpenedCostumeWindowWhenClosingInventory = 0
        equipmentPageIndex = None
        windowChanged = None
        windowStart = False

    def __init__(self):
        print "NEW EQUIPMENT DIALOG ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.__LoadDialog()

        self.vid = None
        self.eventClose = None
        self.itemDataDict = {}
        self.tooltipItem = None

    def __del__(self):
        print "---------------------------------------------------------------------------- DELETE EQUIPMENT DIALOG "
        ui.ScriptWindow.__del__(self)

    def __LoadDialog(self):
        try:
            PythonScriptLoader = ui.PythonScriptLoader()
            PythonScriptLoader.LoadScriptFile(self, "UIScript/EquipmentDialog.py")

            getObject = self.GetChild
            self.board = getObject("Board")
            self.slotWindow = getObject("EquipmentSlot")
            if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
                self.uniqueSlot = getObject("unique_slot")
                self.DSSButton = getObject("dragon_soul_button")
                self.mallButton = getObject("mall_button")
                self.costumeButton = getObject("costume_button")

                self.base_tab = getObject("base_tab")
                self.windowTab = getObject("additional_tab")

                self.equipmentTab = []
                self.equipmentTab.append(self.GetChild("tab_btn_01"))
                self.equipmentTab.append(self.GetChild("tab_btn_02"))

                self.equipmentTabImage = []
                self.equipmentTabImage.append(self.GetChild("tab_img_01"))
                self.equipmentTabImage.append(self.GetChild("tab_img_02"))

        except:
            import exception
            exception.Abort("EquipmentDialog.LoadDialog.BindObject")

        self.board.SetCloseEvent(ui.__mem_func__(self.Close))
        self.slotWindow.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
        self.slotWindow.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.board.SetTitleName(localeinfo.EQUIPMENT_TITLE_NAME)

            self.slotWindow.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.slotWindow.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            self.uniqueSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            self.uniqueSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            self.uniqueSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.uniqueSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            # MallButton
            if self.mallButton:
                self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))

            if self.DSSButton:
                self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
        
            # Costume Button
            if self.costumeButton:
                self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))

            self.equipmentTab[0].SetEvent(self.SetFirstInventory)
            self.equipmentTab[1].SetEvent(self.SetSecondInventory)

            self.equipmentTabImage[0].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetSecondInventory)
            self.equipmentTabImage[1].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetFirstInventory)

    def Open(self, vid):

        self.vid = vid
        self.itemDataDict = {}

        name = chr.GetNameByVID(vid)
        self.board.SetTitleName(name)

        self.SetCenterPosition()
        self.SetTop()
        self.Show()

    def Close(self):
        self.itemDataDict = {}
        if not app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.tooltipItem = None
        self.Hide()

        if self.eventClose:
            self.eventClose(self.vid)

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            if self.wndCostume:
                self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # Was the costume open when the inventory window closed?
                self.wndCostume.Close()

    def Destroy(self):
        self.eventClose = None

        self.Close()
        self.ClearDictionary()

        self.board = None
        self.slotWindow = None

    if app.BL_TRANSMUTATION_SYSTEM:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count, dwChangeLookVnum):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
            
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList, dwChangeLookVnum)
            
            if not dwChangeLookVnum == 0:
                self.slotWindow.SetSlotCoverImage(slotIndex,"icon/item/ingame_convert_Mark.tga")
            else:
                self.slotWindow.EnableSlotCoverImage(slotIndex,False)   
    else:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList)

    def SetEquipmentDialogSocket(self, slotIndex, socketIndex, value):
        if not slotIndex in self.itemDataDict:
            return
        if socketIndex < 0 or socketIndex > player.METIN_SOCKET_MAX_NUM:
            return
        self.itemDataDict[slotIndex][2][socketIndex] = value

    def SetEquipmentDialogAttr(self, slotIndex, attrIndex, type, value):
        if not slotIndex in self.itemDataDict:
            return
        if attrIndex < 0 or attrIndex > player.ATTRIBUTE_SLOT_MAX_NUM:
            return
        self.itemDataDict[slotIndex][3][attrIndex] = (type, value)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetCloseEvent(self, event):
        self.eventClose = event

    def OverInItem(self, slotIndex):

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            # if app.BL_TRANSMUTATION_SYSTEM:
                # self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.ShowToolTip(slotIndex)
        else:
            if None == self.tooltipItem:
                return

            if not slotIndex in self.itemDataDict:
                return

            itemVnum = self.itemDataDict[slotIndex][0]
            if 0 == itemVnum:
                return

            self.tooltipItem.ClearToolTip()
            metinSlot = self.itemDataDict[slotIndex][2]
            attrSlot = self.itemDataDict[slotIndex][3]
            self.tooltipItem.AddItemData(itemVnum, metinSlot, attrSlot)
            if app.BL_TRANSMUTATION_SYSTEM:
                self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.tooltipItem.ShowToolTip()

    def OverOutItem(self):
        if None != self.tooltipItem:
            self.tooltipItem.HideToolTip()

    def OnPressEscapeKey(self):
        self.Close()
        return True

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        def BindInterfaceClass(self, interface):
            self.interface = interface

        def SetInventoryWindow(self, inventory):
            self.inventory = inventory

        def Show(self):
            ui.ScriptWindow.Show(self)

            if not self.windowStart:
                screen_width = wndMgr.GetScreenWidth()
                screen_height = wndMgr.GetScreenHeight()
    
                if screen_width > 800 and screen_height > 600:
                    if self.inventory:
                        x, y = self.inventory.GetGlobalPosition()
                        self.SetPosition(x, y - 290)

                self.windowStart = True

            # If the costume was open when the inventory was closed, the costume should also be opened when the inventory is opened.
            if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
                self.wndCostume.Show()

        def RefreshItemSlot(self):
            self.RefreshEquipSlotWindow()
        
        def SetSecondInventory(self):
            if self.equipmentPageIndex == SECOND_EQUIPMENT:
                return
            
            net.ChangeEquipment(SECOND_EQUIPMENT)

        def SetFirstInventory(self):
            if self.equipmentPageIndex == FIRST_EQUIPMENT:
                return

            net.ChangeEquipment(FIRST_EQUIPMENT)

        def SetEquipmentPage(self, page):
            if page == self.equipmentPageIndex:
                return
            
            for image in self.equipmentTabImage:
                image.Hide()

            self.equipmentPageIndex = page

            if page == BASE_TAB:
                self.base_tab.Show()
                self.windowTab.Hide()
            else:
                self.base_tab.Hide()
                self.windowTab.Show()
                self.equipmentTabImage[self.equipmentPageIndex].Show()

            self.RefreshEquipSlotWindow()

        def RefreshEquipSlotWindow(self):
            getItemVNum=player.GetItemIndex
            getItemCount=player.GetItemCount
            setItemVNum=self.slotWindow.SetItemSlot
            SetSlotChange=self.slotWindow.SetSlotChange
            setUniqueItemVnum=self.uniqueSlot.SetItemSlot
            SetUniqueSlotChange=self.uniqueSlot.SetSlotChange

            if self.equipmentPageIndex == FIRST_EQUIPMENT or self.equipmentPageIndex == BASE_TAB:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    slotNumber = player.EQUIPMENT_SLOT_START + i
                    if self.windowChanged == SECOND_EQUIPMENT:
                        newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i

                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == SECOND_EQUIPMENT:
                        SetSlotChange(newSlotNumber, slotNumber)
                    else:
                        SetSlotChange(i, slotNumber)

                    setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
                    if app.BL_TRANSMUTATION_SYSTEM:
                        if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                            self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                        else:
                            self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            elif self.equipmentPageIndex == SECOND_EQUIPMENT:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i
                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        slotNumber = player.EQUIPMENT_SLOT_START + i

                    itemCount = getItemCount(newSlotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        SetSlotChange(slotNumber, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)
                    else:
                        SetSlotChange(i, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
                for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
                    slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    SetUniqueSlotChange(i, slotNumber)
                    setUniqueItemVnum(slotNumber, getItemVNum(slotNumber), itemCount)

            self.windowChanged = self.equipmentPageIndex

            self.slotWindow.RefreshSlot()
            self.uniqueSlot.RefreshSlot()

            if self.wndCostume:
                self.wndCostume.RefreshCostumeSlot()

        def ClickMallButton(self):
            net.SendChatPacket("/click_mall")

        def ClickDSSButton(self):
            self.interface.ToggleDragonSoulWindow()

        def ClickCostumeButton(self):
            if self.wndCostume:
                if self.wndCostume.IsShow():
                    self.wndCostume.Hide()
                else:
                    self.wndCostume.Show()
            else:
                self.wndCostume = uiinventory.CostumeWindow(self)
                self.wndCostume.Show()

                equipX, equipY = self.GetGlobalPosition()
                costumeX, costumeY = self.wndCostume.GetGlobalPosition()

                self.wndCostume.SetPosition(costumeX, equipY)

        def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)

        def SelectItemSlot(self, itemSlotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()
                attachedItemVID = mousemodule.mouseController.GetAttachedItemIndex()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
                mousemodule.mouseController.DeattachObject()
            else:
                curCursorNum = app.GetCursor()
                if app.BUY == curCursorNum:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.SHOP_BUY_INFO)

                elif app.IsPressed(app.DIK_LALT):
                    link = player.GetItemLink(itemSlotIndex)
                    ime.PasteString(link)

                elif app.IsPressed(app.DIK_LSHIFT):
                    itemCount = player.GetItemCount(itemSlotIndex)
                    
                    if itemCount > 1:
                        self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                        self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                        self.dlgPickMoney.Open(itemCount)
                        self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
                    else:
                        if uiRenderTarget.IsCanShowItems(player.GetItemIndex(itemSlotIndex)):
                            self.interface.OpenRenderTargetWindow(0, player.GetItemIndex(itemSlotIndex))


                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
                    mousemodule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
                    snd.PlaySound("sound/ui/pick.wav")
                    
        def SelectEmptySlot(self, selectedSlotPos):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    attachedCount = mousemodule.mouseController.GetAttachedItemCount()
                    self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)

                mousemodule.mouseController.DeattachObject()

        def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
            if srcItemSlotPos == dstItemSlotPos:
                return
                        
            ## If the moved location is an installation slot, use an item to equip it - [levites]
            if player.IsEquipmentSlot(dstItemSlotPos):

                ## Only when the item you are holding is an equipment
                if item.IsEquipmentVID(srcItemVID):
                    self.__UseItem(srcItemSlotPos)
            else:
                self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)

        def UseItemSlot(self, slotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
                return

            if app.ENABLE_WIKI:
                if app.IsPressed(app.DIK_LALT):
                    if not self.interface.wndWiki:
                        self.interface.MakeWiki()
                    self.interface.wndWiki.ShowItemInfo(player.GetItemIndex(slotIndex),0)
                    self.interface.wndWiki.Open()
                    return

            self.__UseItem(slotIndex)
            mousemodule.mouseController.DeattachObject()
            self.OverOutItem()

        def __UseItem(self, slotIndex):
            ItemVNum = player.GetItemIndex(slotIndex)
            item.SelectItem(ItemVNum)

            if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
                self.questionDialog = uicommon.QuestionDialog()
                self.questionDialog.SetText(localeinfo.INVENTORY_REALLY_USE_ITEM)
                self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
                self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
                self.questionDialog.Open()
                self.questionDialog.slotIndex = slotIndex
                
            else:
                self.__SendUseItemPacket(slotIndex)

        def OnCloseQuestionDialog(self):
            if self.questionDialog:
                self.questionDialog.Close()

            self.questionDialog = None

        def __UseItemQuestionDialog_OnCancel(self):
            self.OnCloseQuestionDialog()

        def __UseItemQuestionDialog_OnAccept(self):
            self.__SendUseItemPacket(self.questionDialog.slotIndex)

        def __SendUseItemPacket(self, slotPos):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemUsePacket(slotPos)

        def ShowToolTip(self, slotIndex):
            if None != self.tooltipItem:
                self.tooltipItem.SetInventoryItem(slotIndex)
 
buradan karşılaştır bakalım ne çıkıcak

uiequipmentdialog:
Genişlet Daralt Kopyala
import ui
import chr
import player
import app
if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
    import net
    import constinfo
    import mousemodule
    import chat
    import localeinfo
    import uicommon
    import item
    import uiprivateshopbuilder
    import uiinventory
    import player
    import ime
    import snd
    import wndMgr

    BASE_TAB = -1
    FIRST_EQUIPMENT = 0
    SECOND_EQUIPMENT = 1
import uiRenderTarget

class EquipmentDialog(ui.ScriptWindow):

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        wndCostume = None
        isOpenedCostumeWindowWhenClosingInventory = 0
        equipmentPageIndex = None
        windowChanged = None
        windowStart = False

    def __init__(self):
        print "NEW EQUIPMENT DIALOG ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.__LoadDialog()

        self.vid = None
        self.eventClose = None
        self.itemDataDict = {}
        self.tooltipItem = None

    def __del__(self):
        print "---------------------------------------------------------------------------- DELETE EQUIPMENT DIALOG "
        ui.ScriptWindow.__del__(self)

    def __LoadDialog(self):
        try:
            PythonScriptLoader = ui.PythonScriptLoader()
            PythonScriptLoader.LoadScriptFile(self, "UIScript/EquipmentDialog.py")

            getObject = self.GetChild
            self.board = getObject("Board")
            self.slotWindow = getObject("EquipmentSlot")
            if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
                self.uniqueSlot = getObject("unique_slot")
                self.DSSButton = getObject("dragon_soul_button")
                self.mallButton = getObject("mall_button")
                self.costumeButton = getObject("costume_button")

                self.base_tab = getObject("base_tab")
                self.windowTab = getObject("additional_tab")

                self.equipmentTab = []
                self.equipmentTab.append(self.GetChild("tab_btn_01"))
                self.equipmentTab.append(self.GetChild("tab_btn_02"))

                self.equipmentTabImage = []
                self.equipmentTabImage.append(self.GetChild("tab_img_01"))
                self.equipmentTabImage.append(self.GetChild("tab_img_02"))

        except:
            import exception
            exception.Abort("EquipmentDialog.LoadDialog.BindObject")

        self.board.SetCloseEvent(ui.__mem_func__(self.Close))
        self.slotWindow.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
        self.slotWindow.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.board.SetTitleName(localeinfo.EQUIPMENT_TITLE_NAME)

            self.slotWindow.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.slotWindow.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            self.uniqueSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            self.uniqueSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            self.uniqueSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.uniqueSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            # MallButton
            if self.mallButton:
                self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))

            if self.DSSButton:
                self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
       
            # Costume Button
            if self.costumeButton:
                self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))

            self.equipmentTab[0].SetEvent(self.SetFirstInventory)
            self.equipmentTab[1].SetEvent(self.SetSecondInventory)

            self.equipmentTabImage[0].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetSecondInventory)
            self.equipmentTabImage[1].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetFirstInventory)

    def Open(self, vid):

        self.vid = vid
        self.itemDataDict = {}

        name = chr.GetNameByVID(vid)
        self.board.SetTitleName(name)

        self.SetCenterPosition()
        self.SetTop()
        self.Show()

    def Close(self):
        self.itemDataDict = {}
        if not app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.tooltipItem = None
        self.Hide()

        if self.eventClose:
            self.eventClose(self.vid)

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            if self.wndCostume:
                self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # Was the costume open when the inventory window closed?
                self.wndCostume.Close()

    def Destroy(self):
        self.eventClose = None

        self.Close()
        self.ClearDictionary()

        self.board = None
        self.slotWindow = None

    if app.BL_TRANSMUTATION_SYSTEM:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count, dwChangeLookVnum):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
           
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList, dwChangeLookVnum)
           
            if not dwChangeLookVnum == 0:
                self.slotWindow.SetSlotCoverImage(slotIndex,"icon/item/ingame_convert_Mark.tga")
            else:
                self.slotWindow.EnableSlotCoverImage(slotIndex,False)  
    else:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList)

    def SetEquipmentDialogSocket(self, slotIndex, socketIndex, value):
        if not slotIndex in self.itemDataDict:
            return
        if socketIndex < 0 or socketIndex > player.METIN_SOCKET_MAX_NUM:
            return
        self.itemDataDict[slotIndex][2][socketIndex] = value

    def SetEquipmentDialogAttr(self, slotIndex, attrIndex, type, value):
        if not slotIndex in self.itemDataDict:
            return
        if attrIndex < 0 or attrIndex > player.ATTRIBUTE_SLOT_MAX_NUM:
            return
        self.itemDataDict[slotIndex][3][attrIndex] = (type, value)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetCloseEvent(self, event):
        self.eventClose = event

    def OverInItem(self, slotIndex):

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            # if app.BL_TRANSMUTATION_SYSTEM:
                # self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.ShowToolTip(slotIndex)
        else:
            if None == self.tooltipItem:
                return

            if not slotIndex in self.itemDataDict:
                return

            itemVnum = self.itemDataDict[slotIndex][0]
            if 0 == itemVnum:
                return

            self.tooltipItem.ClearToolTip()
            metinSlot = self.itemDataDict[slotIndex][2]
            attrSlot = self.itemDataDict[slotIndex][3]
            self.tooltipItem.AddItemData(itemVnum, metinSlot, attrSlot)
            if app.BL_TRANSMUTATION_SYSTEM:
                self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.tooltipItem.ShowToolTip()

    def OverOutItem(self):
        if None != self.tooltipItem:
            self.tooltipItem.HideToolTip()

    def OnPressEscapeKey(self):
        self.Close()
        return True

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        def BindInterfaceClass(self, interface):
            self.interface = interface

        def SetInventoryWindow(self, inventory):
            self.inventory = inventory

        def Show(self):
            ui.ScriptWindow.Show(self)

            if not self.windowStart:
                screen_width = wndMgr.GetScreenWidth()
                screen_height = wndMgr.GetScreenHeight()
   
                if screen_width > 800 and screen_height > 600:
                    if self.inventory:
                        x, y = self.inventory.GetGlobalPosition()
                        self.SetPosition(x, y - 290)

                self.windowStart = True

            # If the costume was open when the inventory was closed, the costume should also be opened when the inventory is opened.
            if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
                self.wndCostume.Show()

        def RefreshItemSlot(self):
            self.RefreshEquipSlotWindow()
       
        def SetSecondInventory(self):
            if self.equipmentPageIndex == SECOND_EQUIPMENT:
                return
           
            net.ChangeEquipment(SECOND_EQUIPMENT)

        def SetFirstInventory(self):
            if self.equipmentPageIndex == FIRST_EQUIPMENT:
                return

            net.ChangeEquipment(FIRST_EQUIPMENT)

        def SetEquipmentPage(self, page):
            if page == self.equipmentPageIndex:
                return
           
            for image in self.equipmentTabImage:
                image.Hide()

            self.equipmentPageIndex = page

            if page == BASE_TAB:
                self.base_tab.Show()
                self.windowTab.Hide()
            else:
                self.base_tab.Hide()
                self.windowTab.Show()
                self.equipmentTabImage[self.equipmentPageIndex].Show()

            self.RefreshEquipSlotWindow()

        def RefreshEquipSlotWindow(self):
            getItemVNum=player.GetItemIndex
            getItemCount=player.GetItemCount
            setItemVNum=self.slotWindow.SetItemSlot
            SetSlotChange=self.slotWindow.SetSlotChange
            setUniqueItemVnum=self.uniqueSlot.SetItemSlot
            SetUniqueSlotChange=self.uniqueSlot.SetSlotChange

            if self.equipmentPageIndex == FIRST_EQUIPMENT or self.equipmentPageIndex == BASE_TAB:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    slotNumber = player.EQUIPMENT_SLOT_START + i
                    if self.windowChanged == SECOND_EQUIPMENT:
                        newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i

                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == SECOND_EQUIPMENT:
                        SetSlotChange(newSlotNumber, slotNumber)
                    else:
                        SetSlotChange(i, slotNumber)

                    setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
                    if app.BL_TRANSMUTATION_SYSTEM:
                        if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                            self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                        else:
                            self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            elif self.equipmentPageIndex == SECOND_EQUIPMENT:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i
                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        slotNumber = player.EQUIPMENT_SLOT_START + i

                    itemCount = getItemCount(newSlotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        SetSlotChange(slotNumber, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)
                    else:
                        SetSlotChange(i, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
                for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
                    slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    SetUniqueSlotChange(i, slotNumber)
                    setUniqueItemVnum(slotNumber, getItemVNum(slotNumber), itemCount)

            self.windowChanged = self.equipmentPageIndex

            self.slotWindow.RefreshSlot()
            self.uniqueSlot.RefreshSlot()

            if self.wndCostume:
                self.wndCostume.RefreshCostumeSlot()

        def ClickMallButton(self):
            net.SendChatPacket("/click_mall")

        def ClickDSSButton(self):
            self.interface.ToggleDragonSoulWindow()

        def ClickCostumeButton(self):
            if self.wndCostume:
                if self.wndCostume.IsShow():
                    self.wndCostume.Hide()
                else:
                    self.wndCostume.Show()
            else:
                self.wndCostume = uiinventory.CostumeWindow(self)
                self.wndCostume.Show()

                equipX, equipY = self.GetGlobalPosition()
                costumeX, costumeY = self.wndCostume.GetGlobalPosition()

                self.wndCostume.SetPosition(costumeX, equipY)

        def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)

        def SelectItemSlot(self, itemSlotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()
                attachedItemVID = mousemodule.mouseController.GetAttachedItemIndex()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
                mousemodule.mouseController.DeattachObject()
            else:
                curCursorNum = app.GetCursor()
                if app.BUY == curCursorNum:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.SHOP_BUY_INFO)

                elif app.IsPressed(app.DIK_LALT):
                    link = player.GetItemLink(itemSlotIndex)
                    ime.PasteString(link)

                elif app.IsPressed(app.DIK_LSHIFT):
                    itemCount = player.GetItemCount(itemSlotIndex)
                   
                    if itemCount > 1:
                        self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                        self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                        self.dlgPickMoney.Open(itemCount)
                        self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
                    else:
                        if uiRenderTarget.IsCanShowItems(player.GetItemIndex(itemSlotIndex)):
                            self.interface.OpenRenderTargetWindow(0, player.GetItemIndex(itemSlotIndex))


                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
                    mousemodule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
                    snd.PlaySound("sound/ui/pick.wav")
                   
        def SelectEmptySlot(self, selectedSlotPos):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    attachedCount = mousemodule.mouseController.GetAttachedItemCount()
                    self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)

                mousemodule.mouseController.DeattachObject()

        def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
            if srcItemSlotPos == dstItemSlotPos:
                return
                       
            ## If the moved location is an installation slot, use an item to equip it - [levites]
            if player.IsEquipmentSlot(dstItemSlotPos):

                ## Only when the item you are holding is an equipment
                if item.IsEquipmentVID(srcItemVID):
                    self.__UseItem(srcItemSlotPos)
            else:
                self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)

        def UseItemSlot(self, slotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
                return

            if app.ENABLE_WIKI:
                if app.IsPressed(app.DIK_LALT):
                    if not self.interface.wndWiki:
                        self.interface.MakeWiki()
                    self.interface.wndWiki.ShowItemInfo(player.GetItemIndex(slotIndex),0)
                    self.interface.wndWiki.Open()
                    return

            self.__UseItem(slotIndex)
            mousemodule.mouseController.DeattachObject()
            self.OverOutItem()

        def __UseItem(self, slotIndex):
            ItemVNum = player.GetItemIndex(slotIndex)
            item.SelectItem(ItemVNum)

            if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
                self.questionDialog = uicommon.QuestionDialog()
                self.questionDialog.SetText(localeinfo.INVENTORY_REALLY_USE_ITEM)
                self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
                self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
                self.questionDialog.Open()
                self.questionDialog.slotIndex = slotIndex
               
            else:
                self.__SendUseItemPacket(slotIndex)

        def OnCloseQuestionDialog(self):
            if self.questionDialog:
                self.questionDialog.Close()

            self.questionDialog = None

        def __UseItemQuestionDialog_OnCancel(self):
            self.OnCloseQuestionDialog()

        def __UseItemQuestionDialog_OnAccept(self):
            self.__SendUseItemPacket(self.questionDialog.slotIndex)

        def __SendUseItemPacket(self, slotPos):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemUsePacket(slotPos)

        def ShowToolTip(self, slotIndex):
            if None != self.tooltipItem:
                self.tooltipItem.SetInventoryItem(slotIndex)
Deneyip donus yapacağım

buradan karşılaştır bakalım ne çıkıcak

uiequipmentdialog:
Genişlet Daralt Kopyala
import ui
import chr
import player
import app
if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
    import net
    import constinfo
    import mousemodule
    import chat
    import localeinfo
    import uicommon
    import item
    import uiprivateshopbuilder
    import uiinventory
    import player
    import ime
    import snd
    import wndMgr

    BASE_TAB = -1
    FIRST_EQUIPMENT = 0
    SECOND_EQUIPMENT = 1
import uiRenderTarget

class EquipmentDialog(ui.ScriptWindow):

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        wndCostume = None
        isOpenedCostumeWindowWhenClosingInventory = 0
        equipmentPageIndex = None
        windowChanged = None
        windowStart = False

    def __init__(self):
        print "NEW EQUIPMENT DIALOG ----------------------------------------------------------------------------"
        ui.ScriptWindow.__init__(self)
        self.__LoadDialog()

        self.vid = None
        self.eventClose = None
        self.itemDataDict = {}
        self.tooltipItem = None

    def __del__(self):
        print "---------------------------------------------------------------------------- DELETE EQUIPMENT DIALOG "
        ui.ScriptWindow.__del__(self)

    def __LoadDialog(self):
        try:
            PythonScriptLoader = ui.PythonScriptLoader()
            PythonScriptLoader.LoadScriptFile(self, "UIScript/EquipmentDialog.py")

            getObject = self.GetChild
            self.board = getObject("Board")
            self.slotWindow = getObject("EquipmentSlot")
            if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
                self.uniqueSlot = getObject("unique_slot")
                self.DSSButton = getObject("dragon_soul_button")
                self.mallButton = getObject("mall_button")
                self.costumeButton = getObject("costume_button")

                self.base_tab = getObject("base_tab")
                self.windowTab = getObject("additional_tab")

                self.equipmentTab = []
                self.equipmentTab.append(self.GetChild("tab_btn_01"))
                self.equipmentTab.append(self.GetChild("tab_btn_02"))

                self.equipmentTabImage = []
                self.equipmentTabImage.append(self.GetChild("tab_img_01"))
                self.equipmentTabImage.append(self.GetChild("tab_img_02"))

        except:
            import exception
            exception.Abort("EquipmentDialog.LoadDialog.BindObject")

        self.board.SetCloseEvent(ui.__mem_func__(self.Close))
        self.slotWindow.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
        self.slotWindow.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.board.SetTitleName(localeinfo.EQUIPMENT_TITLE_NAME)

            self.slotWindow.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.slotWindow.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.slotWindow.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            self.uniqueSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
            self.uniqueSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
            self.uniqueSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
            self.uniqueSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
            self.uniqueSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))

            # MallButton
            if self.mallButton:
                self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))

            if self.DSSButton:
                self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
       
            # Costume Button
            if self.costumeButton:
                self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))

            self.equipmentTab[0].SetEvent(self.SetFirstInventory)
            self.equipmentTab[1].SetEvent(self.SetSecondInventory)

            self.equipmentTabImage[0].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetSecondInventory)
            self.equipmentTabImage[1].SAFE_SetStringEvent("MOUSE_BUTTON_DOWN", self.SetFirstInventory)

    def Open(self, vid):

        self.vid = vid
        self.itemDataDict = {}

        name = chr.GetNameByVID(vid)
        self.board.SetTitleName(name)

        self.SetCenterPosition()
        self.SetTop()
        self.Show()

    def Close(self):
        self.itemDataDict = {}
        if not app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            self.tooltipItem = None
        self.Hide()

        if self.eventClose:
            self.eventClose(self.vid)

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            if self.wndCostume:
                self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # Was the costume open when the inventory window closed?
                self.wndCostume.Close()

    def Destroy(self):
        self.eventClose = None

        self.Close()
        self.ClearDictionary()

        self.board = None
        self.slotWindow = None

    if app.BL_TRANSMUTATION_SYSTEM:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count, dwChangeLookVnum):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
           
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList, dwChangeLookVnum)
           
            if not dwChangeLookVnum == 0:
                self.slotWindow.SetSlotCoverImage(slotIndex,"icon/item/ingame_convert_Mark.tga")
            else:
                self.slotWindow.EnableSlotCoverImage(slotIndex,False)  
    else:
        def SetEquipmentDialogItem(self, slotIndex, vnum, count):
            if count <= 1:
                count = 0
            self.slotWindow.SetItemSlot(slotIndex, vnum, count)

            emptySocketList = []
            emptyAttrList = []
            for i in xrange(player.METIN_SOCKET_MAX_NUM):
                emptySocketList.append(0)
            for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
                emptyAttrList.append((0, 0))
            self.itemDataDict[slotIndex] = (vnum, count, emptySocketList, emptyAttrList)

    def SetEquipmentDialogSocket(self, slotIndex, socketIndex, value):
        if not slotIndex in self.itemDataDict:
            return
        if socketIndex < 0 or socketIndex > player.METIN_SOCKET_MAX_NUM:
            return
        self.itemDataDict[slotIndex][2][socketIndex] = value

    def SetEquipmentDialogAttr(self, slotIndex, attrIndex, type, value):
        if not slotIndex in self.itemDataDict:
            return
        if attrIndex < 0 or attrIndex > player.ATTRIBUTE_SLOT_MAX_NUM:
            return
        self.itemDataDict[slotIndex][3][attrIndex] = (type, value)

    def SetItemToolTip(self, tooltipItem):
        self.tooltipItem = tooltipItem

    def SetCloseEvent(self, event):
        self.eventClose = event

    def OverInItem(self, slotIndex):

        if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
            # if app.BL_TRANSMUTATION_SYSTEM:
                # self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.ShowToolTip(slotIndex)
        else:
            if None == self.tooltipItem:
                return

            if not slotIndex in self.itemDataDict:
                return

            itemVnum = self.itemDataDict[slotIndex][0]
            if 0 == itemVnum:
                return

            self.tooltipItem.ClearToolTip()
            metinSlot = self.itemDataDict[slotIndex][2]
            attrSlot = self.itemDataDict[slotIndex][3]
            self.tooltipItem.AddItemData(itemVnum, metinSlot, attrSlot)
            if app.BL_TRANSMUTATION_SYSTEM:
                self.tooltipItem.AppendChangeLookInfoItemVnum(self.itemDataDict[slotIndex][4])
            self.tooltipItem.ShowToolTip()

    def OverOutItem(self):
        if None != self.tooltipItem:
            self.tooltipItem.HideToolTip()

    def OnPressEscapeKey(self):
        self.Close()
        return True

    if app.ENABLE_ADDITIONAL_EQUIPMENT_PAGE:
        def BindInterfaceClass(self, interface):
            self.interface = interface

        def SetInventoryWindow(self, inventory):
            self.inventory = inventory

        def Show(self):
            ui.ScriptWindow.Show(self)

            if not self.windowStart:
                screen_width = wndMgr.GetScreenWidth()
                screen_height = wndMgr.GetScreenHeight()
   
                if screen_width > 800 and screen_height > 600:
                    if self.inventory:
                        x, y = self.inventory.GetGlobalPosition()
                        self.SetPosition(x, y - 290)

                self.windowStart = True

            # If the costume was open when the inventory was closed, the costume should also be opened when the inventory is opened.
            if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
                self.wndCostume.Show()

        def RefreshItemSlot(self):
            self.RefreshEquipSlotWindow()
       
        def SetSecondInventory(self):
            if self.equipmentPageIndex == SECOND_EQUIPMENT:
                return
           
            net.ChangeEquipment(SECOND_EQUIPMENT)

        def SetFirstInventory(self):
            if self.equipmentPageIndex == FIRST_EQUIPMENT:
                return

            net.ChangeEquipment(FIRST_EQUIPMENT)

        def SetEquipmentPage(self, page):
            if page == self.equipmentPageIndex:
                return
           
            for image in self.equipmentTabImage:
                image.Hide()

            self.equipmentPageIndex = page

            if page == BASE_TAB:
                self.base_tab.Show()
                self.windowTab.Hide()
            else:
                self.base_tab.Hide()
                self.windowTab.Show()
                self.equipmentTabImage[self.equipmentPageIndex].Show()

            self.RefreshEquipSlotWindow()

        def RefreshEquipSlotWindow(self):
            getItemVNum=player.GetItemIndex
            getItemCount=player.GetItemCount
            setItemVNum=self.slotWindow.SetItemSlot
            SetSlotChange=self.slotWindow.SetSlotChange
            setUniqueItemVnum=self.uniqueSlot.SetItemSlot
            SetUniqueSlotChange=self.uniqueSlot.SetSlotChange

            if self.equipmentPageIndex == FIRST_EQUIPMENT or self.equipmentPageIndex == BASE_TAB:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    slotNumber = player.EQUIPMENT_SLOT_START + i
                    if self.windowChanged == SECOND_EQUIPMENT:
                        newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i

                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == SECOND_EQUIPMENT:
                        SetSlotChange(newSlotNumber, slotNumber)
                    else:
                        SetSlotChange(i, slotNumber)

                    setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
                    if app.BL_TRANSMUTATION_SYSTEM:
                        if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                            self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                        else:
                            self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            elif self.equipmentPageIndex == SECOND_EQUIPMENT:
                for i in xrange(player.EQUIPMENT_PAGE_COUNT):
                    newSlotNumber = player.EQUIPMENT_SECOND_SLOT_START + i
                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        slotNumber = player.EQUIPMENT_SLOT_START + i

                    itemCount = getItemCount(newSlotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    if self.windowChanged == FIRST_EQUIPMENT or self.windowChanged == BASE_TAB:
                        SetSlotChange(slotNumber, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)
                    else:
                        SetSlotChange(i, newSlotNumber)
                        setItemVNum(newSlotNumber, getItemVNum(newSlotNumber), itemCount)
                        if app.BL_TRANSMUTATION_SYSTEM:
                            if not player.GetChangeLookVnum(player.EQUIPMENT, slotNumber) == 0:
                                self.slotWindow.SetSlotCoverImage(slotNumber,"icon/item/ingame_convert_Mark.tga")
                            else:
                                self.slotWindow.EnableSlotCoverImage(slotNumber,False)

            if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
                for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
                    slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
                    itemCount = getItemCount(slotNumber)
                    if itemCount <= 1:
                        itemCount = 0

                    SetUniqueSlotChange(i, slotNumber)
                    setUniqueItemVnum(slotNumber, getItemVNum(slotNumber), itemCount)

            self.windowChanged = self.equipmentPageIndex

            self.slotWindow.RefreshSlot()
            self.uniqueSlot.RefreshSlot()

            if self.wndCostume:
                self.wndCostume.RefreshCostumeSlot()

        def ClickMallButton(self):
            net.SendChatPacket("/click_mall")

        def ClickDSSButton(self):
            self.interface.ToggleDragonSoulWindow()

        def ClickCostumeButton(self):
            if self.wndCostume:
                if self.wndCostume.IsShow():
                    self.wndCostume.Hide()
                else:
                    self.wndCostume.Show()
            else:
                self.wndCostume = uiinventory.CostumeWindow(self)
                self.wndCostume.Show()

                equipX, equipY = self.GetGlobalPosition()
                costumeX, costumeY = self.wndCostume.GetGlobalPosition()

                self.wndCostume.SetPosition(costumeX, equipY)

        def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)

        def SelectItemSlot(self, itemSlotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()
                attachedItemVID = mousemodule.mouseController.GetAttachedItemIndex()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)
                mousemodule.mouseController.DeattachObject()
            else:
                curCursorNum = app.GetCursor()
                if app.BUY == curCursorNum:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.SHOP_BUY_INFO)

                elif app.IsPressed(app.DIK_LALT):
                    link = player.GetItemLink(itemSlotIndex)
                    ime.PasteString(link)

                elif app.IsPressed(app.DIK_LSHIFT):
                    itemCount = player.GetItemCount(itemSlotIndex)
                   
                    if itemCount > 1:
                        self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                        self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                        self.dlgPickMoney.Open(itemCount)
                        self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
                    else:
                        if uiRenderTarget.IsCanShowItems(player.GetItemIndex(itemSlotIndex)):
                            self.interface.OpenRenderTargetWindow(0, player.GetItemIndex(itemSlotIndex))


                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
                    mousemodule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
                    snd.PlaySound("sound/ui/pick.wav")
                   
        def SelectEmptySlot(self, selectedSlotPos):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
                return

            if mousemodule.mouseController.isAttached():
                attachedSlotType = mousemodule.mouseController.GetAttachedType()
                attachedSlotPos = mousemodule.mouseController.GetAttachedSlotNumber()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    attachedCount = mousemodule.mouseController.GetAttachedItemCount()
                    self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)

                mousemodule.mouseController.DeattachObject()

        def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
            if srcItemSlotPos == dstItemSlotPos:
                return
                       
            ## If the moved location is an installation slot, use an item to equip it - [levites]
            if player.IsEquipmentSlot(dstItemSlotPos):

                ## Only when the item you are holding is an equipment
                if item.IsEquipmentVID(srcItemVID):
                    self.__UseItem(srcItemSlotPos)
            else:
                self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)

        def UseItemSlot(self, slotIndex):
            if constinfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
                return

            if app.ENABLE_WIKI:
                if app.IsPressed(app.DIK_LALT):
                    if not self.interface.wndWiki:
                        self.interface.MakeWiki()
                    self.interface.wndWiki.ShowItemInfo(player.GetItemIndex(slotIndex),0)
                    self.interface.wndWiki.Open()
                    return

            self.__UseItem(slotIndex)
            mousemodule.mouseController.DeattachObject()
            self.OverOutItem()

        def __UseItem(self, slotIndex):
            ItemVNum = player.GetItemIndex(slotIndex)
            item.SelectItem(ItemVNum)

            if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
                self.questionDialog = uicommon.QuestionDialog()
                self.questionDialog.SetText(localeinfo.INVENTORY_REALLY_USE_ITEM)
                self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
                self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
                self.questionDialog.Open()
                self.questionDialog.slotIndex = slotIndex
               
            else:
                self.__SendUseItemPacket(slotIndex)

        def OnCloseQuestionDialog(self):
            if self.questionDialog:
                self.questionDialog.Close()

            self.questionDialog = None

        def __UseItemQuestionDialog_OnCancel(self):
            self.OnCloseQuestionDialog()

        def __UseItemQuestionDialog_OnAccept(self):
            self.__SendUseItemPacket(self.questionDialog.slotIndex)

        def __SendUseItemPacket(self, slotPos):
            # Prevent items from being used while the personal shop is open
            if uiprivateshopbuilder.IsBuildingPrivateShop():
                chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
                return

            net.SendItemUsePacket(slotPos)

        def ShowToolTip(self, slotIndex):
            if None != self.tooltipItem:
                self.tooltipItem.SetInventoryItem(slotIndex)
sonuç yok aynı birde rica etsem mousemodule.py dosyanı atabilirmisin ?
 
En son bir moderatör tarafından düzenlenmiş:
sonuç yok aynı birde rica etsem mousemodule.py dosyanı atabilirmisin ?
orada bir değişiklik yapmadım mainline dosyalar ile aynı. sorun burası kaynaklı eminim ama nasıl çözdüğümü hatırlamıyorum. eve geçince git şeylerini kontrol eder dönüş yaparım.
 
@hasanmacit

uiequipmentdialog.py:
Genişlet Daralt Kopyala
##arat değiştir

        def SelectItemSlot(self, itemSlotIndex):
            if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
                return

            if mouseModule.mouseController.isAttached():
                attachedSlotType = mouseModule.mouseController.GetAttachedType()
                attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
                attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)

                mouseModule.mouseController.DeattachObject()

            else:

                curCursorNum = app.GetCursor()
                if app.SELL == curCursorNum:
                    self.__SellItem(itemSlotIndex)
                    
                elif app.BUY == curCursorNum:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)

                elif app.IsPressed(app.DIK_LALT):
                    link = player.GetItemLink(itemSlotIndex)
                    ime.PasteString(link)

                elif app.IsPressed(app.DIK_LSHIFT):
                    itemCount = player.GetItemCount(itemSlotIndex)
                    
                    if itemCount > 1:
                        self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                        self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                        self.dlgPickMoney.Open(itemCount)
                        self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex

                elif app.IsPressed(app.DIK_LCONTROL):
                    itemIndex = player.GetItemIndex(itemSlotIndex)

                    if True == item.CanAddToQuickSlotItem(itemIndex):
                        player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
                    else:
                        chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)

                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
                    mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)

                    snd.PlaySound("sound/ui/pick.wav")

giyili itemi sürükleyerek çıkarmaya çalıştığında hata veriyordu bu onun çözümü


envanterde sağ click ile item değiştirmiyor bi o kaldı onuda halledebilsek iyi olacak :)
 
@hasanmacit

uiequipmentdialog.py:
Genişlet Daralt Kopyala
##arat değiştir

        def SelectItemSlot(self, itemSlotIndex):
            if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
                return

            if mouseModule.mouseController.isAttached():
                attachedSlotType = mouseModule.mouseController.GetAttachedType()
                attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
                attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()

                if player.SLOT_TYPE_INVENTORY == attachedSlotType:
                    self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex)

                mouseModule.mouseController.DeattachObject()

            else:

                curCursorNum = app.GetCursor()
                if app.SELL == curCursorNum:
                    self.__SellItem(itemSlotIndex)
                   
                elif app.BUY == curCursorNum:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)

                elif app.IsPressed(app.DIK_LALT):
                    link = player.GetItemLink(itemSlotIndex)
                    ime.PasteString(link)

                elif app.IsPressed(app.DIK_LSHIFT):
                    itemCount = player.GetItemCount(itemSlotIndex)
                   
                    if itemCount > 1:
                        self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                        self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                        self.dlgPickMoney.Open(itemCount)
                        self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex

                elif app.IsPressed(app.DIK_LCONTROL):
                    itemIndex = player.GetItemIndex(itemSlotIndex)

                    if True == item.CanAddToQuickSlotItem(itemIndex):
                        player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
                    else:
                        chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)

                else:
                    selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    itemCount = player.GetItemCount(itemSlotIndex)
                    mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)

                    snd.PlaySound("sound/ui/pick.wav")

giyili itemi sürükleyerek çıkarmaya çalıştığında hata veriyordu bu onun çözümü


envanterde sağ click ile item değiştirmiyor bi o kaldı onuda halledebilsek iyi olacak :)
altyapıyı ve şuanki halini paylaşacağım oradan çekersin fixi
 
Üst