Jump to content

Mr.Metin2

Inactive Member
  • Posts

    52
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Mr.Metin2

  1. 3 minutes ago, xAres said:

    I guess ever since you're selling a 'serverfile' you should goddamn know thats NOT HOW YOU EDIT LZO KEYS and it is done by source. Pretty pathetic.

     

    What I am selling is not selling anything I need encryption instruction to protect my server and not sell it
     

    #Close

     

    Some are making false accusations In that forum
     

  2. 44 minutes ago, TMP4 said:

    With default keys?

     

    Otherwise you're in a wrong forum, cracking other's client is not allowed here.

     

    My friend, I need the tool to encrypt my private client and not someone else's client
     

    34 minutes ago, WeedHex said:

     

    "I am looking for eix pack encoder without leaving viruses in the launcher."

    No sense.

     

    The "virus" is your exe file. Let's scan it on virustotal.com

    Pack archivies cannot be detected as virus.

     

    When I encrypted using Enigma, the launcher had viruses
     

    I tried to encode using MoleBox Pro, but it was easily decoded using demoleition

     

    I am looking for software that encrypts the client in a way that is difficult to decrypt
     

  3. Version of Files : 40k

    Hi, I hope everyone is fine
     

    I have a problem with resistors like fire - lightning - darkness etc.
     

    Resistors are not activated against monsters and bosses. I want a way or know why to solve this problem

     

    More clearly, I want to activate all resistances against monsters and leaders in order to further increase player damage

     

  4.  

    Welcome all

    I have a bug system Mount a horse when I have an advantage. For example, 25 points. Get experience. When I lift the seal, this gives me an advantage. When I go up the animal it gives me 25 too, so I have 50 instead of 25.

    In short, the system gives me the feature twice instead of once

    Before going up on the animal he gives me the value that I added to the seal, which is 25

     

    https://metin2.download/picture/GdTUut1Y1vm73Pb82YFFZGv515R9SwZw/.png

     

    After climbing on the animal, give me the same value that you added the seal again?
     

    https://metin2.download/picture/Y9Rkxm8PLLMtBERwGRpa3OncfID50WIt/.png

     

    Hope for help is necessary
  5.  

    Hello all

    I need help adding a fourth socket for armor and weapons in the perceptive system in order for armor and weapons to be displayed without problems.

    I made several attempts, but I failed because I did not understand the code and how to amend it. I hope someone helps me and thank you

    PythonChatModule.cpp

     

    PyObject * chatGetLinkFromHyperlink(PyObject * poSelf, PyObject * poArgs)
    {
        char * szHyperlink;
    
        if (!PyTuple_GetString(poArgs, 0, &szHyperlink))
            return Py_BuildException();
    
        std::string stHyperlink(szHyperlink);
        std::vector<std::string> results;
    
        split_string(stHyperlink, ":", results, false);
    
        // item:vnum:flag:socket0:socket1:socket2
        if (0 == results[0].compare("item"))
        {
            if (results.size() < 6)
                return Py_BuildValue("s", "");
    
            CItemData * pItemData = NULL;
    
            if (CItemManager::Instance().GetItemDataPointer(htoi(results[1].c_str()), &pItemData))
            {
                char buf[1024] = { 0 };
    #ifdef ENABLE_CHANGELOOK_SYSTEM
                char itemlink[256 + 12];
    #else
                char itemlink[256];
    #endif
                int len;
                bool isAttr = false;
    
                len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x",
                        htoi(results[1].c_str()),
                        htoi(results[2].c_str()),
                        htoi(results[3].c_str()),
                        htoi(results[4].c_str()),
                        htoi(results[5].c_str()),
                        htoi(results[6].c_str()));
    
    
    #ifdef ENABLE_CHANGELOOK_SYSTEM
                if (results.size() >= 9)
    #else
                if (results.size() >= 8)
    #endif
    
                {
    #ifdef ENABLE_CHANGELOOK_SYSTEM
                    for (int i = 7; i < results.size(); i += 2)
    #else
                    for (int i = 6; i < results.size(); i += 2)
    #endif
    
                    {
                        len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
                                htoi(results[i].c_str()),
                                atoi(results[i+1].c_str()));
                        isAttr = true;
                    }
                }
    
                if (isAttr)
                    //"item:¹ّب£:اأ·،±×:¼زؤد0:¼زؤد1:¼زؤد2"
                    snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
                else
                    snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
    
                return Py_BuildValue("s", buf);
            }
        }
    
        return Py_BuildValue("s", "");
    }

     

    and

    PythonPlayerModule.cpp

     

    PyObject * playerGetItemLink(PyObject * poSelf, PyObject * poArgs)
    {
        TItemPos Cell;
    
        switch (PyTuple_Size(poArgs))
        {
        case 1:
            if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
                return Py_BuildException();
            break;
        case 2:
            if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
                return Py_BuildException();
            if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
                return Py_BuildException();
            break;
        default:
            return Py_BuildException();
        }
        const TItemData * pPlayerItem = CPythonPlayer::Instance().GetItemData(Cell);
        CItemData * pItemData = NULL;
        char buf[1024];
    
        if (pPlayerItem && CItemManager::Instance().GetItemDataPointer(pPlayerItem->vnum, &pItemData))
        {
            char itemlink[256 + 12];
            int len;
            bool isAttr = false;
    
            len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x",
                    pPlayerItem->vnum, pPlayerItem->flags,
                    pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2], pPlayerItem->transmutation);
    
            for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
            {
                    len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
                            pPlayerItem->aAttr[i].bType, pPlayerItem->aAttr[i].sValue);
                    isAttr = true;
            }
    
            if( GetDefaultCodePage() == CP_ARABIC ) {
                if (isAttr)
                    //"item:¹ّب£:اأ·،±×:¼زؤد0:¼زؤد1:¼زؤد2"
                    snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|H%s|h", pItemData->GetName(), itemlink);
                else
                    snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|H%s|h", pItemData->GetName(), itemlink);
            } else {
                if (isAttr)
                    //"item:¹ّب£:اأ·،±×:¼زؤد0:¼زؤد1:¼زؤد2"
                    snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
                else
                    snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
            }
        }
        else
            buf[0] = '\0';
    
        return Py_BuildValue("s", buf);
    }

     

    and

    uitooltip.py

     

    class HyperlinkItemToolTip(ItemToolTip):
        def __init__(self):
            ItemToolTip.__init__(self, isPickable=True)
    
        def SetHyperlinkItem(self, tokens):
            minTokenCount = 3 + player.METIN_SOCKET_MAX_NUM
            if app.ENABLE_CHANGELOOK_SYSTEM:
                minTokenCount += 1
            maxTokenCount = minTokenCount + 2 * player.ATTRIBUTE_SLOT_MAX_NUM
            if tokens and len(tokens) >= minTokenCount and len(tokens) <= maxTokenCount:
                head, vnum, flag = tokens[:3]
                itemVnum = int(vnum, 16)
                metinSlot = [int(metin, 16) for metin in tokens[3:6]]
    
                rests = tokens[6:]
                transmutation = 0
                if app.ENABLE_CHANGELOOK_SYSTEM:
                    rests = tokens[7:]
                    cnv = [int(cnv, 16) for cnv in tokens[6:7]]
                    transmutation = int(cnv[0])
                if rests:
                    attrSlot = []
    
                    rests.reverse()
                    while rests:
                        key = int(rests.pop(), 16)
                        if rests:
                            val = int(rests.pop())
                            attrSlot.append((key, val))
    
                    attrSlot += [(0, 0)] * (player.ATTRIBUTE_SLOT_MAX_NUM - len(attrSlot))
                else:
                    attrSlot = [(0, 0)] * player.ATTRIBUTE_SLOT_MAX_NUM
    
                self.ClearToolTip()
                if app.ENABLE_CHANGELOOK_SYSTEM:
                    if not transmutation:
                        self.AddItemData(itemVnum, metinSlot, attrSlot)
                    else:
                        self.AddItemData(itemVnum, metinSlot, attrSlot, 0, 0, player.INVENTORY, -1, transmutation)
                else:
                    self.AddItemData(itemVnum, metinSlot, attrSlot)
                ItemToolTip.OnUpdate(self)
    
        def OnUpdate(self):
            pass
    
        def OnMouseLeftButtonDown(self):
            self.Hide()
    Hope someone help me please
  6. //

    7 hours ago, HITRON said:

    Maybe post your uiInventory so we can take a look???

    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 uiPickEtc
    import uiCommon
    import uiPrivateShopBuilder # °³ہخ»َء، ؟­µ؟¾ب ItemMove ¹وءِ
    import localeInfo
    import constInfo
    import ime
    import uiToolTip
    import wndMgr
    import uipicketc
    # BEGIN_OFFLINE_SHOP
    import uiOfflineShopBuilder
    import uiOfflineShop
    # END_OF_OFFLINE_SHOP
    if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    	import uiAttachBonus
    
    ITEM_MALL_BUTTON_ENABLE = True
    
    if app.ENABLE_SASH_SYSTEM:
    	import sash
    if app.ENABLE_CHANGELOOK_SYSTEM:
    	import changelook
    ITEM_FLAG_APPLICABLE = 1 << 14
    
    class CostumeWindow(ui.ScriptWindow):
    
    	def __init__(self, wndInventory):
    		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(slotNumber, getItemVNum(slotNumber), 0)
    			if app.ENABLE_CHANGELOOK_SYSTEM:
    				itemTransmutedVnum = player.GetItemTransmutation(slotNumber)
    				if itemTransmutedVnum:
    					self.wndEquip.DisableCoverButton(slotNumber)
    				else:
    					self.wndEquip.EnableCoverButton(slotNumber)
    		for i in xrange(2):
    			slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
    			self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
    		self.wndEquip.RefreshSlot()
    		
    if app.WJ_SPLIT_INVENTORY_SYSTEM:
    	class ExtendedInventoryWindow(ui.ScriptWindow):
    		tooltipItem = None
    		interface = None
    		dlgPickMoney = None
    		dlgPickItem = None
    		sellingSlotNumber = -1
    		isLoaded = 0
    		
    		def __init__(self):
    			ui.ScriptWindow.__init__(self)
    			self.inventoryPageIndex = 0
    			self.__LoadWindow()
    			
    		def __del__(self):
    			ui.ScriptWindow.__del__(self)
    
    
    		def Show(self):
    			self.__LoadWindow()
    			ui.ScriptWindow.Show(self)	
    			
    		def BindInterfaceClass(self, interface):
    			self.interface = interface
    
    		def __LoadWindow(self):
    			if self.isLoaded == 1:
    				return
    
    			self.isLoaded = 1
    			
    			try:
    				pyScrLoader = ui.PythonScriptLoader()
    				pyScrLoader.LoadScriptFile(self, "UIScript/ExtendedInventoryWindow.py")
    			except:
    				import exception
    				exception.Abort("ExtendedInventoryWindow.LoadWindow.LoadObject")
    
    			try:
    				wndItem = self.GetChild("ItemSlot")
    				self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
    				self.titleName = self.GetChild("TitleName")
    				self.SkillBookButton = self.GetChild("SkillBookButton")
    				self.UpgradeItemsButton = self.GetChild("UpgradeItemsButton")
    				self.stoneButton = self.GetChild("StoneButton")
    				self.boxButton = self.GetChild("BoxButton")
    				self.efsunButton = self.GetChild("EfsunButton")
    				self.cicekButton = self.GetChild("CicekButton")
    				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.MalzemeDeposuInfo = self.GetChild("MalzemeDeposuInfo")
    			except:
    				import exception
    				exception.Abort("ExtendedInventoryWindow.LoadWindow.BindObject")
    
    			## Info
    			self.tlInfo = uiToolTip.ItemToolTip()
    			self.tlInfo.Hide()
    			self.tooltipInfo = [self.tlInfo]*7
    			self.InformationText = [localeInfo.MALZEME_DEPOSU,
    									localeInfo.BK_ENVANTER_TEXT1,
    									localeInfo.BK_ENVANTER_TEXT2,
    									localeInfo.BK_ENVANTER_TEXT3,
    									localeInfo.BK_ENVANTER_TEXT4,
    									localeInfo.BK_ENVANTER_TEXT5,
    									localeInfo.BK_ENVANTER_TEXT6
    			]
    			
    			for i in xrange(7):
    				self.tooltipInfo[i].SetFollow(True)
    				self.tooltipInfo[i].AlignHorizonalCenter()
    				if i == 0:
    					TITLE_COLOR = grp.GenerateColor(0.9490, 0.9058, 0.7568, 1.0)
    					self.tooltipInfo[i].AutoAppendTextLine(self.InformationText[i], TITLE_COLOR)
    				else:
    					self.tooltipInfo[i].AutoAppendTextLine(self.InformationText[i])
    				self.tooltipInfo[i].Hide()
    				self.tooltipInfo[i].toolTipWidth += 10
    
    			## 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))
    
    			self.envanterileacilsin = ui.CheckBox()
    			self.envanterileacilsin.SetParent(self)
    			self.envanterileacilsin.SetPosition(17, 385)
    			self.envanterileacilsin.SetEvent(ui.__mem_func__(self.__OnClickEnableEnvanterOn), "ON_CHECK", True)
    			self.envanterileacilsin.SetEvent(ui.__mem_func__(self.__OnClickDisableEnvanterOf), "ON_UNCKECK", False)
    			self.envanterileacilsin.SetTextInfo(localeInfo.ENVANTER_ILE_AC)
    			self.envanterileacilsin.SetCheckStatus(constInfo.EnvanterAcilsinmi)
    			self.envanterileacilsin.Show()
    
    			self.SkillBookButton.SetEvent(lambda arg=0: self.SetInventoryType(arg))
    			self.UpgradeItemsButton.SetEvent(lambda arg=1: self.SetInventoryType(arg))
    			self.stoneButton.SetEvent(lambda arg=2: self.SetInventoryType(arg))
    			self.boxButton.SetEvent(lambda arg=3: self.SetInventoryType(arg))
    			self.efsunButton.SetEvent(lambda arg=4: self.SetInventoryType(arg))
    			self.cicekButton.SetEvent(lambda arg=5: self.SetInventoryType(arg))
    			self.SkillBookButton.Down()
    
    			self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
    			self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
    			self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
    			self.inventoryTab[0].Down()
    			
    			## PickMoneyDialog
    			dlgPickMoney = uiPickMoney.PickMoneyDialog()
    			dlgPickMoney.LoadDialog()
    			dlgPickMoney.Hide()
    
    			## PickItemDialog
    			dlgPickItem = uiPickEtc.PickEtcDialog()
    			dlgPickItem.LoadDialog()
    			dlgPickItem.Hide()
    			
    			self.dlgPickMoney = dlgPickMoney
    			
    			self.wndItem = wndItem
    			self.SetInventoryType(0)
    			self.SetInventoryPage(0)
    
    			self.dlgPickItem = dlgPickItem
    
    			self.wndCostume = None
    			
    		def Destroy(self):
    			self.ClearDictionary()
    			self.dlgPickMoney.Destroy()
    			self.dlgPickItem.Destroy()
    			self.dlgPickItem = 0
    			self.dlgPickMoney = 0
    			self.tooltipItem = None
    			self.wndItem = 0
    			self.interface = None
    			self.inventoryTab = []
    			self.envanterileacilsin = []
    
    		def __OnClickEnableEnvanterOn(self):
    			constInfo.EnvanterAcilsinmi = 1
    			chat.AppendChat(chat.CHAT_TYPE_INFO, "<Sistem> Envanter ile aç‎lma aktif.")
    
    		def __OnClickDisableEnvanterOf(self):
    			constInfo.EnvanterAcilsinmi = 0
    			chat.AppendChat(chat.CHAT_TYPE_INFO, "<Sistem> Envanter ile aç‎lma pasif.")
    
    		def Hide(self):
    			if None != self.tooltipItem:
    				self.tooltipItem.HideToolTip()
    				self.tlInfo.Hide()
    			if self.dlgPickItem:
    				self.dlgPickItem.Close()
    			wndMgr.Hide(self.hWnd)
    			
    		def Close(self):
    			if self.tooltipItem:
    				self.tooltipItem.HideToolTip()
    			self.tlInfo.Hide()
    			self.Hide()
    
    		def OnUpdate(self):
    			for i in xrange(7):
    				if self.MalzemeDeposuInfo.IsIn():
    					self.tooltipInfo[i].Show()
    				else:
    					self.tooltipInfo[i].Hide()
    
    		def SetInventoryType(self, type):
    			self.inventoryType = type
    			if type == 0:
    				self.SkillBookButton.Down()
    				self.efsunButton.SetUp()
    				self.cicekButton.SetUp()
    				self.UpgradeItemsButton.SetUp()
    				self.stoneButton.SetUp()
    				self.boxButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_SKILL_BOOK_TOOLTIP)
    			elif type == 2:
    				self.stoneButton.Down()
    				self.efsunButton.SetUp()
    				self.cicekButton.SetUp()
    				self.UpgradeItemsButton.SetUp()
    				self.SkillBookButton.SetUp()
    				self.boxButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_STONE_TOOLTIP)
    			elif type == 3:
    				self.boxButton.Down()
    				self.efsunButton.SetUp()
    				self.UpgradeItemsButton.SetUp()
    				self.cicekButton.SetUp()
    				self.stoneButton.SetUp()
    				self.SkillBookButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_BOX_TOOLTIP)
    			elif type == 4:
    				self.efsunButton.Down()
    				self.boxButton.SetUp()
    				self.cicekButton.SetUp()
    				self.UpgradeItemsButton.SetUp()
    				self.stoneButton.SetUp()
    				self.SkillBookButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_EFSUN_TOOLTIP)
    			elif type == 5:
    				self.cicekButton.Down()
    				self.efsunButton.SetUp()
    				self.boxButton.SetUp()
    				self.UpgradeItemsButton.SetUp()
    				self.stoneButton.SetUp()
    				self.SkillBookButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_CICEK_TOOLTIP)
    			else:
    				self.UpgradeItemsButton.Down()
    				self.SkillBookButton.SetUp()
    				self.efsunButton.SetUp()
    				self.cicekButton.SetUp()
    				self.stoneButton.SetUp()
    				self.boxButton.SetUp()
    				self.titleName.SetText(localeInfo.INVENTORY_UPGRADE_ITEM_TOOLTIP)
    			self.RefreshBagSlotWindow()
    			
    		def SetInventoryPage(self, page):
    			self.inventoryPageIndex = page
    			for i in range(0,len(self.inventoryTab)):
    				self.inventoryTab[i].SetUp()
    			self.inventoryTab[page].Down()
    			self.RefreshBagSlotWindow()
    
    		def OnPickItem(self, count):
    			itemSlotIndex = self.dlgPickItem.itemGlobalSlotIndex
    			selectedItemVNum = player.GetItemIndex(itemSlotIndex)
    			mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_SKILL_BOOK_INVENTORY, itemSlotIndex, selectedItemVNum, count)
    				
    		def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
    			if self.inventoryType == 0:
    				return self.inventoryPageIndex*player.SKILL_BOOK_INVENTORY_SLOT_COUNT + local + item.SKILL_BOOK_INVENTORY_SLOT_START
    			elif self.inventoryType == 2:
    				return self.inventoryPageIndex*player.STONE_INVENTORY_SLOT_COUNT + local + item.STONE_INVENTORY_SLOT_START
    			elif self.inventoryType == 3:
    				return self.inventoryPageIndex*player.BOX_INVENTORY_SLOT_COUNT + local + item.BOX_INVENTORY_SLOT_START
    			elif self.inventoryType == 4:
    				return self.inventoryPageIndex*player.EFSUN_INVENTORY_SLOT_COUNT + local + item.EFSUN_INVENTORY_SLOT_START
    			elif self.inventoryType == 5:
    				return self.inventoryPageIndex*player.CICEK_INVENTORY_SLOT_COUNT + local + item.CICEK_INVENTORY_SLOT_START
    			else:
    				return self.inventoryPageIndex*player.UPGRADE_ITEMS_INVENTORY_SLOT_COUNT + local + item.UPGRADE_ITEMS_INVENTORY_SLOT_START
    				
    		def GetInventoryPageIndex(self):
    			return self.inventoryPageIndex
    			
    		def RefreshBagSlotWindow(self):
    			getItemVNum=player.GetItemIndex
    			getItemCount=player.GetItemCount
    			setItemVNum=self.wndItem.SetItemSlot
    			
    			if self.inventoryType == 0:
    				for i in xrange(player.SKILL_BOOK_INVENTORY_SLOT_COUNT):
    					slotNumber = item.SKILL_BOOK_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0	
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)
    			elif self.inventoryType == 2:
    				for i in xrange(player.STONE_INVENTORY_SLOT_COUNT):
    					slotNumber = item.STONE_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0	
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)	
    			elif self.inventoryType == 3:
    				for i in xrange(player.BOX_INVENTORY_SLOT_COUNT):
    					slotNumber = item.BOX_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)	
    			elif self.inventoryType == 4:
    				for i in xrange(player.EFSUN_INVENTORY_SLOT_COUNT):
    					slotNumber = item.EFSUN_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)	
    			elif self.inventoryType == 5:
    				for i in xrange(player.CICEK_INVENTORY_SLOT_COUNT):
    					slotNumber = item.CICEK_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)	
    			else:
    				for i in xrange(player.UPGRADE_ITEMS_INVENTORY_SLOT_COUNT):
    					slotNumber = item.UPGRADE_ITEMS_INVENTORY_SLOT_START + i
    					if self.GetInventoryPageIndex() == 1:
    						slotNumber += 45
    					elif self.GetInventoryPageIndex() == 2:
    						slotNumber += 90
    					itemCount = getItemCount(slotNumber)
    					if 0 == itemCount:
    						self.wndItem.ClearSlot(i)
    						continue
    					elif 1 == itemCount:
    						itemCount = 0
    					itemVnum = getItemVNum(slotNumber)
    					setItemVNum(i, itemVnum, itemCount)
    			self.wndItem.RefreshSlot()
    
    		def RefreshItemSlot(self):
    			self.RefreshBagSlotWindow()
    
    		def RefreshStatus(self):
    			pass
    
    		def SetItemToolTip(self, tooltipItem):
    			self.tooltipItem = tooltipItem
    			
    		def SelectEmptySlot(self, selectedSlotPos):
    			if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
    				return
    			
    			if self.inventoryType == 0:
    				selectedSlotPos += item.SKILL_BOOK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			elif self.inventoryType == 2:
    				selectedSlotPos += item.STONE_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			elif self.inventoryType == 3:
    				selectedSlotPos += item.BOX_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			elif self.inventoryType == 4:
    				selectedSlotPos += item.EFSUN_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			elif self.inventoryType == 5:
    				selectedSlotPos += item.CICEK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			else:
    				selectedSlotPos += item.UPGRADE_ITEMS_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					selectedSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					selectedSlotPos += 90
    			
    			if mouseModule.mouseController.isAttached():
    
    				attachedSlotType = mouseModule.mouseController.GetAttachedType()
    				attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
    				attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
    				attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
    
    				if player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_BOX_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_EFSUN_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_CICEK_INVENTORY == attachedSlotType:
    					itemCount = player.GetItemCount(attachedSlotPos)
    					attachedCount = mouseModule.mouseController.GetAttachedItemCount()
    					self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
    
    					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(attachedSlotPos, selectedSlotPos)
    
    				elif player.SLOT_TYPE_MALL == attachedSlotType:
    					net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
    
    				mouseModule.mouseController.DeattachObject()
    				
    		def SelectItemSlot(self, itemSlotIndex):
    			if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
    				return
    				
    			if self.inventoryType == 0:
    				itemSlotIndex += item.SKILL_BOOK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    			elif self.inventoryType == 2:
    				itemSlotIndex += item.STONE_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    			elif self.inventoryType == 3:
    				itemSlotIndex += item.BOX_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    			elif self.inventoryType == 4:
    				itemSlotIndex += item.EFSUN_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    			elif self.inventoryType == 5:
    				itemSlotIndex += item.CICEK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    			else:
    				itemSlotIndex += item.UPGRADE_ITEMS_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					itemSlotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					itemSlotIndex += 90
    
    			if mouseModule.mouseController.isAttached():
    				attachedSlotType = mouseModule.mouseController.GetAttachedType()
    				attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
    				attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
    				attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
    				
    				if player.GetItemCount(itemSlotIndex) > attachedItemCount:
    					return
    			
    				if player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_BOX_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_EFSUN_INVENTORY == attachedSlotType or\
    					player.SLOT_TYPE_CICEK_INVENTORY == attachedSlotType:
    					self.__SendMoveItemPacket(attachedSlotPos, itemSlotIndex, attachedItemCount)
    		
    				mouseModule.mouseController.DeattachObject()
    			else:
    
    				curCursorNum = app.GetCursor()
    				#if app.SELL == curCursorNum:
    					#self.__SellItem(itemSlotIndex)
    					
    				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_LALT):
    					link = player.GetItemLink(itemSlotIndex)
    					ime.PasteString(link)
    
    				elif app.IsPressed(app.DIK_LSHIFT):
    					itemCount = player.GetItemCount(itemSlotIndex)
    				
    					if itemCount > 1:
    						self.dlgPickItem.SetTitleName(localeInfo.PICK_ITEM_TITLE)
    						self.dlgPickItem.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
    						self.dlgPickItem.Open(itemCount)
    						self.dlgPickItem.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)
    					if self.inventoryType == 0:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_SKILL_BOOK_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					elif self.inventoryType == 2:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_STONE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					elif self.inventoryType == 3:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_BOX_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					elif self.inventoryType == 4:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_EFSUN_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					elif self.inventoryType == 5:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_CICEK_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					else:
    						mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
    					self.wndItem.SetUseMode(True)
    
    					snd.PlaySound("sound/ui/pick.wav")
    
    		def OnCloseQuestionDialog(self):
    			if not self.questionDialog:
    				return
    			
    			self.questionDialog.Close()
    			self.questionDialog = None
    			constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
    
    		def Sat(self):
    			if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
    				if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
    					net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
    					snd.PlaySound("sound/ui/money.wav")
    			self.OnCloseQuestionDialog()
    			
    		def __OnClosePopupDialog(self):
    			self.pop = None
    			
    		def OverOutItem(self):
    			self.wndItem.SetUsableItem(False)
    			if None != self.tooltipItem:
    				self.tooltipItem.HideToolTip()
    
    		def OverInItem(self, overSlotPos):
    			if self.inventoryType == 0:
    				overSlotPos += item.SKILL_BOOK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			elif self.inventoryType == 2:
    				overSlotPos += item.STONE_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			elif self.inventoryType == 3:
    				overSlotPos += item.BOX_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			elif self.inventoryType == 4:
    				overSlotPos += item.EFSUN_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			elif self.inventoryType == 5:
    				overSlotPos += item.CICEK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			else:
    				overSlotPos += item.UPGRADE_ITEMS_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					overSlotPos += 45
    				elif self.GetInventoryPageIndex() == 2:
    					overSlotPos += 90
    			self.wndItem.SetUsableItem(False)
    			self.ShowToolTip(overSlotPos)
    			
    		def ShowToolTip(self, slotIndex):
    			if None != self.tooltipItem:
    				self.tooltipItem.SetInventoryItem(slotIndex)
    				
    		def OnPressEscapeKey(self):
    			self.Close()
    			return True	
    			
    		def UseItemSlot(self, slotIndex):
    			if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
    				return
    				
    			if self.inventoryType == 0:
    				slotIndex += item.SKILL_BOOK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			elif self.inventoryType == 2:
    				slotIndex += item.STONE_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			elif self.inventoryType == 3:
    				slotIndex += item.BOX_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			elif self.inventoryType == 4:
    				slotIndex += item.EFSUN_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			elif self.inventoryType == 5:
    				slotIndex += item.CICEK_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			else:
    				slotIndex += item.UPGRADE_ITEMS_INVENTORY_SLOT_START
    				if self.GetInventoryPageIndex() == 1:
    					slotIndex += 45
    				elif self.GetInventoryPageIndex() == 2:
    					slotIndex += 90
    			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
    			
    				constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
    
    			elif app.IsPressed(app.DIK_LSHIFT):
    				if player.GetItemTypeBySlot(slotIndex) == item.ITEM_TYPE_GIFTBOX and\
    					ItemVNum != 31374 and ItemVNum != 50255 and\
    					ItemVNum != 50187 and ItemVNum != 50197 and\
    					ItemVNum != 50188 and ItemVNum != 50189 and\
    					ItemVNum != 50190 and ItemVNum != 50191 and\
    					ItemVNum != 50192 and ItemVNum != 50193 and\
    					ItemVNum != 50194 and ItemVNum != 50195:
    					if app.ENABLE_SHOW_CHEST_DROP:
    						if self.interface:
    							if self.interface.dlgChestDrop:
    								if not self.interface.dlgChestDrop.IsShow():
    									self.interface.dlgChestDrop.Open(slotIndex)
    									net.SendChestDropInfo(slotIndex)
    			else:
    				self.__SendUseItemPacket(slotIndex)
    				
    		def __UseItemQuestionDialog_OnCancel(self):
    			self.OnCloseQuestionDialog()
    
    		def __UseItemQuestionDialog_OnAccept(self):
    			self.__SendUseItemPacket(self.questionDialog.slotIndex)
    			self.OnCloseQuestionDialog()	
    			
    		def __SendUseItemPacket(self, slotPos):
    			if uiPrivateShopBuilder.IsBuildingPrivateShop():
    				chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
    				return
    
    			net.SendItemUsePacket(slotPos)
    
    		def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
    			if uiPrivateShopBuilder.IsBuildingPrivateShop():
    				chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
    				return
    
    			net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
    
    class BeltInventoryWindow(ui.ScriptWindow):
    
    	def __init__(self, wndInventory):
    		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(self, openBeltSlot = 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()
    
    		if localeInfo.IsARABIC() == 0:
    			self.AdjustPositionAndSize()
    
    	def CloseInventory(self):
    		self.wndBeltInventoryLayer.Hide()
    		self.expandBtn.Show()
    
    		if localeInfo.IsARABIC() == 0:
    			self.AdjustPositionAndSize()
    
    	## اِہç ہخ؛¥إن¸® ہ§ؤ،¸¦ ±âءطہ¸·خ BASE ہ§ؤ،¸¦ °è»ê, ¸®إد.. ¼‎ہع ادµهؤعµùاد±â ء¤¸» ½بءِ¸¸ ¹و¹‎ہج ¾ّ´ظ..
    	def GetBasePosition(self):
    		x, y = self.wndInventory.GetGlobalPosition()
    		return x - 148, y + 241
    
    	def AdjustPositionAndSize(self):
    		bx, by = self.GetBasePosition()
    
    		if self.IsOpeningInventory():
    			self.SetPosition(bx, by)
    			self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
    
    		else:
    			self.SetPosition(bx + 138, by);
    			self.SetSize(10, self.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))
    
    			if localeInfo.IsARABIC() :
    				self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
    				self.wndBeltInventoryLayer.SetPosition(self.wndBeltInventoryLayer.GetWidth() - 5, 0)
    				self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)
    
    			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", False, False)
    
    		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(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
    			self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)
    
    			avail = "0"
    
    			if player.IsAvailableBeltInventoryCell(slotNumber):
    				self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
    			else:
    				self.wndBeltInventorySlot.DisableCoverButton(slotNumber)
    
    		self.wndBeltInventorySlot.RefreshSlot()
    
    class BioWindow(ui.ScriptWindow):
    
    	def __init__(self, wndInventory):
    		import exception
    
    
    		if not wndInventory:
    			exception.Abort("wndInventory parameter must be set to InventoryWindow")
    			return
    
    		ui.ScriptWindow.__init__(self)
    
    		self.isLoaded = 0
    		self.kalan = 0
    		self.gerekli = 0
    		self.wndInventory = wndInventory;
    
    		self.wndBioLayer = None
    		self.wndBioSlot = None
    		self.expandBtn = None
    		self.minBtn = None
    
    		self.tooltipItem = uiToolTip.ItemToolTip()
    		self.tooltipItem.Hide()
    
    		self.__LoadWindow()
    
    	def __del__(self):
    		ui.ScriptWindow.__del__(self)
    
    	def Show(self, openBeltSlot = 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.wndBioLayer.IsShow()
    
    	def OpenInventory(self):
    		self.wndBioLayer.Show()
    		self.expandBtn.Hide()
    
    		if localeInfo.IsARABIC() == 0:
    			self.AdjustPositionAndSize()
    
    	def CloseInventory(self):
    		self.wndBioLayer.Hide()
    		self.expandBtn.Show()
    
    		if localeInfo.IsARABIC() == 0:
    			self.AdjustPositionAndSize()
    
    	def GetBasePosition(self):
    		x, y = self.wndInventory.GetGlobalPosition()
    		return x - 148, y + 20
    
    	def AdjustPositionAndSize(self):
    		bx, by = self.GetBasePosition()
    
    		if self.IsOpeningInventory():
    			self.SetPosition(bx, by)
    			self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
    
    		else:
    			self.SetPosition(bx + 138, by);
    			self.SetSize(10, self.GetHeight())
    
    
    	def __LoadWindow(self):
    		if self.isLoaded == 1:
    			return
    
    		self.isLoaded = 1
    
    		try:
    			pyScrLoader = ui.PythonScriptLoader()
    			pyScrLoader.LoadScriptFile(self, "UIScript/BioWindow.py")
    		except:
    			import exception
    			exception.Abort("CostumeWindow.LoadWindow.LoadObject")
    
    		try:
    			self.ORIGINAL_WIDTH = self.GetWidth()
    			wndBioSlot = self.GetChild("BeltInventorySlot")
    			self.wndBioLayer = self.GetChild("BeltInventoryLayer")
    			self.expandBtn = self.GetChild("ExpandBtn")
    			self.minBtn = self.GetChild("MinimizeBtn")
    			self.counttext = self.GetChild("count")
    			self.sure = self.GetChild("time")
    			self.verbutton = self.GetChild("biobutton")
    
    			self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
    			self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
    			self.verbutton.SetEvent(ui.__mem_func__(self.vergitsin))
    
    			if localeInfo.IsARABIC() :
    				self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
    				self.wndBioLayer.SetPosition(self.wndBioLayer.GetWidth() - 5, 0)
    				self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)
    
    			for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
    				slotNumber = item.BELT_INVENTORY_SLOT_START + i
    				wndBioSlot.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", FALSE, FALSE)
    
    		except:
    			import exception
    			exception.Abort("CostumeWindow.LoadWindow.BindObject")
    
    		wndBioSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem2))
    		wndBioSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem2))
    
    
    		self.wndBioSlot = wndBioSlot
    
    
    	def vergitsin(self):
    		net.SendChatPacket("/biyologver")
    
    	def SetBiyolog(self, bioitem, verilen, toplam, kalansure):
    		self.gerekli = int(bioitem)
    		self.kalan = int(kalansure)
    		self.counttext.SetText(str(verilen)+"/"+str(toplam))
    		self.RefreshSlot()
    
    	def OverInItem2(self):
    		itemIndex = int(self.gerekli)
    		item.SelectItem(itemIndex)
    
    		taslarr = [player.GetItemMetinSocket(999, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
    		efsunlarr = [player.GetItemAttribute(999, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]
    
    		self.tooltipItem.ClearToolTip()
    		self.tooltipItem.AddRefineItemData(itemIndex, taslarr, efsunlarr)
    		self.tooltipItem.Show()
    
    
    	def OverOutItem2(self):
    		self.tooltipItem.ClearToolTip()
    		self.tooltipItem.Hide()
    
    
    	def OnUpdate(self):
    		import time
    		current_milli_time = int(app.GetGlobalTimeStamp())
    		if int(self.kalan) == 0:
    			self.sure.SetText(" للتسليم ")
    		elif (int(self.kalan)-current_milli_time <= 0):
    			self.sure.SetText(" للتسليم ")
    		else:
    			self.sure.SetText(str(localeInfo.surever(int(self.kalan)-current_milli_time)))
    
    
    	def RefreshSlot(self):
    		getItemVNum= int (self.gerekli)
    
    		if getItemVNum > 0:
    			self.wndBioSlot.SetItemSlot(999, getItemVNum)
    		else:
    			self.wndBioSlot.ClearSlot(999)
    			return
    
    		self.wndBioSlot.RefreshSlot()
    
    class InventoryWindow(ui.ScriptWindow):
    	liHighlightedItems = []
    	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", "USE_CHANGE_COSTUME_ATTR", "USE_RESET_COSTUME_ATTR", "USE_BIND", "USE_UNBIND")
    
    	questionDialog = None
    	tooltipItem = None
    	wndCostume = None
    	wndBelt = None
    	wndBio = None
    	dlgPickMoney = None
    	dlgPickItem = None
    	interface = None
    	if app.WJ_ENABLE_TRADABLE_ICON:
    		bindWnds = []
    	if app.ENABLE_CHEQUE_SYSTEM:
    		toolTipChequeTitle = None
    		toolTipMoneyTitle = None
    	sellingSlotNumber = -1
    	isLoaded = 0
    	isOpenedCostumeWindowWhenClosingInventory = 0		# ہخ؛¥إن¸® ´فہ» ¶§ ؤع½؛أُہج ؟­·ءہض¾ْ´آءِ ؟©؛خ-_-; ³×ہج¹ض ¤¸¤µ
    	isOpenedBeltWindowWhenClosingInventory = 0		# ہخ؛¥إن¸® ´فہ» ¶§ ؛§ئ® ہخ؛¥إن¸®°، ؟­·ءہض¾ْ´آءِ ؟©؛خ-_-; ³×ہج¹ض ¤¸¤µ
    	isOpenedBioInventory = 0
    	def __init__(self):
    		ui.ScriptWindow.__init__(self)
    
    		self.isOpenedBeltWindowWhenClosingInventory = 0		# ہخ؛¥إن¸® ´فہ» ¶§ ؛§ئ® ہخ؛¥إن¸®°، ؟­·ءہض¾ْ´آءِ ؟©؛خ-_-; ³×ہج¹ض ¤¸¤µ
    		self.isOpenedBioInventory = 0
    		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)
    
    		if self.wndBio:
    			self.wndBio.Show(self.isOpenedBioInventory)
    
    	def BindInterfaceClass(self, interface):
    		self.interface = interface
    
    	if app.WJ_ENABLE_TRADABLE_ICON:
    		def BindWindow(self, wnd):
    			self.bindWnds.append(wnd)
    
    	def SetBiyolog(self, bioitem, verilen, toplam, kalansure):
    		self.wndBio.SetBiyolog(bioitem, verilen, toplam, kalansure)
    
    	def __LoadWindow(self):
    		if self.isLoaded == 1:
    			return
    
    		self.isLoaded = 1
    
    		try:
    			pyScrLoader = ui.PythonScriptLoader()
    
    			if ITEM_MALL_BUTTON_ENABLE:
    				pyScrLoader.LoadScriptFile(self, uiScriptLocale.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))
    			if app.ENABLE_EXTEND_INVEN_SYSTEM:
    				self.EX_INVEN_COVER_IMG_CLOSE = []
    				self.EX_INVEN_COVER_IMG_OPEN = []
    				for i in xrange(9):
    					self.EX_INVEN_COVER_IMG_OPEN.append(self.GetChild("cover_open_" + str(i)))
    					self.EX_INVEN_COVER_IMG_CLOSE.append(self.GetChild("cover_close_" + str(i)))
    			self.mallButton = self.GetChild2("MallButton")
    			self.DSSButton = self.GetChild2("DSSButton")
    			self.costumeButton = self.GetChild2("CostumeButton")
    			# BEGIN_OFFLINE_SHOP
    			self.offlineShopButton = self.GetChild2("OfflineShopButton")
    			# END_OF_OFFLINE_SHOP
    			self.inventoryTab = []
    			for i in xrange(player.INVENTORY_PAGE_COUNT):
    				self.inventoryTab.append(self.GetChild("Inventory_Tab_%02d" % (i+1)))
    
    			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
    
    			if app.ENABLE_EXTEND_INVEN_SYSTEM:
    				for i in xrange(9):
    					self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
    					self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
    
    			# Belt Inventory Window
    			self.wndBelt = None
    			self.wndBio = None
    
    			if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
    				self.wndBelt = BeltInventoryWindow(self)
    			self.wndBio = BioWindow(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()
    
    		## PickItemDialog
    		dlgPickItem = uiPickEtc.PickEtcDialog()
    		dlgPickItem.LoadDialog()
    		dlgPickItem.Hide()
    
    		## RefineDialog
    		self.refineDialog = uiRefine.RefineDialog()
    		self.refineDialog.Hide()
    
    		self.costumeffect = uiCommon.CostumEffectDialog()
    		self.costumeffect.Hide()
    
    		## AttachMetinDialog
    		if app.WJ_ENABLE_TRADABLE_ICON:  
    			self.attachMetinDialog = uiAttachMetin.AttachMetinDialog(self)
    			self.BindWindow(self.attachMetinDialog)
    		else:
    			self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
    		self.attachMetinDialog.Hide()
    
    		if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    			## AttachBonusDialog
    			self.attachBonusDialog = uiAttachBonus.AttachBonusDialog(self)
    			if app.WJ_ENABLE_TRADABLE_ICON: 
    				self.BindWindow(self.attachBonusDialog)
    			self.attachBonusDialog.Hide()
    
    
    		for i in xrange(player.INVENTORY_PAGE_COUNT):
    			self.inventoryTab[i].SetEvent(lambda arg=i: self.SetInventoryPage(arg))
    		self.inventoryTab[0].Down()
    
    		self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg))
    		self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg))
    		self.equipmentTab[0].Down()
    		self.equipmentTab[0].Hide()
    		self.equipmentTab[1].Hide()
    
    		self.wndItem = wndItem
    		self.wndEquip = wndEquip
    		self.dlgPickMoney = dlgPickMoney
    		self.dlgPickItem = dlgPickItem
    
    		if app.ENABLE_EXTEND_INVEN_SYSTEM:
    			for i in xrange(9):
    				self.EX_INVEN_COVER_IMG_OPEN[i].SetEvent(ui.__mem_func__(self.en_ac))
    
    		# 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))
    		# BEGIN_OFFLINE_SHOP
    		if self.offlineShopButton:
    			self.offlineShopButton.SetEvent(ui.__mem_func__(self.ClickOfflineShopButton))
    		# END_OF_OFFLINE_SHOP
    		self.wndCostume = None
     		#####
    
    		## Refresh
    		if app.ENABLE_SASH_SYSTEM:
    			self.listAttachedSashs = []
    		if app.ENABLE_CHANGELOOK_SYSTEM:
    			self.listAttachedCl = []
    		self.SetInventoryPage(0)
    		self.SetEquipmentPage(0)
    		self.RefreshItemSlot()
    
    
    	def Destroy(self):
    		self.ClearDictionary()
    
    		self.dlgPickMoney.Destroy()
    		self.dlgPickItem.Destroy()
    		self.dlgPickItem = 0
    		self.dlgPickMoney = 0
    
    		self.refineDialog.Destroy()
    		self.refineDialog = 0
    
    		self.costumeffect.Destroy()
    		self.costumeffect = 0
    
    		self.attachMetinDialog.Destroy()
    		self.attachMetinDialog = 0
    
    		if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    			self.attachBonusDialog.Destroy()
    			self.attachBonusDialog = 0
    
    		self.tooltipItem = None
    		self.wndItem = 0
    		self.wndEquip = 0
    		self.dlgPickMoney = 0
    		self.questionDialog = None
    		self.mallButton = None
    		if app.ENABLE_EXTEND_INVEN_SYSTEM:
    			self.EX_INVEN_COVER_IMG_CLOSE = None
    			self.EX_INVEN_COVER_IMG_OPEN = None
    		self.DSSButton = None
    		self.interface = None
    		if app.WJ_ENABLE_TRADABLE_ICON:
    			self.bindWnds = []
    
    		if self.wndCostume:
    			self.wndCostume.Destroy()
    			self.wndCostume = 0
    
    		if self.wndBelt:
    			self.wndBelt.Destroy()
    			self.wndBelt = None
    
    		if self.wndBio:
    			self.wndBio.Destroy()
    			self.wndBio = None
    
    		self.inventoryTab = []
    		self.equipmentTab = []
    
    	def Hide(self):
    		if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
    			self.OnCloseQuestionDialog()
    			return
    		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.wndBio:
    			self.isOpenedBioInventory = self.wndBio.IsOpeningInventory()		
    			print "Is Opening bio Inven ", self.isOpenedBioInventory
    			self.wndBio.Close()
    
    		if self.dlgPickMoney:
    			self.dlgPickMoney.Close()
    
    		if self.dlgPickItem:
    			self.dlgPickItem.Close()
    
    		wndMgr.Hide(self.hWnd)
    
    
    	def Close(self):
    		self.Hide()
    
    	if app.ENABLE_EXTEND_INVEN_SYSTEM:
    		def UpdateInven(self):
    			page = self.inventoryPageIndex
    			for i in xrange(9):
    				inv_plus = player.GetEnvanter() + i
    				inv_pluss = player.GetEnvanter() - i
    				if page == 2:
    					if player.GetEnvanter() > 8:
    						self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
    						self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
    					else:
    						self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()].Show()
    						self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()].Hide()
    						if inv_pluss >= 0:
    							self.EX_INVEN_COVER_IMG_OPEN[inv_pluss].Hide()
    							self.EX_INVEN_COVER_IMG_CLOSE[inv_pluss].Hide()
    						if inv_plus < 9:
    							self.EX_INVEN_COVER_IMG_CLOSE[inv_plus].Show()
    							self.EX_INVEN_COVER_IMG_OPEN[inv_plus].Hide()	
    				elif page == 3:
    					if player.GetEnvanter() < 9:	
    						self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
    						self.EX_INVEN_COVER_IMG_CLOSE[i].Show()
    					elif player.GetEnvanter() > 17:
    						self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
    						self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
    					else:
    						self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()-9].Show()
    						self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()-9].Hide()
    						if inv_pluss >= 0:
    							self.EX_INVEN_COVER_IMG_OPEN[inv_pluss-9].Hide()
    						if inv_plus < 18:
    							self.EX_INVEN_COVER_IMG_CLOSE[inv_plus-9].Show()
    				else:
    					self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
    					self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
    
    		def genislet(self):
    			net.Envanter_genislet()
    			self.OnCloseQuestionDialog()
    
    		def en_ac(self):
    			if player.GetEnvanter() < 18:
    				needkeys = (2,2,2,2,3,3,4,4,4,5,5,5,6,6,6,7,7,7)
    				self.questionDialog = uiCommon.QuestionDialog()
    				self.questionDialog.SetText(localeInfo.ENVANTER_GENIS_1 % needkeys[player.GetEnvanter()])
    				self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.genislet))
    				self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    				self.questionDialog.Open()
    
    	def SetInventoryPage(self, page):
    		self.inventoryPageIndex = page
    		for index in range(len(self.inventoryTab)):
    			if index == page:
    				continue
    			self.inventoryTab[index].SetUp()
    		if app.ENABLE_EXTEND_INVEN_SYSTEM:
    			self.UpdateInven()
    		self.RefreshBagSlotWindow()
    
    	def SetEquipmentPage(self, page):
    		self.equipmentPageIndex = page
    		self.equipmentTab[1-page].SetUp()
    		self.RefreshEquipSlotWindow()
    
    	def ClickMallButton(self):
    		net.SendChatPacket("/click_safebox")
    
    	def OpenIs(self):
    		self.Itemshop.Hide()
    		self.Depo.Hide()
    		self.sehir.Hide()
    		self.choix.Hide()
    		net.SendChatPacket("/click_mall")
    
    	def _normal_mall(self):
    		self.Itemshop.Hide()
    		self.Depo.Hide()
    		self.sehir.Hide()
    		self.choix.Hide()
    		net.SendChatPacket("/click_safebox")
    
    	# 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()
    
    	# BEGIN_OFFLINE_SHOP
    	def ClickOfflineShopButton(self):
    		net.SendChatPacket('/open_offlineshop')
    	# END_OF_OFFLINE_SHOP
    
    	#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))
    	#		if app.ENABLE_CHEQUE_SYSTEM:
    	#			self.dlgPickMoney.Open(curMoney, player.GetCheque())
    	#		else:
    	#			self.dlgPickMoney.Open(curMoney)
    	#		self.dlgPickMoney.SetMax(7) # ہخ؛¥إن¸® 990000 ء¦ار ¹ِ±× ¼ِء¤
    
    	#def OnPickMoney(self, money, cheque = None):
    	#	mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
    
    	def OnPickItem(self, count):
    		itemSlotIndex = self.dlgPickItem.itemGlobalSlotIndex
    		selectedItemVNum = player.GetItemIndex(itemSlotIndex)
    		mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
    
    	def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
    		if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
    			return local
    
    		return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
    
    	def GetInventoryPageIndex(self):
    		return self.inventoryPageIndex
    
    	if app.WJ_ENABLE_TRADABLE_ICON:
    		def RefreshMarkSlots(self, localIndex=None):
    			if not self.interface:
    				return
    
    			onTopWnd = self.interface.GetOnTopWindow()
    			if localIndex:
    				slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(localIndex)
    				if onTopWnd == player.ON_TOP_WND_NONE:
    					self.wndItem.SetUsableSlotOnTopWnd(localIndex)
    
    				elif onTopWnd == player.ON_TOP_WND_SHOP:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_SELL):
    						self.wndItem.SetUnusableSlotOnTopWnd(localIndex)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(localIndex)
    
    				elif onTopWnd == player.ON_TOP_WND_EXCHANGE:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_GIVE):
    						self.wndItem.SetUnusableSlotOnTopWnd(localIndex)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(localIndex)
    
    				elif onTopWnd == player.ON_TOP_WND_PRIVATE_SHOP:
    					if player.IsAntiFlagBySlot(slotNumber, item.ITEM_ANTIFLAG_MYSHOP):
    						self.wndItem.SetUnusableSlotOnTopWnd(localIndex)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(localIndex)
    
    				elif onTopWnd == player.ON_TOP_WND_SAFEBOX:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_SAFEBOX):
    						self.wndItem.SetUnusableSlotOnTopWnd(localIndex)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(localIndex)
    
    				return
    
    			for i in xrange(player.INVENTORY_PAGE_SIZE):
    				slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
    
    				if onTopWnd == player.ON_TOP_WND_NONE:
    					self.wndItem.SetUsableSlotOnTopWnd(i)
    
    				elif onTopWnd == player.ON_TOP_WND_SHOP:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_SELL):
    						self.wndItem.SetUnusableSlotOnTopWnd(i)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(i)
    
    				elif onTopWnd == player.ON_TOP_WND_EXCHANGE:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_GIVE):
    						self.wndItem.SetUnusableSlotOnTopWnd(i)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(i)
    
    				elif onTopWnd == player.ON_TOP_WND_PRIVATE_SHOP:
    					if player.IsAntiFlagBySlot(slotNumber, item.ITEM_ANTIFLAG_MYSHOP):
    						self.wndItem.SetUnusableSlotOnTopWnd(i)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(i)
    
    				elif onTopWnd == player.ON_TOP_WND_SAFEBOX:
    					if player.IsAntiFlagBySlot(slotNumber, item.ANTIFLAG_SAFEBOX):
    						self.wndItem.SetUnusableSlotOnTopWnd(i)
    					else:
    						self.wndItem.SetUsableSlotOnTopWnd(i)
    
    	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 0 == itemCount:
    				self.wndItem.ClearSlot(i)
    				continue
    			elif 1 == itemCount:
    				itemCount = 0
    
    			itemVnum = getItemVNum(slotNumber)
    			setItemVNum(i, itemVnum, itemCount)
    
    			if app.ENABLE_CHANGELOOK_SYSTEM:
    				itemTransmutedVnum = player.GetItemTransmutation(slotNumber)
    				if itemTransmutedVnum:
    					self.wndItem.DisableCoverButton(i)
    				else:
    					self.wndItem.EnableCoverButton(i)
    
    			if itemVnum == 0 and slotNumber in self.liHighlightedItems:
    				self.liHightlightedItems.remove(slotNumber)
    
    			if app.WJ_ENABLE_TRADABLE_ICON:
    				self.RefreshMarkSlots(i)
    
    			## ہعµ؟¹°¾à (HP: #72723 ~ #72726, SP: #72727 ~ #72730) ئ¯¼ِأ³¸® - ¾ئہجإغہخµ¥µµ ½½·ش؟، ب°¼؛ب­/؛ٌب°¼؛ب­ ا¥½أ¸¦ ہ§ار ہغ¾÷ہس - [hyo]
    			if constInfo.IS_AUTO_POTION(itemVnum):
    				metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
    
    				if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
    					slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
    
    				isActivated = 0 != 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(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
    
    				else:
    					self.wndItem.DeactivateSlot(slotNumber)
    			else:
    				self.wndItem.DeactivateSlot(slotNumber)
    
    			if app.ENABLE_SASH_SYSTEM:
    				slotNumberChecked = 0
    				if not constInfo.IS_AUTO_POTION(itemVnum):
    							self.wndItem.DeactivateSlot(slotNumber)
    
    				for j in xrange(sash.WINDOW_MAX_MATERIALS):
    					(isHere, iCell) = sash.GetAttachedItem(j)
    					if isHere:
    						if iCell == slotNumber:
    							self.wndItem.ActivateSlot(slotNumber, (36.00 / 255.0), (222.00 / 255.0), (3.00 / 255.0), 1.0)
    							if not slotNumber in self.listAttachedSashs:
    								self.listAttachedSashs.append(slotNumber)
    
    							slotNumberChecked = 1
    					else:
    						if slotNumber in self.listAttachedSashs and not slotNumberChecked:
    							self.wndItem.DeactivateSlot(slotNumber)
    							self.listAttachedSashs.remove(slotNumber)
    
    			if app.ENABLE_CHANGELOOK_SYSTEM:
    				slotClNumberChecked = 0
    				if not constInfo.IS_AUTO_POTION(itemVnum):
    					self.wndItem.DeactivateSlot(i)
    
    				for q in xrange(changelook.WINDOW_MAX_MATERIALS):
    					(isHere, iCell) = changelook.GetAttachedItem(q)
    					if isHere:
    						if iCell == slotNumber:
    							self.wndItem.ActivateSlot(i, (238.00 / 255.0), (11.00 / 255.0), (11.00 / 255.0), 1.0)
    							if not slotNumber in self.listAttachedCl:
    								self.listAttachedCl.append(slotNumber)
    							
    							slotClNumberChecked = 1
    					else:
    						if slotNumber in self.listAttachedCl and not slotClNumberChecked:
    							self.wndItem.DeactivateSlot(i)
    							self.listAttachedCl.remove(slotNumber)
    
    			if itemVnum >= 53001 and itemVnum <= 53025 or itemVnum >= 53218 and itemVnum <= 53270:
    				metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
    				if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
    					slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
    				isActivated = 0 != metinSocket[1]
    				if isActivated:
    					self.wndItem.ActivateSlot(slotNumber)
    				else:
    					self.wndItem.DeactivateSlot(slotNumber)
    
    		self.__RefreshHighlights()
    		self.wndItem.RefreshSlot()
    
    		if self.wndBelt:
    			self.wndBelt.RefreshSlot()
    
    		if app.WJ_ENABLE_TRADABLE_ICON:
    			map(lambda wnd:wnd.RefreshLockedSlot(), self.bindWnds)
    
    		if self.wndBio:
    			self.wndBio.RefreshSlot()
    
    	def OnUpdate(self):
    		if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    			if self.attachBonusDialog:
    				if self.attachBonusDialog.IsShow():
    					self.attachBonusDialog.Update()
    
    	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(slotNumber, getItemVNum(slotNumber), itemCount)
    			if app.ENABLE_CHANGELOOK_SYSTEM:
    				itemTransmutedVnum = player.GetItemTransmutation(slotNumber)
    				if itemTransmutedVnum:
    					self.wndEquip.DisableCoverButton(slotNumber)
    				else:
    					self.wndEquip.EnableCoverButton(slotNumber)
    		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(slotNumber, getItemVNum(slotNumber), itemCount)
    				if app.ENABLE_CHANGELOOK_SYSTEM:
    					itemTransmutedVnum = player.GetItemTransmutation(slotNumber)
    					if itemTransmutedVnum:
    						self.wndEquip.DisableCoverButton(slotNumber)
    					else:
    						self.wndEquip.EnableCoverButton(slotNumber)
    				print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
    
    
    
    		self.wndEquip.RefreshSlot()
    
    		if self.wndCostume:
    			self.wndCostume.RefreshCostumeSlot()
    
    	def RefreshItemSlot(self):
    		self.RefreshBagSlotWindow()
    		self.RefreshEquipSlotWindow()
    
    	def HighlightSlot(self, slot):
    		if not slot in self.liHighlightedItems:
    			self.liHighlightedItems.append(slot)
    
    	def __RefreshHighlights(self):
    		for i in xrange(player.INVENTORY_PAGE_SIZE):
    			slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
    			if slotNumber in self.liHighlightedItems:
    				self.wndItem.ActivateSlot(i)
    
    	def SetItemToolTip(self, tooltipItem):
    		self.tooltipItem = tooltipItem
    
    	def SellItem(self):
    		if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
    			if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
    				## ؟ëب¥¼®µµ ئب¸®°ش اد´آ ±â´ة أك°،اد¸é¼­ ہخہع type أك°،
    				net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
    				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.sourcePos, self.questionDialog.targetPos)
    		self.OnCloseQuestionDialog()
    
    	def OnCloseQuestionDialog(self):
    		if not self.questionDialog:
    			return
    
    		self.questionDialog.Close()
    		self.questionDialog = None
    		constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
    
    	## Slot Event
    	def SelectEmptySlot(self, selectedSlotPos):
    		if constInfo.GET_ITEM_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 or\
    				player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_BOX_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_EFSUN_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_CICEK_INVENTORY == attachedSlotType:
    				itemCount = player.GetItemCount(attachedSlotPos)
    				attachedCount = mouseModule.mouseController.GetAttachedItemCount()
    				self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
    
    				if item.IsRefineScroll(attachedItemIndex):
    					self.wndItem.SetUseMode(False)
    
    			elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
    				mouseModule.mouseController.RunCallBack("INVENTORY")
    			# BEGIN_OFFLINE_SHOP
    			elif player.SLOT_TYPE_OFFLINE_SHOP == attachedSlotType:
    				mouseModule.mouseController.RunCallBack('INVENTORY')
    			# END_OF_OFFLINE_SHOP
    			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(attachedSlotPos, selectedSlotPos)
    
    			elif player.SLOT_TYPE_MALL == attachedSlotType:
    				net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos)
    
    			mouseModule.mouseController.DeattachObject()
    
    	def SelectItemSlot(self, itemSlotIndex):
    		if constInfo.GET_ITEM_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 or\
    				player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_BOX_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_EFSUN_INVENTORY == attachedSlotType or\
    				player.SLOT_TYPE_CICEK_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.dlgPickItem.SetTitleName(localeInfo.PICK_ITEM_TITLE)
    					self.dlgPickItem.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
    					self.dlgPickItem.Open(itemCount)
    					self.dlgPickItem.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_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)
    
    				if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
    					self.wndItem.SetUseMode(True)
    				else:
    					self.wndItem.SetUseMode(False)
    
    				snd.PlaySound("sound/ui/pick.wav")
    				
    	def UseTransportBox(self):
    		self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
    		self.OnCloseQuestionDialog()
    
    	def UseProtein(self):
    		self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
    		self.OnCloseQuestionDialog()
    
    	def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
    		if srcItemSlotPos == dstItemSlotPos:
    			return
    			
    		if srcItemVID >= 55701 and srcItemVID <= 55710 and player.GetItemIndex(dstItemSlotPos) == 55002:
    			self.questionDialog = uiCommon.QuestionDialog()
    			self.questionDialog.SetText(localeInfo.PET_SYSTEM_ADD_BOX_PET)
    			self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseTransportBox))
    			self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    			self.questionDialog.Open()
    			self.questionDialog.src = srcItemSlotPos
    			self.questionDialog.dst = dstItemSlotPos
    			
    		if srcItemVID == 55001 and player.GetItemIndex(dstItemSlotPos) >= 55701 and player.GetItemIndex(dstItemSlotPos) <= 55710:
    			self.questionDialog = uiCommon.QuestionDialog()
    			self.questionDialog.SetText(localeInfo.PET_SYSTEM_FEED_PROTEIN)
    			self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseProtein))
    			self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    			self.questionDialog.Open()
    			self.questionDialog.src = srcItemSlotPos
    			self.questionDialog.dst = dstItemSlotPos
    			
    		if srcItemVID == 80060:
    			self.questionDialog = uiCommon.QuestionDialog()
    			self.questionDialog.SetText(" هل انت متاكد انك تريد فتح مقبس 4 جديد ؟ ")
    			self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseTransportBox))
    			self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    			self.questionDialog.Open()
    			self.questionDialog.src = srcItemSlotPos
    			self.questionDialog.dst = dstItemSlotPos
    
    		if srcItemVID == 80061:
    			self.questionDialog = uiCommon.QuestionDialog()
    			self.questionDialog.SetText(" هل انت متاكد انك تريد فتح مقبس 4 جديد ؟ ")
    			self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseTransportBox))
    			self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    			self.questionDialog.Open()
    			self.questionDialog.src = srcItemSlotPos
    			self.questionDialog.dst = dstItemSlotPos
    			
    		if player.GetItemIndex(dstItemSlotPos) >= 55701 and player.GetItemIndex(dstItemSlotPos) <= 55710 and srcItemVID == 55008:
    			self.interface.OpenInputNameDialogPet(dstItemSlotPos)
    
    		# cyh itemseal 2013 11 08
    		if app.ENABLE_SOULBIND_SYSTEM and (item.IsSealScroll(srcItemVID) or item.IsUnSealScroll(srcItemVID)):
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    
    		elif item.IsRefineScroll(srcItemVID):
    			self.RefineItem(srcItemSlotPos, dstItemSlotPos)
    			self.wndItem.SetUseMode(False)
    
    		elif app.WJ_ELDER_ATTRIBUTE_SYSTEM and player.GetItemIndex(srcItemSlotPos) == 71051:
    			self.AttachBonusToItem(srcItemSlotPos, dstItemSlotPos)
    		elif app.WJ_ELDER_ATTRIBUTE_SYSTEM and player.GetItemIndex(srcItemSlotPos) == 71052:
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    
    		elif item.IsMetin(srcItemVID):
    			self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
    
    		elif int(srcItemVID) == 50512:
    			self.AddCostumEffect(srcItemSlotPos, dstItemSlotPos)
    
    		elif item.IsDetachScroll(srcItemVID):
    			self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
    
    		elif item.IsKey(srcItemVID):
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    
    		elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    
    		elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    			
    		elif app.ENABLE_EXTENDING_COSTUME_TIME and player.GetItemIndex(srcItemSlotPos) >= 84014 and player.GetItemIndex(srcItemSlotPos) <= 84016:
    			self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
    
    		else:
    			#snd.PlaySound("sound/ui/drop.wav")
    
    			## ہجµ؟½أإ² °÷ہج ہهآّ ½½·شہد °و؟ى ¾ئہجإغہ» »ç؟ëاط¼­ ہهآّ ½أإ²´ظ - [levites]
    			if player.IsEquipmentSlot(dstItemSlotPos):
    
    				## µé°ي ہض´آ ¾ئہجإغہج ہه؛ٌہد¶§¸¸
    				if item.IsEquipmentVID(srcItemVID):
    					self.__UseItem(srcItemSlotPos)
    
    			else:
    				self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
    				#net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0)
    
    	def __SellItem(self, itemSlotPos):
    		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)
    			## ¾بئ¼ اأ·¹±× °ث»ç ؛üء®¼­ أك°،
    			## 20140220
    			if item.IsAntiFlag(item.ANTIFLAG_SELL):
    				popup = uiCommon.PopupDialog()
    				popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM)
    				popup.SetAcceptEvent(self.__OnClosePopupDialog)
    				popup.Open()
    				self.popup = popup
    				return
    
    			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(itemName, itemCount, itemPrice))
    			self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
    			self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
    			self.questionDialog.Open()
    			self.questionDialog.count = itemCount
    
    			constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
    
    	def __OnClosePopupDialog(self):
    		self.pop = None
    
    	def RefineItem(self, scrollSlotPos, targetSlotPos):
    
    		scrollIndex = player.GetItemIndex(scrollSlotPos)
    		targetIndex = player.GetItemIndex(targetSlotPos)
    
    		if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
    			return
    
    		###########################################################
    		self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
    		#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
    		return
    		###########################################################
    
    		###########################################################
    		#net.SendRequestRefineInfoPacket(targetSlotPos)
    		#return
    		###########################################################
    
    		result = player.CanRefine(scrollIndex, targetSlotPos)
    
    		if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
    			#snd.PlaySound("sound/ui/jaeryun_fail.wav")
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.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_INFO, localeInfo.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_INFO, localeInfo.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_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
    
    		elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
    
    		if player.REFINE_OK != result:
    			return
    
    		self.refineDialog.Open(scrollSlotPos, targetSlotPos)
    
    	def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
    		scrollIndex = player.GetItemIndex(scrollSlotPos)
    		targetIndex = player.GetItemIndex(targetSlotPos)
    
    		if app.ENABLE_CHANGELOOK_SYSTEM:
    			if not player.CanDetach(scrollIndex, targetSlotPos):
    				item.SelectItem(scrollIndex)
    				if item.GetValue(0) == changelook.CLEAN_ATTR_VALUE0:
    					chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.CHANGE_LOOK_FAILURE_CLEAN)
    				else:
    					chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
    				return
    
    			if not player.CanDetach(scrollIndex, targetSlotPos):
    				chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
    				return
    
    		if app.ENABLE_SASH_SYSTEM:
    			if not player.CanDetach(scrollIndex, targetSlotPos):
    				item.SelectItem(scrollIndex)
    				if item.GetValue(0) == sash.CLEAN_ATTR_VALUE0:
    					chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SASH_FAILURE_CLEAN)
    				else:
    					chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
    				return
    		else:
    			if not player.CanDetach(scrollIndex, targetSlotPos):
    				chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
    				return
    
    		self.questionDialog = uiCommon.QuestionDialog()
    		self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
    		if app.ENABLE_SASH_SYSTEM:
    			item.SelectItem(targetIndex)
    			if item.GetItemType() == item.ITEM_TYPE_COSTUME and item.GetItemSubType() == item.COSTUME_TYPE_SASH:
    				item.SelectItem(scrollIndex)
    				if item.GetValue(0) == sash.CLEAN_ATTR_VALUE0:
    					self.questionDialog.SetText(localeInfo.SASH_DO_YOU_CLEAN)
    		if app.ENABLE_CHANGELOOK_SYSTEM:
    			item.SelectItem(targetIndex)
    			if item.GetItemType() == item.ITEM_TYPE_WEAPON or item.GetItemType() == item.ITEM_TYPE_ARMOR or item.GetItemType() == item.ITEM_TYPE_COSTUME:
    				item.SelectItem(scrollIndex)
    				if item.GetValue(0) == changelook.CLEAN_ATTR_VALUE0:
    					self.questionDialog.SetText(localeInfo.CHANGE_LOOK_DO_YOU_CLEAN)
    
    		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(self, metinSlotPos, targetSlotPos):
    		metinIndex = player.GetItemIndex(metinSlotPos)
    		targetIndex = player.GetItemIndex(targetSlotPos)
    
    		item.SelectItem(metinIndex)
    		itemName = item.GetItemName()
    
    		result = player.CanAttachMetin(metinIndex, targetSlotPos)
    
    		if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
    
    		if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))
    
    		elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
    
    		elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
    
    		if player.ATTACH_METIN_OK != result:
    			return
    
    		self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
    
    
    	if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    		def AttachBonusToItem(self, sourceSlotPos, targetSlotPos):
    			targetIndex = player.GetItemIndex(targetSlotPos)
    			item.SelectItem(targetIndex)
    			if item.GetItemType() not in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
    				return False
    			self.attachBonusDialog.Open(sourceSlotPos, targetSlotPos)
    
    	def OverOutItem(self):
    		self.wndItem.SetUsableItem(False)
    		if None != self.tooltipItem:
    			self.tooltipItem.HideToolTip()
    
    	def OverInItem(self, overSlotPos):
    		overSlotPosGlobal = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
    		self.wndItem.SetUsableItem(False)
    		
    		if overSlotPosGlobal in self.liHighlightedItems:
    			self.liHighlightedItems.remove(overSlotPosGlobal)
    			self.wndItem.DeactivateSlot(overSlotPos)
    		
    		if mouseModule.mouseController.isAttached():
    			attachedItemType = mouseModule.mouseController.GetAttachedType()
    			if player.SLOT_TYPE_INVENTORY == attachedItemType or player.SLOT_TYPE_STONE_INVENTORY == attachedItemType or player.SLOT_TYPE_EFSUN_INVENTORY == attachedItemType:
    				
    				attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
    				attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
    				
    				if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPosGlobal):
    					self.wndItem.SetUsableItem(True)
    					self.ShowToolTip(overSlotPosGlobal)
    					return
    		
    		self.ShowToolTip(overSlotPosGlobal)
    
    
    	def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
    		"´ظ¸¥ ¾ئہجإغ؟، »ç؟ëاز ¼ِ ہض´آ ¾ئہجإغہخ°،?"
    		
    		if srcItemVNum >= 55701 and srcItemVNum <= 55710:
    			return True
    
    		if srcItemVNum == 55001:
    			return True
    
    		if srcItemVNum == 55008:
    			return True
    
    		if item.IsRefineScroll(srcItemVNum):
    			return True
    		elif app.ENABLE_SOULBIND_SYSTEM and (item.IsSealScroll(srcItemVNum) or item.IsUnSealScroll(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
    		elif app.ENABLE_EXTENDING_COSTUME_TIME and  player.GetItemIndex(srcSlotPos) >= 84014 and player.GetItemIndex(srcSlotPos) <= 84016:
    			return True
    		elif app.WJ_ELDER_ATTRIBUTE_SYSTEM and player.GetItemIndex(srcSlotPos) == 71051 or player.GetItemIndex(srcSlotPos) == 71052:
    			return True
    		else:
    			if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE:
    				return True
    
    		return False
    
    	def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
    		"´ë»َ ¾ئہجإغ؟، »ç؟ëاز ¼ِ ہض´آ°،?"
    		
    		if srcItemVNum >= 55701 and  srcItemVNum <= 55710 and player.GetItemIndex(dstSlotPos) == 55002:
    			return True
    
    		if srcItemVNum == 55001 and player.GetItemIndex(dstSlotPos) >= 55701 and player.GetItemIndex(dstSlotPos) <= 55710:
    			return True
    			
    		if srcItemVNum == 55008 and player.GetItemIndex(dstSlotPos) >= 55701 and player.GetItemIndex(dstSlotPos) <= 55710:
    			return True
    
    		if srcSlotPos == dstSlotPos and not item.IsMetin(srcItemVNum):
    			return False
    
    		if item.IsRefineScroll(srcItemVNum):
    			if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
    				return True
    		elif item.IsMetin(srcItemVNum):
    			if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
    				return True
    		elif item.IsDetachScroll(srcItemVNum):
    			if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos):
    				return True
    		elif item.IsKey(srcItemVNum):
    			if player.CanUnlock(srcItemVNum, dstSlotPos):
    				return True
    		elif app.ENABLE_EXTENDING_COSTUME_TIME and player.GetItemIndex(srcSlotPos) >= 84014 and player.GetItemIndex(srcSlotPos) <= 84016:
    			item.SelectItem(player.GetItemIndex(dstSlotPos))
    			if item.GetItemType() == item.ITEM_TYPE_COSTUME:
    				return True
    		elif int(srcItemVNum) == 50512:
    			if self.__CanAddCostumEffect(dstSlotPos) == True:
    				return TRUE
    		elif app.ENABLE_SOULBIND_SYSTEM and item.IsSealScroll(srcItemVNum):
    			if (item.IsSealScroll(srcItemVNum) and player.CanSealItem(dstSlotPos)) or (item.IsUnSealScroll(srcItemVNum) and player.CanUnSealItem(dstSlotPos)):
    				return True
    		elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
    			return True
    		elif app.WJ_ELDER_ATTRIBUTE_SYSTEM and player.GetItemIndex(srcSlotPos) == 71051 or player.GetItemIndex(srcSlotPos) == 71052:
    			if self.__CanPutNewAttribute(dstSlotPos):
    				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(dstSlotPos, srcItemVNum):
    					return True;
    			elif "USE_PUT_INTO_BELT_SOCKET" == useType:
    				dstItemVNum = player.GetItemIndex(dstSlotPos)
    				print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
    
    				item.SelectItem(dstItemVNum)
    
    				if item.ITEM_TYPE_BELT == item.GetItemType():
    					return True
    			elif "USE_CHANGE_COSTUME_ATTR" == useType:
    				if not app.ENABLE_ENCHANT_COSTUME_SYSTEM:
    					return False
    
    				if self.__CanChangeCostumeAttrList(dstSlotPos):
    					return True;
    
    			elif "USE_RESET_COSTUME_ATTR" == useType:
    				if not app.ENABLE_ENCHANT_COSTUME_SYSTEM:
    					return False
    
    				if self.__CanResetCostumeAttr(dstSlotPos):
    					return True;
    
    		return False
    
    	if app.ENABLE_ENCHANT_COSTUME_SYSTEM:
    		def __CanChangeCostumeAttrList(self, dstSlotPos):
    			dstItemVNum = player.GetItemIndex(dstSlotPos)
    			if dstItemVNum == 0:
    				return False
    
    			item.SelectItem(dstItemVNum)
    
    			if item.ITEM_TYPE_COSTUME != item.GetItemType() and not item.GetItemSubType() in (item.COSTUME_TYPE_BODY, item.COSTUME_TYPE_HAIR):
    				return False
    
    			for i in xrange(player.COSTUME_ATTRIBUTE_MAX_NUM):
    				if player.GetItemAttribute(dstSlotPos, i) != 0:
    					return True
    
    			return False
    
    		def __CanResetCostumeAttr(self, dstSlotPos):
    			dstItemVNum = player.GetItemIndex(dstSlotPos)
    			if dstItemVNum == 0:
    				return False
    
    			item.SelectItem(dstItemVNum)
    			if item.ITEM_TYPE_COSTUME != item.GetItemType() and not item.GetItemSubType() in (item.COSTUME_TYPE_BODY, item.COSTUME_TYPE_HAIR):
    				return False
    
    			return True
    
    	def __CanCleanBrokenMetinStone(self, dstSlotPos):
    		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(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
    				return True
    
    		return False
    
    	def __CanAddCostumEffect(self, dstSlotPos):
    		dstItemVNum = player.GetItemIndex(dstSlotPos)
    		if dstItemVNum == 0:
    			return False
    			
    		item.SelectItem(dstItemVNum)
    		
    		if item.ITEM_TYPE_COSTUME != item.GetItemType():
    			return False
    			
    		if item.COSTUME_TYPE_BODY != item.GetItemSubType():
    			return False
    			
    		return True
    			
    	def AddCostumEffect(self, metinSlotPos, targetSlotPos):
    		if player.IsEquipmentSlot(targetSlotPos):
    			return
    			
    		if self.__CanAddCostumEffect(targetSlotPos) == False:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, " يمكنك اضافة اللمعات للازياء فقط. ")
    			return
    
    		if not self.costumeffect.IsShow():
    			self.costumeffect.SlotPos(metinSlotPos, targetSlotPos)
    			self.costumeffect.Open()
    
    	def __CanChangeItemAttrList(self, dstSlotPos):
    		dstItemVNum = player.GetItemIndex(dstSlotPos)
    		if dstItemVNum == 0:
    			return False
    
    		item.SelectItem(dstItemVNum)
    
    		if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
    			return False
    
    		for i in xrange(player.METIN_SOCKET_MAX_NUM):
    			if player.GetItemAttribute(dstSlotPos, i) != 0:
    				return True
    
    		return False
    
    	if app.WJ_ELDER_ATTRIBUTE_SYSTEM:
    		def __CanPutNewAttribute(self, dstSlotPos):
    			dstItemVNum = player.GetItemIndex(dstSlotPos)
    			if dstItemVNum == 0:
    				return False
    			item.SelectItem(dstItemVNum)
    			if item.GetItemType() not in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
    				return False
    			return True
    
    	def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
    		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_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
    			return False
    
    		curCount = player.GetItemMetinSocket(dstSlotPos, 0)
    		maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
    
    		if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()):
    			return False
    
    		if curCount>=maxCount:
    			return False
    
    		return True
    
    	def __CanAddAccessorySocket(self, dstSlotPos):
    		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_WRIST, item.ARMOR_NECK, item.ARMOR_EAR):
    			return False
    
    		curCount = player.GetItemMetinSocket(dstSlotPos, 0)
    		maxCount = player.GetItemMetinSocket(dstSlotPos, 1)
    
    		ACCESSORY_SOCKET_MAX_SIZE = 3
    		if maxCount >= ACCESSORY_SOCKET_MAX_SIZE:
    			return False
    
    		return True
    
    	def __CanAddItemAttr(self, dstSlotPos):
    		dstItemVNum = player.GetItemIndex(dstSlotPos)
    		if dstItemVNum == 0:
    			return False
    
    		item.SelectItem(dstItemVNum)
    
    		if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR):
    			return False
    
    		attrCount = 0
    		for i in xrange(player.METIN_SOCKET_MAX_NUM):
    			if player.GetItemAttribute(dstSlotPos, i) != 0:
    				attrCount += 1
    
    		if attrCount<4:
    			return True
    
    		return False
    
    	def ShowToolTip(self, slotIndex):
    		if None != self.tooltipItem:
    			self.tooltipItem.SetInventoryItem(slotIndex)
    
    	def OnTop(self):
    		if None != self.tooltipItem:
    			self.tooltipItem.SetTop()
    		if app.WJ_ENABLE_TRADABLE_ICON:
    			map(lambda wnd:wnd.RefreshLockedSlot(), self.bindWnds)
    			self.RefreshMarkSlots()
    
    	def OnPressEscapeKey(self):
    		self.Close()
    		return True
    
    	def UseItemSlot(self, slotIndex):
    		curCursorNum = app.GetCursor()
    		if app.SELL == curCursorNum:
    			return
    
    		if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
    			return
    
    		slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
    
    		if app.ENABLE_DRAGON_SOUL_SYSTEM:
    			if self.wndDragonSoulRefine.IsShow():
    				self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
    				return
    
    		if app.ENABLE_SASH_SYSTEM:
    			if self.isShowSashWindow():
    				sash.Add(player.INVENTORY, slotIndex, 255)
    				return
    
    		if app.ENABLE_CHANGELOOK_SYSTEM:
    			if self.isShowChangeLookWindow():
    				changelook.Add(player.INVENTORY, slotIndex, 255)
    				return
    
    		self.__UseItem(slotIndex)
    		mouseModule.mouseController.DeattachObject()
    		self.OverOutItem()
    
    	def __UseItem(self, slotIndex):
    		ItemVNum = player.GetItemIndex(slotIndex)
    		item.SelectItem(ItemVNum)
    		if app.ENABLE_EXTEND_INVEN_SYSTEM:
    			if ItemVNum == 72320:
    				self.en_ac()
    
    ##		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
    
    ##			constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
    
    		if 80003 == ItemVNum or 80004 == ItemVNum or 80005 == ItemVNum or 80006 == ItemVNum or 80007 == ItemVNum or 80014 == ItemVNum or 80015 == ItemVNum or 80016 == ItemVNum or 80017 == ItemVNum:
    			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
    
    			constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
    
    		elif player.GetItemTypeBySlot(slotIndex) == item.ITEM_TYPE_GIFTBOX:
    			if app.ENABLE_SHOW_CHEST_DROP:
    				if self.interface:
    					if self.interface.dlgChestDrop:
    						if not self.interface.dlgChestDrop.IsShow():
    							self.interface.dlgChestDrop.Open(slotIndex)
    							net.SendChestDropInfo(slotIndex)
    
    		else:
    			self.__SendUseItemPacket(slotIndex)
    			#net.SendItemUsePacket(slotIndex)
    
    	def __UseItemQuestionDialog_OnCancel(self):
    		self.OnCloseQuestionDialog()
    
    	def __UseItemQuestionDialog_OnAccept(self):
    		self.__SendUseItemPacket(self.questionDialog.slotIndex)
    		self.OnCloseQuestionDialog()
    
    	def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
    		# °³ہخ»َء، ؟­°ي ہض´آ µ؟¾ب ¾ئہجإغ »ç؟ë ¹وءِ
    		if uiPrivateShopBuilder.IsBuildingPrivateShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
    			return
    		# BEGIN_OFFLINE_SHOP
    		if uiOfflineShopBuilder.IsBuildingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    
    		if uiOfflineShop.IsEditingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    		# END_OF_OFFLINE_SHOP
    		net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
    
    	def __SendUseItemPacket(self, slotPos):
    		# °³ہخ»َء، ؟­°ي ہض´آ µ؟¾ب ¾ئہجإغ »ç؟ë ¹وءِ
    		if uiPrivateShopBuilder.IsBuildingPrivateShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
    			return
    		# BEGIN_OFFLINE_SHOP
    		if uiOfflineShopBuilder.IsBuildingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    
    		if uiOfflineShop.IsEditingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    		# END_OF_OFFLINE_SHOP
    		net.SendItemUsePacket(slotPos)
    
    	def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
    		# °³ہخ»َء، ؟­°ي ہض´آ µ؟¾ب ¾ئہجإغ »ç؟ë ¹وءِ
    		if uiPrivateShopBuilder.IsBuildingPrivateShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
    			return
    		# BEGIN_OFFLINE_SHOP
    		if uiOfflineShopBuilder.IsBuildingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    
    		if uiOfflineShop.IsEditingOfflineShop():
    			chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
    			return
    		# END_OF_OFFLINE_SHOP
    		net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
    
    	def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
    		if app.ENABLE_DRAGON_SOUL_SYSTEM:
    			self.wndDragonSoulRefine = wndDragonSoulRefine
    
    	if app.ENABLE_CHANGELOOK_SYSTEM:
    		def SetChangeLookWindow(self, wndChangeLook):
    			self.wndChangeLook = wndChangeLook
    
    		def isShowChangeLookWindow(self):
    			if self.wndChangeLook:
    				if self.wndChangeLook.IsShow():
    					return 1
    			
    			return 0
    
    	if app.ENABLE_SASH_SYSTEM:
    		def SetSashWindow(self, wndSashCombine, wndSashAbsorption):
    			self.wndSashCombine = wndSashCombine
    			self.wndSashAbsorption = wndSashAbsorption
    
    		def isShowSashWindow(self):
    			if self.wndSashCombine:
    				if self.wndSashCombine.IsShow():
    					return 1
    
    			if self.wndSashAbsorption:
    				if self.wndSashAbsorption.IsShow():
    					return 1
    			
    			return 0
    
    	def OnMoveWindow(self, x, y):
    #		print "Inventory Global Pos : ", self.GetGlobalPosition()
    		if self.wndBelt:
    #			print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
    			self.wndBelt.AdjustPositionAndSize()
    
    		if self.wndBio:
    			self.wndBio.AdjustPositionAndSize()

     

  7. Hi

     

    I have a problem when I disassemble 200 doses that show problems and can not be solved
     

    picture

    https://metin2.download/picture/4oY9v1rWh12G63w1m0KaqfA4A9bVvHnA/.png

     

    client syserr

    0531 00:30:39664 :: Traceback (most recent call last):
    
    0531 00:30:39664 ::   File "ui.py", line 1052, in CallEvent
    
    0531 00:30:39664 ::   File "ui.py", line 89, in __call__
    
    0531 00:30:39664 ::   File "ui.py", line 71, in __call__
    
    0531 00:30:39664 ::   File "uiPickMoney.py", line 130, in OnAccept
    
    0531 00:30:39664 ::   File "ui.py", line 89, in __call__
    
    0531 00:30:39664 ::   File "ui.py", line 80, in __call__
    
    0531 00:30:39664 :: TypeError
    0531 00:30:39664 :: : 
    0531 00:30:39664 :: OnPickItem() takes exactly 2 arguments (3 given)
    0531 00:30:39664 :: 
    

     

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.