Register for your free account! | Forgot your password?

You last visited: Today at 06:06

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Fehler in der Syserr

Discussion on Fehler in der Syserr within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
Zaturix's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 408
Received Thanks: 208
Fehler in der Syserr

Guten Tag

Da ich kein Python Profi bin,wollte ich mal nachfragen ob ihr evtl einen Fix für den Fehler habt:

PHP Code:
0312 12:20:42729 ::   File "uiInventory.py"line 1238in OnUpdate

0312 12
:20:42730 :: AttributeError
0312 12
:20:42730 :: : 
0312 12:20:42730 :: 'int' object has no attribute 'SetText 

Frage 2:Löst dieser Fehler ein Kick beim Porten aus?


Mit freundlichen Grüßen

Saints
Zaturix is offline  
Old 03/12/2015, 16:13   #2

 
Avulsed's Avatar
 
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,793
Poste mal deine uiInventory.py
Avulsed is offline  
Old 03/12/2015, 16:15   #3
 
Zaturix's Avatar
 
elite*gold: 0
Join Date: Oct 2014
Posts: 408
Received Thanks: 208
PHP Code:
import ui
import player
import mouseModule
import net
import app
import snd
import item
import player
import chat
import grp
import uiScriptLocale
import uiRefine
import uiAttachMetin
import uiPickMoney
import uiCommon
import uiPrivateShopBuilder 
# °³ÀλóÁ¡ ¿*µ¿¾È ItemMove ¹æÁö
import localeInfo
import constInfo
import ime
import wndMgr

ITEM_MALL_BUTTON_ENABLE 
True



ITEM_FLAG_APPLICABLE 
<< 14

class CostumeWindow(ui.ScriptWindow):

    
def __init__(selfwndInventory):
        
import exception
        
        
if not app.ENABLE_COSTUME_SYSTEM:            
            
exception.Abort("What do you do?")
            return

        if 
not wndInventory:
            
exception.Abort("wndInventory parameter must be set to InventoryWindow")
            return                        
                  
        
ui.ScriptWindow.__init__(self)

        
self.isLoaded 0
        self
.wndInventory wndInventory;

        
self.__LoadWindow()

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

    
def Show(self):
        
self.__LoadWindow()
        
self.RefreshCostumeSlot()

        
ui.ScriptWindow.Show(self)

    
def Close(self):
        
self.Hide()

    
def __LoadWindow(self):
        if 
self.isLoaded == 1:
            return

        
self.isLoaded 1

        
try:
            
pyScrLoader ui.PythonScriptLoader()
            
pyScrLoader.LoadScriptFile(self"UIScript/CostumeWindow.py")
        
except:
            
import exception
            exception
.Abort("CostumeWindow.LoadWindow.LoadObject")

        try:
            
wndEquip self.GetChild("CostumeSlot")
            
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
            
        
except:
            
import exception
            exception
.Abort("CostumeWindow.LoadWindow.BindObject")

        
## Equipment
        
wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
        
wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
        
wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
        
wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))                        
        
wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
        
wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))

        
self.wndEquip wndEquip

    def RefreshCostumeSlot
(self):
        
getItemVNum=player.GetItemIndex
        
        
for i in xrange(item.COSTUME_SLOT_COUNT):
            
slotNumber item.COSTUME_SLOT_START i
            self
.wndEquip.SetItemSlot(slotNumbergetItemVNum(slotNumber), 0)

        
self.wndEquip.RefreshSlot()
        
class 
BeltInventoryWindow(ui.ScriptWindow):

    
def __init__(selfwndInventory):
        
import exception
        
        
if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:            
            
exception.Abort("What do you do?")
            return

        if 
not wndInventory:
            
exception.Abort("wndInventory parameter must be set to InventoryWindow")
            return                        
                  
        
ui.ScriptWindow.__init__(self)

        
self.isLoaded 0
        self
.wndInventory wndInventory;
        
        
self.wndBeltInventoryLayer None
        self
.wndBeltInventorySlot None
        self
.expandBtn None
        self
.minBtn None

        self
.__LoadWindow()

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

    
def Show(selfopenBeltSlot False):
        
self.__LoadWindow()
        
self.RefreshSlot()

        
ui.ScriptWindow.Show(self)
        
        if 
openBeltSlot:
            
self.OpenInventory()
        else:
            
self.CloseInventory()

    
def Close(self):
        
self.Hide()

    
def IsOpeningInventory(self):
        return 
self.wndBeltInventoryLayer.IsShow()
        
    
def OpenInventory(self):
        
self.wndBeltInventoryLayer.Show()
        
self.expandBtn.Hide()

        
self.AdjustPositionAndSize()
                
    
def CloseInventory(self):
        
self.wndBeltInventoryLayer.Hide()
        
self.expandBtn.Show()
        
        
self.AdjustPositionAndSize()

    
## ÇöÀç Àκ¥Å丮 À§Ä¡¸¦ ±âÁØÀ¸·Î BASE À§Ä¡¸¦ °è»ê, ¸®ÅÏ.. ¼ýÀÚ ÇϵåÄÚµùÇϱâ Á¤¸» ½ÈÁö¸¸ ¹æ¹ýÀÌ ¾ø´Ù..
    
def GetBasePosition(self):
        
xself.wndInventory.GetGlobalPosition()
        return 
148241
        
    def AdjustPositionAndSize
(self):
        
bxby self.GetBasePosition()
        
        if 
self.IsOpeningInventory():            
            
self.SetPosition(bxby)
            
self.SetSize(self.ORIGINAL_WIDTHself.GetHeight())
            
        else:
            
self.SetPosition(bx 138by);
            
self.SetSize(10self.GetHeight())

    
def __LoadWindow(self):
        if 
self.isLoaded == 1:
            return

        
self.isLoaded 1

        
try:
            
pyScrLoader ui.PythonScriptLoader()
            
pyScrLoader.LoadScriptFile(self"UIScript/BeltInventoryWindow.py")
        
except:
            
import exception
            exception
.Abort("CostumeWindow.LoadWindow.LoadObject")

        try:
            
self.ORIGINAL_WIDTH self.GetWidth()
            
wndBeltInventorySlot self.GetChild("BeltInventorySlot")
            
self.wndBeltInventoryLayer self.GetChild("BeltInventoryLayer")
            
self.expandBtn self.GetChild("ExpandBtn")
            
self.minBtn self.GetChild("MinimizeBtn")
            
            
self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
            
self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
            
            for 
i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
                
slotNumber item.BELT_INVENTORY_SLOT_START i                            
                wndBeltInventorySlot
.SetCoverButton(slotNumber,    "d:/ymir work/ui/game/quest/slot_button_01.sub",\
                                                
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
                                                
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
                                                
"d:/ymir work/ui/game/belt_inventory/slot_disabled.tga"FalseFalse)                                    
            
        
except:
            
import exception
            exception
.Abort("CostumeWindow.LoadWindow.BindObject")

        
## Equipment
        
wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
        
wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
        
wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
        
wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))                        
        
wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
        
wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))

        
self.wndBeltInventorySlot wndBeltInventorySlot

    def RefreshSlot
(self):
        
getItemVNum=player.GetItemIndex
        
        
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
            
slotNumber item.BELT_INVENTORY_SLOT_START i
            self
.wndBeltInventorySlot.SetItemSlot(slotNumbergetItemVNum(slotNumber), player.GetItemCount(slotNumber))
            
self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumberTrue)
            
            
avail "0"
            
            
if player.IsAvailableBeltInventoryCell(slotNumber):
                
self.wndBeltInventorySlot.EnableCoverButton(slotNumber)                
            else:
                
self.wndBeltInventorySlot.DisableCoverButton(slotNumber)                

        
self.wndBeltInventorySlot.RefreshSlot()

        
class 
InventoryWindow(ui.ScriptWindow):

    
USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET""USE_CHANGE_ATTRIBUTE""USE_ADD_ATTRIBUTE""USE_ADD_ATTRIBUTE2""USE_ADD_ACCESSORY_SOCKET""USE_PUT_INTO_ACCESSORY_SOCKET""USE_PUT_INTO_BELT_SOCKET""USE_PUT_INTO_RING_SOCKET")

    
questionDialog None
    tooltipItem 
None
    wndCostume 
None
    wndBelt 
None
    dlgPickMoney 
None
    
    sellingSlotNumber 
= -1
    isLoaded 
0
    isOpenedCostumeWindowWhenClosingInventory 
0        # Àκ¥Å丮 ´ÝÀ» ¶§ ÄÚ½ºÃõÀÌ ¿*·ÁÀÖ¾ú´ÂÁö ¿©ºÎ-_-; ³×À̹֠¤¸¤µ
    
isOpenedBeltWindowWhenClosingInventory 0        # Àκ¥Å丮 ´ÝÀ» ¶§ º§Æ® Àκ¥Å丮°¡ ¿*·ÁÀÖ¾ú´ÂÁö ¿©ºÎ-_-; ³×À̹֠¤¸¤µ

    
def __init__(self):
        
ui.ScriptWindow.__init__(self)
        
self.OpenBoniSwitcherEvent lambda None
        self
.__LoadWindow()

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

    
def Show(self):
        
self.__LoadWindow()

        
ui.ScriptWindow.Show(self)

        
# Àκ¥Å丮¸¦ ´ÝÀ» ¶§ ÄÚ½ºÃõÀÌ ¿*·ÁÀÖ¾ú´Ù¸é Àκ¥Å丮¸¦ ¿* ¶§ ÄÚ½ºÃõµµ °°ÀÌ ¿*µµ·Ï ÇÔ.
        
if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
            
self.wndCostume.Show() 

        
# Àκ¥Å丮¸¦ ´ÝÀ» ¶§ º§Æ® Àκ¥Å丮°¡ ¿*·ÁÀÖ¾ú´Ù¸é °°ÀÌ ¿*µµ·Ï ÇÔ.
        
if self.wndBelt:
            
self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)

    
def BindInterfaceClass(self, interface):
        
self.interface = interface
        
    
def __LoadWindow(self):
        if 
self.isLoaded == 1:
            return

        
self.isLoaded 1

        
try:
            
pyScrLoader ui.PythonScriptLoader()

            if 
ITEM_MALL_BUTTON_ENABLE:
                
pyScrLoader.LoadScriptFile(selfuiScriptLocale.LOCALE_UISCRIPT_PATH "InventoryWindow.py")
            else:
                
pyScrLoader.LoadScriptFile(self"UIScript/InventoryWindow.py")
        
except:
            
import exception
            exception
.Abort("InventoryWindow.LoadWindow.LoadObject")

        try:
            
wndItem self.GetChild("ItemSlot")
            
wndEquip self.GetChild("EquipmentSlot")
            
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
            
self.wndMoney self.GetChild("Money")
            
self.wndMoneySlot self.GetChild("Money_Slot")
            
self.wndMds self.GetChild("Mds")
            
self.wndMdsSlot self.GetChild("Mds_Slot")
            
self.mallButton self.GetChild2("MallButton")
            
self.YangAnzeige self.GetChild2("YangAnzeige")
            
self.LagerButton self.GetChild2("LagerButton")
            
self.AntiEXP self.GetChild2("AntiEXP")
            
self.Portring self.GetChild2("Portring")
            
self.DSSButton self.GetChild2("DSSButton")
            
self.costumeButton self.GetChild2("CostumeButton")
            
            
self.inventoryTab = []
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))

            
self.equipmentTab = []
            
self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
            
self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))

            if 
self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
                
self.costumeButton.Hide()
                
self.costumeButton.Destroy()
                
self.costumeButton 0

            
# Belt Inventory Window
            
self.wndBelt None
            
            
if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
                
self.wndBelt BeltInventoryWindow(self)
            
        
except:
            
import exception
            exception
.Abort("InventoryWindow.LoadWindow.BindObject")

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

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

        
## PickMoneyDialog
        
dlgPickMoney uiPickMoney.PickMoneyDialog()
        
dlgPickMoney.LoadDialog()
        
dlgPickMoney.Hide()

        
## RefineDialog
        
self.refineDialog uiRefine.RefineDialog()
        
self.refineDialog.Hide()

        
## AttachMetinDialog
        
self.attachMetinDialog uiAttachMetin.AttachMetinDialog()
        
self.attachMetinDialog.Hide()

        
## MoneySlot
        
self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))

        
self.inventoryTab[0].SetEvent(lambda arg=0self.SetInventoryPage(arg))
        
self.inventoryTab[1].SetEvent(lambda arg=1self.SetInventoryPage(arg))
        
self.inventoryTab[2].SetEvent(lambda arg=2self.SetInventoryPage(arg))
        
self.inventoryTab[3].SetEvent(lambda arg=3self.SetInventoryPage(arg))
        
self.inventoryTab[0].Down()
        
self.inventoryPageIndex 0

        self
.equipmentTab[0].SetEvent(lambda arg=0self.SetEquipmentPage(arg))
        
self.equipmentTab[1].SetEvent(lambda arg=1self.SetEquipmentPage(arg))
        
self.equipmentTab[0].Down()
        
self.equipmentTab[0].Hide()
        
self.equipmentTab[1].Hide()

        
self.wndItem wndItem
        self
.wndEquip wndEquip
        self
.dlgPickMoney dlgPickMoney

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

        
#YangAnzeige
        
if self.YangAnzeige:
            
self.YangAnzeige.SetEvent(ui.__mem_func__(self.ClickYangAnzeige))
        
        
#AntiEXP
        
if self.AntiEXP:
            
self.AntiEXP.SetEvent(ui.__mem_func__(self.ClickAntiEXP))
        
        
#Portring
        
if self.Portring:
            
self.Portring.SetEvent(ui.__mem_func__(self.ClickPortring))
            
        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.wndCostume None
        
         
#####

        ## Refresh
        
self.SetInventoryPage(0)
        
self.SetEquipmentPage(0)
        
self.RefreshItemSlot()
        
self.RefreshStatus()

    
def Destroy(self):
        
self.ClearDictionary()

        
self.dlgPickMoney.Destroy()
        
self.dlgPickMoney 0

        self
.refineDialog.Destroy()
        
self.refineDialog 0

        self
.attachMetinDialog.Destroy()
        
self.attachMetinDialog 0

        self
.tooltipItem None
        self
.wndItem 0
        self
.wndEquip 0
        self
.dlgPickMoney 0
        self
.wndMoney 0
        self
.wndMoneySlot 0
        self
.wndMds 0
        self
.wndMdsSlot 0
        self
.questionDialog None
        self
.mallButton None
        self
.DSSButton None
        self
.interface = None

        
if self.wndCostume:
            
self.wndCostume.Destroy()
            
self.wndCostume 0
            
        
if self.wndBelt:
            
self.wndBelt.Destroy()
            
self.wndBelt None
            
        self
.inventoryTab = []
        
self.equipmentTab = []

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

        if 
self.wndCostume:
            
self.isOpenedCostumeWindowWhenClosingInventory self.wndCostume.IsShow()            # Àκ¥Å丮 Ã¢ÀÌ ´ÝÈú ¶§ ÄÚ½ºÃõÀÌ ¿*·Á ÀÖ¾ú´Â°¡?
            
self.wndCostume.Close()
 
        if 
self.wndBelt:
            
self.isOpenedBeltWindowWhenClosingInventory self.wndBelt.IsOpeningInventory()        # Àκ¥Å丮 Ã¢ÀÌ ´ÝÈú ¶§ º§Æ® Àκ¥Å丮µµ ¿*·Á ÀÖ¾ú´Â°¡?
            
print "Is Opening Belt Inven?? "self.isOpenedBeltWindowWhenClosingInventory
            self
.wndBelt.Close()
  
        if 
self.dlgPickMoney:
            
self.dlgPickMoney.Close()

        
self.OnCloseQuestionDialog()
        
        
wndMgr.Hide(self.hWnd)
        
    
    
def Close(self):
        
self.Hide()

    
def SetInventoryPage(selfpage):
        
#4-Inviseiten-#
        
self.inventoryTab[self.inventoryPageIndex].SetUp()
        
self.inventoryPageIndex page
        self
.inventoryTab[self.inventoryPageIndex].Down()
        
self.RefreshBagSlotWindow()
        
#self.inventoryPageIndex = page
        #for i in xrange(4):
        #    if i != self.inventoryPageIndex:
        #        self.inventoryTab[i].SetUp()
        #    self.inventoryTab[self.inventoryPageIndex].Down()
        #self.RefreshBagSlotWindow()

    
def SetEquipmentPage(selfpage):
        
self.equipmentPageIndex page
        self
.equipmentTab[1-page].SetUp()
        
self.RefreshEquipSlotWindow()

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

    
#LagerButton
    
def ClickLagerButton(self):
        
import event
        qid 
constInfo.mallqin
        event
.QuestButtonClick(qid)
        
    
#YangAnzeige
    
def ClickYangAnzeige(self):
        if 
constInfo.pickInfo == 0:
            
constInfo.pickInfo  1
            chat
.AppendChat(chat.CHAT_TYPE_INFO"Deine Yangdropanzeige wurde aktiviert")
        
elif constInfo.pickInfo  == 1:
            
constInfo.pickInfo  0
            chat
.AppendChat(chat.CHAT_TYPE_INFO"Deine Yangdropanzeige wurde deaktiviert")
            
    
#AntiEXP
    
def ClickAntiEXP(self):
        
import event
        qid 
constInfo.AntiEXPqin
        event
.QuestButtonClick(qid)
        
    
#Portring
    
def ClickPortring(self):
        
import event
        qid 
constInfo.PortRingqin
        event
.QuestButtonClick(qid)
    
    
# DSSButton
    
def ClickDSSButton(self):
        print 
"click_dss_button"
        
self.interface.ToggleDragonSoulWindow()

    
def ClickCostumeButton(self):
        print 
"Click Costume Button"
        
if self.wndCostume:
            if 
self.wndCostume.IsShow(): 
                
self.wndCostume.Hide()
            else:
                
self.wndCostume.Show()
        else:
            
self.wndCostume CostumeWindow(self)
            
self.wndCostume.Show()

    
def OpenPickMoneyDialog(self):

        if 
mouseModule.mouseController.isAttached():

            
attachedSlotPos mouseModule.mouseController.GetAttachedSlotNumber()
            if 
player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType():

                if 
player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
                    
net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
                    
snd.PlaySound("sound/ui/money.wav")

            
mouseModule.mouseController.DeattachObject()

        else:
            
curMoney player.GetElk()

            if 
curMoney <= 0:
                return

            
self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)
            
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
            
self.dlgPickMoney.Open(curMoney)
            
self.dlgPickMoney.SetMax(7# Àκ¥Å丮 990000 Á¦ÇÑ ¹ö±× ¼öÁ¤

    
def OnPickItem(selfcount):
        
itemSlotIndex self.dlgPickMoney.itemGlobalSlotIndex
        selectedItemVNum 
player.GetItemIndex(itemSlotIndex)
        
mouseModule.mouseController.AttachObject(selfplayer.SLOT_TYPE_INVENTORYitemSlotIndexselectedItemVNumcount)

    
def __InventoryLocalSlotPosToGlobalSlotPos(selflocal):

        if 
player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or player.IsBeltInventorySlot(local):
            return 
local

        
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE local

    def RefreshBagSlotWindow
(self):
        
getItemVNum=player.GetItemIndex
        getItemCount
=player.GetItemCount
        setItemVNum
=self.wndItem.SetItemSlot
        
        
for i in xrange(player.INVENTORY_PAGE_SIZE):
            
slotNumber self.__InventoryLocalSlotPosToGlobalSlotPos(i)
            
            
itemCount getItemCount(slotNumber)
            
# itemCount == 0À̸頼ÒÄÏÀ» ºñ¿î´Ù.
            
if == itemCount:
                
self.wndItem.ClearSlot(i)
                continue
            
elif 1 == itemCount:
                
itemCount 0
                
            itemVnum 
getItemVNum(slotNumber)
            
setItemVNum(iitemVnumitemCount)
            
            
## ÀÚµ¿¹°¾à (HP: #72723 ~ #72726, SP: #72727 ~ #72730) Æ¯¼ö󸮠- ¾ÆÀÌÅÛÀε¥µµ ½½·Ô¿¡ È°¼ºÈ*/ºñȰ¼ºÈ* Ç¥½Ã¸¦ À§ÇÑ ÀÛ¾÷ÀÓ - [hyo]
            
if constInfo.IS_AUTO_POTION(itemVnum):
                
# metinSocket - [0] : È°¼ºÈ* ¿©ºÎ, [1] : »ç¿ëÇÑ ¾ç, [2] : ÃÖ´ë ¿ë·®
                
metinSocket = [player.GetItemMetinSocket(slotNumberj) for j in xrange(player.METIN_SOCKET_MAX_NUM)]    
                
                
#if slotNumber >= player.INVENTORY_PAGE_SIZE:
                    #slotNumber -= player.INVENTORY_PAGE_SIZE
                
if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
                    
slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
                    
                isActivated 
!= metinSocket[0]
                
                if 
isActivated:
                    
self.wndItem.ActivateSlot(slotNumber)
                    
potionType 0;
                    if 
constInfo.IS_AUTO_POTION_HP(itemVnum):
                        
potionType player.AUTO_POTION_TYPE_HP
                    elif constInfo
.IS_AUTO_POTION_SP(itemVnum):
                        
potionType player.AUTO_POTION_TYPE_SP                        
                    
                    usedAmount 
int(metinSocket[1])
                    
totalAmount int(metinSocket[2])                    
                    
player.SetAutoPotionInfo(potionTypeisActivated, (totalAmount usedAmount), totalAmountself.__InventoryLocalSlotPosToGlobalSlotPos(i))
                    
                else:
                    
self.wndItem.DeactivateSlot(slotNumber)            
                    
        
self.wndItem.RefreshSlot()

        if 
self.wndBelt:
            
self.wndBelt.RefreshSlot()

    
def RefreshEquipSlotWindow(self):
        
getItemVNum=player.GetItemIndex
        getItemCount
=player.GetItemCount
        setItemVNum
=self.wndEquip.SetItemSlot
        
for i in xrange(player.EQUIPMENT_PAGE_COUNT):
            
slotNumber player.EQUIPMENT_SLOT_START i
            itemCount 
getItemCount(slotNumber)
            if 
itemCount <= 1:
                
itemCount 0
            setItemVNum
(slotNumbergetItemVNum(slotNumber), itemCount)

        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
                setItemVNum
(slotNumbergetItemVNum(slotNumber), itemCount)
                print 
"ENABLE_NEW_EQUIPMENT_SYSTEM"slotNumberitemCountgetItemVNum(slotNumber)
                


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

    
def RefreshItemSlot(self):
        
self.RefreshBagSlotWindow()
        
self.RefreshEquipSlotWindow()

    
def RefreshStatus(self):
        
money player.GetElk()
        
self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
        
        
import constInfo
        self
.wndMds.SetText(str(constInfo.mds) + " S2-Taler")

    
def SetItemToolTip(selftooltipItem):
        
self.tooltipItem tooltipItem

    def SellItem
(self):        
        if 
self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
            if 
self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
                
net.SendShopSellPacketNew(self.sellingSlotNumberself.questionDialog.count)
                
snd.PlaySound("sound/ui/money.wav")
        
self.OnCloseQuestionDialog()
        
    
def OnDetachMetinFromItem(self):
        if 
None == self.questionDialog:
            return
            
        
#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)        
        
self.__SendUseItemToItemPacket(self.questionDialog.sourcePosself.questionDialog.targetPos)
        
self.OnCloseQuestionDialog()

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

        
self.questionDialog None

    
## Slot Event
    
def SelectEmptySlot(selfselectedSlotPos):
        if 
constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
            return

        
selectedSlotPos self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)

        if 
mouseModule.mouseController.isAttached():

            
attachedSlotType mouseModule.mouseController.GetAttachedType()
            
attachedSlotPos mouseModule.mouseController.GetAttachedSlotNumber()
            
attachedItemCount mouseModule.mouseController.GetAttachedItemCount()
            
attachedItemIndex mouseModule.mouseController.GetAttachedItemIndex()

            if 
player.SLOT_TYPE_INVENTORY == attachedSlotType:
                
itemCount player.GetItemCount(attachedSlotPos)
                
attachedCount mouseModule.mouseController.GetAttachedItemCount()
                
self.__SendMoveItemPacket(attachedSlotPosselectedSlotPosattachedCount)

                if 
item.IsRefineScroll(attachedItemIndex):
                    
self.wndItem.SetUseMode(False)

            
elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
                
mouseModule.mouseController.RunCallBack("INVENTORY")

            
elif player.SLOT_TYPE_SHOP == attachedSlotType:
                
net.SendShopBuyPacket(attachedSlotPos)

            
elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:

                if 
player.ITEM_MONEY == attachedItemIndex:
                    
net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
                    
snd.PlaySound("sound/ui/money.wav")

                else:
                    
net.SendSafeboxCheckoutPacket(attachedSlotPosselectedSlotPos)

            
elif player.SLOT_TYPE_MALL == attachedSlotType:
                
net.SendMallCheckoutPacket(attachedSlotPosselectedSlotPos)

            
mouseModule.mouseController.DeattachObject()

    
def SelectItemSlot(selfitemSlotIndex):
        if 
constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
            return

        
itemSlotIndex self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)

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

            if 
player.SLOT_TYPE_INVENTORY == attachedSlotType:
                
self.__DropSrcItemToDestItemInInventory(attachedItemVIDattachedSlotPositemSlotIndex)

            
mouseModule.mouseController.DeattachObject()

        else:

            
curCursorNum app.GetCursor()
            if 
app.SELL == curCursorNum:
                
self.__SellItem(itemSlotIndex)
                
            
elif app.BUY == curCursorNum:
                
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.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:
                    #selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)

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

                if 
True == item.CanAddToQuickSlotItem(itemIndex):
                    
player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORYitemSlotIndex)
                else:
                    
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)

            else:
                
selectedItemVNum player.GetItemIndex(itemSlotIndex)
                
itemCount player.GetItemCount(itemSlotIndex)
                
mouseModule.mouseController.AttachObject(selfplayer.SLOT_TYPE_INVENTORYitemSlotIndexselectedItemVNumitemCount)
                
                if 
self.__IsUsableItemToItem(selectedItemVNumitemSlotIndex):                
                    
self.wndItem.SetUseMode(True)
                else:                    
                    
self.wndItem.SetUseMode(False)

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

    
def __DropSrcItemToDestItemInInventory(selfsrcItemVIDsrcItemSlotPosdstItemSlotPos):
        if 
srcItemSlotPos == dstItemSlotPos:
            return
                    
        if 
item.IsRefineScroll(srcItemVID):
            
self.RefineItem(srcItemSlotPosdstItemSlotPos)
            
self.wndItem.SetUseMode(False)

        
elif item.IsMetin(srcItemVID):
            
self.AttachMetinToItem(srcItemSlotPosdstItemSlotPos)

        
elif item.IsDetachScroll(srcItemVID):
            
self.DetachMetinFromItem(srcItemSlotPosdstItemSlotPos)

        
elif item.IsKey(srcItemVID):
            
self.__SendUseItemToItemPacket(srcItemSlotPosdstItemSlotPos)            

        
elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
            
self.__SendUseItemToItemPacket(srcItemSlotPosdstItemSlotPos)

        
elif item.GetUseType(srcItemVIDin self.USE_TYPE_TUPLE:
            
self.__SendUseItemToItemPacket(srcItemSlotPosdstItemSlotPos)            

        else:
            
#snd.PlaySound("sound/ui/drop.wav")

            ## À̵¿½ÃŲ °÷ÀÌ ÀåÂø ½½·ÔÀÏ °æ¿ì ¾ÆÀÌÅÛÀ» »ç¿ëÇØ¼* ÀåÂø ½ÃŲ´Ù - [levites]
            
if player.IsEquipmentSlot(dstItemSlotPos):

                
## µé°í Àִ ¾ÆÀÌÅÛÀÌ ÀåºñÀ϶§¸¸
                
if item.IsEquipmentVID(srcItemVID):
                    
self.__UseItem(srcItemSlotPos)

            else:
                
self.__SendMoveItemPacket(srcItemSlotPosdstItemSlotPos0)
                
#net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)

    
def __SellItem(selfitemSlotPos):
        if 
not player.IsEquipmentSlot(itemSlotPos):
            
self.sellingSlotNumber itemSlotPos
            itemIndex 
player.GetItemIndex(itemSlotPos)
            
itemCount player.GetItemCount(itemSlotPos)
            
            
            
self.sellingSlotitemIndex itemIndex
            self
.sellingSlotitemCount itemCount

            item
.SelectItem(itemIndex)
            
itemPrice item.GetISellItemPrice()

            if 
item.Is1GoldItem():
                
itemPrice itemCount itemPrice 5
            
else:
                
itemPrice itemPrice itemCount 5

            item
.GetItemName(itemIndex)
            
itemName item.GetItemName()

            
self.questionDialog uiCommon.QuestionDialog()
            
self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemNameitemCountitemPrice))
            
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
            
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
            
self.questionDialog.Open()
            
self.questionDialog.count itemCount

    def RefineItem
(selfscrollSlotPostargetSlotPos):

        
scrollIndex player.GetItemIndex(scrollSlotPos)
        
targetIndex player.GetItemIndex(targetSlotPos)

        if 
player.REFINE_OK != player.CanRefine(scrollIndextargetSlotPos):
            return

        
###########################################################
        
self.__SendUseItemToItemPacket(scrollSlotPostargetSlotPos)
        
#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
        
return
        
###########################################################

        ###########################################################
        #net.SendRequestRefineInfoPacket(targetSlotPos)
        #return
        ###########################################################

        
result player.CanRefine(scrollIndextargetSlotPos)

        if 
player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
            
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_NO_MORE_SOCKET)

        
elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
            
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)

        
elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
            
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)

        
elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
            
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)

        
elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_EQUIP_ITEM)

        if 
player.REFINE_OK != result:
            return

        
self.refineDialog.Open(scrollSlotPostargetSlotPos)

    
def DetachMetinFromItem(selfscrollSlotPostargetSlotPos):
        
scrollIndex player.GetItemIndex(scrollSlotPos)
        
targetIndex player.GetItemIndex(targetSlotPos)

        if 
not player.CanDetach(scrollIndextargetSlotPos):
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
            return

        
self.questionDialog uiCommon.QuestionDialog()
        
self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
        
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem))
        
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
        
self.questionDialog.Open()
        
self.questionDialog.sourcePos scrollSlotPos
        self
.questionDialog.targetPos targetSlotPos

    def AttachMetinToItem
(selfmetinSlotPostargetSlotPos):
        
metinIndex player.GetItemIndex(metinSlotPos)
        
targetIndex player.GetItemIndex(targetSlotPos)

        
item.SelectItem(metinIndex)
        
itemName item.GetItemName()

        
result player.CanAttachMetin(metinIndextargetSlotPos)

        if 
player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))

        if 
player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_NO_SOCKET(itemName))

        
elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))

        
elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.REFINE_FAILURE_EQUIP_ITEM)

        if 
player.ATTACH_METIN_OK != result:
            return

        
self.attachMetinDialog.Open(metinSlotPostargetSlotPos)


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

    
def OverInItem(selfoverSlotPos):
        
overSlotPos self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
        
self.wndItem.SetUsableItem(False)

        if 
mouseModule.mouseController.isAttached():
            
attachedItemType mouseModule.mouseController.GetAttachedType()
            if 
player.SLOT_TYPE_INVENTORY == attachedItemType:

                
attachedSlotPos mouseModule.mouseController.GetAttachedSlotNumber()
                
attachedItemVNum mouseModule.mouseController.GetAttachedItemIndex()
                
                if 
self.__CanUseSrcItemToDstItem(attachedItemVNumattachedSlotPosoverSlotPos):
                    
self.wndItem.SetUsableItem(True)
                    
self.ShowToolTip(overSlotPos)
                    return
                
        
self.ShowToolTip(overSlotPos)


    
def __IsUsableItemToItem(selfsrcItemVNumsrcSlotPos):
        
"´Ù¸¥ ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ ¾ÆÀÌÅÛÀΰ¡?"

        
if item.IsRefineScroll(srcItemVNum):
            return 
True
        elif item
.IsMetin(srcItemVNum):
            return 
True
        elif item
.IsDetachScroll(srcItemVNum):
            return 
True
        elif item
.IsKey(srcItemVNum):
            return 
True
        elif 
(player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
            return 
True
        
else:
            if 
item.GetUseType(srcItemVNumin self.USE_TYPE_TUPLE:
                return 
True
            
        
return False

    def __CanUseSrcItemToDstItem
(selfsrcItemVNumsrcSlotPosdstSlotPos):
        
"´ë»ó ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ°¡?"

        
if srcSlotPos == dstSlotPos:
            return 
False

        
if item.IsRefineScroll(srcItemVNum):
            if 
player.REFINE_OK == player.CanRefine(srcItemVNumdstSlotPos):
                return 
True
        elif item
.IsMetin(srcItemVNum):
            if 
player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNumdstSlotPos):
                return 
True
        elif item
.IsDetachScroll(srcItemVNum):
            if 
player.DETACH_METIN_OK == player.CanDetach(srcItemVNumdstSlotPos):
                return 
True
        elif item
.IsKey(srcItemVNum):
            if 
player.CanUnlock(srcItemVNumdstSlotPos):
                return 
True

        elif 
(player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
            return 
True

        
else:
            
useType=item.GetUseType(srcItemVNum)

            if 
"USE_CLEAN_SOCKET" == useType:
                if 
self.__CanCleanBrokenMetinStone(dstSlotPos):
                    return 
True
            elif 
"USE_CHANGE_ATTRIBUTE" == useType:
                if 
self.__CanChangeItemAttrList(dstSlotPos):
                    return 
True
            elif 
"USE_ADD_ATTRIBUTE" == useType:
                if 
self.__CanAddItemAttr(dstSlotPos):
                    return 
True
            elif 
"USE_ADD_ATTRIBUTE2" == useType:
                if 
self.__CanAddItemAttr(dstSlotPos):
                    return 
True
            elif 
"USE_ADD_ACCESSORY_SOCKET" == useType:
                if 
self.__CanAddAccessorySocket(dstSlotPos):
                    return 
True
            elif 
"USE_PUT_INTO_ACCESSORY_SOCKET" == useType:                                
                if 
self.__CanPutAccessorySocket(dstSlotPossrcItemVNum):
                    return 
True;
            
elif "USE_PUT_INTO_BELT_SOCKET" == useType:                                
                
dstItemVNum player.GetItemIndex(dstSlotPos)
                print 
"USE_PUT_INTO_BELT_SOCKET"srcItemVNumdstItemVNum

                item
.SelectItem(dstItemVNum)
        
                if 
item.ITEM_TYPE_BELT == item.GetItemType():
                    return 
True

        
return False

    def __CanCleanBrokenMetinStone
(selfdstSlotPos):
        
dstItemVNum player.GetItemIndex(dstSlotPos)
        if 
dstItemVNum == 0:
            return 
False

        item
.SelectItem(dstItemVNum)
        
        if 
item.ITEM_TYPE_WEAPON != item.GetItemType():
            return 
False

        
for i in xrange(player.METIN_SOCKET_MAX_NUM):
            if 
player.GetItemMetinSocket(dstSlotPosi) == constInfo.ERROR_METIN_STONE:
                return 
True

        
return False

    def __CanChangeItemAttrList
(selfdstSlotPos):
        
dstItemVNum player.GetItemIndex(dstSlotPos)
        if 
dstItemVNum == 0:
            return 
False

        item
.SelectItem(dstItemVNum)
        
        if 
not item.GetItemType() in (item.ITEM_TYPE_WEAPONitem.ITEM_TYPE_ARMOR):     
            return 
False

        
for i in xrange(player.METIN_SOCKET_MAX_NUM):
            if 
player.GetItemAttribute(dstSlotPosi) != 0:
                return 
True

        
return False

    def __CanPutAccessorySocket
(selfdstSlotPosmtrlVnum):
        
dstItemVNum player.GetItemIndex(dstSlotPos)
        if 
dstItemVNum == 0:
            return 
False

        item
.SelectItem(dstItemVNum)

        if 
item.GetItemType() != item.ITEM_TYPE_ARMOR:
            return 
False

        
if not item.GetItemSubType() in (item.ARMOR_WRISTitem.ARMOR_NECKitem.ARMOR_EAR):
            return 
False

        curCount 
player.GetItemMetinSocket(dstSlotPos0)
        
maxCount player.GetItemMetinSocket(dstSlotPos1)

        if 
mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNumitem.GetItemSubType()):
            return 
False
        
        
if curCount>=maxCount:
            return 
False

        
return True

    def __CanAddAccessorySocket
(selfdstSlotPos):
        
dstItemVNum player.GetItemIndex(dstSlotPos)
        if 
dstItemVNum == 0:
            return 
False

        item
.SelectItem(dstItemVNum)

        if 
item.GetItemType() != item.ITEM_TYPE_ARMOR:
            return 
False

        
if not item.GetItemSubType() in (item.ARMOR_WRISTitem.ARMOR_NECKitem.ARMOR_EAR):
            return 
False

        curCount 
player.GetItemMetinSocket(dstSlotPos0)
        
maxCount player.GetItemMetinSocket(dstSlotPos1)
        
        
ACCESSORY_SOCKET_MAX_SIZE 3
        
if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
            return 
False

        
return True

    def __CanAddItemAttr
(selfdstSlotPos):
        
dstItemVNum player.GetItemIndex(dstSlotPos)
        if 
dstItemVNum == 0:
            return 
False

        item
.SelectItem(dstItemVNum)
        
        if 
not item.GetItemType() in (item.ITEM_TYPE_WEAPONitem.ITEM_TYPE_ARMOR):     
            return 
False
            
        attrCount 
0
        
for i in xrange(player.METIN_SOCKET_MAX_NUM):
            if 
player.GetItemAttribute(dstSlotPosi) != 0:
                
attrCount += 1

        
if attrCount<4:
            return 
True
                                
        
return False

    def ShowToolTip
(selfslotIndex):
        if 
None != self.tooltipItem:
            
self.tooltipItem.SetInventoryItem(slotIndex)

    
def OnTop(self):
        if 
None != self.tooltipItem:
            
self.tooltipItem.SetTop()

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

    def UseItemSlot
(selfslotIndex):
    
        
curCursorNum app.GetCursor()
        if 
app.SELL == curCursorNum:
            return

        if 
constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
            return

        
slotIndex self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)

        if 
app.ENABLE_DRAGON_SOUL_SYSTEM:
            if 
self.wndDragonSoulRefine.IsShow():
                
self.wndDragonSoulRefine.AutoSetItem((player.INVENTORYslotIndex), 1)
                return
 
        
self.__UseItem(slotIndex)
        
mouseModule.mouseController.DeattachObject()
        
self.OverOutItem()

    
def SetOpenBoniSwitcherEvent(selfevent):
        
self.OpenBoniSwitcherEvent ui.__mem_func__(event)

    
def __UseItem(selfslotIndex):
        
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 __UseItemQuestionDialog_OnCancel(self):
        
self.OnCloseQuestionDialog()

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

        if 
self.questionDialog:
            
self.questionDialog.Close()
        
self.questionDialog None

    def __SendUseItemToItemPacket
(selfsrcSlotPosdstSlotPos):
        
# °³ÀλóÁ¡ ¿*°í Àִ µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemUseToItemPacket(srcSlotPosdstSlotPos)

    
def __SendUseItemPacket(selfslotPos):
        
# °³ÀλóÁ¡ ¿*°í Àִ µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemUsePacket(slotPos)
    
    
def __SendMoveItemPacket(selfsrcSlotPosdstSlotPossrcItemCount):
        
# °³ÀλóÁ¡ ¿*°í Àִ µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemMovePacket(srcSlotPosdstSlotPossrcItemCount)
    
    
def SetDragonSoulRefineWindow(selfwndDragonSoulRefine):
        if 
app.ENABLE_DRAGON_SOUL_SYSTEM:
            
self.wndDragonSoulRefine wndDragonSoulRefine
            
    def OnMoveWindow
(selfxy):
#        print "Inventory Global Pos : ", self.GetGlobalPosition()
        
if self.wndBelt:
#            print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
            
self.wndBelt.AdjustPositionAndSize()
                        
    
def OnUpdate(self):
        
import constInfo
        self
.wndMds.SetText(str(constInfo.mds) + " S2-Taler"
Zaturix is offline  
Old 03/12/2015, 16:41   #4

 
Avulsed's Avatar
 
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,793
Hm, du hast versucht diese zweite Währung einzufügen oder? Wäre gut, wenn du dann noch eben die game.py, constInfo und die inventorywindow.py aus der uiscript zeigen könntest, damit ich den Fehler finden kann.
Avulsed is offline  
Old 03/12/2015, 20:48   #5
 
.Sanii's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 353
Received Thanks: 621
Quote:
Originally Posted by Avulsed View Post
inventorywindow.py aus der uiscript

Sorry aber aus welchen Jahrhundert hast du das denn noch?
Die wird glaube seitm 2010er Client schon aus der locale geladen

Sein fehler ist dass er in der inventorywindow.py garnicht die slots hat, in der er den SetText anwenden will.
.Sanii is offline  
Reply


Similar Threads Similar Threads
[Syserr Fehler] Mysteriöser syserr eintrag
07/29/2014 - Metin2 Private Server - 9 Replies
Servus , leider spuckt google nicht sonderlich viel aus bzgl meines Anliegens .. Kurz zu meinem Problem : Wenn ich ein Dungeon starten möchte ( ein eigenes dungeon was vor kurzem noch ging .. ka wieso jetzt nicht mehr ) werde ich NICHT! in das Dungeon geportet und meine Fenster wird und bleibt so bis ich mich relogge. http://puu.sh/auOK8/bfaaf8a7ed.jpg In der syserr steht dann folgender Fehler :
[SAMMELTHREAD] Syserr Fehler, Allgemeine Fehler + Fix
03/27/2014 - Metin2 Private Server - 3 Replies
Da ich nun immer häufiger Threads sehe bezüglich Syserr Fehlern, und meist auch Sachen doppelt gefragt werden, habe ich mir überlegt, dass man dafür einen Sammelthread machen sollte. Ich bitte euch hier eure Syserr Fehler folgend zu posten: Bsp.: Grundinformationen: Betriebssystem: FreeBSD 9.2 (64-Bit) Game: 34083 (stripped) DB-Core: 33820
Syserr Fehler
05/12/2013 - Metin2 Private Server - 0 Replies
Yolo Jungs, was bedeutet dieser Fehler Code? Der kommt wenn man sich nach ca. einem Tag einloggen will und dann stürzt der Server ab. Geht um Root. GetServerLocation: location error name mapindex 0 0 x 0 empire 1 GetServerLocation: location error name mapindex 0 0 x 0 empire 1 GetServerLocation: location error name mapindex 0 0 x 0 empire 1 GetServerLocation: location error name mapindex 0 0 x 0 empire 1
Syserr Fehler ^^
06/18/2012 - Metin2 Private Server - 3 Replies
SYSERR: Jun 17 08:21:23 :: hupsig: SIGHUP, SIGINT, SIGTERM signal has been received. shutting down. SYSERR: Jun 17 08:22:46 :: LoadSettingFile: cannot open file: locale/germany/map/metin2_map_devilscatacomb/Setti ng.txt SYSERR: Jun 17 08:22:46 :: Build: can't load file locale/germany/map/metin2_map_devilscatacomb/Setti ng.txt in LoadSettingFile SYSERR: Jun 17 08:22:46 :: Boot: cannot load MapIndex: locale/germany/map/index SYSERR: Jun 17 08:30:22 :: LoadSettingFile: cannot open file:...



All times are GMT +1. The time now is 06:08.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.