Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 03:52

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

Advertisement



[HELP] Python problem - new value in inventory

Discussion on [HELP] Python problem - new value in inventory within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
WyppyOne's Avatar
 
elite*gold: 120
Join Date: Jul 2012
Posts: 219
Received Thanks: 6
[HELP] Python problem - new value in inventory

I tried with this tut :


I hope isnt advertisement ...

OK,so i tried with that tutorial above to add a new line in inventory for coins ( not MD )

Uiinventory.py
PHP Code:
import ui
import player
import mouseModule
import net
import app
import snd
import item
import player
import chat
import grp
import uiScriptLocale
import uiRefine
import uiAttachMetin
import uiPickMoney
import uiCommon
import uiPrivateShopBuilder 
# 개인상점 열동안 ItemMove 방지
import localeInfo
import constInfo
import ime
import wndMgr

ITEM_MALL_BUTTON_ENABLE 
True



ITEM_FLAG_APPLICABLE 
<< 14

class CostumeWindow(ui.ScriptWindow):

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

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

        
self.isLoaded 0
        self
.wndInventory wndInventory;

        
self.__LoadWindow()

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

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

        
ui.ScriptWindow.Show(self)

    
def Close(self):
        
self.Hide()

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

        
self.isLoaded 1

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

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

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

        
self.wndEquip wndEquip

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

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

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

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

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

        self
.__LoadWindow()

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

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

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

    
def Close(self):
        
self.Hide()

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

        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):
        
xself.wndInventory.GetGlobalPosition()
        return 
148241
        
    def AdjustPositionAndSize
(self):
        
bxby self.GetBasePosition()
        
        if 
self.IsOpeningInventory():            
            
self.SetPosition(bxby)
            
self.SetSize(self.ORIGINAL_WIDTHself.GetHeight())
            
        else:
            
self.SetPosition(bx 138by);
            
self.SetSize(10self.GetHeight())

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

        
self.isLoaded 1

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

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

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

        
self.wndBeltInventorySlot wndBeltInventorySlot

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

        
self.wndBeltInventorySlot.RefreshSlot()

        
class 
InventoryWindow(ui.ScriptWindow):

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

    
questionDialog None
    tooltipItem 
None
    wndCostume 
None
    wndBelt 
None
    dlgPickMoney 
None
    
    sellingSlotNumber 
= -1
    isLoaded 
0
    isOpenedCostumeWindowWhenClosingInventory 
0        # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅ
    
isOpenedBeltWindowWhenClosingInventory 0        # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ

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

        
self.isOpenedBeltWindowWhenClosingInventory 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)

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

        
self.isLoaded 1

        
try:
            
pyScrLoader ui.PythonScriptLoader()

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

        try:
            
wndItem self.GetChild("ItemSlot")
            
wndEquip self.GetChild("EquipmentSlot")
            
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
            
self.wndMoney self.GetChild("Money")
            
self.wndMoneySlot self.GetChild("Money_Slot")
            
self.wndAP self.GetChild("AP_much")
            
self.mallButton self.GetChild2("MallButton")
            
self.DSSButton self.GetChild2("DSSButton")
            
self.costumeButton self.GetChild2("CostumeButton")
            
            
self.inventoryTab = []
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
            
self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        
self.wndCostume None
        
         
#####

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

    
def Destroy(self):
        
self.ClearDictionary()

        
self.dlgPickMoney.Destroy()
        
self.dlgPickMoney 0

        self
.refineDialog.Destroy()
        
self.refineDialog 0

        self
.attachMetinDialog.Destroy()
        
self.attachMetinDialog 0

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

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

    
def Hide(self):
        if 
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.dlgPickMoney:
            
self.dlgPickMoney.Close()
        
        
wndMgr.Hide(self.hWnd)
        
    
    
def Close(self):
        
self.Hide()

    
def SetInventoryPage(selfpage):
        
self.inventoryPageIndex page
        self
.inventoryTab[1-page].SetUp()
        
self.RefreshBagSlotWindow()

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

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

    
# DSSButton
    
def ClickDSSButton(self):
        print 
"click_dss_button"
        
self.interface.ToggleDragonSoulWindow()

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

    
def OpenPickMoneyDialog(self):

        if 
mouseModule.mouseController.isAttached():

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

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

            
mouseModule.mouseController.DeattachObject()

        else:
            
curMoney player.GetElk()

            if 
curMoney <= 0:
                return

            
self.dlgPickMoney.SetTitleName(localeInfo.PICK_MONEY_TITLE)
            
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
            
self.dlgPickMoney.Open(curMoney)
            
self.dlgPickMoney.SetMax(7# 인벤토리 990000 제한 버그 수정

    
def OnPickMoney(selfmoney):
        
mouseModule.mouseController.AttachMoney(selfplayer.SLOT_TYPE_INVENTORYmoney)

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

    
def __InventoryLocalSlotPosToGlobalSlotPos(selflocal):
        if 
player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
            return 
local

        
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE local

    def RefreshBagSlotWindow
(self):
        
getItemVNum=player.GetItemIndex
        getItemCount
=player.GetItemCount
        setItemVNum
=self.wndItem.SetItemSlot
        
        
for i in xrange(player.INVENTORY_PAGE_SIZE):
            
slotNumber self.__InventoryLocalSlotPosToGlobalSlotPos(i)
            
            
itemCount getItemCount(slotNumber)
            
# itemCount == 0이면 소켓을 비운다.
            
if == itemCount:
                
self.wndItem.ClearSlot(i)
                continue
            
elif 1 == itemCount:
                
itemCount 0
                
            itemVnum 
getItemVNum(slotNumber)
            
setItemVNum(iitemVnumitemCount)
            
            
## 자동물약 (HP: #72723 ~ #72726, SP: #72727 ~ #72730) 특수처리 - 아이템인데도 슬롯에 활성화/비활성화 표시를 위한 작업임 - [hyo]
            
if constInfo.IS_AUTO_POTION(itemVnum):
                
# metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량
                
metinSocket = [player.GetItemMetinSocket(slotNumberj) for j in xrange(player.METIN_SOCKET_MAX_NUM)]    
                
                if 
slotNumber >= player.INVENTORY_PAGE_SIZE:
                    
slotNumber -= player.INVENTORY_PAGE_SIZE
                    
                isActivated 
!= metinSocket[0]
                
                if 
isActivated:
                    
self.wndItem.ActivateSlot(slotNumber)
                    
potionType 0;
                    if 
constInfo.IS_AUTO_POTION_HP(itemVnum):
                        
potionType player.AUTO_POTION_TYPE_HP
                    elif constInfo
.IS_AUTO_POTION_SP(itemVnum):
                        
potionType player.AUTO_POTION_TYPE_SP                        
                    
                    usedAmount 
int(metinSocket[1])
                    
totalAmount int(metinSocket[2])                    
                    
player.SetAutoPotionInfo(potionTypeisActivated, (totalAmount usedAmount), totalAmountself.__InventoryLocalSlotPosToGlobalSlotPos(i))
                    
                else:
                    
self.wndItem.DeactivateSlot(slotNumber)            
                    
        
self.wndItem.RefreshSlot()

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

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

        if 
app.ENABLE_NEW_EQUIPMENT_SYSTEM:
            for 
i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
                
slotNumber player.NEW_EQUIPMENT_SLOT_START i
                itemCount 
getItemCount(slotNumber)
                if 
itemCount <= 1:
                    
itemCount 0
                setItemVNum
(slotNumbergetItemVNum(slotNumber), itemCount)
                print 
"ENABLE_NEW_EQUIPMENT_SYSTEM"slotNumberitemCountgetItemVNum(slotNumber)
                


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

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

    
def RefreshStatus(self):
        
money player.GetElk()
        
self.wndMoney.SetText(locale.NumberToMoneyString(money))
        
self.wndAP.SetText("%s PO" % (str(constInfo.ACHIEV_POINTS)))

    
def SetItemToolTip(selftooltipItem):
        
self.tooltipItem tooltipItem

    def SellItem
(self):
        if 
self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
            if 
self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
                
## 용혼석도 팔리게 하는 기능 추가하면서 인자 type 추가
                
net.SendShopSellPacketNew(self.sellingSlotNumberself.questionDialog.countplayer.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.sourcePosself.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(selfselectedSlotPos):
        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:
                
itemCount player.GetItemCount(attachedSlotPos)
                
attachedCount mouseModule.mouseController.GetAttachedItemCount()
                
self.__SendMoveItemPacket(attachedSlotPosselectedSlotPosattachedCount)

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

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

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

            
elif player.SLOT_TYPE_SAFEBOX == attachedSlotType:

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

                else:
                    
net.SendSafeboxCheckoutPacket(attachedSlotPosselectedSlotPos)

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

            
mouseModule.mouseController.DeattachObject()

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

        
itemSlotIndex self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)

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

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

            
mouseModule.mouseController.DeattachObject()

        else:

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

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

            
elif app.IsPressed(app.DIK_LSHIFT):
                
itemCount player.GetItemCount(itemSlotIndex)
                
                if 
itemCount 1:
                    
self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITEM_TITLE)
                    
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
                    
self.dlgPickMoney.Open(itemCount)
                    
self.dlgPickMoney.itemGlobalSlotIndex itemSlotIndex
                
#else:
                    #selectedItemVNum = player.GetItemIndex(itemSlotIndex)
                    #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)

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

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

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

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

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

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

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

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

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

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

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

            ## 이동시킨 곳이 장착 슬롯일 경우 아이템을 사용해서 장착 시킨다 - [levites]
            
if player.IsEquipmentSlot(dstItemSlotPos):

                
## 들고 있는 아이템이 장비일때만
                
if item.IsEquipmentVID(srcItemVID):
                    
self.__UseItem(srcItemSlotPos)

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

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

            item
.SelectItem(itemIndex)
            
## 안티 플레그 검사 빠져서 추가
            ## 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(itemNameitemCountitemPrice))
            
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
(selfscrollSlotPostargetSlotPos):

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

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

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

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

        
result player.CanRefine(scrollIndextargetSlotPos)

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

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

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

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

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

        if 
player.REFINE_OK != result:
            return

        
self.refineDialog.Open(scrollSlotPostargetSlotPos)

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

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

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

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

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

        
result player.CanAttachMetin(metinIndextargetSlotPos)

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

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

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

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

        if 
player.ATTACH_METIN_OK != result:
            return

        
self.attachMetinDialog.Open(metinSlotPostargetSlotPos)


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

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

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

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


    
def __IsUsableItemToItem(selfsrcItemVNumsrcSlotPos):
        
"다른 아이템에 사용할 수 있는 아이템인가?"

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

    def __CanUseSrcItemToDstItem
(selfsrcItemVNumsrcSlotPosdstSlotPos):
        
"대상 아이템에 사용할 수 있는가?"

        
if srcSlotPos == dstSlotPos:
            return 
False

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

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

        
else:
            
useType=item.GetUseType(srcItemVNum)

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

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

        
return False

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

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

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

        
return False

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

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

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

        
return False

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

        item
.SelectItem(dstItemVNum)

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

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

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

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

        
return True

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

        item
.SelectItem(dstItemVNum)

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

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

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

        
return True

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

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

        
if attrCount<4:
            return 
True
                                
        
return False

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

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

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

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

        if 
constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
            return

        
slotIndex self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)

        if 
app.ENABLE_DRAGON_SOUL_SYSTEM:
            if 
self.wndDragonSoulRefine.IsShow():
                
self.wndDragonSoulRefine.AutoSetItem((player.INVENTORYslotIndex), 1)
                return

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

    
def __UseItem(selfslotIndex):
        
ItemVNum player.GetItemIndex(slotIndex)
        
item.SelectItem(ItemVNum)
        if 
item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
            
self.questionDialog uiCommon.QuestionDialog()
            
self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
            
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
            
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
            
self.questionDialog.Open()
            
self.questionDialog.slotIndex slotIndex
        
            constInfo
.SET_ITEM_QUESTION_DIALOG_STATUS(1)

        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(selfsrcSlotPosdstSlotPos):
        
# 개인상점 열고 있는 동안 아이템 사용 방지
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemUseToItemPacket(srcSlotPosdstSlotPos)

    
def __SendUseItemPacket(selfslotPos):
        
# 개인상점 열고 있는 동안 아이템 사용 방지
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemUsePacket(slotPos)
    
    
def __SendMoveItemPacket(selfsrcSlotPosdstSlotPossrcItemCount):
        
# 개인상점 열고 있는 동안 아이템 사용 방지
        
if uiPrivateShopBuilder.IsBuildingPrivateShop():
            
chat.AppendChat(chat.CHAT_TYPE_INFOlocaleInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
            return

        
net.SendItemMovePacket(srcSlotPosdstSlotPossrcItemCount)
    
    
def SetDragonSoulRefineWindow(selfwndDragonSoulRefine):
        if 
app.ENABLE_DRAGON_SOUL_SYSTEM:
            
self.wndDragonSoulRefine wndDragonSoulRefine
            
    def OnMoveWindow
(selfxy):
#        print "Inventory Global Pos : ", self.GetGlobalPosition()
        
if self.wndBelt:
#            print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
            
self.wndBelt.AdjustPositionAndSize() 
Game.py
PHP Code:
def __ServerCommand_Build(self):
        
serverCommandList={
            
"ConsoleEnable"            self.__Console_Enable,
            
"DayMode"                self.__DayMode_Update
            
"depozit_index"            :self.__depozit_questindex,
            
"antiexp_index"            :self.__antiexp_questindex,
            
"teleporter_index"        :self.__teleporter_questindex,
            
"PRESERVE_DayMode"        self.__PRESERVE_DayMode_Update
            
"CloseRestartWindow"    self.__RestartDialog_Close,
            
"OpenPrivateShop"        self.__PrivateShop_Open,
            
"PartyHealReady"        self.PartyHealReady,
            
"ShowMeSafeboxPassword"    self.AskSafeboxPassword,
            
"CloseSafebox"            self.CommandCloseSafebox,

            
# ITEM_MALL
            
"CloseMall"                self.CommandCloseMall,
            
"ShowMeMallPassword"    self.AskMallPassword,
            
"item_mall"                self.__ItemMall_Open,
            
# END_OF_ITEM_MALL

            
"RefineSuceeded"        self.RefineSuceededMessage,
            
"RefineFailed"            self.RefineFailedMessage,
            
"xmas_snow"                self.__XMasSnow_Enable,
            
"xmas_boom"                self.__XMasBoom_Enable,
            
"xmas_song"                self.__XMasSong_Enable,
            
"xmas_tree"                self.__XMasTree_Enable,
            
"newyear_boom"            self.__XMasBoom_Enable,
            
"PartyRequest"            self.__PartyRequestQuestion,
            
"PartyRequestDenied"    self.__PartyRequestDenied,
            
"horse_state"            self.__Horse_UpdateState,
            
"hide_horse_state"        self.__Horse_HideState,
            
"WarUC"                    self.__GuildWar_UpdateMemberCount,
            
"test_server"            self.__EnableTestServerFlag,
            
"mall"            self.__InGameShop_Show,

            
# WEDDING
            
"lover_login"            self.__LoginLover,
            
"lover_logout"            self.__LogoutLover,
            
"lover_near"            self.__LoverNear,
            
"lover_far"                self.__LoverFar,
            
"lover_divorce"            self.__LoverDivorce,
            
"PlayMusic"                self.__PlayMusic,
            
# END_OF_WEDDING

            # PRIVATE_SHOP_PRICE_LIST
            
"MyShopPriceList"        self.__PrivateShop_PriceList,
            
# END_OF_PRIVATE_SHOP_PRICE_LIST
            #ACHIEVMENT
            
"OsiagnieciaPunkty"        self.__Achievment,
            
"achiev"                self.__ShowAchiev#type|level/mob/boss|points
        
}

        
self.serverCommander=stringCommander.Analyzer()
        for 
serverCommandItem in serverCommandList.items():
            
self.serverCommander.SAFE_RegisterCallBack(
                
serverCommandItem[0], serverCommandItem[1]
            )

    
def BINARY_ServerCommand_Run(selfline):
        
#dbg.TraceError(line)
        
try:
            
#print " BINARY_ServerCommand_Run", line
            
return self.serverCommander.Run(line)
        
except RuntimeErrormsg:
            
dbg.TraceError(msg)
            return 
0

    def __ProcessPreservedServerCommand
(self):
        try:
            
command net.GetPreservedServerCommand()
            while 
command:
                print 
" __ProcessPreservedServerCommand"command
                self
.serverCommander.Run(command)
                
command net.GetPreservedServerCommand()
        
except RuntimeErrormsg:
            
dbg.TraceError(msg)
            return 
0

    def PartyHealReady
(self):
        
self.interface.PartyHealReady()

    
def AskSafeboxPassword(self):
        
self.interface.AskSafeboxPassword()

    
# ITEM_MALL
    
def AskMallPassword(self):
        
self.interface.AskMallPassword()

    
def __ItemMall_Open(self):
        
self.interface.OpenItemMall();

    
def CommandCloseMall(self):
        
self.interface.CommandCloseMall()
    
# END_OF_ITEM_MALL

    
def RefineSuceededMessage(self):
        
snd.PlaySound("sound/ui/make_soket.wav")
        
self.PopupMessage(localeInfo.REFINE_SUCCESS)

    
def RefineFailedMessage(self):
        
snd.PlaySound("sound/ui/jaeryun_fail.wav")
        
self.PopupMessage(localeInfo.REFINE_FAILURE)

    
def CommandCloseSafebox(self):
        
self.interface.CommandCloseSafebox()

    
# PRIVATE_SHOP_PRICE_LIST
    
def __PrivateShop_PriceList(selfitemVNumitemPrice):
        
uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNumitemPrice)    
    
# END_OF_PRIVATE_SHOP_PRICE_LIST

    
def __Horse_HideState(self):
        
self.affectShower.SetHorseState(000)

    
def __Horse_UpdateState(selflevelhealthbattery):
        
self.affectShower.SetHorseState(int(level), int(health), int(battery))

    
def __IsXMasMap(self):
        
mapDict = ( "metin2_map_n_flame_01",
                    
"metin2_map_n_desert_01",
                    
"metin2_map_spiderdungeon",
                    
"metin2_map_deviltower1", )

        if 
background.GetCurrentMapName() in mapDict:
            return 
False

        
return True

    def __XMasSnow_Enable
(selfmode):

        
self.__XMasSong_Enable(mode)

        if 
"1"==mode:

            if 
not self.__IsXMasMap():
                return

            print 
"XMAS_SNOW ON"
            
background.EnableSnow(1)

        else:
            print 
"XMAS_SNOW OFF"
            
background.EnableSnow(0)

    
def __XMasBoom_Enable(selfmode):
        if 
"1"==mode:

            if 
not self.__IsXMasMap():
                return

            print 
"XMAS_BOOM ON"
            
self.__DayMode_Update("dark")
            
self.enableXMasBoom True
            self
.startTimeXMasBoom app.GetTime()
        else:
            print 
"XMAS_BOOM OFF"
            
self.__DayMode_Update("light")
            
self.enableXMasBoom False

    def __XMasTree_Enable
(selfgrade):

        print 
"XMAS_TREE "grade
        background
.SetXMasTree(int(grade))

    
def __XMasSong_Enable(selfmode):
        if 
"1"==mode:
            print 
"XMAS_SONG ON"

            
XMAS_BGM "xmas.mp3"

            
if app.IsExistFile("BGM/" XMAS_BGM)==1:
                if 
musicInfo.fieldMusic != "":
                    
snd.FadeOutMusic("BGM/" musicInfo.fieldMusic)

                
musicInfo.fieldMusic=XMAS_BGM
                snd
.FadeInMusic("BGM/" musicInfo.fieldMusic)

        else:
            print 
"XMAS_SONG OFF"

            
if musicInfo.fieldMusic != "":
                
snd.FadeOutMusic("BGM/" musicInfo.fieldMusic)

            
musicInfo.fieldMusic=musicInfo.METIN2THEMA
            snd
.FadeInMusic("BGM/" musicInfo.fieldMusic)

    
def __RestartDialog_Close(self):
        
self.interface.CloseRestartDialog()

    
def __Console_Enable(self):
        
constInfo.CONSOLE_ENABLE True
        self
.consoleEnable True
        app
.EnableSpecialCameraMode()
        
ui.EnablePaste(True)

    
## PrivateShop
    
def __PrivateShop_Open(self):
        
self.interface.OpenPrivateShopInputNameDialog()

    
def BINARY_PrivateShop_Appear(selfvidtext):
        
self.interface.AppearPrivateShop(vidtext)

    
def BINARY_PrivateShop_Disappear(selfvid):
        
self.interface.DisappearPrivateShop(vid)

    
## DayMode
    
def __PRESERVE_DayMode_Update(selfmode):
        if 
"light"==mode:
            
background.SetEnvironmentData(0)
        
elif "dark"==mode:

            if 
not self.__IsXMasMap():
                return

            
background.RegisterEnvironmentData(1constInfo.ENVIRONMENT_NIGHT)
            
background.SetEnvironmentData(1)

    
def __DayMode_Update(selfmode):
        if 
"light"==mode:
            
self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
        
elif "dark"==mode:

            if 
not self.__IsXMasMap():
                return

            
self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)

    
def __DayMode_OnCompleteChangeToLight(self):
        
background.SetEnvironmentData(0)
        
self.curtain.FadeIn()

    
def __DayMode_OnCompleteChangeToDark(self):
        
background.RegisterEnvironmentData(1constInfo.ENVIRONMENT_NIGHT)
        
background.SetEnvironmentData(1)
        
self.curtain.FadeIn()

    
## XMasBoom
    
def __XMasBoom_Update(self):

        
self.BOOM_DATA_LIST = ( (25), (52), (73), (103), (205) )
        if 
self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
            return

        
boomTime self.BOOM_DATA_LIST[self.indexXMasBoom][0]
        
boomCount self.BOOM_DATA_LIST[self.indexXMasBoom][1]

        if 
app.GetTime() - self.startTimeXMasBoom boomTime:

            
self.indexXMasBoom += 1

            
for i in xrange(boomCount):
                
self.__XMasBoom_Boom()

    
def __XMasBoom_Boom(self):
        
xyplayer.GetMainCharacterPosition()
        
randX app.GetRandom(-150150)
        
randY app.GetRandom(-150150)

        
snd.PlaySound3D(x+randX, -y+randYz"sound/common/etc/salute.mp3")

    
def __PartyRequestQuestion(selfvid):
        
vid int(vid)
        
partyRequestQuestionDialog uiCommon.QuestionDialog()
        
partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
        
partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
        
partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
        
partyRequestQuestionDialog.SetAcceptEvent(lambda arg=Trueself.__AnswerPartyRequest(arg))
        
partyRequestQuestionDialog.SetCancelEvent(lambda arg=Falseself.__AnswerPartyRequest(arg))
        
partyRequestQuestionDialog.Open()
        
partyRequestQuestionDialog.vid vid
        self
.partyRequestQuestionDialog partyRequestQuestionDialog

    def __AnswerPartyRequest
(selfanswer):
        if 
not self.partyRequestQuestionDialog:
            return

        
vid self.partyRequestQuestionDialog.vid

        
if answer:
            
net.SendChatPacket("/party_request_accept " str(vid))
        else:
            
net.SendChatPacket("/party_request_deny " str(vid))

        
self.partyRequestQuestionDialog.Close()
        
self.partyRequestQuestionDialog None

    def __PartyRequestDenied
(self):
        
self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)

    
def __EnableTestServerFlag(self):
        
app.EnableTestServerFlag()

    
def __InGameShop_Show(selfurl):
        if 
constInfo.IN_GAME_SHOP_ENABLE:
            
self.interface.OpenWebWindow(url)

    
# WEDDING
    
def __LoginLover(self):
        if 
self.interface.wndMessenger:
            
self.interface.wndMessenger.OnLoginLover()

    
def __LogoutLover(self):
        if 
self.interface.wndMessenger:
            
self.interface.wndMessenger.OnLogoutLover()
        if 
self.affectShower:
            
self.affectShower.HideLoverState()

    
def __LoverNear(self):
        if 
self.affectShower:
            
self.affectShower.ShowLoverState()

    
def __LoverFar(self):
        if 
self.affectShower:
            
self.affectShower.HideLoverState()

    
def __LoverDivorce(self):
        if 
self.interface.wndMessenger:
            
self.interface.wndMessenger.ClearLoverInfo()
        if 
self.affectShower:
            
self.affectShower.ClearLoverState()

    
def __PlayMusic(selfflagfilename):
        
flag int(flag)
        if 
flag:
            
snd.FadeOutAllMusic()
            
musicInfo.SaveLastPlayFieldMusic()
            
snd.FadeInMusic("BGM/" filename)
        else:
            
snd.FadeOutAllMusic()
            
musicInfo.LoadLastPlayFieldMusic()
            
snd.FadeInMusic("BGM/" musicInfo.fieldMusic)

    
# END_OF_WEDDING

    # Maxmi Start
    
def __menubg(self):
        if 
constInfo.MENU_BG == 0:
            
constInfo.MENU_BG 1
            self
.menu_bg.Show()
            
self.Activare_Menu.Hide()
            
self.Dezactivare_Menu.Show()
        else:
            
constInfo.MENU_BG 0
            self
.menu_bg.Hide()
            
self.Activare_Menu.Show()
            
self.Dezactivare_Menu.Hide()
    
def __BonusPage(self):
        
import PaginaBonusuri
        
global BPisLodaded
        
try:
            if 
BPisLodaded == 0:
                
BPisLodaded 1
                exec 
'PaginaBonusuri.BonusBoardDialog().Show()'
            
else:
                
exec 'PaginaBonusuri.BonusBoardDialog().Hide()'
                
BPisLodaded 0
        except ImportError
:
            
import dbg,app
            dbg
.Trace('PaginaBonusuri.py Importing error')
            
app.Abort
    def __uiswitchbonus
(self):
        
import uiSwitchBonus
        self
.BoniSwitcher uiSwitchBonus.OptionDialog() 
        
self.BoniSwitcher.Show()
    
def __depozit_questindex(selfvalue):
        
constInfo.DEPOZIT_QUESTINDEX int(value)
    
def __activare_depozit(self):
        
activare_depozit constInfo.DEPOZIT_QUESTINDEX
        event
.QuestButtonClick(activare_depozit
    
def __antiexp_questindex(selfvalue1):
        
constInfo.ANTIEXP_QUESTINDEX int(value1)
    
def __activare_antiexp(self):
        
activare_antiexp constInfo.ANTIEXP_QUESTINDEX
        event
.QuestButtonClick(activare_antiexp)
    
def __teleporter_questindex(selfvalue2):
        
constInfo.TELEPORTER_QUESTINDEX int(value2)
    
def __activare_teleporter(self):
        
activare_teleporter constInfo.TELEPORTER_QUESTINDEX
        event
.QuestButtonClick(activare_teleporter)
    
# Maxmi Son
    
    
def __Achievment(selfpoint=0):
        
constInfo.ACHIEV_POINTS int(point)
        
    
def __ShowAchiev(selfdata=None):
        
self.dlgAchievment.Show(str(data)) #0-achiev/1-friend 
I deleted first part of game.py because was too long

Sysser :
PHP Code:
0307 20:22:29455 :: GRANNYr:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000fwhich doesn't match this version of Granny (0x80000010).  Automatic conversion will be attempted.
0307 20:22:49991 :: Traceback (most recent call last):

0307 20:22:49991 ::   File "networkModule.py", line 247, in SetGamePhase

0307 20:22:49991 ::   File "game.py", line 100, in __init__

0307 20:22:49992 ::   File "interfaceModule.py", line 288, in MakeInterface

0307 20:22:49992 ::   File "interfaceModule.py", line 172, in __MakeWindows

0307 20:22:49992 ::   File "uiInventory.py", line 262, in __init__

0307 20:22:49992 ::   File "uiInventory.py", line 399, in __LoadWindow

0307 20:22:49992 ::   File "uiInventory.py", line 611, in RefreshStatus

0307 20:22:49993 :: NameError
0307 20:22:49993 :: : 
0307 20:22:49993 :: global name '
locale' is not defined
0307 20:22:49993 :: 
Game.py : search for :
PHP Code:
#ACHIEVMENT
            
"OsiagnieciaPunkty"        self.__Achievment,
            
"achiev"                self.__ShowAchiev#type|level/mob/boss|points 
The def are at the bottom of the file

Uiinventory.py : search for :
PHP Code:
self.wndAP 
WyppyOne is offline  
Old 03/07/2015, 20:23   #2
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Just replace all the "locale."-parts with "localeInfo."

Kind Regards
Lefloyd is offline  
Reply


Similar Threads Similar Threads
[Release]Inventory Safebox [C++ && Python]
12/21/2014 - Metin2 PServer Guides & Strategies - 13 Replies
#closerequest
[Selling] Inventory Password -| Python
09/04/2014 - Metin2 Trading - 1 Replies
KFWorksİ System; Password,Mysql in register. Güvenlik Sistemi By Fatihbab34? - YouTube Skype : fatih.sakarya00
Python inventory bonus- problem
03/16/2014 - Metin2 Private Server - 0 Replies
Hi , can someone add me python inventory bonus dialog to my client files please ? ? Because everytime i have got problem :( Thanks. Here is my Uiinventory.py: import ui import player import mouseModule import net import app import snd
[Python]Inventory manager + crashfileunpacker
04/13/2013 - Metin2 Private Server - 0 Replies
edit .
[PYTHON] inventory bonus
07/08/2012 - Metin2 Private Server - 0 Replies
xxxxxxxx



All times are GMT +2. The time now is 03:52.


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

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