AD: Mt2009 - Mobile & PC - 30 January 2026 CHECK THE PRESENTATION!
hey i have change language of files after i change is show me that error
0222 23:31:33674 :: Traceback (most recent call last):
0222 23:31:33674 :: File "networkModule.py", line 286, in SetGamePhase
0222 23:31:33674 :: File "game.py", line 160, in __init__
0222 23:31:33674 :: File "uiTarget.py", line 669, in __init__
0222 23:31:33674 :: UnboundLocalError
0222 23:31:33674 :: :
0222 23:31:33674 :: local variable 'infoButton' referenced before assignment
0222 23:31:33674 ::
can any one help me?
0222 23:31:33674 :: Traceback (most recent call last):
0222 23:31:33674 :: File "networkModule.py", line 286, in SetGamePhase
0222 23:31:33674 :: File "game.py", line 160, in __init__
0222 23:31:33674 :: File "uiTarget.py", line 669, in __init__
0222 23:31:33674 :: UnboundLocalError
0222 23:31:33674 :: :
0222 23:31:33674 :: local variable 'infoButton' referenced before assignment
0222 23:31:33674 ::
can any one help me?
Code:
import app
import ui
import player
import net
import wndMgr
import messenger
import guild
import chr
import nonplayer
import localeInfo
import constInfo
import uiToolTip
import item
import colorInfo
import background
if app.ENABLE_VIEW_ELEMENT:
ELEMENT_IMAGE_DIC = {1: "elect", 2: "fire", 3: "ice", 4: "wind", 5: "earth", 6 : "dark"}
if app.ENABLE_SEND_TARGET_INFO:
def HAS_FLAG(value, flag):
return (value & flag) == flag
class TargetBoard(ui.ThinBoard):
if app.ENABLE_SEND_TARGET_INFO:
class InfoBoard(ui.ThinBoard):
class ItemListBoxItem(ui.ListBoxExNew.Item):
def __init__(self, width):
ui.ListBoxExNew.Item.__init__(self)
image = ui.ExpandedImageBox()
image.SetParent(self)
image.Show()
self.image = image
nameLine = ui.TextLine()
nameLine.SetParent(self)
nameLine.SetPosition(32 + 5, 0)
nameLine.Show()
self.nameLine = nameLine
self.SetSize(width, 32 + 5)
def LoadImage(self, image, name = None):
self.image.LoadImage(image)
self.SetSize(self.GetWidth(), self.image.GetHeight() + 5 * (self.image.GetHeight() / 32))
if name != None:
self.SetText(name)
def SetText(self, text):
self.nameLine.SetText(text)
def RefreshHeight(self):
ui.ListBoxExNew.Item.RefreshHeight(self)
self.image.SetRenderingRect(0.0, 0.0 - float(self.removeTop) / float(self.GetHeight()), 0.0, 0.0 - float(self.removeBottom) / float(self.GetHeight()))
self.image.SetPosition(0, - self.removeTop)
MAX_ITEM_COUNT = 5
EXP_BASE_LVDELTA = [
1, # -15 0
5, # -14 1
10, # -13 2
20, # -12 3
30, # -11 4
50, # -10 5
70, # -9 6
80, # -8 7
85, # -7 8
90, # -6 9
92, # -5 10
94, # -4 11
96, # -3 12
98, # -2 13
100, # -1 14
100, # 0 15
105, # 1 16
110, # 2 17
115, # 3 18
120, # 4 19
125, # 5 20
130, # 6 21
135, # 7 22
140, # 8 23
145, # 9 24
150, # 10 25
155, # 11 26
160, # 12 27
165, # 13 28
170, # 14 29
180, # 15 30
]
RACE_FLAG_TO_NAME = {
1 << 0 : localeInfo.TARGET_INFO_RACE_ANIMAL,
1 << 1 : localeInfo.TARGET_INFO_RACE_UNDEAD,
1 << 2 : localeInfo.TARGET_INFO_RACE_DEVIL,
1 << 3 : localeInfo.TARGET_INFO_RACE_HUMAN,
1 << 4 : localeInfo.TARGET_INFO_RACE_ORC,
1 << 5 : localeInfo.TARGET_INFO_RACE_MILGYO,
# 1 << 6 : localeInfo.TARGET_INFO_NEWRACE_INSECT,
# 1 << 7 : localeInfo.TARGET_INFO_NEWRACE_FIRE,
# 1 << 8 : localeInfo.TARGET_INFO_NEWRACE_ICE,
# 1 << 9 : localeInfo.TARGET_INFO_NEWRACE_DESERT,
# 1 << 10 : localeInfo.TARGET_INFO_NEWRACE_TREE,
}
SUB_RACE_FLAG_TO_NAME = {
1 << 11 : localeInfo.TARGET_INFO_RACE_ELEC,
1 << 12 : localeInfo.TARGET_INFO_RACE_FIRE,
1 << 13 : localeInfo.TARGET_INFO_RACE_ICE,
1 << 14 : localeInfo.TARGET_INFO_RACE_WIND,
1 << 15 : localeInfo.TARGET_INFO_RACE_EARTH,
1 << 16 : localeInfo.TARGET_INFO_RACE_DARK,
}
STONE_START_VNUM = 28030
STONE_LAST_VNUM = 28045
BOARD_WIDTH = 250
def __init__(self):
ui.ThinBoard.__init__(self)
self.HideCorners(self.LT)
self.HideCorners(self.RT)
self.HideLine(self.T)
self.race = 0
self.hasItems = False
self.itemTooltip = uiToolTip.ItemToolTip()
self.itemTooltip.HideToolTip()
self.stoneImg = None
self.stoneVnum = None
self.lastStoneVnum = 0
self.chestbook = None
self.chestbookvnum = None
self.chestbookstep = 0
self.lastchestbookvnum = 0
self.nextStoneIconChange = 0
self.nextChestBookIconChange = 0
self.children = []
self.scrollBar = None
self.SetSize(self.BOARD_WIDTH, 0)
def __del__(self):
ui.ThinBoard.__del__(self)
def __UpdatePosition(self, targetBoard):
self.SetPosition(targetBoard.GetLeft() + (targetBoard.GetWidth() - self.GetWidth()) / 2, targetBoard.GetBottom() - 17)
def Open(self, targetBoard, race):
self.__LoadInformation(race)
self.SetSize(self.BOARD_WIDTH, self.yPos + 10)
self.__UpdatePosition(targetBoard)
self.Show()
def Refresh(self):
self.__LoadInformation(self.race)
self.SetSize(self.BOARD_WIDTH, self.yPos + 10)
def Close(self):
self.itemTooltip.HideToolTip()
self.Hide()
def __LoadInformation(self, race):
self.yPos = 7
for child in self.children:
if isinstance(child, ui.ListBoxExNew):
if child.scrollBar:
child.scrollBar.Hide()
child.Hide()
child.Destroy()
self.children = []
self.race = race
self.stoneImg = None
self.stoneVnum = None
self.chestbook = None
self.chestbookvnum = None
self.chestbookstep = 0
self.nextStoneIconChange = 0
self.nextChestBookIconChange = 0
self.__LoadInformation_Default(race)
self.__LoadInformation_Race(race)
self.__LoadInformation_Resists(race)
self.__LoadInformation_Drops(race)
def __LoadInformation_Default_GetHitRate(self, race):
attacker_dx = nonplayer.GetMonsterDX(race)
attacker_level = nonplayer.GetMonsterLevel(race)
self_dx = player.GetStatus(player.DX)
self_level = player.GetStatus(player.LEVEL)
iARSrc = min(90, (attacker_dx * 4 + attacker_level * 2) / 6)
iERSrc = min(90, (self_dx * 4 + self_level * 2) / 6)
fAR = (float(iARSrc) + 210.0) / 300.0
fER = (float(iERSrc) * 2 + 5) / (float(iERSrc) + 95) * 3.0 / 10.0
return fAR - fER
def __LoadInformation_Resists(self, race):
self.AppendSeperator()
self.AppendTextLine(localeInfo.TARGET_INFO_RESISTS)
self.AppendTextLine(localeInfo.TARGET_INFO_RESISTS_LINE0 % (nonplayer.GetResist(race, nonplayer.MOB_RESIST_SWORD), nonplayer.GetResist(race, nonplayer.MOB_RESIST_TWOHAND), nonplayer.GetResist(race, nonplayer.MOB_RESIST_BELL)))
self.AppendTextLine(localeInfo.TARGET_INFO_RESISTS_LINE1 % (nonplayer.GetResist(race, nonplayer.MOB_RESIST_DAGGER), nonplayer.GetResist(race, nonplayer.MOB_RESIST_FAN), nonplayer.GetResist(race, nonplayer.MOB_RESIST_BOW)))
def __LoadInformation_Default(self, race):
self.AppendSeperator()
self.AppendTextLine(localeInfo.TARGET_INFO_MAX_HP % localeInfo.DottedNumber(nonplayer.GetMonsterMaxHP(race)))
# calc att damage
monsterLevel = nonplayer.GetMonsterLevel(race)
fHitRate = self.__LoadInformation_Default_GetHitRate(race)
iDamMin, iDamMax = nonplayer.GetMonsterDamage(race)
iDamMin = int((iDamMin + nonplayer.GetMonsterST(race)) * 2 * fHitRate) + monsterLevel * 2
iDamMax = int((iDamMax + nonplayer.GetMonsterST(race)) * 2 * fHitRate) + monsterLevel * 2
iDef = player.GetStatus(player.DEF_GRADE) * (100 + player.GetStatus(player.DEF_BONUS)) / 100
fDamMulti = nonplayer.GetMonsterDamageMultiply(race)
iDamMin = int(max(0, iDamMin - iDef) * fDamMulti)
iDamMax = int(max(0, iDamMax - iDef) * fDamMulti)
if iDamMin < 1:
iDamMin = 1
if iDamMax < 5:
iDamMax = 5
self.AppendTextLine(localeInfo.TARGET_INFO_DAMAGE % (str(iDamMin), str(iDamMax)))
idx = min(len(self.EXP_BASE_LVDELTA) - 1, max(0, (monsterLevel + 15) - player.GetStatus(player.LEVEL)))
iExp = nonplayer.GetMonsterExp(race) * self.EXP_BASE_LVDELTA[idx] / 100
self.AppendTextLine(localeInfo.TARGET_INFO_EXP % localeInfo.DottedNumber(iExp))
self.AppendTextLine(localeInfo.TARGET_INFO_GOLD_MIN_MAX % (localeInfo.DottedNumber(nonplayer.GetMobGoldMin(race)), localeInfo.DottedNumber(nonplayer.GetMobGoldMax(race))))
self.AppendTextLine(localeInfo.TARGET_INFO_REGEN_INFO % (nonplayer.GetMobRegenPercent(race), nonplayer.GetMobRegenCycle(race)))
def __LoadInformation_Race(self, race):
dwRaceFlag = nonplayer.GetMonsterRaceFlag(race)
self.AppendSeperator()
mainrace = ""
subrace = ""
for i in xrange(17):
curFlag = 1 << i
if HAS_FLAG(dwRaceFlag, curFlag):
if self.RACE_FLAG_TO_NAME.has_key(curFlag):
mainrace += self.RACE_FLAG_TO_NAME[curFlag] + ", "
elif self.SUB_RACE_FLAG_TO_NAME.has_key(curFlag):
subrace += self.SUB_RACE_FLAG_TO_NAME[curFlag] + ", "
if nonplayer.IsMonsterStone(race):
mainrace += localeInfo.TARGET_INFO_RACE_METIN + ", "
if mainrace == "":
mainrace = localeInfo.TARGET_INFO_NO_RACE
else:
mainrace = mainrace[:-2]
if subrace == "":
subrace = localeInfo.TARGET_INFO_NO_RACE
else:
subrace = subrace[:-2]
self.AppendTextLine(localeInfo.TARGET_INFO_MAINRACE % mainrace)
self.AppendTextLine(localeInfo.TARGET_INFO_SUBRACE % subrace)
def __LoadInformation_Drops(self, race):
self.AppendSeperator()
if race in constInfo.MONSTER_INFO_DATA:
if len(constInfo.MONSTER_INFO_DATA[race]["items"]) == 0:
self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
else:
itemListBox = ui.ListBoxExNew(32 + 5, self.MAX_ITEM_COUNT)
itemListBox.SetSize(self.GetWidth() - 15 * 2 - ui.ScrollBar.SCROLLBAR_WIDTH, (32 + 5) * self.MAX_ITEM_COUNT)
height = 0
for curItem in constInfo.MONSTER_INFO_DATA[race]["items"]:
if curItem.has_key("vnum_list"):
height += self.AppendItem(itemListBox, curItem["vnum_list"], curItem["count"])
else:
height += self.AppendItem(itemListBox, curItem["vnum"], curItem["count"])
if height < itemListBox.GetHeight():
itemListBox.SetSize(itemListBox.GetWidth(), height)
self.AppendWindow(itemListBox, 15)
itemListBox.SetBasePos(0)
if len(constInfo.MONSTER_INFO_DATA[race]["items"]) > itemListBox.GetViewItemCount():
itemScrollBar = ui.ScrollBar()
itemScrollBar.SetParent(self)
itemScrollBar.SetPosition(itemListBox.GetRight(), itemListBox.GetTop())
itemScrollBar.SetScrollBarSize(32 * self.MAX_ITEM_COUNT + 5 * (self.MAX_ITEM_COUNT - 1))
itemScrollBar.SetMiddleBarSize(float(self.MAX_ITEM_COUNT) / float(height / (32 + 5)))
itemScrollBar.Show()
itemListBox.SetScrollBar(itemScrollBar)
self.scrollBar=itemScrollBar
else:
self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
def OnRunMouseWheel(self, nLen):
if self.scrollBar:
if nLen > 0:
self.scrollBar.OnUp()
else:
self.scrollBar.OnDown()
def AppendTextLine(self, text):
textLine = ui.TextLine()
textLine.SetParent(self)
textLine.SetWindowHorizontalAlignCenter()
textLine.SetHorizontalAlignCenter()
textLine.SetText(text)
textLine.SetPosition(0, self.yPos)
textLine.Show()
self.children.append(textLine)
self.yPos += 17
def AppendSeperator(self):
img = ui.ImageBox()
img.LoadImage("d:/ymir work/ui/seperator.tga")
self.AppendWindow(img)
img.SetPosition(img.GetLeft(), img.GetTop() - 15)
self.yPos -= 15
def AppendItem(self, listBox, vnums, count):
if type(vnums) == int:
vnum = vnums
else:
vnum = vnums[0]
item.SelectItem(vnum)
itemName = item.GetItemName()
if self.chestbook != None and (vnum == 39048 or vnum == 39050 or vnum == 39052 or vnum == 39054):
return 0
if type(vnums) != int and len(vnums) > 1:
vnums = sorted(vnums)
realName = itemName[:itemName.find("+")]
if item.GetItemType() == item.ITEM_TYPE_METIN:
realName = localeInfo.TARGET_INFO_STONE_NAME
itemName = realName + "+0 - +4"
else:
itemName = realName + "+" + str(vnums[0] % 10) + " - +" + str(vnums[len(vnums) - 1] % 10)
vnum = vnums[len(vnums) - 1]
myItem = self.ItemListBoxItem(listBox.GetWidth())
myItem.LoadImage(item.GetIconImageFileName())
if count <= 1:
myItem.SetText(itemName)
else:
myItem.SetText("%dx %s" % (count, itemName))
myItem.SAFE_SetOverInEvent(self.OnShowItemTooltip, vnum)
myItem.SAFE_SetOverOutEvent(self.OnHideItemTooltip)
listBox.AppendItem(myItem)
if item.GetItemType() == item.ITEM_TYPE_METIN:
self.stoneImg = myItem
self.stoneVnum = vnums
self.lastStoneVnum = self.STONE_LAST_VNUM + vnums[len(vnums) - 1] % 1000 / 100 * 100
if vnum == 39048 or vnum == 39050 or vnum == 39052 or vnum == 39054:
self.chestbook = myItem
self.chestbookvnum = vnum
self.lastchestbookvnum = 39048
self.chestbookstep = 0
return myItem.GetHeight()
def OnShowItemTooltip(self, vnum):
item.SelectItem(vnum)
# import dbg
# dbg.TraceError("Arigato")
if item.GetItemType() == item.ITEM_TYPE_METIN:
self.itemTooltip.isStone = True
self.itemTooltip.isBook = False
self.itemTooltip.isBook2 = False
self.itemTooltip.isChestBook = False
self.itemTooltip.SetItemToolTip(self.lastStoneVnum)
elif vnum == 39048 or vnum == 39050 or vnum == 39052 or vnum == 39054:
self.itemTooltip.isStone = False
self.itemTooltip.isBook = False
self.itemTooltip.isBook2 = False
self.itemTooltip.isChestBook = True
self.itemTooltip.SetItemToolTip(self.lastchestbookvnum)
else:
self.itemTooltip.isStone = False
self.itemTooltip.isBook = True
self.itemTooltip.isBook2 = True
self.itemTooltip.isChestBook = False
self.itemTooltip.SetItemToolTip(vnum)
def OnHideItemTooltip(self):
self.itemTooltip.HideToolTip()
def AppendWindow(self, wnd, x = 0, width = 0, height = 0):
if width == 0:
width = wnd.GetWidth()
if height == 0:
height = wnd.GetHeight()
wnd.SetParent(self)
if x == 0:
wnd.SetPosition((self.GetWidth() - width) / 2, self.yPos)
else:
wnd.SetPosition(x, self.yPos)
wnd.Show()
self.children.append(wnd)
self.yPos += height + 5
def OnUpdate(self):
if self.stoneImg != None and self.stoneVnum != None and app.GetTime() >= self.nextStoneIconChange:
nextImg = self.lastStoneVnum + 1
if nextImg % 100 > self.STONE_LAST_VNUM % 100:
nextImg -= (self.STONE_LAST_VNUM - self.STONE_START_VNUM) + 1
self.lastStoneVnum = nextImg
self.nextStoneIconChange = app.GetTime() + 2.5
item.SelectItem(nextImg)
itemName = item.GetItemName()
realName = itemName[:itemName.find("+")]
realName = realName + " +0 - +4"
self.stoneImg.LoadImage(item.GetIconImageFileName(), realName)
if self.itemTooltip.IsShow() and self.itemTooltip.isStone:
self.itemTooltip.SetItemToolTip(nextImg)
if self.chestbook != None and self.chestbookvnum != None and app.GetTime() >= self.nextChestBookIconChange:
myList = [
39048,
39050,
39052,
39054,
]
if self.chestbookstep >= 3:
self.chestbookstep = 0
else:
self.chestbookstep += 1
nextImg = myList[self.chestbookstep]
self.lastchestbookvnum = nextImg
self.nextChestBookIconChange = app.GetTime() + 2.5
item.SelectItem(nextImg)
itemName = item.GetItemName()
self.chestbook.LoadImage(item.GetIconImageFileName(), itemName)
if self.itemTooltip.IsShow() and self.itemTooltip.isChestBook:
self.itemTooltip.SetItemToolTip(nextImg)
if app.__AUTO_QUQUE_ATTACK__:
def __AutoFarmInfo(self):
if not self.autoFarmInfo:
self.autoFarmInfo = AutoFarmInfoWindow()
if self.autoFarmInfo.IsShow():
self.autoFarmInfo.Close()
else:
self.autoFarmInfo.Open()
(x, y) = self.autoFarmBtn.GetGlobalPosition()
self.autoFarmInfo.SetPosition(x + 10, y + 30)
BUTTON_NAME_LIST = (
localeInfo.TARGET_BUTTON_WHISPER,
localeInfo.TARGET_BUTTON_EXCHANGE,
localeInfo.TARGET_BUTTON_FIGHT,
localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
localeInfo.TARGET_BUTTON_AVENGE,
localeInfo.TARGET_BUTTON_FRIEND,
localeInfo.TARGET_BUTTON_INVITE_PARTY,
localeInfo.TARGET_BUTTON_LEAVE_PARTY,
localeInfo.TARGET_BUTTON_EXCLUDE,
localeInfo.TARGET_BUTTON_INVITE_GUILD,
localeInfo.TARGET_BUTTON_DISMOUNT,
localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
"VOTE_BLOCK_CHAT",
)
BUTTON_NAME_LANG = {
"en" : {
0: "Whispering",1: "Trading",2: "Duel",3: "Agree",4: "Revenge",5: "Friend",6: "Group Invitation",7: "Leave Group",8: "Exclude",9: "Guild Invitation",10: "Dismount",11: "End Observer Mode",12: "Equipment",13: "Join Group",14: "Destroy",15: "Emotions",16: "VOTE_BLOCK_CHAT",
},
"es" : {
0: "Conversacion",1: "Comercio",2: "Duelo",3: "Aceptar",4: "Vengar",5: "Amigo",6: "Invitar al Grupo",7: "Salir del Grupo",8: "Excluir",9: "Invitar al Gremio",10: "Desmontar",11: "Finalizar modo observador",12: "Equipamiento",13: "Entrar en grupo",14: "Destruir",15: "Emociones",16: "VOTE_BLOCK_CHAT",
},
"pt" : {
0: "Whispering",1: "Trading",2: "Duel",3: "Agree",4: "Revenge",5: "Friend",6: "Group Invitation",7: "Leave Group",8: "Exclude",9: "Guild Invitation",10: "Dismount",11: "End Observer Mode",12: "Equipment",13: "Join Group",14: "Destroy",15: "Emotions",16: "VOTE_BLOCK_CHAT",
},
}
BUTTON_NAME_ID = {
"localeInfo.TARGET_BUTTON_WHISPER":0,
"localeInfo.TARGET_BUTTON_EXCHANGE":1,
"localeInfo.TARGET_BUTTON_FIGHT":2,
"localeInfo.TARGET_BUTTON_ACCEPT_FIGHT":3,
"localeInfo.TARGET_BUTTON_AVENGE":4,
"localeInfo.TARGET_BUTTON_FRIEND":5,
"localeInfo.TARGET_BUTTON_INVITE_PARTY":6,
"localeInfo.TARGET_BUTTON_LEAVE_PARTY":7,
"localeInfo.TARGET_BUTTON_EXCLUDE":8,
"localeInfo.TARGET_BUTTON_INVITE_GUILD":9,
"localeInfo.TARGET_BUTTON_DISMOUNT":10,
"localeInfo.TARGET_BUTTON_EXIT_OBSERVER":11,
"localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT":12,
"localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY":13,
"localeInfo.TARGET_BUTTON_BUILDING_DESTROY":14,
"localeInfo.TARGET_BUTTON_EMOTION_ALLOW":15,
"VOTE_BLOCK_CHAT":16,
}
GRADE_NAME = {
nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
}
EXCHANGE_LIMIT_RANGE = 3000
def __init__(self):
ui.ThinBoard.__init__(self)
name = ui.TextLine()
name.SetParent(self)
name.SetDefaultFontName()
name.SetOutline()
name.Show()
if app.__AUTO_QUQUE_ATTACK__:
autoFarmText = ui.TextLine()
autoFarmText.SetParent(self)
autoFarmText.SetOutline()
autoFarmText.SetHorizontalAlignCenter()
autoFarmText.SetText("|Eemoji/key_shift|e + |Eemoji/key_rclick|e Target Metin Quque")
autoFarmText.Hide()
self.autoFarmText = autoFarmText
autoFarmBtn = ui.Button()
autoFarmBtn.SetParent(self)
autoFarmBtn.SetUpVisual("d:/ymir work/ui/pattern/q_mark_01.tga")
autoFarmBtn.SetOverVisual("d:/ymir work/ui/pattern/q_mark_02.tga")
autoFarmBtn.SetDownVisual("d:/ymir work/ui/pattern/q_mark_01.tga")
autoFarmBtn.SetEvent(ui.__mem_func__(self.__AutoFarmInfo))
autoFarmBtn.Hide()
self.autoFarmBtn = autoFarmBtn
self.autoFarmInfo = None
hpGauge = ui.DynamicGauge()
hpGauge.SetParent(self)
hpGauge.MakeGauge( 130 , "red" , "yellow" )
hpGauge.Hide()
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
hpDecimal = ui.TextLine()
hpDecimal.SetParent(hpGauge)
hpDecimal.SetDefaultFontName()
hpDecimal.SetPosition(-100, 5)
hpDecimal.SetOutline()
hpDecimal.Hide()
closeButton = ui.Button()
closeButton.SetParent(self)
closeButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
closeButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
closeButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
closeButton.SetPosition(30, 13)
if localeInfo.IsARABIC():
hpGauge.SetPosition(55, 17)
hpGauge.SetWindowHorizontalAlignLeft()
closeButton.SetWindowHorizontalAlignLeft()
else:
hpGauge.SetPosition(175, 17)
hpGauge.SetWindowHorizontalAlignRight()
closeButton.SetWindowHorizontalAlignRight()
if app.ENABLE_SEND_TARGET_INFO:
infoButton = ui.Button()
infoButton.SetParent(self)
infoButton.SetUpVisual("flag/q_mark_01.tga")
infoButton.SetOverVisual("flag/q_mark_01.tga")
infoButton.SetDownVisual("flag/q_mark_02.tga")
infoButton.SetEvent(ui.__mem_func__(self.OnPressedInfoButton))
infoButton.Hide()
infoBoard = self.InfoBoard()
infoBoard.Hide()
infoButton.showWnd = infoBoard
closeButton.SetEvent(ui.__mem_func__(self.OnPressedCloseButton))
closeButton.Show()
if app.ENABLE_HIDE_COSTUME_SYSTEM:
import uiToolTip
self.toolTip = uiToolTip.ToolTip(160)
self.toolTip.HideToolTip()
HideCostume = ui.ImageBox()
HideCostume.SetParent(self)
HideCostume.SetPosition(225, 14)
HideCostume.SetWindowHorizontalAlignRight()
HideCostume.LoadImage("Modulo/HideCostume/button_show_0.tga")
HideCostume.OnMouseOverIn = ui.__mem_func__(self.OnMouseOverInHideCostume)
HideCostume.OnMouseOverOut = ui.__mem_func__(self.OnMouseOverOutHideCostume)
HideCostume.Hide()
self.buttonDict = {}
self.showingButtonList = []
a = 0
for buttonName in self.BUTTON_NAME_LIST:
button = ui.Button()
button.SetParent(self)
if localeInfo.IsARABIC():
button.SetUpVisual("d:/ymir work/ui/public/Small_Button_01.sub")
button.SetOverVisual("d:/ymir work/ui/public/Small_Button_02.sub")
button.SetDownVisual("d:/ymir work/ui/public/Small_Button_03.sub")
else:
button.SetUpVisual("d:/ymir work/ui/public/small_thin_button_01.sub")
button.SetOverVisual("d:/ymir work/ui/public/small_thin_button_02.sub")
button.SetDownVisual("d:/ymir work/ui/public/small_thin_button_03.sub")
button.SetWindowHorizontalAlignCenter()
try:
button.SetText(self.BUTTON_NAME_LANG[app.GetLocaleName()][a])
except:
button.SetText(self.BUTTON_NAME_LANG["en"][a])
button.Hide()
self.buttonDict[a] = button
self.showingButtonList.append(button)
a+=1
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_WHISPER"]].SetEvent(ui.__mem_func__(self.OnWhisper))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCHANGE"]].SetEvent(ui.__mem_func__(self.OnExchange))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"]].SetEvent(ui.__mem_func__(self.OnPVP))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_ACCEPT_FIGHT"]].SetEvent(ui.__mem_func__(self.OnPVP))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_AVENGE"]].SetEvent(ui.__mem_func__(self.OnPVP))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FRIEND"]].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FRIEND"]].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_PARTY"]].SetEvent(ui.__mem_func__(self.OnPartyInvite))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_LEAVE_PARTY"]].SetEvent(ui.__mem_func__(self.OnPartyExit))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCLUDE"]].SetEvent(ui.__mem_func__(self.OnPartyRemove))
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_GUILD"]].SAFE_SetEvent(self.__OnGuildAddMember)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_DISMOUNT"]].SAFE_SetEvent(self.__OnDismount)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXIT_OBSERVER"]].SAFE_SetEvent(self.__OnExitObserver)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT"]].SAFE_SetEvent(self.__OnViewEquipment)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY"]].SAFE_SetEvent(self.__OnRequestParty)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_BUILDING_DESTROY"]].SAFE_SetEvent(self.__OnDestroyBuilding)
self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EMOTION_ALLOW"]].SAFE_SetEvent(self.__OnEmotionAllow)
self.buttonDict[self.BUTTON_NAME_ID["VOTE_BLOCK_CHAT"]].SetEvent(ui.__mem_func__(self.__OnVoteBlockChat))
self.name = name
self.hpGauge = hpGauge
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
self.hpDecimal = hpDecimal
if app.ENABLE_SEND_TARGET_INFO:
self.infoButton = infoButton
self.vnum = 0
self.closeButton = closeButton
if app.ENABLE_HIDE_COSTUME_SYSTEM:
self.HideCostume = HideCostume
self.nameString = 0
self.nameLength = 0
self.vid = 0
self.eventWhisper = None
self.isShowButton = False
if app.ENABLE_VIEW_ELEMENT:
self.elementImage = None
self.__Initialize()
self.ResetTargetBoard()
def __del__(self):
ui.ThinBoard.__del__(self)
print "===================================================== DESTROYED TARGET BOARD"
def __Initialize(self):
self.nameString = ""
self.nameLength = 0
self.vid = 0
if app.ENABLE_SEND_TARGET_INFO:
self.vnum = 0
self.isShowButton = False
def Destroy(self):
if app.ENABLE_SEND_TARGET_INFO:
self.infoButton = None
self.eventWhisper = None
self.closeButton = None
self.showingButtonList = None
self.buttonDict = None
self.name = None
self.hpGauge = None
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
self.hpDecimal = None
if app.ENABLE_HIDE_COSTUME_SYSTEM:
self.HideCostume = None
self.__Initialize()
if app.ENABLE_VIEW_ELEMENT:
self.elementImage = None
if app.ENABLE_SEND_TARGET_INFO:
def RefreshMonsterInfoBoard(self):
if not self.infoButton.showWnd.IsShow():
return
self.infoButton.showWnd.Refresh()
def OnPressedInfoButton(self):
net.SendTargetInfoLoad(player.GetTargetVID())
if self.infoButton.showWnd.IsShow():
self.infoButton.showWnd.Close()
elif self.vnum != 0:
self.infoButton.showWnd.Open(self, self.vnum)
def OnPressedCloseButton(self):
player.ClearTarget()
self.Close()
def Close(self):
self.__Initialize()
if app.ENABLE_SEND_TARGET_INFO:
self.infoButton.showWnd.Close()
self.Hide()
if app.__AUTO_QUQUE_ATTACK__:
if self.autoFarmInfo:
self.autoFarmInfo.Close()
self.autoFarmInfo=None
def Open(self, vid, name):
if vid:
if not constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD():
if not player.IsSameEmpire(vid):
self.Hide()
return
if vid != self.GetTargetVID():
self.ResetTargetBoard()
self.SetTargetVID(vid)
self.SetTargetName(name)
if player.IsMainCharacterIndex(vid):
self.__ShowMainCharacterMenu()
elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
self.Hide()
else:
self.RefreshButton()
self.Show()
if player.GetName() != name:
if not self.hpGauge.IsShow():
self.name.SetPosition(33 - (len(name) * 1.5), 13)
self.name.SetWindowHorizontalAlignLeft()
self.name.SetHorizontalAlignLeft()
self.hpGauge.Show()
self.HideCostume.Show()
self.UpdatePosition()
else:
self.SetSize(150 + (len(name) * 1.5), self.GetHeight())
self.name.SetPosition(0, 13)
self.name.SetWindowHorizontalAlignCenter()
self.name.SetHorizontalAlignCenter()
self.UpdatePosition()
else:
self.HideAllButton()
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_WHISPER"])
self.__ShowButton(self.BUTTON_NAME_ID["VOTE_BLOCK_CHAT"])
self.__ArrangeButtonPosition()
self.SetTargetName(name)
self.Show()
def Refresh(self):
if self.IsShow():
if self.IsShowButton():
self.RefreshButton()
def RefreshByVID(self, vid):
if vid == self.GetTargetVID():
self.Refresh()
def RefreshByName(self, name):
if name == self.GetTargetName():
self.Refresh()
def __ShowMainCharacterMenu(self):
canShow=0
self.HideAllButton()
if player.IsMountingHorse():
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_DISMOUNT"])
canShow=1
if player.IsObserverMode():
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXIT_OBSERVER"])
canShow=1
if canShow:
self.__ArrangeButtonPosition()
self.Show()
else:
self.Hide()
def __ShowNameOnlyMenu(self):
self.HideAllButton()
def SetWhisperEvent(self, event):
self.eventWhisper = event
def UpdatePosition(self):
if app.TOURNAMENT_PVP_SYSTEM:
if player.IsTournamentMap():
self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 114)
else:
self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 10)
else:
self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 10)
if app.__AUTO_QUQUE_ATTACK__:
if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_STONE:
self.SetSize(self.GetWidth(), self.GetHeight() + 20)
self.autoFarmText.SetPosition(self.GetWidth() / 2, 30)
self.autoFarmText.Show()
self.autoFarmBtn.SetPosition((self.GetWidth() / 2) + (self.autoFarmText.GetTextSize()[1]/2) + 85, 30)
self.autoFarmBtn.Show()
else:
self.autoFarmText.Hide()
self.autoFarmBtn.Hide()
if self.autoFarmInfo:
self.autoFarmInfo.Close()
def ResetTargetBoard(self):
for btn in self.buttonDict.values():
btn.Hide()
self.__Initialize()
self.name.SetPosition(0, 13)
self.name.SetHorizontalAlignCenter()
self.name.SetWindowHorizontalAlignCenter()
self.hpGauge.Hide()
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
self.hpDecimal.Hide()
if app.ENABLE_VIEW_ELEMENT and self.elementImage:
self.elementImage = None
if app.ENABLE_HIDE_COSTUME_SYSTEM:
self.HideCostume.Hide()
if app.ENABLE_SEND_TARGET_INFO:
self.infoButton.Hide()
self.infoButton.showWnd.Close()
self.SetSizeNew(250, 65)
def SetTargetVID(self, vid):
self.vid = vid
if app.ENABLE_SEND_TARGET_INFO:
self.vnum = 0
if app.ENABLE_VIEW_ELEMENT:
def SetElementImage(self,elementId):
try:
if elementId > 0 and elementId in ELEMENT_IMAGE_DIC.keys():
self.elementImage = ui.ImageBox()
self.elementImage.SetParent(self.name)
self.elementImage.SetPosition(-60,-12)
self.elementImage.LoadImage("d:/ymir work/ui/game/12zi/element/%s.sub" % (ELEMENT_IMAGE_DIC[elementId]))
self.elementImage.Show()
except:
pass
def SetEnemyVID(self, vid):
self.SetTargetVID(vid)
if app.ENABLE_SEND_TARGET_INFO:
vnum = nonplayer.GetRaceNumByVID(vid)
name = chr.GetNameByVID(vid)
level = nonplayer.GetLevelByVID(vid)
grade = nonplayer.GetGradeByVID(vid)
nameFront = ""
#if -1 != level:
if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_ENEMY or chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_STONE:
nameFront += "Lv." + str(level) + " "
if self.GRADE_NAME.has_key(grade):
nameFront += "(" + self.GRADE_NAME[grade] + ") "
self.SetTargetName(nameFront + name)
if app.ENABLE_SEND_TARGET_INFO:
(textWidth, textHeight) = self.name.GetTextSize()
self.infoButton.SetPosition(textWidth + 25, 12)
self.infoButton.SetWindowHorizontalAlignLeft()
self.vnum = vnum
if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_PLAYER:
self.infoButton.Hide()
else:
self.infoButton.Show()
def GetTargetVID(self):
return self.vid
def GetTargetName(self):
return self.nameString
def SetTargetName(self, name):
self.nameString = name
self.nameLength = len(name)
self.name.SetText(name)
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
def SetHP(self, hpPercentage, iMinHP, iMaxHP):
import chat
if not self.hpGauge.IsShow():
if app.ENABLE_VIEW_TARGET_PLAYER_HP:
if self.showingButtonList:
c = 0
for i in self.showingButtonList:
if i.IsShow():
c += 1
showingButtonCount = c
else:
showingButtonCount = 0
if showingButtonCount > 0:
if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_PLAYER:
self.SetSizeNew(max(250, showingButtonCount * 75), 65)
else:
self.SetSizeNew(200 + 7*self.nameLength, 40)
else:
self.SetSizeNew(200 + 7*self.nameLength, 40)
else:
self.SetSizeNew(200 + 7*self.nameLength, self.GetHeight())
if localeInfo.IsARABIC():
self.name.SetPosition( self.GetWidth()-23, 13)
else:
self.name.SetPosition(23, 13)
self.name.SetWindowHorizontalAlignLeft()
self.name.SetHorizontalAlignLeft()
self.hpGauge.Show()
self.UpdatePosition()
self.hpGauge.SetPercentage(hpPercentage, 100)
if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
iMinHPText = '.'.join([i - 3 < 0 and str(iMinHP)[:i] or str(iMinHP)[i-3:i] for i in range(len(str(iMinHP)) % 3, len(str(iMinHP))+1, 3) if i])
iMaxHPText = '.'.join([i - 3 < 0 and str(iMaxHP)[:i] or str(iMaxHP)[i-3:i] for i in range(len(str(iMaxHP)) % 3, len(str(iMaxHP))+1, 3) if i])
self.hpDecimal.SetText(str(iMinHPText) + "/" + str(iMaxHPText))
(textWidth, textHeight)=self.hpDecimal.GetTextSize()
if localeInfo.IsARABIC():
self.hpDecimal.SetPosition(120 / 2 + textWidth / 2, -13)
else:
self.hpDecimal.SetPosition(130 / 2 - textWidth / 2, -13)
self.hpDecimal.Show()
else:
def SetHP(self, hpPercentage):
if not self.hpGauge.IsShow():
self.SetSize(200 + 7*self.nameLength + 25, self.GetHeight())
self.name.SetPosition(23, 13)
self.name.SetWindowHorizontalAlignLeft()
self.name.SetHorizontalAlignLeft()
self.hpGaugeText.Show()
self.hpGauge.Show()
self.UpdatePosition()
self.hpGauge.SetPercentage(hpPercentage, 100)
# 51% - 100% -> GREEN
if hpPercentage > 50:
color = ui.GenerateColor(*colorInfo.SUCCESS)
# 11% - 50% -> ORANGE
elif hpPercentage <= 50 and hpPercentage > 10:
color = ui.GenerateColor(*colorInfo.WARNING)
# 0% - 10% -> RED
else:
color = ui.GenerateColor(*colorInfo.DANGER)
self.hpGaugeText.SetText("{}%".format(localeInfo.DottedNumber(hpPercentage)))
self.hpGaugeText.SetPackedFontColor(color)
if app.ENABLE_HIDE_COSTUME_SYSTEM:
def SetCostumeHide(self, costumeHide):
c_h=costumeHide.split("|")
armor = c_h[0]
hair = c_h[1]
if app.ENABLE_HIDE_COSTUME_SYSTEM_WEAPON_COSTUME:
weapon = c_h[2]
if app.ENABLE_HIDE_COSTUME_SYSTEM_ACCE:
acce = c_h[3]
self.toolTip.ClearToolTip()
self.toolTip.SetTitle("Hide Costume Info")
self.toolTip.AppendTextLine("Armor: %s"%(self.GetInfoHide(armor)))
self.toolTip.AppendTextLine("Hair: %s"%(self.GetInfoHide(hair)))
if app.ENABLE_HIDE_COSTUME_SYSTEM_WEAPON_COSTUME:
self.toolTip.AppendTextLine("Weapon: %s"%(self.GetInfoHide(weapon)))
if app.ENABLE_HIDE_COSTUME_SYSTEM_ACCE:
self.toolTip.AppendTextLine("Sash: %s"%(self.GetInfoHide(acce)))
def GetInfoHide(self,index):
if int(index) == 0:
return "|cFF1EBD11|hShow"
return "|cFFDB1A1A|hHide"
def OnMouseOverInHideCostume(self):
self.toolTip.ShowToolTip()
def OnMouseOverOutHideCostume(self):
self.toolTip.HideToolTip()
def ShowDefaultButton(self):
self.isShowButton = True
self.showingButtonList.append(self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_WHISPER"]])
self.showingButtonList.append(self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCHANGE"]])
self.showingButtonList.append(self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"]])
self.showingButtonList.append(self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EMOTION_ALLOW"]])
for button in self.showingButtonList:
button.Show()
def HideAllButton(self):
self.isShowButton = False
for button in self.showingButtonList:
button.Hide()
self.showingButtonList = []
def __ShowButton(self, name):
if not self.buttonDict.has_key(name):
return
self.buttonDict[name].Show()
self.showingButtonList.append(self.buttonDict[name])
def __HideButton(self, name):
if not self.buttonDict.has_key(name):
return
button = self.buttonDict[name]
button.Hide()
for btnInList in self.showingButtonList:
if btnInList == button:
self.showingButtonList.remove(button)
break
def OnWhisper(self):
if None != self.eventWhisper:
self.eventWhisper(self.nameString)
def OnExchange(self):
net.SendExchangeStartPacket(self.vid)
def OnPVP(self):
net.SendChatPacket("/pvp %d" % (self.vid))
def OnAppendToMessenger(self):
net.SendMessengerAddByVIDPacket(self.vid)
def OnPartyInvite(self):
net.SendPartyInvitePacket(self.vid)
def OnPartyExit(self):
net.SendPartyExitPacket()
def OnPartyRemove(self):
net.SendPartyRemovePacketVID(self.vid)
def __OnGuildAddMember(self):
net.SendGuildAddMemberPacket(self.vid)
def __OnDismount(self):
net.SendChatPacket("/unmount")
def __OnExitObserver(self):
net.SendChatPacket("/observer_exit")
def __OnViewEquipment(self):
net.SendChatPacket("/view_equip " + str(self.vid))
def __OnRequestParty(self):
net.SendChatPacket("/party_request " + str(self.vid))
def __OnDestroyBuilding(self):
net.SendChatPacket("/build d %d" % (self.vid))
def __OnEmotionAllow(self):
net.SendChatPacket("/emotion_allow %d" % (self.vid))
def __OnVoteBlockChat(self):
cmd = "/vote_block_chat %s" % (self.nameString)
net.SendChatPacket(cmd)
def OnPressEscapeKey(self):
self.OnPressedCloseButton()
return True
def IsShowButton(self):
return self.isShowButton
def RefreshButton(self):
self.HideAllButton()
if chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
#self.__ShowButton(localeInfo.TARGET_BUTTON_BUILDING_DESTROY)
#self.__ArrangeButtonPosition()
return
if player.IsPVPInstance(self.vid) or player.IsObserverMode():
# PVP_INFO_SIZE_BUG_FIX
self.SetSize(200 + 7*self.nameLength + 30, 40)
self.UpdatePosition()
# END_OF_PVP_INFO_SIZE_BUG_FIX
return
self.ShowDefaultButton()
if guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER):
if not guild.IsMemberByName(self.nameString):
if 0 == chr.GetGuildID(self.vid):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_GUILD"])
if not messenger.IsFriendByName(self.nameString):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FRIEND"])
if player.IsPartyMember(self.vid):
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"])
if player.IsPartyLeader(self.vid):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_LEAVE_PARTY"])
elif player.IsPartyLeader(player.GetMainCharacterIndex()):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCLUDE"])
else:
if player.IsPartyMember(player.GetMainCharacterIndex()):
if player.IsPartyLeader(player.GetMainCharacterIndex()):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_PARTY"])
else:
if chr.IsPartyMember(self.vid):
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY"])
else:
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_PARTY"])
if player.IsRevengeInstance(self.vid):
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"])
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_AVENGE"])
elif player.IsChallengeInstance(self.vid):
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"])
self.__ShowButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_ACCEPT_FIGHT"])
elif player.IsCantFightInstance(self.vid):
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"])
if not player.IsSameEmpire(self.vid):
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_INVITE_PARTY"])
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FRIEND"])
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_FIGHT"])
distance = player.GetCharacterDistance(self.vid)
if distance > self.EXCHANGE_LIMIT_RANGE:
self.__HideButton(self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCHANGE"])
self.__ArrangeButtonPosition()
self.__ArrangeButtonPosition()
def SetSizeNew(self, width, height):
showingButtonCount = len(self.showingButtonList)
nameLen = len(self.GetTargetName())
if showingButtonCount == 1 and nameLen >= 8 and self.showingButtonList[0].GetText() == localeInfo.TARGET_BUTTON_DISMOUNT:
width += nameLen * 2
self.SetSize(width, height)
def __ArrangeButtonPosition(self):
showingButtonCount = len(self.showingButtonList)
pos = -(showingButtonCount / 2) * 68
if 0 == showingButtonCount % 2:
pos += 34
for button in self.showingButtonList:
button.SetPosition(pos, 33)
pos += 68
#if showingButtonCount <= 2:
#self.SetSize(max(150 + 125, showingButtonCount * 75), 65)
#else:
if app.ENABLE_VIEW_TARGET_PLAYER_HP:
if showingButtonCount <= 3:
self.SetSize(max(150 + 125, showingButtonCount * 75), 65)
else:
self.SetSize(max(150, showingButtonCount * 75), 65)
else:
self.SetSize(max(150, showingButtonCount * 75), 65)
#self.SetSize(max(150, showingButtonCount * 75), 65)
self.UpdatePosition()
def OnUpdate(self):
if self.isShowButton:
exchangeButton = self.buttonDict[self.BUTTON_NAME_ID["localeInfo.TARGET_BUTTON_EXCHANGE"]]
distance = player.GetCharacterDistance(self.vid)
if distance < 0:
return
if exchangeButton.IsShow():
if distance > self.EXCHANGE_LIMIT_RANGE:
self.RefreshButton()
else:
if distance < self.EXCHANGE_LIMIT_RANGE:
self.RefreshButton()
if app.__AUTO_QUQUE_ATTACK__:
class AutoFarmInfoWindow(ui.ThinBoard):
def __init__(self):
ui.ThinBoard.__init__(self)
self.__LoadWindow()
def __LoadWindow(self):
self.SetSize(356, 166)
self.AddFlag("float")
self.AddFlag("not_pick")
title = ui.TextLine()
title.SetParent(self)
title.AddFlag("not_pick")
title.SetHorizontalAlignCenter()
title.SetPackedFontColor(0xFFFBC401)
title.SetOutline()
title.SetText("Target Metin Quque")
title.SetPosition(self.GetWidth() / 2, 15)
title.Show()
self.title = title
firstText = "Pressing |cFF74FF20Shift + Right Click|r on Metinstones your character will target#"\
"a MetinStone and after you destroyed it, it will move to |cFF74FF20another one|r."
firstDescription = ui.MultiTextLine()
firstDescription.SetParent(self)
firstDescription.AddFlag("not_pick")
firstDescription.SetTextRange(13)
firstDescription.SetTextType("horizontal#center")
firstDescription.SetPosition(self.GetWidth() / 2, 37)
firstDescription.SetOutline(1)
firstDescription.SetText(firstText)
firstDescription.Show()
self.firstDescription = firstDescription
secondText = "Max. 3 queued Metinstones (without Premium Metinfarm)#"\
"Max. 10 queued Metinstones (with Premium Metinfarm)"
secondDescription = ui.MultiTextLine()
secondDescription.SetParent(self)
secondDescription.AddFlag("not_pick")
secondDescription.SetTextRange(13)
secondDescription.SetTextType("horizontal#center")
secondDescription.SetPosition(self.GetWidth() / 2, 73)
secondDescription.SetOutline(1)
secondDescription.SetPackedFontColor(0xFFFFD071)
secondDescription.SetText(secondText)
secondDescription.Show()
self.secondDescription = secondDescription
item.SelectItem(61400)
itemIcon = ui.ImageBox()
itemIcon.SetParent(self)
itemIcon.AddFlag("not_pick")
itemIcon.LoadImage(item.GetIconImageFileName())
itemIcon.SetPosition((self.GetWidth() / 2) - 16, 105)
itemIcon.Show()
self.itemIcon = itemIcon
itemName = ui.TextLine()
itemName.SetParent(self)
itemName.AddFlag("not_pick")
itemName.SetHorizontalAlignCenter()
itemName.SetPackedFontColor(0xFFFBC401)
itemName.SetOutline()
itemName.SetText("Premium Metinfarm")
itemName.SetPosition(self.GetWidth() / 2, 105 + 32 + 5)
itemName.Show()
self.itemName = itemName
self.SetCenterPosition()
def Open(self):
self.Show()
self.SetTop()
def Close(self):
self.Hide()
def OnPressEscapeKey(self):
self.Close()
return True

