- Katılım
- 26 Mar 2009
- Konular
- 22
- Mesajlar
- 463
- Online süresi
- 62044s
- Reaksiyon Skoru
- 22
- Altın Konu
- 0
- Başarım Puanı
- 110
- Yaş
- 31
- TM Yaşı
- 17 Yıl 28 Gün
- MmoLira
- 473
- DevLira
- 3
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Merhabalar,
Envanter kenarında bulanan hızlı menüye farklı sistemlerin butonlarını eklemek istiyorum.
Eklediğim fotoğraftaki sohbet penceresi butonu kısmında da E.T.Simyası, Pet Gui ve Offline Pazar butonları var buraya da eklenebilir.
Sistemin kurulum konularına bakarak biraz uğraştım fakat pek bilgim olmadığı için yapamadım.
Sanırım Questleri de lazım onlar da elimde yok.
Ayrıntılı bir şekilde yardımcı olabilecek arkadaşlar varsa yardımlarını bekliyorum.
uiinventory.py nin kodlarını ekledim ayrıca root ve locale packlerini up edip link koydum, en aşağıya virüstotal ekledim.
Anladığım kadarıyla başında # olanlar zaten hazır açılması gerekiyor fakat dediğim gibi bilgim olmadığı için yapamadım.
Envanter kenarında bulanan hızlı menüye farklı sistemlerin butonlarını eklemek istiyorum.
Eklediğim fotoğraftaki sohbet penceresi butonu kısmında da E.T.Simyası, Pet Gui ve Offline Pazar butonları var buraya da eklenebilir.
Sistemin kurulum konularına bakarak biraz uğraştım fakat pek bilgim olmadığı için yapamadım.
Sanırım Questleri de lazım onlar da elimde yok.
Ayrıntılı bir şekilde yardımcı olabilecek arkadaşlar varsa yardımlarını bekliyorum.
uiinventory.py nin kodlarını ekledim ayrıca root ve locale packlerini up edip link koydum, en aşağıya virüstotal ekledim.
Anladığım kadarıyla başında # olanlar zaten hazır açılması gerekiyor fakat dediğim gibi bilgim olmadığı için yapamadım.
Root 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 uiOfflineShopBuilder
import uiOfflineShop
import localeInfo
import constInfo
import ime
import wndMgr
import event
import localeInfo
import uiTarget
import gameInfo
import localeInfo
import uiitemineduello
import uiExchange_Multi
import interfaceModule
import exchange
import shop
import uiToolTip
ITEM_MALL_BUTTON_ENABLE = True
SYSTEMS_WINDOW=1
ITEM_FLAG_APPLICABLE = 1 << 14
Botacik = 0
class SystemsWindow(ui.ScriptWindow):
def __init__(self, wndInventory):
import exception
if not wndInventory:
return
ui.ScriptWindow.__init__(self)
self.isLoaded = 0
self.selectedSlotPos=0
self.wndInventory = wndInventory;
self.expandBtn = None
self.minBtn = None
self.targetBoard = uiTarget.TargetBoard()
self.__LoadWindow()
def __del__(self):
import karakterlock_ayar
ui.ScriptWindow.__del__(self)
b = karakterlock_ayar.admegv()
b.Close()
def Show(self, gelen):
self.__LoadWindow()
ui.ScriptWindow.Show(self)
if gameInfo.DUELLO_DURUM == 1 or gameInfo.DUELLO_DURUM == 4:
self.CloseInventory()
return
if gameInfo.UZAKTAN_TICARET_DURUM != 0:
self.CloseInventory()
return
if gameInfo.TIC_HIZLIMENU == 1:
self.CloseInventory()
return
if gelen == 1:
gameInfo.SYSTEMS_WINDOW_OPEN=1
self.OpenInventory()
else:
gameInfo.SYSTEMS_WINDOW_OPEN=0
self.CloseInventory()
def Close(self):
gameInfo.SYSTEMS_WINDOW_OPEN=1
self.Hide()
def Kapat(self):
gameInfo.SYSTEMS_WINDOW_OPEN=1
self.Hide()
def IsOpeningInventory(self):
return self.wndSystemsWindowLayer.IsShow()
def OpenInventory(self):
global SYSTEMS_WINDOW
if gameInfo.DUELLO_DURUM == 1 or gameInfo.DUELLO_DURUM == 4:
chat.AppendChat(chat.CHAT_TYPE_INFO, gameInfo.HIZLIMENUKAPAT)
return
if gameInfo.UZAKTAN_TICARET_DURUM != 0:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Uzaktan Ticaret A汚kken H?l?Men?Kullanamazs?.")
return
if gameInfo.TIC_HIZLIMENU == 1:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Ticaret A汚kken H?l?Men?Kullanamazs?.")
return
self.wndSystemsWindowLayer.Show()
self.expandBtn.Hide()
SYSTEMS_WINDOW = 1
self.AdjustPositionAndSize()
def CloseInventory(self):
global SYSTEMS_WINDOW
self.wndSystemsWindowLayer.Hide()
self.expandBtn.Show()
SYSTEMS_WINDOW = 0
self.AdjustPositionAndSize()
def GetBasePosition(self):
x, y = self.wndInventory.GetGlobalPosition()
return x - 148, y + 257
def AdjustPositionAndSize(self):
bx, by = self.GetBasePosition()
byEK=37
if self.IsOpeningInventory():
#self.SetPosition(bx-25, by+6)
self.SetPosition(bx, by+6-byEK)
self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
else:
self.SetPosition(bx + 138, by+6-byEK);
self.SetSize(10, self.GetHeight())
def __LoadWindow(self):
if self.isLoaded == 1:
return
self.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/SystemsWindow.py")
except:
import exception
exception.Abort("SystemsWindow.LoadWindow.LoadObject")
try:
self.ORIGINAL_WIDTH = self.GetWidth()
self.wndSystemsWindowLayer = self.GetChild("SystemsWindowLayer")
self.expandBtn = self.GetChild("ExpandBtn")
self.minBtn = self.GetChild("MinimizeBtn")
#self.atCagirmaBtn = self.GetChild("atCAGIRMA")
#self.otoPelerinBtn = self.GetChild("otoPELERIN")
self.isinlanmaYuzuguBtn = self.GetChild("isinlanmaYUZUGU")
# self.antiExpBtn = self.GetChild("antiEXP")
#self.depoAcBtn = self.GetChild("depoAC")
self.hizliEkipmanBtn = self.GetChild("hizliEKIPMAN")
self.efsunBotuBtn = self.GetChild("efsunBOTU")
self.efsunBotu2Btn = self.GetChild("efsunBOTU2")
self.ticaretPazarGecmisiBtn = self.GetChild("ticaretPazarGECMISI")
self.otoToplamaBtn = self.GetChild("otoTOPLAMA")
self.otoToplamaBtn2 = self.GetChild("otoTOPLAMAYANG")
#self.beceriIslemleriBtn = self.GetChild("beceriISLEMLERI")
#self.biyologIslemleriBtn = self.GetChild("biyologISLEMLERI")
#self.arayuzsistemi = self.GetChild("arayuzSistemii")
self.otoMesajBtn = self.GetChild("otoMESAJ")
#self.itemSilmeBtn = self.GetChild("itemSILME")
#self.itemkilitButton = self.GetChild("itemKilitt")
self.kadercarki_buton = self.GetChild("kader_carki")
self.karakterkilitbuton = self.GetChild("karakterkilitbuton")
#self.kilitbtn = self.GetChild("kilitbt")
#self.atCagirmaBtn.SetEvent(ui.__mem_func__(self.islemBUTON),1)
self.isinlanmaYuzuguBtn.SetEvent(ui.__mem_func__(self.islemBUTON),1)
# self.antiExpBtn.SetEvent(ui.__mem_func__(self.islemBUTON),4)
#self.depoAcBtn.SetEvent(ui.__mem_func__(self.islemBUTON),5)
self.hizliEkipmanBtn.SetEvent(ui.__mem_func__(self.islemBUTON),2)
self.efsunBotuBtn.SetEvent(ui.__mem_func__(self.islemBUTON),3)
self.efsunBotu2Btn.SetEvent(ui.__mem_func__(self.islemBUTON),4)
self.ticaretPazarGecmisiBtn.SetEvent(ui.__mem_func__(self.islemBUTON),5)
self.otoToplamaBtn.SetEvent(ui.__mem_func__(self.islemBUTON),6)
self.otoToplamaBtn2.SetEvent(ui.__mem_func__(self.islemBUTON),7)
#self.beceriIslemleriBtn.SetEvent(ui.__mem_func__(self.islemBUTON),11)
#self.biyologIslemleriBtn.SetEvent(ui.__mem_func__(self.islemBUTON),12)
#self.arayuzsistemi.SetEvent(ui.__mem_func__(self.islemBUTON),13)
self.otoMesajBtn.SetEvent(ui.__mem_func__(self.islemBUTON),8)
self.kadercarki_buton.SetEvent(ui.__mem_func__(self.islemBUTON),9)
#self.otoPelerinBtn.SetEvent(ui.__mem_func__(self.islemBUTON),10)
#self.itemSilmeBtn.SetSelectEmptySlotEvent(ui.__mem_func__(self.SilEmptySlot))
#self.itemkilitButton.SetSelectEmptySlotEvent(ui.__mem_func__(self.KilitSlot))
self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
self.karakterkilitbuton.SetEvent(ui.__mem_func__(self.karakterkilitfunc))
# self.kilitbtn.SetEvent(ui.__mem_func__(self.OpenGuvenlik))
except:
import exception
exception.Abort("SystemsWindow.LoadWindow.BindObject")
def karakterkilitfunc(self):
import constInfo
event.QuestButtonClick(constInfo.karakter_kilit)
def islemBUTON(self,gelen):
import constInfo
import gameInfo
packet=[0]
if int(gelen) in packet:
if constInfo.PLAYER_SELECTED==1:
chat.AppendChat(chat.CHAT_TYPE_INFO, gameInfo.DUELLOKAPAT)
constInfo.PYTHONISLEM="systemswindow#"+str(gelen)
event.QuestButtonClick(constInfo.PYTHONTOLUA)
return
#if gelen==1:
#import event
#import gameInfo
#qid = gameInfo.LOAD_QUEST_HORSE_BUTTON
#event.QuestButtonClick(qid)
if gelen==1:
import event
import gameInfo
qid = gameInfo.SERVIS
event.QuestButtonClick(qid)
self.Close()
# if gelen==4:
# import event
# import gameInfo
# qid = gameInfo.ANTIEXP
# event.QuestButtonClick(qid)
# #self.Close()
if gelen==2:
import uifastequip
self.uuifastequipDlg = uifastequip.changeequip()
if gameInfo.FAST_EQUIP == 0:
gameInfo.FAST_EQUIP = 1
self.uuifastequipDlg.Show()
else:
gameInfo.FAST_EQUIP = 2
elif gelen==3:
gameInfo.Efsun_Botu=1
elif gelen==4:
gameInfo.BONUS_TAHTA = 1
elif gelen==5:
gameInfo.SYSTEMS_PAKET3=1##Log ekran?
elif gelen==6:
if gameInfo.AUTO_PICK_UP_ITEM == 0:
gameInfo.AUTO_PICK_UP_ITEM=1
chat.AppendChat(chat.CHAT_TYPE_INFO, "<System> Otomatik item ve yang toplama sistemi aktive edildi.")
else:
gameInfo.AUTO_PICK_UP_ITEM=0
chat.AppendChat(chat.CHAT_TYPE_INFO, "<System> Otomatik item ve yang toplama sistemi deaktive edildi.")
elif gelen==7:
if gameInfo.AUTO_PICK_UP_YANG == 0:
gameInfo.AUTO_PICK_UP_YANG=1
chat.AppendChat(chat.CHAT_TYPE_INFO, "<System> Otomatik yang toplama sistemi aktive edildi.")
else:
gameInfo.AUTO_PICK_UP_YANG=0
chat.AppendChat(chat.CHAT_TYPE_INFO, "<System> Otomatik yang toplama sistemi deaktive edildi.")
#elif gelen==11:
#import event
#import gameInfo
#qid = gameInfo.SKILL
#event.QuestButtonClick(qid)
#self.Close()
#elif gelen==12:
#import event
#import gameInfo
#qid = gameInfo.BIYOLOG
#event.QuestButtonClick(qid)
#self.Close()
#elif gelen==13:
##self.Close()
#try:
#self.k.OpenDialog()
#pass
#except:
#import uiinterfececolor
#self.k = uiinterfececolor.kolorDialog()
#self.k.OpenDialog()
#pass
elif gelen==8:
gameInfo.SYSTEMS_PAKET2=1#Oto cevap
elif gelen==9:
import event
import gameInfo
gameInfo.KADERCARKI_ITEMLER = []
gameInfo.PYTHONISLEM2 = "kadercarki#ac"
event.QuestButtonClick(gameInfo.PYTHONTOLUA2)
#if gelen==10:
#import event
#import gameInfo
#import constInfo
#activare_pelerin = constInfo.PELERIN_QUESTINDEX
#event.QuestButtonClick(activare_pelerin)
def KilitSlot(self):
#import gameInfo
import constInfo
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
itemVnum = player.GetItemIndex(attachedSlotPos)
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
constInfo.kilit_id = attachedSlotPos
item_kilit_q = constInfo.item_kilit_q
event.QuestButtonClick(item_kilit_q)
mouseModule.mouseController.DeattachObject()
#def OpenGuvenlik(self):
#import karakterlock_ayar
#b = karakterlock_ayar.admegv()
#b.Show()
def SilEmptySlot(self):
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
itemVnum = player.GetItemIndex(attachedSlotPos)
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
if player.IsEquipmentSlot(attachedSlotPos):
chat.AppendChat(1,"Bu durumda olan itemi silemezsiniz.")
mouseModule.mouseController.DeattachObject()
return
item.SelectItem(int(itemVnum))
ad = item.GetItemName()
questionText = localeInfo.SIL_ISTIYORMUSUN % (str(player.GetItemCount(attachedSlotPos)), str(ad)) +"?"
itemDropQuestionDialog = uiCommon.QuestionDialog()
itemDropQuestionDialog.SetText(questionText)
itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.SilItem(arg, itemVnum, player.GetItemCount(attachedSlotPos), attachedSlotPos))
itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.SilItem(arg, itemVnum, player.GetItemCount(attachedSlotPos), attachedSlotPos))
itemDropQuestionDialog.Open()
self.itemDropQuestionDialog = itemDropQuestionDialog
mouseModule.mouseController.DeattachObject()
def SilItem(self, answer, itemVnum, adet, slot):
if answer:
gameInfo.SIL_SLOT = slot
net.SendItemDestroyPacket(slot)
event.QuestButtonClick(int(gameInfo.PYTHONTOLUA))
self.itemDropQuestionDialog.Close()
self.itemDropQuestionDialog = None
def OnUpdate(self):
global SYSTEMS_WINDOW
self.AdjustPositionAndSize()
if gameInfo.SYSTEMS_WINDOW_KAPAT==1:
self.Close()
gameInfo.SYSTEMS_WINDOW_KAPAT=0
if gameInfo.DUELLO_DURUM == 1 or gameInfo.DUELLO_DURUM == 4:
self.CloseInventory()
return
if gameInfo.UZAKTAN_TICARET_DURUM != 0:
self.CloseInventory()
return
if gameInfo.TIC_HIZLIMENU == 1:
self.CloseInventory()
return
class CostumeWindow(ui.ScriptWindow):
def __init__(self, wndInventory):
import exception
if not app.ENABLE_COSTUME_SYSTEM:
exception.Abort("What do you do?")
return
if not wndInventory:
exception.Abort("wndInventory parameter must be set to InventoryWindow")
return
ui.ScriptWindow.__init__(self)
self.isLoaded = 0
self.wndInventory = wndInventory;
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self):
self.__LoadWindow()
self.RefreshCostumeSlot()
ui.ScriptWindow.Show(self)
def Close(self):
self.Hide()
def __LoadWindow(self):
if self.isLoaded == 1:
return
self.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/CostumeWindow.py")
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.LoadObject")
try:
wndEquip = self.GetChild("CostumeSlot")
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.BindObject")
## Equipment
wndEquip.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndEquip.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
self.wndEquip = wndEquip
def RefreshCostumeSlot(self):
getItemVNum=player.GetItemIndex
for i in xrange(item.COSTUME_SLOT_COUNT):
slotNumber = item.COSTUME_SLOT_START + i
self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
self.wndEquip.RefreshSlot()
class BeltInventoryWindow(ui.ScriptWindow):
def __init__(self, wndInventory):
import exception
if not app.ENABLE_NEW_EQUIPMENT_SYSTEM:
exception.Abort("What do you do?")
return
if not wndInventory:
exception.Abort("wndInventory parameter must be set to InventoryWindow")
return
ui.ScriptWindow.__init__(self)
self.isLoaded = 0
self.wndInventory = wndInventory;
self.wndBeltInventoryLayer = None
self.wndBeltInventorySlot = None
self.expandBtn = None
self.minBtn = None
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self, openBeltSlot = FALSE):
self.__LoadWindow()
self.RefreshSlot()
ui.ScriptWindow.Show(self)
if openBeltSlot:
self.OpenInventory()
else:
self.CloseInventory()
def OnUpdate(self):
self.Close()
def Close(self):
self.Hide()
def IsOpeningInventory(self):
return self.wndBeltInventoryLayer.IsShow()
def OpenInventory(self):
self.wndBeltInventoryLayer.Show()
self.expandBtn.Hide()
if localeInfo.IsARABIC() == 0:
self.AdjustPositionAndSize()
def CloseInventory(self):
self.wndBeltInventoryLayer.Hide()
self.expandBtn.Show()
if localeInfo.IsARABIC() == 0:
self.AdjustPositionAndSize()
## 현재 인벤토리 위치를 기준으로 BASE 위치를 계산, 리턴.. 숫자 하드코딩하기 정말 싫지만 방법이 없다..
def GetBasePosition(self):
x, y = self.wndInventory.GetGlobalPosition()
return x - 148, y + 410
def AdjustPositionAndSize(self):
bx, by = self.GetBasePosition()
if self.IsOpeningInventory():
self.SetPosition(bx, by)
self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
else:
self.SetPosition(bx + 138, by);
self.SetSize(10, self.GetHeight())
def __LoadWindow(self):
if self.isLoaded == 1:
return
self.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/BeltInventoryWindow.py")
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.LoadObject")
try:
self.ORIGINAL_WIDTH = self.GetWidth()
wndBeltInventorySlot = self.GetChild("BeltInventorySlot")
self.wndBeltInventoryLayer = self.GetChild("BeltInventoryLayer")
self.expandBtn = self.GetChild("ExpandBtn")
self.minBtn = self.GetChild("MinimizeBtn")
self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
if localeInfo.IsARABIC() :
self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
self.wndBeltInventoryLayer.SetPosition(self.wndBeltInventoryLayer.GetWidth() - 5, 0)
self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
slotNumber = item.BELT_INVENTORY_SLOT_START + i
wndBeltInventorySlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE)
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.BindObject")
## Equipment
wndBeltInventorySlot.SetOverInItemEvent(ui.__mem_func__(self.wndInventory.OverInItem))
wndBeltInventorySlot.SetOverOutItemEvent(ui.__mem_func__(self.wndInventory.OverOutItem))
wndBeltInventorySlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndBeltInventorySlot.SetUseSlotEvent(ui.__mem_func__(self.wndInventory.UseItemSlot))
wndBeltInventorySlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.wndInventory.SelectEmptySlot))
wndBeltInventorySlot.SetSelectItemSlotEvent(ui.__mem_func__(self.wndInventory.SelectItemSlot))
self.wndBeltInventorySlot = wndBeltInventorySlot
def RefreshSlot(self):
getItemVNum=player.GetItemIndex
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
slotNumber = item.BELT_INVENTORY_SLOT_START + i
self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), player.GetItemCount(slotNumber))
self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, TRUE)
avail = "0"
if player.IsAvailableBeltInventoryCell(slotNumber):
self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
else:
self.wndBeltInventorySlot.DisableCoverButton(slotNumber)
self.wndBeltInventorySlot.RefreshSlot()
class BioWindow(ui.ScriptWindow):
def __init__(self, wndInventory):
import exception
if not wndInventory:
exception.Abort("wndInventory parameter must be set to InventoryWindow")
return
ui.ScriptWindow.__init__(self)
self.isLoaded = 0
self.kalan = 0
self.gerekli = 0
self.wndInventory = wndInventory;
self.wndBioLayer = None
self.wndBioSlot = None
self.expandBtn = None
self.minBtn = None
self.tooltipItem = uiToolTip.ItemToolTip()
self.tooltipItem.Hide()
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self, openBeltSlot = FALSE):
self.__LoadWindow()
self.RefreshSlot()
ui.ScriptWindow.Show(self)
if openBeltSlot:
self.OpenInventory()
else:
self.CloseInventory()
def Close(self):
self.Hide()
def IsOpeningInventory(self):
return self.wndBioLayer.IsShow()
def OpenInventory(self):
self.wndBioLayer.Show()
self.expandBtn.Hide()
if localeInfo.IsARABIC() == 0:
self.AdjustPositionAndSize()
def CloseInventory(self):
self.wndBioLayer.Hide()
self.expandBtn.Show()
if localeInfo.IsARABIC() == 0:
self.AdjustPositionAndSize()
def GetBasePosition(self):
x, y = self.wndInventory.GetGlobalPosition()
return x - 148, y + 75
def AdjustPositionAndSize(self):
bx, by = self.GetBasePosition()
if self.IsOpeningInventory():
self.SetPosition(bx, by)
self.SetSize(self.ORIGINAL_WIDTH, self.GetHeight())
else:
self.SetPosition(bx + 138, by);
self.SetSize(10, self.GetHeight())
def __LoadWindow(self):
if self.isLoaded == 1:
return
self.isLoaded = 1
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/BioWindow.py")
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.LoadObject")
try:
self.ORIGINAL_WIDTH = self.GetWidth()
wndBioSlot = self.GetChild("BeltInventorySlot")
self.wndBioLayer = self.GetChild("BeltInventoryLayer")
self.expandBtn = self.GetChild("ExpandBtn")
self.minBtn = self.GetChild("MinimizeBtn")
self.counttext = self.GetChild("count")
self.sure = self.GetChild("time")
self.verbutton = self.GetChild("biobutton")
self.expandBtn.SetEvent(ui.__mem_func__(self.OpenInventory))
self.minBtn.SetEvent(ui.__mem_func__(self.CloseInventory))
self.verbutton.SetEvent(ui.__mem_func__(self.vergitsin))
if localeInfo.IsARABIC() :
self.expandBtn.SetPosition(self.expandBtn.GetWidth() - 2, 15)
self.wndBioLayer.SetPosition(self.wndBioLayer.GetWidth() - 5, 0)
self.minBtn.SetPosition(self.minBtn.GetWidth() + 3, 15)
for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
slotNumber = item.BELT_INVENTORY_SLOT_START + i
wndBioSlot.SetCoverButton(slotNumber, "d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/quest/slot_button_01.sub",\
"d:/ymir work/ui/game/belt_inventory/slot_disabled.tga", FALSE, FALSE)
except:
import exception
exception.Abort("CostumeWindow.LoadWindow.BindObject")
wndBioSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem2))
wndBioSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem2))
self.wndBioSlot = wndBioSlot
def vergitsin(self):
net.SendChatPacket("/biyologver")
def SetBiyolog(self, bioitem, verilen, toplam, kalansure):
self.gerekli = int(bioitem)
self.kalan = int(kalansure)
self.counttext.SetText(str(verilen)+"/"+str(toplam))
self.RefreshSlot()
def OverInItem2(self):
itemIndex = int(self.gerekli)
item.SelectItem(itemIndex)
taslarr = [player.GetItemMetinSocket(999, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
efsunlarr = [player.GetItemAttribute(999, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]
self.tooltipItem.ClearToolTip()
self.tooltipItem.AddRefineItemData(itemIndex, taslarr, efsunlarr)
self.tooltipItem.Show()
def OverOutItem2(self):
self.tooltipItem.ClearToolTip()
self.tooltipItem.Hide()
def OnUpdate(self):
import time
current_milli_time = int(app.GetGlobalTimeStamp())
if int(self.kalan) == 0:
self.sure.SetText("Verilebilir!")
elif (int(self.kalan)-current_milli_time <= 0):
self.sure.SetText("Verilebilir!")
else:
self.sure.SetText(str(localeInfo.surever(int(self.kalan)-current_milli_time)))
def RefreshSlot(self):
getItemVNum= int (self.gerekli)
if getItemVNum > 0:
self.wndBioSlot.SetItemSlot(999, getItemVNum)
else:
self.wndBioSlot.ClearSlot(999)
return
self.wndBioSlot.RefreshSlot()
class InventoryWindow(ui.ScriptWindow):
liHighlightedItems = []
if app.ENABLE_SOULBIND_SYSTEM:
USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET", "USE_BIND", "USE_UNBIND", "NEW_ADD_SOCKET")
else:
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", "NEW_ADD_SOCKET")
questionDialog = None
tooltipItem = None
wndCostume = None
wndBelt = None
wndBio = None
dlgPickMoney = None
dlgPickItem = None
sellingSlotNumber = -1
isLoaded = 0
isOpenedCostumeWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 코스츔이 열려있었는지 여부-_-; 네이밍 ㅈㅅ
isOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
isOpenedBioInventory = 0
def __init__(self):
ui.ScriptWindow.__init__(self)
self.isOpenedBeltWindowWhenClosingInventory = 0 # 인벤토리 닫을 때 벨트 인벤토리가 열려있었는지 여부-_-; 네이밍 ㅈㅅ
self.isOpenedBioInventory = 0
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def Show(self):
global SYSTEMS_WINDOW
self.__LoadWindow()
ui.ScriptWindow.Show(self)
# 인벤토리를 닫을 때 코스츔이 열려있었다면 인벤토리를 열 때 코스츔도 같이 열도록 함.
if self.isOpenedCostumeWindowWhenClosingInventory and self.wndCostume:
self.wndCostume.Show()
gameInfo.SYSTEMS_WINDOW_KAPAT=0
self.wndSystemsWindow = SystemsWindow(self)
if SYSTEMS_WINDOW == 0:
self.wndSystemsWindow.Show(0)
else:
self.wndSystemsWindow.Show(1)
if self.wndBio:
self.wndBio.Show(self.isOpenedBioInventory)
# 인벤토리를 닫을 때 벨트 인벤토리가 열려있었다면 같이 열도록 함.
if self.wndBelt:
self.wndBelt.Show(self.isOpenedBeltWindowWhenClosingInventory)
def SetBiyolog(self, bioitem, verilen, toplam, kalansure):
self.wndBio.SetBiyolog(bioitem, verilen, toplam, kalansure)
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.LoadObject")
try:
wndItem = self.GetChild("ItemSlot")
wndEquip = self.GetChild("EquipmentSlot")
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.EX_INVEN_COVER_IMG_CLOSE = []
self.EX_INVEN_COVER_IMG_OPEN = []
for i in xrange(9):
self.EX_INVEN_COVER_IMG_OPEN.append(self.GetChild("cover_open_" + str(i)))
self.EX_INVEN_COVER_IMG_CLOSE.append(self.GetChild("cover_close_" + str(i)))
self.mallButton = self.GetChild2("MallButton")
self.DSSButton = self.GetChild2("DSSButton")
self.wndSystemsWindow = SystemsWindow(self)
self.costumeButton = self.GetChild2("CostumeButton")
self.VectorsHzl = self.GetChild2("VectorsHzl")
self.offlineShopButton = self.GetChild2("OfflineShopButton")
self.inventoryTab = []
self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))
self.equipmentTab = []
self.equipmentTab.append(self.GetChild("Equipment_Tab_01"))
self.equipmentTab.append(self.GetChild("Equipment_Tab_02"))
if self.costumeButton and not app.ENABLE_COSTUME_SYSTEM:
self.costumeButton.Hide()
self.costumeButton.Destroy()
self.costumeButton = 0
if app.ENABLE_EXTEND_INVEN_SYSTEM:
for i in xrange(9):
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
# Belt Inventory Window
self.wndBelt = None
self.wndBio = None
if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
self.wndBelt = BeltInventoryWindow(self)
self.wndBio = BioWindow(self)
except:
import exception
exception.Abort("InventoryWindow.LoadWindow.BindObject")
## Item
wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
## Equipment
wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
## Benazir Button
#self.GetChild("ItemSlot1").SetSelectEmptySlotEvent(ui.__mem_func__(self.SilEmptySlot))
## PickMoneyDialog
dlgPickMoney = uiPickMoney.PickMoneyDialog()
dlgPickMoney.LoadDialog()
dlgPickMoney.Hide()
## PickItemDialog
import uiPickEtc
dlgPickItem = uiPickEtc.PickEtcDialog()
dlgPickItem.LoadDialog()
dlgPickItem.Hide()
## RefineDialog
self.refineDialog = uiRefine.RefineDialog()
self.refineDialog.Hide()
## AttachMetinDialog
self.attachMetinDialog = uiAttachMetin.AttachMetinDialog()
self.attachMetinDialog.Hide()
self.costumeffect = uiCommon.CostumEffectDialog()
self.costumeffect.Hide()
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))
self.dlgPickItem = dlgPickItem
# MallButton
if self.mallButton:
self.mallButton.SetEvent(ui.__mem_func__(self.__depobutton))
if self.DSSButton:
self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton))
# Costume Button
if self.costumeButton:
self.costumeButton.SetEvent(ui.__mem_func__(self.ClickCostumeButton))
# Offline Shop Button
if (self.offlineShopButton):
self.offlineShopButton.SetEvent(ui.__mem_func__(self.ClickOfflineShopButton))
self.wndCostume = None
self.listUnusableSlot = []
#if self.GetEp:
#self.GetEp.SetEvent(ui.__mem_func__(self.ep_yukle))
#self.GetEp.SetToolTipText("EP Y?le")
#if self.GetEpYenile :
#self.GetEpYenile.SetEvent(ui.__mem_func__(self.__EpYenile))
#self.GetEpYenile.SetToolTipText("EP Yenile")
# Hzl Ekpmn
if self.VectorsHzl:
self.VectorsHzl.SetEvent(ui.__mem_func__(self._VectorsHzl))
#####
## Refresh
self.SetInventoryPage(0)
self.SetEquipmentPage(0)
self.RefreshItemSlot()
self.RefreshStatus()
def Destroy(self):
self.ClearDictionary()
self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0
self.dlgPickItem.Destroy()
self.dlgPickItem = 0
self.refineDialog.Destroy()
self.refineDialog = 0
self.attachMetinDialog.Destroy()
self.attachMetinDialog = 0
self.costumeffect.Destroy()
self.costumeffect = 0
self.tooltipItem = None
self.wndItem = 0
self.wndEquip = 0
self.dlgPickMoney = 0
self.dlgPickItem = 0
self.questionDialog = None
self.mallButton = None
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.EX_INVEN_COVER_IMG_CLOSE = None
self.EX_INVEN_COVER_IMG_OPEN = None
self.DSSButton = None
self.interface = None
if self.wndCostume:
self.wndCostume.Destroy()
self.wndCostume = 0
if self.wndBelt:
self.wndBelt.Destroy()
self.wndBelt = None
if self.wndBio:
self.wndBio.Destroy()
self.wndBio = None
self.inventoryTab = []
self.equipmentTab = []
def Hide(self):
if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
self.OnCloseQuestionDialog()
return
if None != self.tooltipItem:
self.tooltipItem.HideToolTip()
if self.wndCostume:
self.isOpenedCostumeWindowWhenClosingInventory = self.wndCostume.IsShow() # 인벤토리 창이 닫힐 때 코스츔이 열려 있었는가?
self.wndCostume.Close()
if self.wndBelt:
self.isOpenedBeltWindowWhenClosingInventory = self.wndBelt.IsOpeningInventory() # 인벤토리 창이 닫힐 때 벨트 인벤토리도 열려 있었는가?
print "Is Opening Belt Inven?? ", self.isOpenedBeltWindowWhenClosingInventory
self.wndBelt.Close()
if self.wndBio:
self.isOpenedBioInventory = self.wndBio.IsOpeningInventory()
print "Is Opening Belt Inven ", self.isOpenedBioInventory
self.wndBio.Close()
if self.dlgPickMoney:
self.dlgPickMoney.Close()
if self.dlgPickItem:
self.dlgPickItem.Close()
wndMgr.Hide(self.hWnd)
def Close(self):
self.wndSystemsWindow = SystemsWindow(self)
self.wndSystemsWindow.Kapat()
self.Hide()
if app.ENABLE_EXTEND_INVEN_SYSTEM:
def UpdateInven(self):
page = self.inventoryPageIndex
for i in xrange(9):
inv_plus = player.GetEnvanter() + i
inv_pluss = player.GetEnvanter() - i
if page == 2:
if player.GetEnvanter() > 8:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
else:
self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()].Show()
self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()].Hide()
if inv_pluss >= 0:
self.EX_INVEN_COVER_IMG_OPEN[inv_pluss].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[inv_pluss].Hide()
if inv_plus < 9:
self.EX_INVEN_COVER_IMG_CLOSE[inv_plus].Show()
self.EX_INVEN_COVER_IMG_OPEN[inv_plus].Hide()
elif page == 3:
if player.GetEnvanter() < 9:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Show()
elif player.GetEnvanter() > 17:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
else:
self.EX_INVEN_COVER_IMG_OPEN[player.GetEnvanter()-9].Show()
self.EX_INVEN_COVER_IMG_CLOSE[player.GetEnvanter()-9].Hide()
if inv_pluss >= 0:
self.EX_INVEN_COVER_IMG_OPEN[inv_pluss-9].Hide()
if inv_plus < 18:
self.EX_INVEN_COVER_IMG_CLOSE[inv_plus-9].Show()
else:
self.EX_INVEN_COVER_IMG_OPEN[i].Hide()
self.EX_INVEN_COVER_IMG_CLOSE[i].Hide()
def genislet(self):
net.Envanter_genislet()
self.OnCloseQuestionDialog()
def en_ac(self):
if player.GetEnvanter() < 18:
needkeys = (2,2,2,2,3,3,4,4,4,5,5,5,6,6,6,7,7,7)
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.ENVANTER_GENIS_1 % needkeys[player.GetEnvanter()])
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.genislet))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
def SetInventoryPage(self, page):
self.inventoryPageIndex = page
for index in range(len(self.inventoryTab)):
if index == page:
continue
self.inventoryTab[index].SetUp()
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.UpdateInven()
self.RefreshBagSlotWindow()
def SetEquipmentPage(self, page):
self.equipmentPageIndex = page
self.equipmentTab[1-page].SetUp()
self.RefreshEquipSlotWindow()
# DSSButton
def ClickDSSButton(self):
print "click_dss_button"
self.interface.ToggleDragonSoulWindow()
# Offline Shop Button
def ClickOfflineShopButton(self):
print "click_offline_shop_button"
self.interface.ToggleOfflineShopAdminPanelWindow()
def __depobutton(self):
if interfaceModule.statutahta1== 0:
interfaceModule.statutahta1 = 1
self.tahta1 = ui.BoardWithTitleBar()
self.tahta1.SetSize(180, 80)
self.tahta1.SetCenterPosition()
self.tahta1.AddFlag('float')
self.tahta1.AddFlag('movable')
self.tahta1.SetTitleName("Depo & IemShop")
self.tahta1.Show()
self.itemshop1 = ui.Button()
self.itemshop1.SetEvent(self._item_shop)
self.itemshop1.SetParent(self.tahta1)
self.itemshop1.SetPosition(95, 40)
self.itemshop1.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
self.itemshop1.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
self.itemshop1.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
self.itemshop1.SetText("ItemShop")
self.itemshop1.Show()
self.depo1 = ui.Button()
self.depo1.SetEvent(self._depo_ac)
self.depo1.SetParent(self.tahta1)
self.depo1.SetPosition(25, 40)
self.depo1.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
self.depo1.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
self.depo1.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
self.depo1.SetText("Depo")
self.depo1.Show()
else:
interfaceModule.statutahta1 = 0
self.tahta1.Hide()
self.itemshop1.Hide()
self.depo1.Hide()
def _item_shop(self):
if self.__IsSpecialMap():
chat.AppendChat(1, "Burada Item Shop A?mazs?!")
interfaceModule.statutahta1 = 0
self.tahta1.Hide()
self.itemshop1.Hide()
self.depo1.Hide()
return
interfaceModule.statutahta1 = 0
self.tahta1.Hide()
self.itemshop1.Hide()
self.depo1.Hide()
net.SendChatPacket("/click_mall")
def _depo_ac(self):
if self.__IsSpecialMap():
chat.AppendChat(1, "Burada Depo A?mazs?!")
interfaceModule.statutahta1 = 0
self.tahta1.Hide()
self.itemshop1.Hide()
self.depo1.Hide()
return
interfaceModule.statutahta1 = 0
self.tahta1.Hide()
self.itemshop1.Hide()
self.depo1.Hide()
net.SendChatPacket("/click_safebox")
def __IsSpecialMap(self):
import background
dis_maps = [
"season1/metin2_map_oxevent",
"season2/metin2_map_guild_inside01",
"season2/metin2_map_empirewar01",
"season2/metin2_map_empirewar02",
"season2/metin2_map_empirewar03",
"metin2_map_dragon_timeattack_01",
"metin2_map_dragon_timeattack_02",
"metin2_map_dragon_timeattack_03",
"metin2_map_skipia_dungeon_boss",
"metin2_map_skipia_dungeon_boss2",
"metin2_map_devilsCatacomb",
"metin2_map_deviltower1",
"metin2_map_t1",
"metin2_map_t2",
"metin2_map_t3",
"metin2_map_t4",
"metin2_map_t5",
"metin2_map_wedding_01",
"metin2_map_duel",
"metin2_map_orclabyrinth",
"metin2_map_n_flame_dungeon_01",
"metin2_map_n_snow_dungeon_01"
]
if str(background.GetCurrentMapName()) in dis_maps:
return TRUE
return FALSE
def ep_yukle(self):
net.SendChatPacket("/in_game_mall")
def __EpYenile(self):
net.SendChatPacket("/epyenileknk")
self.wndMds.SetText(str(constInfo.mds) + " Won")
def ClickCostumeButton(self):
print "Click Costume Button"
if self.wndCostume:
if self.wndCostume.IsShow():
self.wndCostume.Hide()
else:
self.wndCostume.Show()
else:
self.wndCostume = CostumeWindow(self)
self.wndCostume.Show()
## Benazir Button
def OnPickMoney(self, money, cheque):
if money > 0 and cheque <= 0:
mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money)
elif cheque > 0 and money <= 0:
mouseModule.mouseController.AttachCheque(self, player.SLOT_TYPE_INVENTORY, cheque)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Info: N? ?permitido descartar duas moedas juntas.")
def OnPickItem(self, count):
itemSlotIndex = self.dlgPickItem.itemGlobalSlotIndex
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count)
def __InventoryLocalSlotPosToGlobalSlotPos(self, local):
if player.IsEquipmentSlot(local) or player.IsCostumeSlot(local) or (app.ENABLE_NEW_EQUIPMENT_SYSTEM and player.IsBeltInventorySlot(local)):
return local
return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local
def RefreshBagSlotWindow(self):
is_activated = 0
getItemVNum=player.GetItemIndex
getItemCount=player.GetItemCount
setItemVNum=self.wndItem.SetItemSlot
for i in xrange(player.INVENTORY_PAGE_SIZE*2):
slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
itemCount = getItemCount(slotNumber)
if 0 == itemCount:
self.wndItem.ClearSlot(i)
continue
elif 1 == itemCount:
itemCount = 0
itemVnum = getItemVNum(slotNumber)
setItemVNum(i, itemVnum, itemCount)
if itemVnum == 0 and slotNumber in self.liHighlightedItems:
self.liHighlightedItems.remove(i)
if constInfo.IS_AUTO_POTION(itemVnum):
metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
if slotNumber >= player.INVENTORY_PAGE_SIZE:
slotNumber -= player.INVENTORY_PAGE_SIZE
isActivated = 0 != metinSocket[0]
if isActivated:
self.wndItem.ActivateSlot(i)
potionType = 0;
if constInfo.IS_AUTO_POTION_HP(itemVnum):
potionType = player.AUTO_POTION_TYPE_HP
elif constInfo.IS_AUTO_POTION_SP(itemVnum):
potionType = player.AUTO_POTION_TYPE_SP
usedAmount = int(metinSocket[1])
totalAmount = int(metinSocket[2])
player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
else:
self.wndItem.DeactivateSlot(i)
elif constInfo.IS_ACCE_ITEM(itemVnum, 1) == TRUE:
metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
isActivated = metinSocket[0]
if isActivated == 1:
player.SetAcceInfo(isActivated, i)
self.wndItem.ActivateAcceSlot(i)
else:
self.wndItem.DeactivateAcceSlot(i)
if exchange.isTrading() and item.IsAntiFlag(item.ANTIFLAG_GIVE) or shop.IsOpen() and item.IsAntiFlag(item.ITEM_ANTIFLAG_SELL) or shop.IsPrivateShop() and item.IsAntiFlag(item.ITEM_ANTIFLAG_SELL):
self.wndItem.SetUnusableSlot(i)
self.listUnusableSlot.append(i)
elif not exchange.isTrading() and item.IsAntiFlag(item.ANTIFLAG_GIVE) and slotNumber in self.listUnusableSlot:
self.wndItem.SetUsableSlot(i)
# self.listUnusableSlot.remove(i)
self.__RefreshHighlights()
self.wndItem.RefreshSlot()
if self.wndBelt:
self.wndBelt.RefreshSlot()
if self.wndBio:
self.wndBio.RefreshSlot()
def HighlightSlot(self, slot):
if not slot in self.liHighlightedItems:
self.liHighlightedItems.append(slot)
def __RefreshHighlights(self):
for i in xrange(player.INVENTORY_PAGE_SIZE):
slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
if slotNumber in self.liHighlightedItems:
self.wndItem.ActivateSlot(i)
def RefreshEquipSlotWindow(self):
getItemVNum=player.GetItemIndex
getItemCount=player.GetItemCount
setItemVNum=self.wndEquip.SetItemSlot
for i in xrange(player.EQUIPMENT_PAGE_COUNT):
slotNumber = player.EQUIPMENT_SLOT_START + i
itemCount = getItemCount(slotNumber)
if itemCount <= 1:
itemCount = 0
setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
if app.ENABLE_NEW_EQUIPMENT_SYSTEM:
for i in xrange(player.NEW_EQUIPMENT_SLOT_COUNT):
slotNumber = player.NEW_EQUIPMENT_SLOT_START + i
itemCount = getItemCount(slotNumber)
if itemCount <= 1:
itemCount = 0
setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount)
print "ENABLE_NEW_EQUIPMENT_SYSTEM", slotNumber, itemCount, getItemVNum(slotNumber)
self.wndEquip.RefreshSlot()
if self.wndCostume:
self.wndCostume.RefreshCostumeSlot()
def RefreshItemSlot(self):
self.RefreshBagSlotWindow()
self.RefreshEquipSlotWindow()
#systemInfoInfoRenkliYangBitis
def RefreshStatus ( self ):
pass
#money = player.GetElk()
#self.wndMoney.SetText(localeInfo.NumberToMoneyString(money))
#self.onlineep.SetText(str(constInfo.online) + " Online - " + str(constInfo.EP) + " EP")
#if app.ENABLE_CHEQUE_SYSTEM:
#cheque = player.GetWon()
#self.wndCheque.SetText(localeInfo.NumberToMoneyString(cheque))
#self.wndMds.SetText(str(constInfo.mds) + " Won")
#systemInfoRenkliYangBitis
def OnUpdate(self):
import constInfo
#self.offlinetext.SetText(str(constInfo.offline) + " Offline Pazar ")
def SetItemToolTip(self, tooltipItem):
self.tooltipItem = tooltipItem
def SellItem(self):
if self.sellingSlotitemIndex == player.GetItemIndex(self.sellingSlotNumber):
if self.sellingSlotitemCount == player.GetItemCount(self.sellingSlotNumber):
## 용혼석도 팔리게 하는 기능 추가하면서 인자 type 추가
net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count, player.INVENTORY)
snd.PlaySound("sound/ui/money.wav")
self.OnCloseQuestionDialog()
def OnDetachMetinFromItem(self):
if None == self.questionDialog:
return
if gameInfo.DUELLO_DURUM == 1 or gameInfo.DUELLO_DURUM == 4:
self.OnCloseQuestionDialog()
return
#net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.OnCloseQuestionDialog()
def OnCloseQuestionDialog(self):
if not self.questionDialog:
return
self.questionDialog.Close()
self.questionDialog = None
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
## Slot Event
def SelectEmptySlot(self, selectedSlotPos):
import constInfo
if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1:
return
selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos)
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
itemCount = player.GetItemCount(attachedSlotPos)
attachedCount = mouseModule.mouseController.GetAttachedItemCount()
self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount)
if item.IsRefineScroll(attachedItemIndex):
self.wndItem.SetUseMode(False)
#if selectedSlotPos == 368 or selectedSlotPos == 413 or selectedSlotPos == 458 or selectedSlotPos == 503 or selectedSlotPos == 548:
# itemIndex = player.GetItemIndex(attachedSlotPos)
# item.SelectItem(itemIndex)
# import event
# import constInfo
# constInfo.kilit_id = attachedSlotPos
# item_kilit_q = constInfo.item_kilit_q
# event.QuestButtonClick(item_kilit_q)
elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType:
mouseModule.mouseController.RunCallBack("INVENTORY")
elif player.SLOT_TYPE_OFFLINE_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")
elif player.ITEM_CHEQUE == 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, localeInfo.SHOP_BUY_INFO)
elif app.IsPressed(app.DIK_LALT):
link = player.GetItemLink(itemSlotIndex)
ime.PasteString(link)
elif app.IsPressed(app.DIK_LSHIFT):
itemCount = player.GetItemCount(itemSlotIndex)
if itemCount > 1:
self.dlgPickItem.SetTitleName(localeInfo.PICK_ITEM_TITLE)
self.dlgPickItem.SetAcceptEvent(ui.__mem_func__(self.OnPickItem))
self.dlgPickItem.Open(itemCount)
self.dlgPickItem.itemGlobalSlotIndex = itemSlotIndex
#else:
#selectedItemVNum = player.GetItemIndex(itemSlotIndex)
#mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum)
elif app.IsPressed(app.DIK_LCONTROL):
itemIndex = player.GetItemIndex(itemSlotIndex)
if True == item.CanAddToQuickSlotItem(itemIndex):
player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.QUICKSLOT_REGISTER_DISABLE_ITEM)
else:
selectedItemVNum = player.GetItemIndex(itemSlotIndex)
itemCount = player.GetItemCount(itemSlotIndex)
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount)
if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex):
self.wndItem.SetUseMode(True)
else:
self.wndItem.SetUseMode(False)
snd.PlaySound("sound/ui/pick.wav")
def UseTransportBox(self):
self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
self.OnCloseQuestionDialog()
def UseProtein(self):
self.__SendUseItemToItemPacket(self.questionDialog.src, self.questionDialog.dst)
self.OnCloseQuestionDialog()
def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos):
if srcItemSlotPos == dstItemSlotPos:
return
if app.ENABLE_SOULBIND_SYSTEM:
SrcItemVNum = player.GetItemIndex(srcItemSlotPos)
DstItemVNum = player.GetItemIndex(dstItemSlotPos)
item.SelectItem(SrcItemVNum)
SrcSubType = item.GetItemSubType()
if SrcSubType == item.USE_BIND or SrcSubType == item.USE_UNBIND:
item.SelectItem(DstItemVNum)
if item.IsAntiFlag(item.ANTIFLAG_BIND):
return
else:
if SrcSubType == item.USE_BIND and player.GetItemBind(dstItemSlotPos) > 1:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SOULBIND_ALERT3)
elif SrcSubType == item.USE_BIND and player.GetItemBind(dstItemSlotPos) == 1:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SOULBIND_ALERT2)
elif SrcSubType == item.USE_UNBIND and player.GetItemBind(dstItemSlotPos) > 1:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SOULBIND_ALERT3)
elif SrcSubType == item.USE_UNBIND and player.GetItemBind(dstItemSlotPos) != 1:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SOULBIND_ALERT1)
else:
action = "bind"
if SrcSubType == item.USE_UNBIND:
action = "unbind"
self.__SoulBindItem(srcItemSlotPos, dstItemSlotPos, action)
return
else:
if srcItemVID >= 55701 and srcItemVID <= 55705 and player.GetItemIndex(dstItemSlotPos) == 55002:
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_PET_BAG_ITEM)
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseTransportBox))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.src = srcItemSlotPos
self.questionDialog.dst = dstItemSlotPos
if srcItemVID == 55001 and player.GetItemIndex(dstItemSlotPos) >= 55701 and player.GetItemIndex(dstItemSlotPos) <= 55705:
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText("Peti beslemek istiyor musun?")
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseProtein))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.src = srcItemSlotPos
self.questionDialog.dst = dstItemSlotPos
if item.IsRefineScroll(srcItemVID):
self.RefineItem(srcItemSlotPos, dstItemSlotPos)
self.wndItem.SetUseMode(FALSE)
elif item.IsMetin(srcItemVID):
self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos)
elif int(srcItemVID) == 50512:
self.AddCostumEffect(srcItemSlotPos, dstItemSlotPos)
elif item.IsDetachScroll(srcItemVID):
self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos)
elif item.IsKey(srcItemVID):
self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE:
self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE:
self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
else:
if player.IsEquipmentSlot(dstItemSlotPos):
if item.IsEquipmentVID(srcItemVID):
self.__UseItem(srcItemSlotPos)
else:
self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
else:
if srcItemVID >= 55701 and srcItemVID <= 55705 and player.GetItemIndex(dstItemSlotPos) == 55002:
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_PET_BAG_ITEM)
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseTransportBox))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.src = srcItemSlotPos
self.questionDialog.dst = dstItemSlotPos
if srcItemVID == 55001 and player.GetItemIndex(dstItemSlotPos) >= 55701 and player.GetItemIndex(dstItemSlotPos) <= 55705:
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText("Peti beslemek istiyor musun?")
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.UseProtein))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.src = srcItemSlotPos
self.questionDialog.dst = dstItemSlotPos
if 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 int(srcItemVID) == 50512:
self.AddCostumEffect(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:
if player.IsEquipmentSlot(dstItemSlotPos):
if item.IsEquipmentVID(srcItemVID):
self.__UseItem(srcItemSlotPos)
else:
self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0)
def __SellItem(self, itemSlotPos):
#if itemSlotPos in uiitemineduello.ItemSlot:
# chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_HAREKET_ETTIREMESSIN)
#return
# if itemSlotPos in uiExchange_Multi.ITEMSLOT:
# chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_HAREKET_ETTIREMESSIN)
# return
if not player.IsEquipmentSlot(itemSlotPos):
self.sellingSlotNumber = itemSlotPos
itemIndex = player.GetItemIndex(itemSlotPos)
itemCount = player.GetItemCount(itemSlotPos)
self.sellingSlotitemIndex = itemIndex
self.sellingSlotitemCount = itemCount
item.SelectItem(itemIndex)
## 안티 플레그 검사 빠져서 추가
## 20140220
if item.IsAntiFlag(item.ANTIFLAG_SELL):
popup = uiCommon.PopupDialog()
popup.SetText(localeInfo.SHOP_CANNOT_SELL_ITEM)
popup.SetAcceptEvent(self.__OnClosePopupDialog)
popup.Open()
self.popup = popup
return
itemPrice = item.GetISellItemPrice()
if item.Is1GoldItem():
itemPrice = itemCount / itemPrice / 5
else:
itemPrice = itemPrice * itemCount / 5
item.GetItemName(itemIndex)
itemName = item.GetItemName()
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice))
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.count = itemCount
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
def __OnClosePopupDialog(self):
self.pop = None
def RefineItem(self, scrollSlotPos, targetSlotPos):
scrollIndex = player.GetItemIndex(scrollSlotPos)
targetIndex = player.GetItemIndex(targetSlotPos)
if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos):
return
###########################################################
self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos)
#net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos)
return
###########################################################
###########################################################
#net.SendRequestRefineInfoPacket(targetSlotPos)
#return
###########################################################
result = player.CanRefine(scrollIndex, targetSlotPos)
if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NO_MORE_SOCKET)
elif player.REFINE_NEED_MORE_GOOD_SCROLL == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_NEED_BETTER_SCROLL)
elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_SOCKET_DISABLE_ITEM)
elif player.REFINE_NOT_NEXT_GRADE_ITEM == result:
#snd.PlaySound("sound/ui/jaeryun_fail.wav")
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_UPGRADE_DISABLE_ITEM)
elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_EQUIP_ITEM)
if player.REFINE_OK != result:
return
self.refineDialog.Open(scrollSlotPos, targetSlotPos)
def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos):
scrollIndex = player.GetItemIndex(scrollSlotPos)
targetIndex = player.GetItemIndex(targetSlotPos)
if constInfo.IS_ACCE_ITEM_DETACH(scrollIndex) == TRUE:
item.SelectItem(targetIndex)
if item.GetItemSubType() == item.COSTUME_TYPE_ACCE:
if self.GetAcceAttribute(targetSlotPos) == 0:
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.ACCE_DO_YOU_REMOVE_ATTR)
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
else:
return
else:
if not player.CanDetach(scrollIndex, targetSlotPos):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM)
return
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN)
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):
overSlotPosGlobal = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos)
self.wndItem.SetUsableItem(False)
if overSlotPosGlobal in self.liHighlightedItems:
self.liHighlightedItems.remove(overSlotPosGlobal)
self.wndItem.DeactivateSlot(overSlotPos)
if mouseModule.mouseController.isAttached():
attachedItemType = mouseModule.mouseController.GetAttachedType()
if player.SLOT_TYPE_INVENTORY == attachedItemType:
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex()
if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPosGlobal):
self.wndItem.SetUsableItem(True)
self.ShowToolTip(overSlotPosGlobal)
return
self.ShowToolTip(overSlotPosGlobal)
def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos):
"다른 아이템에 사용할 수 있는 아이템인가?"
if srcItemVNum >= 55701 and srcItemVNum <= 55704:
return True
if srcItemVNum == 55001:
return True
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 int(srcItemVNum) == 50512:
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 __CanAddCostumEffect(self, dstSlotPos):
dstItemVNum = player.GetItemIndex(dstSlotPos)
if dstItemVNum == 0:
return False
item.SelectItem(dstItemVNum)
if item.ITEM_TYPE_COSTUME != item.GetItemType():
return False
if item.COSTUME_TYPE_BODY != item.GetItemSubType():
return False
return True
def AddCostumEffect(self, metinSlotPos, targetSlotPos):
if player.IsEquipmentSlot(targetSlotPos):
return
if self.__CanAddCostumEffect(targetSlotPos) == False:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Sadece kostumlere parlama ekleyebilirsin.")
return
if not self.costumeffect.IsShow():
self.costumeffect.SlotPos(metinSlotPos, targetSlotPos)
self.costumeffect.Open()
def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
"대상 아이템에 사용할 수 있는가?"
if srcSlotPos == dstSlotPos:
return False
elif item.IsRefineScroll(srcItemVNum):
if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos):
return True
if srcItemVNum == player.GetItemIndex(dstSlotPos):
if player.GetItemCount(dstSlotPos) < 250:
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 int(srcItemVNum) == 50512:
if self.__CanAddCostumEffect(dstSlotPos) == True:
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 "NEW_ADD_SOCKET" == useType:
if self.__New_Add_Socket(dstSlotPos):
return True
elif "USE_PUT_INTO_BELT_SOCKET" == useType:
dstItemVNum = player.GetItemIndex(dstSlotPos)
print "USE_PUT_INTO_BELT_SOCKET", srcItemVNum, dstItemVNum
item.SelectItem(dstItemVNum)
if item.ITEM_TYPE_BELT == item.GetItemType():
return True
elif "USE_BIND" == useType or "USE_UNBIND" == useType:
if not app.ENABLE_SOULBIND_SYSTEM:
return False
dstItemVNum = player.GetItemIndex(dstSlotPos)
item.SelectItem(dstItemVNum)
if item.IsAntiFlag(item.ANTIFLAG_BIND):
return False
elif useType == "USE_BIND" and player.GetItemBind(dstSlotPos) == 1:
return False
elif useType == "USE_BIND" and player.GetItemBind(dstSlotPos) > 1:
return False
elif useType == "USE_UNBIND" and player.GetItemBind(dstSlotPos) != 1:
return False
else:
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
if app.ENABLE_SOULBIND_SYSTEM:
def __SoulBindItem(self, scrollSlotPos, targetSlotPos, action = "bind"):
DstItemVNum = player.GetItemIndex(targetSlotPos)
item.SelectItem(DstItemVNum)
item_name = item.GetItemName()
self.questionDialog = uiCommon.QuestionDialog()
if action == "bind":
self.questionDialog.SetText(localeInfo.SOULBIND_ITEM % (item_name))
else:
self.questionDialog.SetText(localeInfo.SOULUNBIND_ITEM % (item_name))
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnAcceptSoulBindItem))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
self.questionDialog.Open()
self.questionDialog.sourcePos = scrollSlotPos
self.questionDialog.targetPos = targetSlotPos
def OnAcceptSoulBindItem(self):
if self.questionDialog == None:
return
self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos)
self.OnCloseQuestionDialog()
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 __New_Add_Socket(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.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE:
return True
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<6:
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):
curCursorNum = app.GetCursor()
if app.SELL == curCursorNum:
return
if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
return
slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
if app.ENABLE_DRAGON_SOUL_SYSTEM:
if self.wndDragonSoulRefine.IsShow():
self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
return
self.__UseItem(slotIndex)
mouseModule.mouseController.DeattachObject()
self.OverOutItem()
def __UseItem(self, slotIndex):
ItemVNum = player.GetItemIndex(slotIndex)
item.SelectItem(ItemVNum)
if app.ENABLE_EXTEND_INVEN_SYSTEM:
if ItemVNum == 72320:
self.en_ac()
if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE):
self.questionDialog = uiCommon.QuestionDialog()
self.questionDialog.SetText(localeInfo.INVENTORY_REALLY_USE_ITEM)
self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept))
self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel))
self.questionDialog.Open()
self.questionDialog.slotIndex = slotIndex
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)
else:
self.__SendUseItemPacket(slotIndex)
#net.SendItemUsePacket(slotIndex)
def __UseItemQuestionDialog_OnCancel(self):
self.OnCloseQuestionDialog()
def __UseItemQuestionDialog_OnAccept(self):
self.__SendUseItemPacket(self.questionDialog.slotIndex)
self.OnCloseQuestionDialog()
def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos):
# 개인상점 열고 있는 동안 아이템 사용 방지
if uiPrivateShopBuilder.IsBuildingPrivateShop():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_PRIVATE_SHOP)
return
if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
return
if (uiOfflineShop.IsEditingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
return
#if srcSlotPos in uiitemineduello.ItemSlot:
# chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_KULLANAMASSIN)
# 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
if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
return
if (uiOfflineShop.IsEditingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_ITEM_FAILURE_OFFLINE_SHOP)
return
#if slotPos in uiitemineduello.ItemSlot:
# chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_KULLANAMASSIN)
# return
#if slotPos in uiExchange_Multi.ITEMSLOT:
# chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_KULLANAMASSIN)
#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
if (uiOfflineShopBuilder.IsBuildingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
return
if (uiOfflineShop.IsEditingOfflineShop()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_OFFLINE_SHOP)
return
# if srcSlotPos in uiitemineduello.ItemSlot:
#chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_HAREKET_ETTIREMESSIN)
# return
#if srcSlotPos in uiExchange_Multi.ITEMSLOT:
#chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DUELLO_ITEMI_HAREKET_ETTIREMESSIN)
#return
net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
def SetDragonSoulRefineWindow(self, wndDragonSoulRefine):
if app.ENABLE_DRAGON_SOUL_SYSTEM:
self.wndDragonSoulRefine = wndDragonSoulRefine
def GetAcceAttribute(self, srcSlotPos):
result = 0
attrSlot = []
for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
attrSlot.append(player.GetItemAttribute(srcSlotPos, i))
if 0 != attrSlot:
for c in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
type = attrSlot[c][0]
if type != 0:
result = result + 1
return result
def OnMoveWindow(self, x, y):
# print "Inventory Global Pos : ", self.GetGlobalPosition()
if self.wndBelt:
# print "Belt Global Pos : ", self.wndBelt.GetGlobalPosition()
self.wndBelt.AdjustPositionAndSize()
if self.wndBio:
self.wndBio.AdjustPositionAndSize()
Server'e ait Root ve Locale packleri: https://www.mediafire.com/file/apk4g22n9wzq5y8/deep-pack.rar/file
B
.RAR Virüstotal:


