[ Postat de pe iPhone ]





Urca-le pe mega/girlshare.alex9987 scrie:Acesta este uiinveontory.py din rootIar acesta inventorywindow.py din localeimport 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 locale
import constInfo
import ime
if locale.IsEUROPE()and app.GetLocalePath() != "locale/sg" or locale.IsYMIR() or locale.IsJAPAN():
ITEM_MALL_BUTTON_ENABLE = TRUE
else:
ITEM_MALL_BUTTON_ENABLE = FALSE
ITEM_FLAG_APPLICABLE = 1 << 14
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")
def __init__(self):
ui.ScriptWindow.__init__(self)
self.questionDialog = None
self.tooltipItem = None
self.sellingSlotNumber = -1
self.isLoaded = 0
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self):
self.__LoadWindow()
ui.ScriptWindow.Show(self)
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))
self.wndMoney = self.GetChild("Money")
self.wndMoneySlot = self.GetChild("Money_Slot")
self.mallButton = self.GetChild2("MallButton")
##BonusPageDialog
self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
##BonusPageDialog
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"))
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=0: self.SetInventoryPage(arg))
self.inventoryTab[1].SetEvent(lambda arg=1: 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
# MallButton
if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))
#####
## Refresh
self.SetInventoryPage(0)
self.SetEquipmentPage(0)
self.RefreshItemSlot()
self.RefreshStatus()
self.RefreshBonus()
def Destroy(self):
self.ClearDictionary()
self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0
self.refineDialog.Destroy()
self.refineDialog = 0
self.attachMetinDialog.Destroy()
self.attachMetinDialog = 0
self.tooltipItem = None
self.wndItem = 0
self.wndEquip = 0
self.dlgPickMoney = 0
self.wndMoney = 0
self.wndMoneySlot = 0
self.questionDialog = None
self.mallButton = None
self.inventoryTab = []
self.equipmentTab = []
def Close(self):
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
self.OnCloseQuestionDialog()
self.dlgPickMoney.Close()
self.Hide()
def SetInventoryPage(self, page):
self.inventoryPageIndex = page
self.inventoryTab[1-page].SetUp()
self.RefreshBagSlotWindow()
def SetEquipmentPage(self, page):
self.equipmentPageIndex = page
self.equipmentTab[1-page].SetUp()
self.RefreshEquipSlotWindow()
def ClickMallButton(self):
print "click_mall_button"
net.SendChatPacket("/click_mall")
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(locale.PICK_MONEY_TITLE)
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
self.dlgPickMoney.Open(curMoney)
self.dlgPickMoney.SetMax(7) # 인벤토리 990000 제한 버그 수정
def OnPickMoney(self, money):
mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
def OnPickItem(self, count):
itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
if player.IsEquipmentSlot(local):
return local
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
##BonusPageDialog
def __LoadRefreshBonus(self):
self.RefreshBonus()
def RefreshBonus(self):
try:
self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
except:
import exception
exception.Abort("InventoryWindow.RefreshBonus.BindObject")
##BonusPageDialog
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)
if itemCount <= 1:
itemCount = 0
setItemVNum(i, getItemVNum(slotNumber), itemCount)
self.wndItem.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(slotNumber, getItemVNum(slotNumber), itemCount)
self.wndEquip.RefreshSlot()
def RefreshItemSlot(self):
self.RefreshBagSlotWindow()
self.RefreshEquipSlotWindow()
def RefreshStatus(self):
money = player.GetElk()
self.wndMoney.SetText(locale.NumberToMoneyString(money))
def SetItemToolTip(self, tooltipItem):
self.tooltipItem = tooltipItem
def SellItem(self):
net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count)
snd.PlaySound("sound/ui/money.wav")
self.OnCloseQuestionDialog()
def OnDetachMetinFromItem(self):
if None == self.questionDialog:
return
#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.OnCloseQuestionDialog()
def OnCloseQuestionDialog(self):
if self.questionDialog:
self.questionDialog.Close()
self.questionDialog = None
## Slot Event
def SelectEmptySlot(self, selectedSlotPos):
if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
return
selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
itemCount = player.GetItemCount(attachedSlotPos)
attachedCount = mouseModule.mouseController.GetAttachedItemCount()
self.__SendMoveItemPacket(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_DROP_QUESTION_DIALOG_STATUS() == 1:
return
itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
self.__DropSrcItemToDestItemInInventory(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, locale.SHOP_BUY_INFO)
elif app.IsPressed(app.DIK_LALT) or (app.IsPressed(app.DIK_LALT) and app.IsPressed(app.DIK_LSHIFT)):
link = player.GetItemLink(itemSlotIndex)
ime.PasteString(link)
elif app.IsPressed(app.DIK_LSHIFT):
itemCount = player.GetItemCount(itemSlotIndex)
if itemCount > 1:
self.dlgPickMoney.SetTitleName(locale.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_INVENTORY, itemSlotIndex)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.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 __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
if srcItemSlotPos == dstItemSlotPos:
return
if item.IsRefineScroll(srcItemVID):
self.RefineItem(srcItemSlotPos, dstItemSlotPos)
self.wndItem.SetUseMode(FALSE)
elif item.IsMetin(srcItemVID):
self.AttachMetinToItem(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)
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)
item.SelectItem(itemIndex)
itemPrice = item.GetISellItemPrice()
if item.Is1GoldItem():
itemPrice = itemCount / itemPrice / 5
else:
itemPrice = itemPrice * itemCount / 5
item.GetItemName(itemIndex)
itemName = item.GetItemName()
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(locale.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
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, locale.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, locale.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, locale.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, locale.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.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 not player.CanDetach(scrollIndex, targetSlotPos):
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(locale.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(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, locale.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_SOCKET(itemName))
elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM)
if player.ATTACH_METIN_OK != result:
return
self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
def OverOutItem(self):
self.wndItem.SetUsableItem(FALSE)
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
def OverInItem(self, overSlotPos):
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(attachedItemVNum, attachedSlotPos, overSlotPos):
self.wndItem.SetUsableItem(TRUE)
self.__ShowToolTip(overSlotPos)
return
self.__ShowToolTip(overSlotPos)
def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
"다른 아이템에 사용할 수 있는 아이템인가?"
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(srcItemVNum) in self.USE_TYPE_TUPLE:
return TRUE
return FALSE
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
"대상 아이템에 사용할 수 있는가?"
if srcSlotPos == dstSlotPos:
return FALSE
if item.IsRefineScroll(srcItemVNum):
if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
return TRUE
elif item.IsMetin(srcItemVNum):
if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
return TRUE
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 (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(dstSlotPos, srcItemVNum):
return TRUE;
return FALSE
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 __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
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()
def OnPressEscapeKey(self):
self.Close()
return TRUE
def UseItemSlot(self, slotIndex):
if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
return
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
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(locale.INVENTORY_REALLY_USE_ITEM)
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
self.questionDialog.Open()
self.questionDialog.slotIndex = slotIndex
else:
self.__SendUseItemPacket(slotIndex)
#net.SendItemUsePacket(slotIndex)
def __UseItemQuestionDialog_OnCancel(self):
self.OnCloseQuestionDialog()
def __UseItemQuestionDialog_OnAccept(self):
self.__SendUseItemPacket(self.questionDialog.slotIndex)
if self.questionDialog:
self.questionDialog.Close()
self.questionDialog = None
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
def __SendUseItemPacket(self, slotPos):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUsePacket(slotPos)
def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
##BonusPageDialog
def OnUpdate(self):
if self.isLoaded == 1:
self.__LoadRefreshBonus()
##BonusPageDialogimport uiScriptLocale
MIDDLE_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_01.sub"
EQUIPMENT_START_INDEX = 90
window = {
"name" : "InventoryWindow",
## 600 - (width + ¿À¸¥ÂÊÀ¸·Î ºÎÅÍ ¶ç¿ì±â 24 px)
"x" : SCREEN_WIDTH - 124 - 176,
"y" : SCREEN_HEIGHT - 37 - 565,
"style" : ("movable", "float",),
"width" : 176+124,
"height" : 565,
"children" :
(
{
"name" : "board",
"type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176+124,
"height" : 565,
"children" :
(
## Title
{
"name" : "TitleBar",
"type" : "titlebar",
"style" : ("attach",),
"x" : 8,
"y" : 7,
"width" : 161+124,
"color" : "yellow",
"children" :
(
{
"name":"TitleName",
"type":"text",
"x":77+62,
"y":3,
"text":uiScriptLocale.INVENTORY_TITLE,
"text_horizontal_align":"center"
},
),
},
## Equipment Slot
{
"name" : "Equipment_Base",
"type" : "image",
"x" : 10,
"y" : 33,
"image" : "d:/ymir work/ui/game/windows/equipment_base.sub",
"children" :
(
{
"name" : "EquipmentSlot",
"type" : "slot",
"x" : 3,
"y" : 3,
"width" : 150,
"height" : 182,
"slot" : (
{"index":EQUIPMENT_START_INDEX+0, "x":39, "y":37, "width":32, "height":64},
{"index":EQUIPMENT_START_INDEX+1, "x":39, "y":2, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+2, "x":39, "y":145, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+3, "x":75, "y":67, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+4, "x":3, "y":3, "width":32, "height":96},
{"index":EQUIPMENT_START_INDEX+5, "x":114, "y":84, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+6, "x":114, "y":52, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+7, "x":2, "y":113, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+8, "x":75, "y":113, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+9, "x":114, "y":1, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
),
},
## MallButton
{
"name" : "MallButton",
"type" : "button",
"x" : 120,
"y" : 150,
"tooltip_text" : uiScriptLocale.MALL_TITLE,
"default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
"over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
"down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
},
{
"name" : "Equipment_Tab_01",
"type" : "radio_button",
"x" : 86,
"y" : 161,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
"children" :
(
{
"name" : "Equipment_Tab_01_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "I",
},
),
},
{
"name" : "Equipment_Tab_02",
"type" : "radio_button",
"x" : 86 + 32,
"y" : 161,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
"children" :
(
{
"name" : "Equipment_Tab_02_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "II",
},
),
},
),
},
##BonusPageDialog
{
"name" : "Bonus_Page",
"type" : "window",
"x" : 166,
"y" : 34,
"width" : 124,
"height" : 565-24,
"children" :
(
{
"name" : "BonusBase1",
"type" : "horizontalbar",
"x" : 4,
"y" : 0,
"width" : 120,
"children" :
(
{
"name" : "bonus_text_1",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Defensiva",
},
),
},
{
"name" : "Sword_defence",
"type" : "text",
"x" : 5,
"y" : 1*18,
"text" : "Sabie:"
},
{
"name" : "Sword_def",
"type" : "window",
"x" : 72,
"y" : 1*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sword_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sword_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Twohand_defence",
"type" : "text",
"x" : 5,
"y" : 2*18,
"text" : "Doua-maini:"
},
{
"name" : "Twohand_def",
"type" : "window",
"x" : 72,
"y" : 2*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Twohand_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Twohand_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Knife_defence",
"type" : "text",
"x" : 5,
"y" : 3*18,
"text" : "Pumnal:"
},
{
"name" : "Knife_def",
"type" : "window",
"x" : 72,
"y" : 3*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Knife_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Knife_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Bow_defence",
"type" : "text",
"x" : 5,
"y" : 4*18,
"text" : "Arc:"
},
{
"name" : "Bow_def",
"type" : "window",
"x" : 72,
"y" : 4*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Bow_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Bow_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Bell_defence",
"type" : "text",
"x" : 5,
"y" : 5*18,
"text" : "Clopot:"
},
{
"name" : "Bell_def",
"type" : "window",
"x" : 72,
"y" : 5*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Bell_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Bell_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Fan_defence",
"type" : "text",
"x" : 5,
"y" : 6*18,
"text" : "Evantai:"
},
{
"name" : "Fan_def",
"type" : "window",
"x" : 72,
"y" : 6*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Fan_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Fan_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Magic_defence",
"type" : "text",
"x" : 5,
"y" : 7*18,
"text" : "Magie:"
},
{
"name" : "Magic_def",
"type" : "window",
"x" : 72,
"y" : 7*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Magic_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Magic_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Poison_defence",
"type" : "text",
"x" : 5,
"y" : 8*18,
"text" : "Otrava:"
},
{
"name" : "Poison_def",
"type" : "window",
"x" : 72,
"y" : 8*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Poison_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Poison_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Warrior_defence",
"type" : "text",
"x" : 5,
"y" : 9*18,
"text" : "Razboinic:"
},
{
"name" : "Warrior_def",
"type" : "window",
"x" : 72,
"y" : 9*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Warrior_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Warrior_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Assassin_defence",
"type" : "text",
"x" : 5,
"y" : 10*18,
"text" : "Ninja:"
},
{
"name" : "Assassin_def",
"type" : "window",
"x" : 72,
"y" : 10*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Assassin_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Assassin_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Sura_defence",
"type" : "text",
"x" : 5,
"y" : 11*18,
"text" : "Sura:"
},
{
"name" : "Sura_def",
"type" : "window",
"x" : 72,
"y" : 11*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sura_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sura_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Mage_defence",
"type" : "text",
"x" : 5,
"y" : 12*18,
"text" : "Saman:"
},
{
"name" : "Mage_def",
"type" : "window",
"x" : 72,
"y" : 12*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Mage_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Mage_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "BonusBase2",
"type" : "horizontalbar",
"x" : 4,
"y" : 235,
"width" : 120,
"children" :
(
{
"name" : "bonus_text_1",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Ofensiva",
},
),
},
{
"name" : "Critical_chance",
"type" : "text",
"x" : 5,
"y" : 235+(1*18),
"text" : "Critica:"
},
{
"name" : "Crit",
"type" : "window",
"x" : 72,
"y" : 235+(1*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Crit_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Crit_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Pierce_chance",
"type" : "text",
"x" : 5,
"y" : 235+(2*18),
"text" : "Patrundere:"
},
{
"name" : "Pierce",
"type" : "window",
"x" : 72,
"y" : 235+(2*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Pierce_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Pierce_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Hit_damage",
"type" : "text",
"x" : 5,
"y" : 235+(3*18),
"text" : "Pg. Med:"
},
{
"name" : "Hitdmg",
"type" : "window",
"x" : 72,
"y" : 235+(3*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Hitdmg_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Hitdmg_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Skill_damage",
"type" : "text",
"x" : 5,
"y" : 235+(4*18),
"text" : "Pg. Comp:"
},
{
"name" : "Skilldmg",
"type" : "window",
"x" : 72,
"y" : 235+(4*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Skilldmg_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Skilldmg_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Halfhumans",
"type" : "text",
"x" : 5,
"y" : 235+(5*18),
"text" : "Semi-Om:"
},
{
"name" : "Halfhuman",
"type" : "window",
"x" : 72,
"y" : 235+(5*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Halfhuman_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Halfhuman_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Undeads",
"type" : "text",
"x" : 5,
"y" : 235+(6*18),
"text" : "Vampiri:"
},
{
"name" : "Undead",
"type" : "window",
"x" : 72,
"y" : 235+(6*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Undead_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Undead_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Devil_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(7*18),
"text" : "Diavol:"
},
{
"name" : "Devil",
"type" : "window",
"x" : 72,
"y" : 235+(7*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Devil_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Devil_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Warrior_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(8*18),
"text" : "Razboinic:"
},
{
"name" : "Warrior_str",
"type" : "window",
"x" : 72,
"y" : 235+(8*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Warrior_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Warrior_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Assassin_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(9*18),
"text" : "Ninja:"
},
{
"name" : "Assassin_str",
"type" : "window",
"x" : 72,
"y" : 235+(9*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Assassin_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Assassin_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Sura_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(10*18),
"text" : "Sura:"
},
{
"name" : "Assassin_str",
"type" : "window",
"x" : 72,
"y" : 235+(10*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sura_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sura_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Mage_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(11*18),
"text" : "Saman:"
},
{
"name" : "Mage_str",
"type" : "window",
"x" : 72,
"y" : 235+(11*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Mage_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Mage_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "CopyRight",
"type" : "horizontalbar",
"x" : 4,
"y" : 470,
"width" : 120,
"children" :
(
{
"name" : "(C)",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Metin2 Aeros",
"r" : 1.0,
"g" : 0.0,
"b" : 0.0,
"a" : 1.0,
},
),
},
),
},
##InventoryTabs
{
"name" : "Inventory_Tab_01",
"type" : "radio_button",
"x" : 10,
"y" : 33 + 191,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,
"children" :
(
{
"name" : "Inventory_Tab_01_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "I",
},
),
},
{
"name" : "Inventory_Tab_02",
"type" : "radio_button",
"x" : 10 + 78,
"y" : 33 + 191,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,
"children" :
(
{
"name" : "Inventory_Tab_02_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "II",
},
),
},
## Item Slot
{
"name" : "ItemSlot",
"type" : "grid_table",
"x" : 8,
"y" : 246,
"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,
"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},
{
"name":"Money_Slot",
"type":"button",
"x":8+20,
"y":28,
# "horizontal_align":"center",
"vertical_align":"bottom",
"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"children" :
(
{
"name":"Money_Icon",
"type":"image",
"x":-18,
"y":2,
"image":"d:/ymir work/ui/game/windows/money_icon.sub",
},
{
"name" : "Money",
"type" : "text",
"x" : 3,
"y" : 3,
"horizontal_align" : "right",
"text_horizontal_align" : "right",
"text" : "123456789",
},
),
},
),
},
),
}

Poftim[Tupeu] scrie:Urca-le pe mega/girlshare.alex9987 scrie:Acesta este uiinveontory.py din rootIar acesta inventorywindow.py din localeimport 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 locale
import constInfo
import ime
if locale.IsEUROPE()and app.GetLocalePath() != "locale/sg" or locale.IsYMIR() or locale.IsJAPAN():
ITEM_MALL_BUTTON_ENABLE = TRUE
else:
ITEM_MALL_BUTTON_ENABLE = FALSE
ITEM_FLAG_APPLICABLE = 1 << 14
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")
def __init__(self):
ui.ScriptWindow.__init__(self)
self.questionDialog = None
self.tooltipItem = None
self.sellingSlotNumber = -1
self.isLoaded = 0
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self):
self.__LoadWindow()
ui.ScriptWindow.Show(self)
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))
self.wndMoney = self.GetChild("Money")
self.wndMoneySlot = self.GetChild("Money_Slot")
self.mallButton = self.GetChild2("MallButton")
##BonusPageDialog
self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
##BonusPageDialog
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"))
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=0: self.SetInventoryPage(arg))
self.inventoryTab[1].SetEvent(lambda arg=1: 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
# MallButton
if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton))
#####
## Refresh
self.SetInventoryPage(0)
self.SetEquipmentPage(0)
self.RefreshItemSlot()
self.RefreshStatus()
self.RefreshBonus()
def Destroy(self):
self.ClearDictionary()
self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0
self.refineDialog.Destroy()
self.refineDialog = 0
self.attachMetinDialog.Destroy()
self.attachMetinDialog = 0
self.tooltipItem = None
self.wndItem = 0
self.wndEquip = 0
self.dlgPickMoney = 0
self.wndMoney = 0
self.wndMoneySlot = 0
self.questionDialog = None
self.mallButton = None
self.inventoryTab = []
self.equipmentTab = []
def Close(self):
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
self.OnCloseQuestionDialog()
self.dlgPickMoney.Close()
self.Hide()
def SetInventoryPage(self, page):
self.inventoryPageIndex = page
self.inventoryTab[1-page].SetUp()
self.RefreshBagSlotWindow()
def SetEquipmentPage(self, page):
self.equipmentPageIndex = page
self.equipmentTab[1-page].SetUp()
self.RefreshEquipSlotWindow()
def ClickMallButton(self):
print "click_mall_button"
net.SendChatPacket("/click_mall")
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(locale.PICK_MONEY_TITLE)
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
self.dlgPickMoney.Open(curMoney)
self.dlgPickMoney.SetMax(7) # 인벤토리 990000 제한 버그 수정
def OnPickMoney(self, money):
mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
def OnPickItem(self, count):
itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
if player.IsEquipmentSlot(local):
return local
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
##BonusPageDialog
def __LoadRefreshBonus(self):
self.RefreshBonus()
def RefreshBonus(self):
try:
self.GetChild("Sword_def_Value").SetText(str(player.GetStatus(69)))
self.GetChild("Twohand_def_Value").SetText(str(player.GetStatus(70)))
self.GetChild("Knife_def_Value").SetText(str(player.GetStatus(71)))
self.GetChild("Bow_def_Value").SetText(str(player.GetStatus(74)))
self.GetChild("Bell_def_Value").SetText(str(player.GetStatus(72)))
self.GetChild("Fan_def_Value").SetText(str(player.GetStatus(73)))
self.GetChild("Magic_def_Value").SetText(str(player.GetStatus(77)))
self.GetChild("Poison_def_Value").SetText(str(player.GetStatus(81)))
self.GetChild("Warrior_def_Value").SetText(str(player.GetStatus(59)))
self.GetChild("Assassin_def_Value").SetText(str(player.GetStatus(60)))
self.GetChild("Sura_def_Value").SetText(str(player.GetStatus(61)))
self.GetChild("Mage_def_Value").SetText(str(player.GetStatus(62)))
self.GetChild("Crit_Value").SetText(str(player.GetStatus(40)))
self.GetChild("Pierce_Value").SetText(str(player.GetStatus(41)))
self.GetChild("Hitdmg_Value").SetText(str(player.GetStatus(122)))
self.GetChild("Skilldmg_Value").SetText(str(player.GetStatus(121)))
self.GetChild("Halfhuman_Value").SetText(str(player.GetStatus(43)))
self.GetChild("Undead_Value").SetText(str(player.GetStatus(47)))
self.GetChild("Devil_Value").SetText(str(player.GetStatus(48)))
self.GetChild("Warrior_str_Value").SetText(str(player.GetStatus(54)))
self.GetChild("Assassin_str_Value").SetText(str(player.GetStatus(55)))
self.GetChild("Sura_str_Value").SetText(str(player.GetStatus(56)))
self.GetChild("Mage_str_Value").SetText(str(player.GetStatus(57)))
except:
import exception
exception.Abort("InventoryWindow.RefreshBonus.BindObject")
##BonusPageDialog
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)
if itemCount <= 1:
itemCount = 0
setItemVNum(i, getItemVNum(slotNumber), itemCount)
self.wndItem.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(slotNumber, getItemVNum(slotNumber), itemCount)
self.wndEquip.RefreshSlot()
def RefreshItemSlot(self):
self.RefreshBagSlotWindow()
self.RefreshEquipSlotWindow()
def RefreshStatus(self):
money = player.GetElk()
self.wndMoney.SetText(locale.NumberToMoneyString(money))
def SetItemToolTip(self, tooltipItem):
self.tooltipItem = tooltipItem
def SellItem(self):
net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count)
snd.PlaySound("sound/ui/money.wav")
self.OnCloseQuestionDialog()
def OnDetachMetinFromItem(self):
if None == self.questionDialog:
return
#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.OnCloseQuestionDialog()
def OnCloseQuestionDialog(self):
if self.questionDialog:
self.questionDialog.Close()
self.questionDialog = None
## Slot Event
def SelectEmptySlot(self, selectedSlotPos):
if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1:
return
selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
itemCount = player.GetItemCount(attachedSlotPos)
attachedCount = mouseModule.mouseController.GetAttachedItemCount()
self.__SendMoveItemPacket(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_DROP_QUESTION_DIALOG_STATUS() == 1:
return
itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
self.__DropSrcItemToDestItemInInventory(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, locale.SHOP_BUY_INFO)
elif app.IsPressed(app.DIK_LALT) or (app.IsPressed(app.DIK_LALT) and app.IsPressed(app.DIK_LSHIFT)):
link = player.GetItemLink(itemSlotIndex)
ime.PasteString(link)
elif app.IsPressed(app.DIK_LSHIFT):
itemCount = player.GetItemCount(itemSlotIndex)
if itemCount > 1:
self.dlgPickMoney.SetTitleName(locale.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_INVENTORY, itemSlotIndex)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.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 __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
if srcItemSlotPos == dstItemSlotPos:
return
if item.IsRefineScroll(srcItemVID):
self.RefineItem(srcItemSlotPos, dstItemSlotPos)
self.wndItem.SetUseMode(FALSE)
elif item.IsMetin(srcItemVID):
self.AttachMetinToItem(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)
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)
item.SelectItem(itemIndex)
itemPrice = item.GetISellItemPrice()
if item.Is1GoldItem():
itemPrice = itemCount / itemPrice / 5
else:
itemPrice = itemPrice * itemCount / 5
item.GetItemName(itemIndex)
itemName = item.GetItemName()
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(locale.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
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, locale.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, locale.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, locale.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, locale.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.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 not player.CanDetach(scrollIndex, targetSlotPos):
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(locale.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(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, locale.REFINE_FAILURE_CAN_NOT_ATTACH(itemName))
if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_SOCKET(itemName))
elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_GOLD_SOCKET(itemName))
elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM)
if player.ATTACH_METIN_OK != result:
return
self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
def OverOutItem(self):
self.wndItem.SetUsableItem(FALSE)
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
def OverInItem(self, overSlotPos):
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(attachedItemVNum, attachedSlotPos, overSlotPos):
self.wndItem.SetUsableItem(TRUE)
self.__ShowToolTip(overSlotPos)
return
self.__ShowToolTip(overSlotPos)
def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
"다른 아이템에 사용할 수 있는 아이템인가?"
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(srcItemVNum) in self.USE_TYPE_TUPLE:
return TRUE
return FALSE
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
"대상 아이템에 사용할 수 있는가?"
if srcSlotPos == dstSlotPos:
return FALSE
if item.IsRefineScroll(srcItemVNum):
if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
return TRUE
elif item.IsMetin(srcItemVNum):
if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos):
return TRUE
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 (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(dstSlotPos, srcItemVNum):
return TRUE;
return FALSE
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 __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
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()
def OnPressEscapeKey(self):
self.Close()
return TRUE
def UseItemSlot(self, slotIndex):
if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS():
return
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
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(locale.INVENTORY_REALLY_USE_ITEM)
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
self.questionDialog.Open()
self.questionDialog.slotIndex = slotIndex
else:
self.__SendUseItemPacket(slotIndex)
#net.SendItemUsePacket(slotIndex)
def __UseItemQuestionDialog_OnCancel(self):
self.OnCloseQuestionDialog()
def __UseItemQuestionDialog_OnAccept(self):
self.__SendUseItemPacket(self.questionDialog.slotIndex)
if self.questionDialog:
self.questionDialog.Close()
self.questionDialog = None
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
def __SendUseItemPacket(self, slotPos):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUsePacket(slotPos)
def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
##BonusPageDialog
def OnUpdate(self):
if self.isLoaded == 1:
self.__LoadRefreshBonus()
##BonusPageDialogimport uiScriptLocale
MIDDLE_VALUE_FILE = "d:/ymir work/ui/public/Parameter_Slot_01.sub"
EQUIPMENT_START_INDEX = 90
window = {
"name" : "InventoryWindow",
## 600 - (width + ¿À¸¥ÂÊÀ¸·Î ºÎÅÍ ¶ç¿ì±â 24 px)
"x" : SCREEN_WIDTH - 124 - 176,
"y" : SCREEN_HEIGHT - 37 - 565,
"style" : ("movable", "float",),
"width" : 176+124,
"height" : 565,
"children" :
(
{
"name" : "board",
"type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176+124,
"height" : 565,
"children" :
(
## Title
{
"name" : "TitleBar",
"type" : "titlebar",
"style" : ("attach",),
"x" : 8,
"y" : 7,
"width" : 161+124,
"color" : "yellow",
"children" :
(
{
"name":"TitleName",
"type":"text",
"x":77+62,
"y":3,
"text":uiScriptLocale.INVENTORY_TITLE,
"text_horizontal_align":"center"
},
),
},
## Equipment Slot
{
"name" : "Equipment_Base",
"type" : "image",
"x" : 10,
"y" : 33,
"image" : "d:/ymir work/ui/game/windows/equipment_base.sub",
"children" :
(
{
"name" : "EquipmentSlot",
"type" : "slot",
"x" : 3,
"y" : 3,
"width" : 150,
"height" : 182,
"slot" : (
{"index":EQUIPMENT_START_INDEX+0, "x":39, "y":37, "width":32, "height":64},
{"index":EQUIPMENT_START_INDEX+1, "x":39, "y":2, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+2, "x":39, "y":145, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+3, "x":75, "y":67, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+4, "x":3, "y":3, "width":32, "height":96},
{"index":EQUIPMENT_START_INDEX+5, "x":114, "y":84, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+6, "x":114, "y":52, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+7, "x":2, "y":113, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+8, "x":75, "y":113, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+9, "x":114, "y":1, "width":32, "height":32},
{"index":EQUIPMENT_START_INDEX+10, "x":75, "y":35, "width":32, "height":32},
),
},
## MallButton
{
"name" : "MallButton",
"type" : "button",
"x" : 120,
"y" : 150,
"tooltip_text" : uiScriptLocale.MALL_TITLE,
"default_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_01.tga",
"over_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_02.tga",
"down_image" : "d:/ymir work/ui/game/TaskBar/Mall_Button_03.tga",
},
{
"name" : "Equipment_Tab_01",
"type" : "radio_button",
"x" : 86,
"y" : 161,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
"children" :
(
{
"name" : "Equipment_Tab_01_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "I",
},
),
},
{
"name" : "Equipment_Tab_02",
"type" : "radio_button",
"x" : 86 + 32,
"y" : 161,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_small_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_small_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_small_03.sub",
"children" :
(
{
"name" : "Equipment_Tab_02_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "II",
},
),
},
),
},
##BonusPageDialog
{
"name" : "Bonus_Page",
"type" : "window",
"x" : 166,
"y" : 34,
"width" : 124,
"height" : 565-24,
"children" :
(
{
"name" : "BonusBase1",
"type" : "horizontalbar",
"x" : 4,
"y" : 0,
"width" : 120,
"children" :
(
{
"name" : "bonus_text_1",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Defensiva",
},
),
},
{
"name" : "Sword_defence",
"type" : "text",
"x" : 5,
"y" : 1*18,
"text" : "Sabie:"
},
{
"name" : "Sword_def",
"type" : "window",
"x" : 72,
"y" : 1*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sword_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sword_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Twohand_defence",
"type" : "text",
"x" : 5,
"y" : 2*18,
"text" : "Doua-maini:"
},
{
"name" : "Twohand_def",
"type" : "window",
"x" : 72,
"y" : 2*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Twohand_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Twohand_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Knife_defence",
"type" : "text",
"x" : 5,
"y" : 3*18,
"text" : "Pumnal:"
},
{
"name" : "Knife_def",
"type" : "window",
"x" : 72,
"y" : 3*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Knife_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Knife_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Bow_defence",
"type" : "text",
"x" : 5,
"y" : 4*18,
"text" : "Arc:"
},
{
"name" : "Bow_def",
"type" : "window",
"x" : 72,
"y" : 4*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Bow_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Bow_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Bell_defence",
"type" : "text",
"x" : 5,
"y" : 5*18,
"text" : "Clopot:"
},
{
"name" : "Bell_def",
"type" : "window",
"x" : 72,
"y" : 5*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Bell_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Bell_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Fan_defence",
"type" : "text",
"x" : 5,
"y" : 6*18,
"text" : "Evantai:"
},
{
"name" : "Fan_def",
"type" : "window",
"x" : 72,
"y" : 6*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Fan_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Fan_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Magic_defence",
"type" : "text",
"x" : 5,
"y" : 7*18,
"text" : "Magie:"
},
{
"name" : "Magic_def",
"type" : "window",
"x" : 72,
"y" : 7*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Magic_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Magic_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Poison_defence",
"type" : "text",
"x" : 5,
"y" : 8*18,
"text" : "Otrava:"
},
{
"name" : "Poison_def",
"type" : "window",
"x" : 72,
"y" : 8*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Poison_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Poison_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Warrior_defence",
"type" : "text",
"x" : 5,
"y" : 9*18,
"text" : "Razboinic:"
},
{
"name" : "Warrior_def",
"type" : "window",
"x" : 72,
"y" : 9*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Warrior_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Warrior_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Assassin_defence",
"type" : "text",
"x" : 5,
"y" : 10*18,
"text" : "Ninja:"
},
{
"name" : "Assassin_def",
"type" : "window",
"x" : 72,
"y" : 10*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Assassin_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Assassin_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Sura_defence",
"type" : "text",
"x" : 5,
"y" : 11*18,
"text" : "Sura:"
},
{
"name" : "Sura_def",
"type" : "window",
"x" : 72,
"y" : 11*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sura_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sura_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Mage_defence",
"type" : "text",
"x" : 5,
"y" : 12*18,
"text" : "Saman:"
},
{
"name" : "Mage_def",
"type" : "window",
"x" : 72,
"y" : 12*18,
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Mage_def_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Mage_def_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "BonusBase2",
"type" : "horizontalbar",
"x" : 4,
"y" : 235,
"width" : 120,
"children" :
(
{
"name" : "bonus_text_1",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Ofensiva",
},
),
},
{
"name" : "Critical_chance",
"type" : "text",
"x" : 5,
"y" : 235+(1*18),
"text" : "Critica:"
},
{
"name" : "Crit",
"type" : "window",
"x" : 72,
"y" : 235+(1*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Crit_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Crit_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Pierce_chance",
"type" : "text",
"x" : 5,
"y" : 235+(2*18),
"text" : "Patrundere:"
},
{
"name" : "Pierce",
"type" : "window",
"x" : 72,
"y" : 235+(2*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Pierce_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Pierce_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Hit_damage",
"type" : "text",
"x" : 5,
"y" : 235+(3*18),
"text" : "Pg. Med:"
},
{
"name" : "Hitdmg",
"type" : "window",
"x" : 72,
"y" : 235+(3*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Hitdmg_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Hitdmg_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Skill_damage",
"type" : "text",
"x" : 5,
"y" : 235+(4*18),
"text" : "Pg. Comp:"
},
{
"name" : "Skilldmg",
"type" : "window",
"x" : 72,
"y" : 235+(4*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Skilldmg_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Skilldmg_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Halfhumans",
"type" : "text",
"x" : 5,
"y" : 235+(5*18),
"text" : "Semi-Om:"
},
{
"name" : "Halfhuman",
"type" : "window",
"x" : 72,
"y" : 235+(5*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Halfhuman_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Halfhuman_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Undeads",
"type" : "text",
"x" : 5,
"y" : 235+(6*18),
"text" : "Vampiri:"
},
{
"name" : "Undead",
"type" : "window",
"x" : 72,
"y" : 235+(6*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Undead_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Undead_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Devil_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(7*18),
"text" : "Diavol:"
},
{
"name" : "Devil",
"type" : "window",
"x" : 72,
"y" : 235+(7*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Devil_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Devil_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Warrior_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(8*18),
"text" : "Razboinic:"
},
{
"name" : "Warrior_str",
"type" : "window",
"x" : 72,
"y" : 235+(8*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Warrior_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Warrior_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Assassin_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(9*18),
"text" : "Ninja:"
},
{
"name" : "Assassin_str",
"type" : "window",
"x" : 72,
"y" : 235+(9*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Assassin_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Assassin_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Sura_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(10*18),
"text" : "Sura:"
},
{
"name" : "Assassin_str",
"type" : "window",
"x" : 72,
"y" : 235+(10*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Sura_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Sura_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "Mage_gegen",
"type" : "text",
"x" : 5,
"y" : 235+(11*18),
"text" : "Saman:"
},
{
"name" : "Mage_str",
"type" : "window",
"x" : 72,
"y" : 235+(11*18),
"width" : 53,
"height" : 19,
"children" :
(
{
"name" : "Mage_str_Slot",
"type" : "image",
"x" : 0,
"y" : 0,
"image" : MIDDLE_VALUE_FILE
},
{
"name" : "Mage_str_Value",
"type" : "text",
"x" : 26,
"y" : 3,
"text" : "999",
"r" : 1.0,
"g" : 1.0,
"b" : 1.0,
"a" : 1.0,
"text_horizontal_align":"center"
},
),
},
{
"name" : "CopyRight",
"type" : "horizontalbar",
"x" : 4,
"y" : 470,
"width" : 120,
"children" :
(
{
"name" : "(C)",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "Metin2 Aeros",
"r" : 1.0,
"g" : 0.0,
"b" : 0.0,
"a" : 1.0,
},
),
},
),
},
##InventoryTabs
{
"name" : "Inventory_Tab_01",
"type" : "radio_button",
"x" : 10,
"y" : 33 + 191,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,
"children" :
(
{
"name" : "Inventory_Tab_01_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "I",
},
),
},
{
"name" : "Inventory_Tab_02",
"type" : "radio_button",
"x" : 10 + 78,
"y" : 33 + 191,
"default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
"tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,
"children" :
(
{
"name" : "Inventory_Tab_02_Print",
"type" : "text",
"x" : 0,
"y" : 0,
"all_align" : "center",
"text" : "II",
},
),
},
## Item Slot
{
"name" : "ItemSlot",
"type" : "grid_table",
"x" : 8,
"y" : 246,
"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,
"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},
{
"name":"Money_Slot",
"type":"button",
"x":8+20,
"y":28,
# "horizontal_align":"center",
"vertical_align":"bottom",
"default_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"over_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"down_image" : "d:/ymir work/ui/public/parameter_slot_05.sub",
"children" :
(
{
"name":"Money_Icon",
"type":"image",
"x":-18,
"y":2,
"image":"d:/ymir work/ui/game/windows/money_icon.sub",
},
{
"name" : "Money",
"type" : "text",
"x" : 3,
"y" : 3,
"horizontal_align" : "right",
"text_horizontal_align" : "right",
"text" : "123456789",
},
),
},
),
},
),
}

Eroare syerr
Înapoi la “Probleme rezolvate”
Utilizatori ce ce navighează pe acest forum: cosminusi93ksm și 42 vizitatori
