Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import uvvY2sBNvVcbJz4jvDr6fSWYdmqv9NPQ as pythonApi
- app = __import__(pythonApi.GetModuleName("app"))
- net = __import__(pythonApi.GetModuleName("net"))
- item = __import__(pythonApi.GetModuleName("item"))
- player = __import__(pythonApi.GetModuleName("player"))
- chat = __import__(pythonApi.GetModuleName("chat"))
- chr = __import__(pythonApi.GetModuleName("chr"))
- exchange = __import__(pythonApi.GetModuleName("exchange"))
- guild = __import__(pythonApi.GetModuleName("guild"))
- import ui
- import grp
- import time
- import wndMgr
- import uiCommon
- import localeInfo
- import mouseModule
- import uiPickMoney
- import playerSettingModule
- import uiToolTip
- import constInfo
- from playerSettingModule import RACE_WARRIOR_M, RACE_WARRIOR_W, RACE_ASSASSIN_M, RACE_ASSASSIN_W, RACE_SURA_M, RACE_SURA_W, RACE_SHAMAN_M, RACE_SHAMAN_W, RACE_WOLFMAN_M
- from time import strftime
- from datetime import datetime
- if app.ENABLE_EXCHANGE_WINDOW_SYSTEM:
- FACE_IMAGE_DICT = {
- RACE_WARRIOR_M : "icon/face/warrior_m.tga",
- RACE_WARRIOR_W : "icon/face/warrior_w.tga",
- RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
- RACE_ASSASSIN_W : "icon/face/assassin_w.tga",
- RACE_SURA_M : "icon/face/sura_m.tga",
- RACE_SURA_W : "icon/face/sura_w.tga",
- RACE_SHAMAN_M : "icon/face/shaman_m.tga",
- RACE_SHAMAN_W : "icon/face/shaman_w.tga",
- }
- FACE_IMAGE_DICT.update({playerSettingModule.RACE_WOLFMAN_M : "icon/face/wolfman_m.tga",})
- HIGHLIGHT_SLOT = "d:/ymir work/ui/public/slot_highlight.sub"
- BASE_VISUALS_ROUTE = "d:/ymir work/ui/game/exchange/"
- class ExchangeDialog(ui.ScriptWindow):
- class TextRenderer(ui.Window):
- def OnRender(self):
- (x, y) = self.GetGlobalPosition()
- chat.RenderBox("$EXCHANGE_CHAT$", x, y-3)
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.TitleName = 0
- self.tooltipItem = 0
- self.xStart = 0
- self.yStart = 0
- self.interface = 0
- self.questionDialog = 0
- self.wndInventory = 0
- self.lockedItems = {i:(-1,-1) for i in range(exchange.EXCHANGE_ITEM_MAX_NUM)}
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def LoadDialog(self):
- PythonScriptLoader = ui.PythonScriptLoader()
- PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog_new.py")
- ## Owner
- self.OwnerSlot = self.GetChild("Owner_Slot")
- self.OwnerSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectOwnerEmptySlot))
- self.OwnerSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectOwnerItemSlot))
- self.OwnerSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInOwnerItem))
- self.OwnerSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- self.OwnerSlot.SetUnselectItemSlotEvent(ui.__mem_func__(self.RightClickItemSlot))
- self.OwnerMoney = self.GetChild("Owner_Money_Value")
- #self.OwnerAcceptLight = self.GetChild("Owner_Accept_Light")
- #self.OwnerAcceptLight.Disable()
- self.OwnerMoneyButton = self.GetChild("Owner_Money")
- self.OwnerMoneyButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
- if app.ENABLE_CHEQUE_SYSTEM:
- self.OwnerCheque = self.GetChild("Owner_Cheque_Value")
- self.OwnerChequeButton = self.GetChild("Owner_Cheque")
- self.OwnerChequeButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
- self.OwnerRaceImage = self.GetChild("Owner_Race_Image")
- self.OwnerOverlay = self.GetChild("Owner_Overlay")
- self.OwnerOverlay.Hide()
- ## Target
- self.TargetSlot = self.GetChild("Target_Slot")
- self.TargetSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInTargetItem))
- self.TargetSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- self.TargetMoney = self.GetChild("Target_Money_Value")
- if app.ENABLE_CHEQUE_SYSTEM:
- self.TargetCheque = self.GetChild("Target_Cheque_Value")
- #self.TargetAcceptLight = self.GetChild("Target_Accept_Light")
- #self.TargetAcceptLight.Disable()
- self.Character_Name = self.GetChild("Character_Name")
- self.Character_Level = self.GetChild("Character_Level")
- self.TargetName = self.GetChild("Target_Name")
- self.TargetLevel = self.GetChild("Target_Level")
- self.TargetGuild = self.GetChild("Target_Guild")
- self.CharacterGuild = self.GetChild("Character_Guild")
- self.TargetFriendIndicator = self.GetChild("Target_Friend_Indicator")
- self.TargetFriendIndicator.Hide()
- self.TargetRaceImage = self.GetChild("Target_Race_Image")
- self.TargetOverlay = self.GetChild("Target_Overlay")
- self.TargetOverlay.Hide()
- ## PickMoneyDialog
- dlgPickMoney = uiPickMoney.PickMoneyDialog()
- dlgPickMoney.LoadDialog()
- dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
- dlgPickMoney.SetTitleName(localeInfo.EXCHANGE_MONEY)
- dlgPickMoney.SetMax(10)
- #if app.ENABLE_CHEQUE_SYSTEM:
- #dlgPickMoney.SetMaxCheque(3)
- dlgPickMoney.Hide()
- self.dlgPickMoney = dlgPickMoney
- ## Button
- self.ReadyButton = self.GetChild("Middle_Exchange_Button")
- self.ReadyButton.SetEvent(ui.__mem_func__(self.ReadyExchange))
- self.TitleName = self.GetChild("TitleName")
- self.GetChild("TitleBar").SetCloseEvent(net.SendExchangeExitPacket)
- ## Scroll
- self.scrollBar = self.GetChild("scrollbar")
- self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
- self.scrollBar.SetPos(0.0)
- ## Chat
- self.textRenderer = self.TextRenderer()
- self.textRenderer.SetParent(self)
- self.textRenderer.SetPosition(40, 239)
- self.textRenderer.Show()
- def Destroy(self):
- print "---------------------------------------------------------------------------- DESTROY EXCHANGE"
- self.ClearDictionary()
- self.dlgPickMoney.Destroy()
- self.dlgPickMoney = 0
- self.scrollBar.Destroy()
- self.scrollBar = 0
- self.OwnerSlot = 0
- self.OwnerMoney = 0
- if app.ENABLE_CHEQUE_SYSTEM:
- self.OwnerCheque = 0
- self.OwnerAcceptLight = 0
- self.OwnerMoneyButton = 0
- if app.ENABLE_CHEQUE_SYSTEM:
- self.OwnerChequeButton = 0
- self.TargetSlot = 0
- self.TargetMoney = 0
- if app.ENABLE_CHEQUE_SYSTEM:
- self.TargetCheque = 0
- self.TargetAcceptLight = 0
- self.TitleName = 0
- self.ReadyButton = 0
- self.tooltipItem = 0
- self.TargetName = 0
- self.Character_Name = 0
- self.TargetLevel = 0
- self.Character_Level = 0
- self.TargetGuild = 0
- self.CharacterGuild = 0
- self.TargetFriendIndicator = 0
- self.TargetRaceImage = 0
- self.TargetOverlay = 0
- self.OwnerRaceImage = 0
- self.OwnerOverlay = 0
- self.questionDialog = 0
- self.wndInventory = 0
- self.lockedItems = {i:(-1,-1) for i in range(exchange.EXCHANGE_ITEM_MAX_NUM)}
- self.textRenderer = None
- def OpenDialog(self):
- # Reset the info box
- chat.ClearBox("$EXCHANGE_CHAT$")
- chat.CreateFloatingBox("$EXCHANGE_CHAT$")
- chat.SetBoxSize("$EXCHANGE_CHAT$", 370, 80)
- chat.SetRenderDownwards("$EXCHANGE_CHAT$", True)
- targetVID = exchange.GetTargetVID()
- self.TargetName.SetText(chr.GetNameByVID(targetVID))
- self.Character_Name.SetText(player.GetName())
- self.TargetLevel.SetText("Lv. "+str(exchange.GetLevelFromTarget()))
- self.Character_Level.SetText("Lv. "+str(exchange.GetLevelFromSelf()))
- if chr.GetGuildID(targetVID) != 0:
- self.TargetGuild.SetText(guild.GetGuildName(chr.GetGuildID(targetVID)))
- else:
- self.TargetGuild.SetText("")
- if chr.GetGuildID(player.GetMainCharacterIndex()) != 0:
- self.CharacterGuild.SetText(guild.GetGuildName(chr.GetGuildID(player.GetMainCharacterIndex())))
- else:
- self.CharacterGuild.SetText("")
- #if messenger.IsFriendByName(chr.GetNameByVID(targetVID)):
- # self.TargetFriendIndicator.Show()
- #else:
- # self.TargetFriendIndicator.Hide()
- # Race img for target
- try:
- race = chr.GetRaceByVID(targetVID)
- faceImageName = FACE_IMAGE_DICT[race]
- try:
- self.TargetRaceImage.LoadImage(faceImageName)
- except:
- print "TradeWindow, could not load image for target: race=%d, faceImageName=%s" % (race, faceImageName)
- self.TargetRaceImage.Hide()
- except KeyError:
- self.TargetRaceImage.Hide()
- # Race image for owner
- try:
- race = chr.GetRaceByVID(player.GetMainCharacterIndex())
- faceImageName = FACE_IMAGE_DICT[race]
- try:
- self.OwnerRaceImage.LoadImage(faceImageName)
- except:
- print "TradeWindow, could not load image for owner: race=%d, faceImageName=%s" % (race, faceImageName)
- self.OwnerRaceImage.Hide()
- except KeyError:
- self.OwnerRaceImage.Hide()
- self.Show()
- (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
- self.interface.SetOnTopWindow(player.ON_TOP_WND_EXCHANGE)
- self.interface.RefreshMarkInventoryBag()
- def CloseDialog(self):
- wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
- if 0 != self.tooltipItem:
- self.tooltipItem.HideToolTip()
- self.dlgPickMoney.Close()
- self.Hide()
- for exchangePos, (itemInvenPage, itemSlotPos) in self.lockedItems.items():
- if itemInvenPage == self.wndInventory.GetInventoryPageIndex():
- self.wndInventory.wndItem.SetCanMouseEventSlot(itemSlotPos)
- self.lockedItems = {i:(-1,-1) for i in range(exchange.EXCHANGE_ITEM_MAX_NUM)}
- self.interface.SetOnTopWindow(player.ON_TOP_WND_NONE)
- self.interface.RefreshMarkInventoryBag()
- def AppendInformation(self, unixTime, info, error = False):
- if not error:
- chatType = chat.WHISPER_TYPE_CHAT
- else:
- chatType = chat.WHISPER_TYPE_SYSTEM
- time = datetime.fromtimestamp(unixTime).timetuple()
- chat.AppendToBox(chatType, "$EXCHANGE_CHAT$", "["+strftime("%H:%M:%S", time) + "] "+info)
- def SetItemToolTip(self, tooltipItem):
- self.tooltipItem = tooltipItem
- def OpenPickMoneyDialog(self):
- if self.OwnerMoney.GetText() != "0" or self.OwnerCheque.GetText() != "0" :
- return
- if app.ENABLE_CHEQUE_SYSTEM:
- if exchange.GetElkFromSelf() > 0 or exchange.GetChequeFromSelf() > 0:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANT_EDIT_MONEY)
- return
- self.dlgPickMoney.Open(player.GetElk(), player.GetCheque())
- else:
- if exchange.GetElkFromSelf() > 0:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANT_EDIT_MONEY)
- return
- self.dlgPickMoney.Open(player.GetElk())
- def OnPickMoney(self, money, cheque):
- if app.ENABLE_CHEQUE_SYSTEM:
- if money > 0:
- net.SendExchangeElkAddPacket(money)
- if cheque > 0:
- net.SendExchangeChequeAddPacket(cheque)
- else:
- net.SendExchangeElkAddPacket(money)
- def ReadyExchange(self):
- emptyslots = 0;
- emptyslots_self = 0;
- for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemVnum_self = exchange.GetItemVnumFromSelf(i)
- itemVnum = exchange.GetItemVnumFromTarget(i)
- if itemVnum == 0:
- emptyslots += 1
- if itemVnum_self == 0:
- emptyslots_self += 1
- # if emptyslots_self != exchange.EXCHANGE_ITEM_MAX_NUM:
- # if emptyslots == exchange.EXCHANGE_ITEM_MAX_NUM and exchange.GetElkFromTarget() <= 10000:
- # self.questionDialog = uiCommon.QuestionDialog3()
- # self.questionDialog.SetText1(localeInfo.TRADE_FOR_NOTHING1)
- # self.questionDialog.SetText2(localeInfo.TRADE_FOR_NOTHING2)
- # self.questionDialog.SetText3(localeInfo.TRADE_FOR_NOTHING3)
- # self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.DoExchange))
- # self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
- # self.questionDialog.Open()
- # else:
- # self.DoExchange()
- # else:
- self.DoExchange()
- def DoExchange(self):
- net.SendExchangeAcceptPacket()
- self.OnCloseQuestionDialog()
- def OnCloseQuestionDialog(self):
- if not self.questionDialog:
- return
- self.questionDialog.Close()
- self.questionDialog = None
- constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)
- def OnScroll(self):
- chat.SetBoxPosition("$EXCHANGE_CHAT$", 1 - self.scrollBar.GetPos())
- def SelectOwnerEmptySlot(self, SlotIndex):
- if False == mouseModule.mouseController.isAttached():
- return
- if mouseModule.mouseController.IsAttachedMoney():
- net.SendExchangeElkAddPacket(long(mouseModule.mouseController.GetAttachedMoneyAmount()))
- else:
- attachedSlotType = mouseModule.mouseController.GetAttachedType()
- if (player.SLOT_TYPE_INVENTORY == attachedSlotType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType):
- attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
- SrcSlotNumber = mouseModule.mouseController.GetRealAttachedSlotNumber()
- DstSlotNumber = SlotIndex
- itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
- item.SelectItem(itemID)
- if item.IsAntiFlag(item.ANTIFLAG_GIVE):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
- mouseModule.mouseController.DeattachObject()
- return
- if app.ENABLE_SOULBIND_SYSTEM:
- if player.GetItemSealDate(attachedInvenType, SrcSlotNumber):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE_SEAL_ITEM)
- return
- print "src:", SrcSlotNumber, ", dst:", DstSlotNumber
- net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)
- if app.UK_ENABLE_SPECIAL_STORAGE:
- if player.SLOT_TYPE_UPGRADE_INVENTORY == attachedSlotType or\
- player.SLOT_TYPE_BOOK_INVENTORY == attachedSlotType or\
- player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
- player.SLOT_TYPE_ATTR_INVENTORY == attachedSlotType or\
- player.SLOT_TYPE_FLOWER_INVENTORY == attachedSlotType or\
- player.SLOT_TYPE_BLEND_INVENTORY == attachedSlotType:
- attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
- SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
- DstSlotNumber = SlotIndex
- itemID = player.GetItemIndex(attachedSlotType, SrcSlotNumber)
- item.SelectItem(itemID)
- if item.IsAntiFlag(item.ANTIFLAG_GIVE):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
- mouseModule.mouseController.DeattachObject()
- return
- if app.ENABLE_SOULBIND_SYSTEM:
- if player.GetItemSealDate(attachedInvenType, SrcSlotNumber):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE_SEAL_ITEM)
- return
- net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)
- mouseModule.mouseController.DeattachObject()
- def RightClickItemSlot(self, SlotIndex):
- print "Requesting removal of", SlotIndex
- net.SendExchangeItemDelPacket(SlotIndex)
- self.lockedItems[SlotIndex] = (-1, -1)
- def SelectOwnerItemSlot(self, SlotIndex):
- print "SelectOwnerItemSlot: ",SlotIndex
- if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
- money = mouseModule.mouseController.GetAttachedItemCount()
- net.SendExchangeElkAddPacket(long(money))
- def HighlightSlots(self, isSelf):
- if isSelf:
- slotWindow = self.OwnerSlot
- getItemVnumFunc = exchange.GetItemVnumFromSelf
- else:
- slotWindow = self.TargetSlot
- getItemVnumFunc = exchange.GetItemVnumFromTarget
- for slotIndex in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemVnum = getItemVnumFunc(slotIndex)
- if itemVnum < 1:
- continue
- item.SelectItem(itemVnum)
- itemType = item.GetItemType()
- if itemType != item.ITEM_TYPE_WEAPON and itemType != item.ITEM_TYPE_ARMOR:
- continue
- itemName = item.GetItemName()
- _, itemHeight = item.GetItemSize()
- for plus in xrange(6, 9+1):
- if "+"+str(plus) in itemName or "+ "+str(plus) in itemName:
- print "Found",plus,"in the item name"
- for row in xrange(0, itemHeight):
- print "Setting bg for: "+str(slotIndex + row*6)
- slotWindow.SetSlotHighlightedGreeen(slotIndex + row*6,0)
- break # Outside the plus loop
- #slotWindow.ClearBackgroundImage()
- def RefreshOwnerSlot(self):
- for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemVnum = exchange.GetItemVnumFromSelf(i)
- itemCount = exchange.GetItemCountFromSelf(i)
- if itemCount == 1:
- itemCount = 0
- self.OwnerSlot.SetItemSlot(i, itemVnum, itemCount)
- if app.ENABLE_CHANGELOOK_SYSTEM:
- itemTransmutedVnum = exchange.GetItemTransmutation(i, True)
- if itemTransmutedVnum:
- self.OwnerSlot.DisableCoverButton(i)
- else:
- self.OwnerSlot.EnableCoverButton(i)
- # See if any item needs highlighting
- self.HighlightSlots(True)
- self.OwnerSlot.RefreshSlot()
- def RefreshTargetSlot(self):
- for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemVnum = exchange.GetItemVnumFromTarget(i)
- itemCount = exchange.GetItemCountFromTarget(i)
- if itemCount == 1:
- itemCount = 0
- self.TargetSlot.SetItemSlot(i, itemVnum, itemCount)
- if app.ENABLE_CHANGELOOK_SYSTEM:
- itemTransmutedVnum = exchange.GetItemTransmutation(i, False)
- if itemTransmutedVnum:
- self.TargetSlot.DisableCoverButton(i)
- else:
- self.TargetSlot.EnableCoverButton(i)
- # See if the any item needs highlighting
- self.HighlightSlots(False)
- self.TargetSlot.RefreshSlot()
- def Refresh(self):
- self.RefreshOwnerSlot()
- self.RefreshTargetSlot()
- self.RefreshLockedSlot()
- self.OwnerMoney.SetText(localeInfo.NumberToString(exchange.GetElkFromSelf()))
- self.TargetMoney.SetText(localeInfo.NumberToString(exchange.GetElkFromTarget()))
- if app.ENABLE_CHEQUE_SYSTEM:
- self.OwnerCheque.SetText(localeInfo.NumberToString(exchange.GetChequeFromSelf()))
- self.TargetCheque.SetText(localeInfo.NumberToString(exchange.GetChequeFromTarget()))
- if exchange.GetAcceptFromSelf():
- self.OwnerOverlay.Show()
- self.ReadyButton.SetUpVisual(BASE_VISUALS_ROUTE+"player_ready_button.tga");
- self.ReadyButton.SetDownVisual(BASE_VISUALS_ROUTE+"player_ready_button.tga");
- self.ReadyButton.SetOverVisual(BASE_VISUALS_ROUTE+"player_ready_button.tga");
- else:
- self.OwnerOverlay.Hide()
- if exchange.GetAcceptFromTarget():
- self.TargetOverlay.Show()
- self.ReadyButton.SetUpVisual(BASE_VISUALS_ROUTE+"target_ready_button.tga");
- self.ReadyButton.SetDownVisual(BASE_VISUALS_ROUTE+"target_ready_button.tga");
- self.ReadyButton.SetOverVisual(BASE_VISUALS_ROUTE+"target_ready_button.tga");
- else:
- self.TargetOverlay.Hide()
- if not exchange.GetAcceptFromSelf() and not exchange.GetAcceptFromTarget():
- self.ReadyButton.SetUpVisual(BASE_VISUALS_ROUTE+"none_ready_button.tga");
- self.ReadyButton.SetDownVisual(BASE_VISUALS_ROUTE+"none_ready_button.tga");
- self.ReadyButton.SetOverVisual(BASE_VISUALS_ROUTE+"none_ready_button.tga");
- def OverInOwnerItem(self, slotIndex):
- if 0 != self.tooltipItem:
- self.tooltipItem.SetExchangeOwnerItem(slotIndex)
- def OverInTargetItem(self, slotIndex):
- if 0 != self.tooltipItem:
- self.tooltipItem.SetExchangeTargetItem(slotIndex)
- def OverOutItem(self):
- if 0 != self.tooltipItem:
- self.tooltipItem.HideToolTip()
- def OnTop(self):
- if self.tooltipItem:
- self.tooltipItem.SetTop()
- def BindInterface(self, interface):
- self.interface = interface
- def OnMouseLeftButtonDown(self):
- hyperlink = ui.GetHyperlink()
- if hyperlink:
- self.interface.MakeHyperlinkTooltip(hyperlink)
- def OnUpdate(self):
- USE_EXCHANGE_LIMIT_RANGE = 1000
- (x, y, z) = player.GetMainCharacterPosition()
- if abs(x - self.xStart) > USE_EXCHANGE_LIMIT_RANGE or abs(y - self.yStart) > USE_EXCHANGE_LIMIT_RANGE:
- (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
- net.SendExchangeExitPacket()
- def CantTradableItem(self, destSlotIndex, srcSlotIndex):
- if True == exchange.GetAcceptFromTarget():
- return
- itemInvenPage = srcSlotIndex / player.INVENTORY_PAGE_SIZE
- localSlotPos = srcSlotIndex - (itemInvenPage * player.INVENTORY_PAGE_SIZE)
- self.lockedItems[destSlotIndex] = (itemInvenPage, localSlotPos)
- if self.wndInventory.GetInventoryPageIndex() == itemInvenPage and self.IsShow():
- self.wndInventory.wndItem.SetCantMouseEventSlot(localSlotPos)
- def RefreshLockedSlot(self):
- if self.wndInventory:
- for exchangePos, (itemInvenPage, itemSlotPos) in self.lockedItems.items():
- if self.wndInventory.GetInventoryPageIndex() == itemInvenPage:
- self.wndInventory.wndItem.SetCantMouseEventSlot(itemSlotPos)
- self.wndInventory.wndItem.RefreshSlot()
- def SetInven(self, wndInventory):
- from _weakref import proxy
- self.wndInventory = proxy(wndInventory)
- if app.ENABLE_FAST_ATTACH_ITEMS_SYSTEM:
- def __GetCurrentItemGrid(self):
- itemGrid = [False for cell in xrange(exchange.EXCHANGE_ITEM_MAX_NUM)]
- for slot in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemVnum = exchange.GetItemVnumFromSelf(slot)
- if itemVnum <> 0:
- item.SelectItem(itemVnum)
- (w, h) = item.GetItemSize()
- for i in xrange(h):
- itemGrid[slot + i * 6] = True
- return itemGrid
- def __FindEmptyCellForSize(self, itemGrid, size):
- for slot in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- if itemGrid[slot] == False:
- possible = True
- for i in xrange(size):
- p = slot + 6 * i
- try:
- if itemGrid[p] == True:
- possible = False
- break
- except IndexError:
- possible = False
- break
- if possible:
- return slot
- return -1
- def AttachItemFromInventory(self, slotWindow, slotIndex):
- attachedItemID = player.GetItemIndex(slotWindow, slotIndex)
- item.SelectItem(attachedItemID)
- if item.IsAntiFlag(item.ITEM_ANTIFLAG_GIVE):
- return False
- itemGrid = self.__GetCurrentItemGrid()
- item.SelectItem(attachedItemID)
- emptySlot = self.__FindEmptyCellForSize(itemGrid, item.GetItemSize()[1])
- if emptySlot == -1 or item.GetItemType() == item.ITEM_TYPE_ELK:
- return False
- net.SendExchangeItemAddPacket(slotWindow, slotIndex, emptySlot)
- return True
- else:
- class ExchangeDialog(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.TitleName = 0
- self.tooltipItem = 0
- self.xStart = 0
- self.yStart = 0
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def LoadDialog(self):
- PythonScriptLoader = ui.PythonScriptLoader()
- PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog.py")
- ## Owner
- self.OwnerSlot = self.GetChild("Owner_Slot")
- self.OwnerSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectOwnerEmptySlot))
- self.OwnerSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectOwnerItemSlot))
- self.OwnerSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInOwnerItem))
- self.OwnerSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- self.OwnerMoney = self.GetChild("Owner_Money_Value")
- self.OwnerAcceptLight = self.GetChild("Owner_Accept_Light")
- self.OwnerAcceptLight.Disable()
- self.OwnerMoneyButton = self.GetChild("Owner_Money")
- self.OwnerMoneyButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
- ## Target
- self.TargetSlot = self.GetChild("Target_Slot")
- self.TargetSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInTargetItem))
- self.TargetSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- self.TargetMoney = self.GetChild("Target_Money_Value")
- self.TargetAcceptLight = self.GetChild("Target_Accept_Light")
- self.TargetAcceptLight.Disable()
- ## PickMoneyDialog
- dlgPickMoney = uiPickMoney.PickMoneyDialog()
- dlgPickMoney.LoadDialog()
- dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
- dlgPickMoney.SetTitleName(localeInfo.EXCHANGE_MONEY)
- if app.ENABLE_FULL_YANG_SYSTEM:
- dlgPickMoney.SetMax(10)
- else:
- dlgPickMoney.SetMax(7)
- dlgPickMoney.Hide()
- self.dlgPickMoney = dlgPickMoney
- ## Button
- self.AcceptButton = self.GetChild("Owner_Accept_Button")
- self.AcceptButton.SetToggleDownEvent(ui.__mem_func__(self.AcceptExchange))
- self.TitleName = self.GetChild("TitleName")
- self.GetChild("TitleBar").SetCloseEvent(net.SendExchangeExitPacket)
- def Destroy(self):
- print "---------------------------------------------------------------------------- DESTROY EXCHANGE"
- self.ClearDictionary()
- self.dlgPickMoney.Destroy()
- self.dlgPickMoney = 0
- self.OwnerSlot = 0
- self.OwnerMoney = 0
- self.OwnerAcceptLight = 0
- self.OwnerMoneyButton = 0
- self.TargetSlot = 0
- self.TargetMoney = 0
- self.TargetAcceptLight = 0
- self.TitleName = 0
- self.AcceptButton = 0
- self.tooltipItem = 0
- def OpenDialog(self):
- self.TitleName.SetText(localeInfo.EXCHANGE_TITLE_LEVEL % (exchange.GetNameFromTarget(), exchange.GetLevelFromTarget()))
- self.AcceptButton.Enable()
- self.AcceptButton.SetUp()
- self.Show()
- (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
- def CloseDialog(self):
- wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
- if 0 != self.tooltipItem:
- self.tooltipItem.HideToolTip()
- self.dlgPickMoney.Close()
- self.Hide()
- def SetItemToolTip(self, tooltipItem):
- self.tooltipItem = tooltipItem
- def OpenPickMoneyDialog(self):
- if exchange.GetElkFromSelf() > 0:
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANT_EDIT_MONEY)
- return
- self.dlgPickMoney.Open(player.GetElk())
- def OnPickMoney(self, money):
- net.SendExchangeElkAddPacket(money)
- def AcceptExchange(self):
- net.SendExchangeAcceptPacket()
- self.AcceptButton.Disable()
- def SelectOwnerEmptySlot(self, SlotIndex):
- if False == mouseModule.mouseController.isAttached():
- return
- if mouseModule.mouseController.IsAttachedMoney():
- net.SendExchangeElkAddPacket(mouseModule.mouseController.GetAttachedMoneyAmount())
- else:
- attachedSlotType = mouseModule.mouseController.GetAttachedType()
- if (player.SLOT_TYPE_INVENTORY == attachedSlotType
- or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType):
- attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
- SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
- DstSlotNumber = SlotIndex
- itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
- item.SelectItem(itemID)
- if item.IsAntiFlag(item.ANTIFLAG_GIVE):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
- mouseModule.mouseController.DeattachObject()
- return
- if app.ENABLE_SOULBIND_SYSTEM:
- if player.GetItemSealDate(attachedInvenType, SrcSlotNumber):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE_SEAL_ITEM)
- return
- net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)
- mouseModule.mouseController.DeattachObject()
- def SelectOwnerItemSlot(self, SlotIndex):
- if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
- money = mouseModule.mouseController.GetAttachedItemCount()
- net.SendExchangeElkAddPacket(money)
- def RefreshOwnerSlot(self):
- for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemIndex = exchange.GetItemVnumFromSelf(i)
- itemCount = exchange.GetItemCountFromSelf(i)
- if 1 == itemCount:
- itemCount = 0
- self.OwnerSlot.SetItemSlot(i, itemIndex, itemCount)
- self.OwnerSlot.RefreshSlot()
- def RefreshTargetSlot(self):
- for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
- itemIndex = exchange.GetItemVnumFromTarget(i)
- itemCount = exchange.GetItemCountFromTarget(i)
- if 1 == itemCount:
- itemCount = 0
- self.TargetSlot.SetItemSlot(i, itemIndex, itemCount)
- self.TargetSlot.RefreshSlot()
- def Refresh(self):
- self.RefreshOwnerSlot()
- self.RefreshTargetSlot()
- self.OwnerMoney.SetText(localeInfo.NumberToMoneyString(exchange.GetElkFromSelf()))
- self.TargetMoney.SetText(localeInfo.NumberToMoneyString(exchange.GetElkFromTarget()))
- if True == exchange.GetAcceptFromSelf():
- self.OwnerAcceptLight.Down()
- else:
- self.AcceptButton.Enable()
- self.AcceptButton.SetUp()
- self.OwnerAcceptLight.SetUp()
- if True == exchange.GetAcceptFromTarget():
- self.TargetAcceptLight.Down()
- else:
- self.TargetAcceptLight.SetUp()
- def OverInOwnerItem(self, slotIndex):
- if 0 != self.tooltipItem:
- self.tooltipItem.SetExchangeOwnerItem(slotIndex)
- def OverInTargetItem(self, slotIndex):
- if 0 != self.tooltipItem:
- self.tooltipItem.SetExchangeTargetItem(slotIndex)
- def OverOutItem(self):
- if 0 != self.tooltipItem:
- self.tooltipItem.HideToolTip()
- def OnTop(self):
- self.tooltipItem.SetTop()
- def OnUpdate(self):
- USE_EXCHANGE_LIMIT_RANGE = 1000
- (x, y, z) = player.GetMainCharacterPosition()
- if abs(x - self.xStart) > USE_EXCHANGE_LIMIT_RANGE or abs(y - self.yStart) > USE_EXCHANGE_LIMIT_RANGE:
- (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
- net.SendExchangeExitPacket()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement