|
You last visited: Today at 14:56
Advertisement
Official Inventory Expansion
Discussion on Official Inventory Expansion within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
01/08/2018, 15:05
|
#31
|
elite*gold: 0
Join Date: Aug 2015
Posts: 9
Received Thanks: 2
|
Bug at trade
|
|
|
04/21/2018, 22:22
|
#32
|
elite*gold: 0
Join Date: Sep 2014
Posts: 20
Received Thanks: 37
|
#update
Exchange bug fixed
|
|
|
10/21/2018, 11:28
|
#33
|
elite*gold: 0
Join Date: Jan 2013
Posts: 7
Received Thanks: 0
|
object has no attribute 'UpdateInven'
Hello i have problem with this expansion
syserr:
1021 11:23:19394 :: File "networkModule.py", line 247, in SetGamePhase
1021 11:23:19394 :: File "game.py", line 98, in __init__
1021 11:23:19395 :: File "interfaceModule.py", line 263, in MakeInterface
1021 11:23:19395 :: File "interfaceModule.py", line 159, in __MakeWindows
1021 11:23:19396 :: File "uiInventory.py", line 47, in __init__
1021 11:23:19396 :: File "uiInventory.py", line 178, in __LoadWindow
1021 11:23:19397 :: File "uiInventory.py", line 281, in SetInventoryPage
1021 11:23:19397 :: AttributeError
1021 11:23:19397 :: :
1021 11:23:19397 :: 'InventoryWindow' object has no attribute 'UpdateInven'
1021 11:23:19397 ::
my uiinventory.py
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
import event
ITEM_MALL_BUTTON_ENABLE = True
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", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET")
questionDialog = None
tooltipItem = None
wndBelt = None
dlgPickMoney = None
sellingSlotNumber = -1
isLoaded = 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.wndBelt:
self.wndBelt.Show(self.isOpenedBeltWindowWhenClosi ngInventory)
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(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py")
else:
pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py")
except:
import exception
exception.Abort("InventoryWindow.LoadWindow.LoadOb ject")
try:
wndItem = self.GetChild("ItemSlot")
wndEquip = self.GetChild("EquipmentSlot")
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_f unc__(self.Close))
self.wndMoney = self.GetChild("Money")
self.wndMoneySlot = self.GetChild("Money_Slot")
self.mallButton = self.GetChild2("MallButton")
self.DSSButton = self.GetChild2("DSSButton")
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.EX_INVEN_COVER_IMG_CLOSE = []
self.EX_INVEN_COVER_IMG_OPEN = []
for i in xrange(9):
self.EX_INVEN_COVER_IMG_OPEN.append(self.GetChild( "cover_open_" + str(i)))
self.EX_INVEN_COVER_IMG_CLOSE.append(self.GetChild ("cover_close_" + str(i)))
self.inventoryTab = []
self.inventoryTab.append(self.GetChild("Inventory_ Tab_01"))
self.inventoryTab.append(self.GetChild("Inventory_ Tab_02"))
self.inventoryTab.append(self.GetChild("Inventory_ Tab_03"))
self.inventoryTab.append(self.GetChild("Inventory_ Tab_04"))
self.equipmentTab = []
self.equipmentTab.append(self.GetChild("Equipment_ Tab_01"))
self.equipmentTab.append(self.GetChild("Equipment_ Tab_02"))
if app.ENABLE_EXTEND_INVEN_SYSTEM:
for i in xrange(9):
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
except:
import exception
exception.Abort("InventoryWindow.LoadWindow.BindOb ject")
## Item
wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(se lf.SelectEmptySlot))
wndItem.SetSelectItemSlotEvent(ui.__mem_func__(sel f.SelectItemSlot))
wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(s elf.UseItemSlot))
wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseIt emSlot))
wndItem.SetOverInItemEvent(ui.__mem_func__(self.Ov erInItem))
wndItem.SetOverOutItemEvent(ui.__mem_func__(self.O verOutItem))
## Equipment
wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(s elf.SelectEmptySlot))
wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(se lf.SelectItemSlot))
wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__( self.UseItemSlot))
wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseI temSlot))
wndEquip.SetOverInItemEvent(ui.__mem_func__(self.O verInItem))
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.Op enPickMoneyDialog))
self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))
self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))
self.inventoryTab[0].Down()
self.inventoryPageIndex = 0
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
if app.ENABLE_EXTEND_INVEN_SYSTEM:
for i in xrange(9):
self.EX_INVEN_COVER_IMG_OPEN[i].SetEvent(ui.__mem_func__(self.en_ac))
# MallButton
if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.Clic kMallButton))
if self.DSSButton:
self.DSSButton.SetEvent(ui.__mem_func__(self.Click DSSButton))
## Refresh
self.SetInventoryPage(0)
self.SetEquipmentPage(0)
self.RefreshItemSlot()
self.RefreshStatus()
def Destroy(self):
self.ClearDictionary()
self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0
self.refineDialog.Destroy()
self.refineDialog = 0
self.attachMetinDialog.Destroy()
self.attachMetinDialog = 0
self.tooltipItem = None
self.wndItem = 0
self.wndEquip = 0
self.dlgPickMoney = 0
self.wndMoney = 0
self.wndMoneySlot = 0
self.questionDialog = None
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.EX_INVEN_COVER_IMG_CLOSE = None
self.EX_INVEN_COVER_IMG_OPEN = None
self.inventoryTab = []
self.equipmentTab = []
def Close(self):
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
self.OnCloseQuestionDialog()
self.dlgPickMoney.Close()
self.Hide()
def genislet(self):
net.Envanter_genislet()
self.OnCloseQuestionDialog()
def SetInventoryPage(self, page):
if app.ENABLE_EXTEND_INVEN_SYSTEM:
def UpdateInven(self):
page = self.inventoryPageIndex
for i in xrange(9):
inv_plus = player.GetEnvanter() + i
inv_pluss = player.GetEnvanter() - i
if page == 2:
if player.GetEnvanter() > 8:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
else:
self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()].Show()
self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()].Hide()
if inv_pluss >= 0:
self.EX_INVEN_COVER_IMG_OPEN[inv_pluss].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[inv_pluss].Hide()
if inv_plus < 9:
self.EX_INVEN_COVER_IMG_CLOSE[inv_plus].Show()
self.EX_INVEN_COVER_IMG_OPEN[inv_plus].Hide()
elif page == 3:
if player.GetEnvanter() < 9:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Show()
elif player.GetEnvanter() > 17:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
else:
self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()-9].Show()
self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()-9].Hide()
if inv_pluss >= 0:
self.EX_INVEN_COVER_IMG_OPEN[inv_pluss-9].Hide()
if inv_plus < 18:
self.EX_INVEN_COVER_IMG_CLOSE[inv_plus-9].Show()
else:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
def genislet(self):
net.Envanter_genislet()
self.OnCloseQuestionDialog()
def en_ac(self):
if player.GetEnvanter() < 18:
needkeys = (2,2,2,2,3,3,4,4,4,5,5,5,6,6,6,7,7,7)
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.ENVANTER_GE NIS_1 % needkeys[player.GetEnvanter()])
self.questionDialog.SetAcceptEvent(ui.__mem_func__ (self.genislet))
self.questionDialog.SetCancelEvent(ui.__mem_func__ (self.OnCloseQuestionDialog))
self.questionDialog.Open()
def SetInventoryPage(self, page):
self.inventoryPageIndex = page
for index in range(len(self.inventoryTab)):
if index == page:
continue
self.inventoryTab[index].SetUp()
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.UpdateInven()
self.RefreshBagSlotWindow()
def SetEquipmentPage(self, page):
self.equipmentPageIndex = page
self.equipmentTab[1-page].SetUp()
self.RefreshEquipSlotWindow()
def ClickMallButton(self):
print "click_mall_button"
net.SendChatPacket("/click_mall")
def en_ac(self):
return
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.mou seController.GetAttachedItemCount())
snd.PlaySound("sound/ui/money.wav")
mouseModule.mouseController.DeattachObject()
else:
curMoney = player.GetElk()
if curMoney <= 0:
return
self.dlgPickMoney.SetTitleName(localeInfo.PICK_MON EY_TITLE)
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(s elf.OnPickMoney))
self.dlgPickMoney.Open(curMoney)
self.dlgPickMoney.SetMax(9) # ???? 9.900.000 ?? ?? ??
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
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(localeInfo.NumberToMoneyStri ng(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.s ourcePos, 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):
selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(select edSlotPos)
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)
#net.SendItemMovePacket(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.mou seController.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):
itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSl otIndex)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber( )
attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
self.__DropSrcItemToDestItemInInventory(attachedIt emVID, attachedSlotPos, itemSlotIndex)
mouseModule.mouseController.DeattachObject()
else:
curCursorNum = app.GetCursor()
if app.SELL == curCursorNum:
self.__SellItem(itemSlotIndex)
elif app.BUY == curCursorNum:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)
elif app.IsPressed(app.DIK_LSHIFT):
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
itemCount = player.GetItemCount(itemSlotIndex)
if itemCount > 1:
self.dlgPickMoney.SetTitleName(localeInfo.PICK_ITE M_TITLE)
self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(s elf.OnPickItem))
self.dlgPickMoney.Open(itemCount)
self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex
else:
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)
elif app.IsPressed(app.DIK_LCONTROL):
itemIndex = player.GetItemIndex(itemSlotIndex)
if TRUE == item.CanAddToQuickSlotItem(itemIndex):
player.RequestAddToEmptyLocalQuickSlot(player.SLOT _TYPE_INVENTORY, itemSlotIndex)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)
else:
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
itemCount = player.GetItemCount(itemSlotIndex)
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
self.wndItem.SetUseMode(TRUE)
else:
self.wndItem.SetUseMode(FALSE)
snd.PlaySound("sound/ui/pick.wav")
def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
if srcItemSlotPos == dstItemSlotPos:
return
elif 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(localeInfo.DO_YOU_SELL _ITEM(itemName, itemCount, itemPrice))
self.questionDialog.SetAcceptEvent(ui.__mem_func__ (self.SellItem))
self.questionDialog.SetCancelEvent(ui.__mem_func__ (self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.count = itemCount
def __OnClosePopupDialog(self):
self.pop = None
def RefineItem(self, scrollSlotPos, targetSlotPos):
scrollIndex = player.GetItemIndex(scrollSlotPos)
targetIndex = player.GetItemIndex(targetSlotPos)
if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
return
################################################## #########
self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
return
################################################## #########
################################################## #########
#net.SendRequestRefineInfoPacket(targetSlotPos)
#return
################################################## #########
result = player.CanRefine(scrollIndex, targetSlotPos)
if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)
elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)
elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
if player.REFINE_OK != result:
return
self.refineDialog.Open(scrollSlotPos, targetSlotPos)
def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
scrollIndex = player.GetItemIndex(scrollSlotPos)
targetIndex = player.GetItemIndex(targetSlotPos)
if not player.CanDetach(scrollIndex, targetSlotPos):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.REFINE_DO_Y OU_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, localeInfo.REFINE_FAILURE_CAN_NOT_ATTACH(itemName) )
if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_SOCKET(itemName))
elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_GOLD_SOCKET(itemName) )
elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
if player.ATTACH_METIN_OK != result:
return
self.attachMetinDialog.Open(metinSlotPos, targetSlotPos)
def OverOutItem(self):
self.wndItem.SetUsableItem(False)
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
def OverInItem(self, overSlotPos):
overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSl otPos)
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;
elif "USE_PUT_INTO_BELT_SOCKET" == useType:
dstItemVNum = player.GetItemIndex(dstSlotPos)
print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
item.SelectItem(dstItemVNum)
if item.ITEM_TYPE_BELT == item.GetItemType():
return True
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):
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIn dex)
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_REALL Y_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
if app.ENABLE_EXTEND_INVEN_SYSTEM:
if ItemVNum == 72320:
self.en_ac()
else:
self.__SendUseItemPacket(slotIndex)
#net.SendItemUsePacket(slotIndex)
def __UseItemQuestionDialog_OnCancel(self):
self.OnCloseQuestionDialog()
def __UseItemQuestionDialog_OnAccept(self):
self.__SendUseItemPacket(self.questionDialog.slotI ndex)
self.OnCloseQuestionDialog()
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
# ???? ?? ?? ?? ??? ?? ??
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos)
def __SendUseItemPacket(self, slotPos):
# ???? ?? ?? ?? ??? ?? ??
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemUsePacket(slotPos)
def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount):
# ???? ?? ?? ?? ??? ?? ??
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP)
return
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
def OnMoveWindow(self, x, y):
# print "Inventory Global Pos : ", self.GetGlobalPosition()
if self.wndBelt:
# print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
self.wndBelt.AdjustPositionAndSize()
thanks for help
|
|
|
12/17/2018, 20:49
|
#34
|
elite*gold: 0
Join Date: Feb 2018
Posts: 1
Received Thanks: 0
|
Help ?
|
|
|
03/24/2019, 00:22
|
#35
|
elite*gold: 0
Join Date: Dec 2014
Posts: 124
Received Thanks: 50
|
Still get
InventoryWindow.LoadWindow.BindObject - <type 'exceptions.AttributeError'>:'InventoryWindow' object has no attribute 'OverInItem'
Whats the Problem ?
|
|
|
09/25/2019, 17:13
|
#36
|
elite*gold: 0
Join Date: May 2012
Posts: 22
Received Thanks: 0
|
Got a problem when compiling game.
exchange.cpp: In member function 'bool CExchange::CheckSpace()':
exchange.cpp:306: error: 'array' is not a member of 'std'
exchange.cpp:306: error: 'unique_ptr' is not a member of 'std'
exchange.cpp:306: error: expected primary-expression before '>' token
exchange.cpp:306: error: expected primary-expression before ',' token
exchange.cpp:306: error: 's_grid' was not declared in this scope
exchange.cpp:322: error: 'make_unique' is not a member of 'std'
exchange.cpp:322: error: expected primary-expression before '>' token
exchange.cpp:322: warning: left-hand operand of comma has no effect
exchange.cpp:340: error: 'make_unique' is not a member of 'std'
exchange.cpp:340: error: expected primary-expression before '>' token
exchange.cpp:340: warning: left-hand operand of comma has no effect
exchange.cpp:350: error: ISO C++ forbids declaration of 'i' with no type
exchange.cpp:350: warning: comparison between signed and unsigned integer expressions
exchange.cpp:362: error: ISO C++ forbids declaration of 'i' with no type
I took the script from github site.
|
|
|
05/14/2022, 01:09
|
#37
|
elite*gold: 0
Join Date: Jan 2011
Posts: 54
Received Thanks: 2
|
All working fine. Thanks.
|
|
|
06/04/2022, 21:33
|
#38
|
elite*gold: 0
Join Date: Feb 2012
Posts: 1
Received Thanks: 0
|
0604 21:31:06001 :: CItemManager::LoadItemList(locale/pl/item_list.txt) - StrangeLine in 9191
0604 21:31:06001 :: CItemManager::LoadItemList(locale/pl/item_list.txt) - StrangeLine in 9192
0604 21:31:06084 ::
uiInventory.py(line:305) InventoryWindow
InventoryWindow.LoadWindow.BindObject - <type 'exceptions.NameError'>:name 'self' is not defined
0604 21:31:06084 :: ================================================== ================================================== ========
0604 21:31:06084 :: Abort!!!!
0604 21:31:06086 ::
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:30) <module>
system.py(line:130) __pack_import
system.py(line:110) _process_result
interfaceModule.py(line:12) <module>
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiInventory.py(line:246) <module>
uiInventory.py(line:343) InventoryWindow
exception.py(line:36) Abort
networkModule.SetSelectCharacterPhase - <type 'exceptions.SystemExit'>:
0604 21:31:06087 :: ================================================== ================================================== ========
0604 21:31:06087 :: Abort!!!!
ahhhhhhh time wasted
0604 21:31:06001 :: CItemManager::LoadItemList(locale/pl/item_list.txt) - StrangeLine in 9191
0604 21:31:06001 :: CItemManager::LoadItemList(locale/pl/item_list.txt) - StrangeLine in 9192
0604 21:31:06084 ::
uiInventory.py(line:305) InventoryWindow
InventoryWindow.LoadWindow.BindObject - <type 'exceptions.NameError'>:name 'self' is not defined
0604 21:31:06084 :: ================================================== ================================================== ========
0604 21:31:06084 :: Abort!!!!
0604 21:31:06086 ::
networkModule.py(line:208) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:30) <module>
system.py(line:130) __pack_import
system.py(line:110) _process_result
interfaceModule.py(line:12) <module>
system.py(line:130) __pack_import
system.py(line:110) _process_result
uiInventory.py(line:246) <module>
uiInventory.py(line:343) InventoryWindow
exception.py(line:36) Abort
networkModule.SetSelectCharacterPhase - <type 'exceptions.SystemExit'>:
0604 21:31:06087 :: ================================================== ================================================== ========
0604 21:31:06087 :: Abort!!!!
ahhhhhhh time wasted
|
|
|
|
|
Similar Threads
|
MMO Paradox Expansion Episode VIII Official Server
08/26/2014 - Cabal Private Server - 137 Replies
http://imageshack.com/a/img661/8023/3d453f.png
Official Website: MMOParadox Cabal - HekateWebToolz v0.1
Official Forum: MMOParadox Community
Official Facebook: MMOParadox Expansion
Download Links:
|
[Release]MMOParadox Expansion - Episode VIII Official !
12/25/2013 - Cabal Private Server - 20 Replies
https://imagizer.imageshack.us/v2/745x250q50/20/6x zc.png
http://imageshack.com/a/img62/363/bnas.jpg
http://imageshack.com/a/img545/4118/qm44.jpg
http://imageshack.com/a/img191/6348/j11l.jpg
http://imageshack.com/a/img96/6483/gxvw.jpg
http://imageshack.com/a/img822/5191/aa4l.jpg
http://imageshack.com/a/img841/9066/ixxh.jpg
http://imageshack.com/a/img853/3413/pdbw.jpg
http://imageshack.com/a/img24/3731/5n8v.jpg
|
[Buying] [SUCHE] Farming Simulator 2013 - Official Expansion (Titanium)
11/13/2013 - Trading - 0 Replies
Suche: Farming Simulator 2013 - Official Expansion (Titanium) on Steam (Is für nen Kumpel)
Biete: 6-8€ PayPal
PN ME / KOMMENTAR
|
Inventory Expansion
07/10/2012 - C9 - Continent of the Ninth - 4 Replies
Moin moin,
weiß einer woher ich diesen inventory expansions scroll herbekomme?
mein erster char. hat den irgendwann bekommen
(hab erst viel später gesehen, dass ich voll viele items geschenk bekommen habe, wegen event oderso)
dann hab ich einen 2. char erstellt und der hätte bis zu meinem level schon eine bekommen müssen... ist nur nix da... ^^
also weiß einer woher man den bekommt?
|
SWSRO 2 Inventory Expansion(s)
10/03/2010 - SRO Private Server - 6 Replies
Hi guys,
i am wondering because i made the 1st and 2nd invent expansion but i cant get the quest for the 3rd at the Hotans "Mamoje". there is no quest for me???
is this a bug or something?!
greets
|
All times are GMT +1. The time now is 14:56.
|
|