Register for your free account! | Forgot your password?

You last visited: Today at 14:25

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Auto Hunt - Python only

Discussion on [Release] Auto Hunt - Python only within the Metin2 Hacks, Bots, Cheats, Exploits & Macros forum part of the Metin2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2017
Posts: 17
Received Thanks: 0
Talking [Release] Auto Hunt - Python only

Hello everyone , I found this farmbot/autohunt script but I am unsure how to use it , however I am sure you are gonna know

Code:
import sys
# Initialize module mappings
modules = {
    'GetMainCharacterIndex': 'playerm',
    'GetNameByVID': 'chrm',
    'SendShopEndPacket': 'netm',
    'SetGuildMarkPath': 'appm',
    'GetPrivateShopItemPrice': 'shopm',
    'Button': 'uim',
    'mouseController': 'mouseModulem',
    'AppendChat': 'chatm',
    'ClearSlot': 'wndMgrm',
    'GetCurrentMapName': 'backgroundm',
    'path': 'osm',
    'exists': 'osm',
    'path.exists': 'osm',
    'SetAffect': 'chrmgrm',
    'SelectItem': 'itemm',
    'ArrangeTextTail': 'textTailm',
    'RegisterChatTail': 'textTailm',
    'ItemToolTip': 'uiToolTipm',
    'GetMonsterName': 'nonplayerm',
    'GetLevelByVID': 'nonplayerm',
    'GetGradeByVID': 'nonplayerm',
    'SelectAnswer': 'eventm',
    'ENVIRONMENT_NIGHT': 'constInfom',
    'floor': 'mathm',
    'fmod': 'mathm',
    'factorial': 'mathm',
    'GenerateColor': 'grpm',
    'clock': 'timem',
    'clock_getres': 'timem',
    'clock_gettime': 'timem',
}

# Module variable mappings
module_mapping = {}
for module_name in sys.modules.keys():
    module_dir = dir(__import__(module_name))
    for function_name, alias in modules.items():
        if function_name in module_dir:
            module_mapping[alias] = module_name

# Attempt to import each module
try:
    chr = __import__(module_mapping.get('playerm', 'chr'))
    app = __import__(module_mapping.get('appm', 'app'))
    shop = __import__(module_mapping.get('shopm', 'shop'))
    player = __import__(module_mapping.get('playerm', 'playerm2g2'))
    net = __import__(module_mapping.get('netm', 'm2netm2g'))
    ui = __import__(module_mapping.get('uim', 'jebac_mh'))
    mouseModule = __import__(module_mapping.get('mouseModulem', 'mouseModule'))
    chat = __import__(module_mapping.get('chatm', 'chat'))
    wndMgr = __import__(module_mapping.get('wndMgrm', 'wndMgr'))
    background = __import__(module_mapping.get('backgroundm', 'background'))
    os = __import__(module_mapping.get('osm', 'os'))
    chrmgr = __import__(module_mapping.get('chrmgrm', 'chrmgr'))
    item = __import__(module_mapping.get('itemm', 'item'))
    textTail = __import__(module_mapping.get('textTailm', 'textTail'))
    uiToolTip = __import__(module_mapping.get('uiToolTipm', 'uiToolTip'))
    nonplayer = __import__(module_mapping.get('nonplayerm', 'nonplayer'))
    event = __import__(module_mapping.get('eventm', 'event'))
    math = __import__(module_mapping.get('mathm', 'math'))
    grp = __import__(module_mapping.get('grpm', 'grp'))
    time = __import__(module_mapping.get('timem', 'time'))


	

except ImportError as e:
    print("ImportError: " + str(e))
import dbg
SPAM = TRUE
Czciaka = 'Tahoma:13'



xoxx = 0
TargetVid2=0
TargetVid=0
VidyPozwolenie=0
ListaVidow=[]
ListaVidow2=[]
Lista = []
autowtawanie_pozwo = 0

Mobber_ID = 0
Poty = 0
Poty_1_ID = 0
Poty_1_Icon = 0
Poty_2_ID = 0
Poty_2_Icon = 0
Slotlista = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
cfg = []
xox = 0
Dopalacz_ID = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
SlotUlepszania = 0
telestep = 0
teleport_mode = 0
listash=[]
ch = 1
cipa = 0
listatypow = []
Pozwolenie = 0
met = 0
Odleglosc = 999999
papec = 0
listash=[]
listash2=[]
listaWysz = []
SlotUlepszaniaDO = 0
Przyciskoff = '|cFFFF0000|Hitem|h'
Przyciskon =  '|cff00FF00|H|h'
Mobbercombo1 = ('Normal','Mega')
Autoaacombo1 = ('Normal','Rotatie')
listazapisku = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15']
x = 0
COLOR_TEXT = {}
oldSendChatPacket = net.SendChatPacket


class Attack(ui.Window):
	state = 'stop'
	instance = None  # Class-level variable to track if an instance is open #####!
	hp_threshold = 40  # Default HP threshold	
	def __init__(self):
		if Attack.instance is not None:
			chat.AppendChat(chat.CHAT_TYPE_NOTICE, "[FARM] NO SPAM - An instance is created!")
			return  # If an instance already exists, do not create a new one

		ui.Window.__init__(self)
		Attack.instance = self  # Set the instance variable to the new instance
		self.BuildWindow()

		self.ProcessTimeStamp = 0  # Initialize ProcessTimeStamp
		try:
			self.Krzycz()
			self.Krzycz1()
			self.WczytajFarmCord()
			self.Loadfff()

		except:
			pass
		self.itemlist = {}
		self.itemlist1 = {}

		self.autoAttackEditLine, self.autoAttackBtn = gui_instance.getAutoAttackComponents()

        # Set parent of AutoAttack components to the Board of Attack class
		#self.autoAttackEditLine[0].SetParent(self.Board)
		#self.autoAttackEditLine[0].SetPosition(70, 150)  # Adjust position inside the Board
		#self.autoAttackEditLine[0].Show()
		self.autoAttackBtn.SetParent(self.Board)
		self.autoAttackBtn.SetPosition(30, 55)  # Adjust position inside the Board
		self.autoAttackBtn.Show()

	def __del__(self):
		#Attack.instance = None  # Reset the singleton instance on deletion
		ui.Window.__del__(self)

	def BuildWindow(self):
		self.Board1 = ui.Bar()
		self.Board1.SetSize(240,350)
		self.Board1.SetCenterPosition()
		self.Board1.AddFlag('movable')
		self.Board1.AddFlag('float')
		self.Board1.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 0.0))
		self.Board1.Show()

		self.Board = ui.BoardWithTitleBar()
		self.Board.SetParent(self.Board1)
		self.Board.SetSize(240,350)
		self.Board.SetPosition(0, 0)
		self.Board.SetTitleName('*********** - Althaia Proj')
		self.Board.SetCloseEvent(self.Close)
		self.Board.Show()


		self.Auto_Attack_img = ui.ExpandedImageBox()
		self.Auto_Attack_img.SetParent(self)
		self.Auto_Attack_img.SetPosition(2, wndMgr.GetScreenHeight()-150)
#		self.Auto_Attack_img.LoadImage('banner.tga')
		self.Auto_Attack_img.Show()
#
#
		self.Ustawieniao = ui.BoardWithTitleBar()
		self.Ustawieniao.SetSize(390, 195)
		self.Ustawieniao.SetCenterPosition()
		self.Ustawieniao.AddFlag('movable')
		self.Ustawieniao.AddFlag('float')
		self.Ustawieniao.SetTitleName('Setari')
		self.Ustawieniao.SetCloseEvent(self.Ustawieniaoclose)
		self.Ustawieniao.Hide()


		self.Pogoda = ui.BoardWithTitleBar()
		self.Pogoda.SetSize(120, 190)
		self.Pogoda.SetCenterPosition()
		self.Pogoda.AddFlag('movable')
		self.Pogoda.AddFlag('float')
		self.Pogoda.SetTitleName('Setari Vreme / Camera')
		self.Pogoda.SetCloseEvent(self.ClosePogoda)
		self.Pogoda.Hide()


		self.BoardInfo = ui.BoardWithTitleBar()
		self.BoardInfo.SetSize(260, 140)
		self.BoardInfo.SetCenterPosition()
		self.BoardInfo.AddFlag('movable')
		self.BoardInfo.AddFlag('float')
		self.BoardInfo.SetTitleName('About')
		self.BoardInfo.SetCloseEvent(self.CloseInfo)
		self.BoardInfo.Hide()


		self.BoardZap = ui.BoardWithTitleBar()
		self.BoardZap.SetSize(670, 137)
		self.BoardZap.SetCenterPosition()
		self.BoardZap.AddFlag('movable')
		self.BoardZap.AddFlag('float')
		self.BoardZap.SetTitleName('Seteaza-ti locatia de teleportare')
		self.BoardZap.SetCloseEvent(self.CloseZap)
		self.BoardZap.Hide()


		self.comp = Component()
		self.Rozdajpele = self.comp.SlotbarText(self.Ustawieniao, 'Mod Mantie', 255, 35, 115, 15)
		self.Rozdajautoataczku = self.comp.SlotbarText(self.Ustawieniao, 'Mod Auto Attack', 255, 90, 115, 15)


		self.Mobbercombo = self.comp.ComboBox(self.Ustawieniao, 'Normal', 255, 55, 115)
		for Mobbercombo in Mobbercombo1:
			self.Mobbercombo.InsertItem(1,str(Mobbercombo))

		self.Autoaacombo = self.comp.ComboBox(self.Ustawieniao, 'Normal', 255,110, 115)
		for Autoaacombo in Autoaacombo1:
			self.Autoaacombo.InsertItem(1,str(Autoaacombo))



		self.Zapcombo = self.comp.ComboBox(self.BoardZap, 'Nr. Salvare', 31, 100, 85)
		for Zapcombo in listazapisku:
			self.Zapcombo.InsertItem(1,str(Zapcombo))

		self.btns3 = ui.Button()
		self.btns3.SetPosition(wndMgr.GetScreenWidth() - 105, 165)
#		self.btns3.SetPosition(3, wndMgr.GetScreenHeight()/2-wndMgr.GetScreenHeight()/10)
		self.btns3.SetEvent(self.OpenWindow)
		self.btns3.SetUpVisual('d:/ymir work/ui/game/windows/tab_button_large_01.sub')
		self.btns3.SetOverVisual('d:/ymir work/ui/game/windows/tab_button_large_02.sub')
		self.btns3.SetDownVisual('d:/ymir work/ui/game/windows/tab_button_large_03.sub')
		self.btns3.SetText('AutoHunt')
		self.btns3.Hide()



		self.Zoom = self.comp.Button(self.Pogoda, 'Zoom', '', 15, 80, self.Zoom_func, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Dzien = self.comp.Button(self.Pogoda, 'Zi', '', 15, 30, self.Dzien_func, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Noc = self.comp.Button(self.Pogoda, 'Noapte', '', 15, 55, self.Noc_func, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Snieg = self.comp.ToggleButton(self.Pogoda, 'Ninsoare', '', 15, 105, (lambda arg = 'off': self.Snieg_func(arg)), (lambda arg = 'on': self.Snieg_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Kamera = self.comp.ToggleButton(self.Pogoda, 'Camera mod', '', 15, 155, (lambda arg = 'off': self.Kamera_func(arg)), (lambda arg = 'on': self.Kamera_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')

		self.Info = self.comp.Button(self.Board, '', '', 20, 9, self.OpenWindowInfo, 'd:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_01.sub', 'd:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_02.sub', 'd:/ymir work/ui/game/taskbar/Open_Chat_Log_Button_03.sub')
		self.Zamknijgre = self.comp.Button(self.Board, 'Inchide client', '', 80, 200, self.Zamknijgre_func, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.AutoAtak = self.comp.ToggleButton(self.Board, 'AFK Attack', '', 30, 30, (lambda arg = 'off': self.AutoAtak_func(arg)), (lambda arg = 'on': self.AutoAtak_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Mobberek = self.comp.ToggleButton(self.Board, 'Mantie', '', 125, 30, (lambda arg = 'off': self.Mobber_func(arg)), (lambda arg = 'on': self.Mobber_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.Poty = self.comp.ToggleButton(self.Board, 'Potiuni', '', 125, 55, (lambda arg = 'off': self.Poty_func(arg)), (lambda arg = 'on': self.Poty_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		self.AutoWstawanie = self.comp.ToggleButton(self.Board, 'Reinvie', '', 125, 80, (lambda arg = 'off': self.AutoWstawanie_func(arg)), (lambda arg = 'on': self.AutoWstawanie_func(arg)), 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')

		self.AutoSkilestr = self.comp.Button(self.Board, 'Retarget Skill', '', 30, 80, self.AutoSkileWindow, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
		#self.Ustawienia = self.comp.Button(self.Board, 'Setari Auto Attack', '', 25, 55, self.OpenWindowUstawieniao, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')

		self.Pogodastr = self.comp.Button(self.Board, 'Vreme / Camera', '', 80, 180, self.OpenWindowPogoda, 'd:/ymir work/ui/public/large_button_01.sub', 'd:/ymir work/ui/public/large_button_02.sub', 'd:/ymir work/ui/public/large_button_03.sub')
#
		self.tylpotki = self.comp.ThinBoard(self.Board, FALSE, 185, 210, 50, 130, FALSE)
		self.slotbar_Potyhpczas, self.Potyhpczas = self.comp.EditLine(self.Board, '50', 160, 230, 20, 15, 2)
		self.slotbar_Potympczas, self.Potympczas = self.comp.EditLine(self.Board, '50', 160, 260, 20, 15, 2)
		self.slotbar_Peleczas, self.Peleczas = self.comp.EditLine(self.Board, '30', 160, 290, 20, 15, 3)
		self.odilepotyhp = self.comp.SlotbarText(self.Board, 'Use when HP drops below %', 10, 230, 150, 15)
		self.odilepotymp = self.comp.SlotbarText(self.Board, 'Use when MP drops below %', 10, 260, 150, 15)
		self.coilepele = self.comp.SlotbarText(self.Board, 'Timp folosire mantie', 10, 290, 150, 15)


		self.Aurax1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/warrior/geomgyeong_03.sub')
		self.Berekx1 = self.comp.ExpandedImage(self.Board, 105, 140, 'd:/ymir work/ui/skill/warrior/jeongwi_03.sub')
		self.Silnex1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/warrior/cheongeun_03.sub')
		self.Ostrzex1 = self.comp.ExpandedImage(self.Board, 105, 140, 'd:/ymir work/ui/skill/sura/gwigeom_03.sub')
		self.Strachx1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/sura/gongpo_03.sub')
		self.Zbrojax1 = self.comp.ExpandedImage(self.Board, 145, 140, 'd:/ymir work/ui/skill/sura/jumagap_03.sub')
		self.Ochronkax1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/sura/heuksin_03.sub')
		self.Duchx1 = self.comp.ExpandedImage(self.Board, 105, 140, 'd:/ymir work/ui/skill/sura/muyeong_03.sub')
		self.Atakx1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/shaman/jeungryeok_03.sub')
		self.Zwinnoscx1 = self.comp.ExpandedImage(self.Board, 105, 140, 'd:/ymir work/ui/skill/shaman/kwaesok_03.sub')
		self.Blogox1 = self.comp.ExpandedImage(self.Board, 65, 140, 'd:/ymir work/ui/skill/shaman/hosin_03.sub')
		self.Pomocx1 = self.comp.ExpandedImage(self.Board, 105, 140, 'd:/ymir work/ui/skill/shaman/gicheon_03.sub')
		self.Odbiciex1 = self.comp.ExpandedImage(self.Board, 145, 140, 'd:/ymir work/ui/skill/shaman/boho_03.sub')

		self.Aurax = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill4Buff_func(arg)), (lambda arg = 'on': self.Skill4Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Berekx = self.comp.ToggleButton(self.Board, '', '', 105, 140, (lambda arg = 'off': self.Skill3Buff_func(arg)), (lambda arg = 'on': self.Skill3Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Silnex = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill4Buff_func(arg)), (lambda arg = 'on': self.Skill4Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Ostrzex = self.comp.ToggleButton(self.Board, '', '', 105, 140, (lambda arg = 'off': self.Skill3Buff_func(arg)), (lambda arg = 'on': self.Skill3Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Strachx = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill4Buff_func(arg)), (lambda arg = 'on': self.Skill4Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Zbrojax = self.comp.ToggleButton(self.Board, '', '', 145, 140, (lambda arg = 'off': self.Skill5buff_func(arg)), (lambda arg = 'on': self.Skill5buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Ochronkax = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill4Buff_func(arg)), (lambda arg = 'on': self.Skill4Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Duchx = self.comp.ToggleButton(self.Board, '', '', 105, 140, (lambda arg = 'off': self.Skill3Buff_func(arg)), (lambda arg = 'on': self.Skill3Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Atakx = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill6buff_func(arg)), (lambda arg = 'on': self.Skill6buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Zwinnoscx = self.comp.ToggleButton(self.Board, '', '', 105, 140, (lambda arg = 'off': self.Skill5buff_func(arg)), (lambda arg = 'on': self.Skill5buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Blogox = self.comp.ToggleButton(self.Board, '', '', 65, 140, (lambda arg = 'off': self.Skill4Buff_func(arg)), (lambda arg = 'on': self.Skill4Buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Pomocx = self.comp.ToggleButton(self.Board, '', '', 105, 140, (lambda arg = 'off': self.Skill6buff_func1(arg)), (lambda arg = 'on': self.Skill6buff_func1(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.Odbiciex = self.comp.ToggleButton(self.Board, '', '', 145, 140, (lambda arg = 'off': self.Skill5buff_func(arg)), (lambda arg = 'on': self.Skill5buff_func(arg)), 'd:/ymir work/ui/public/slot_cover_button_01.sub', 'd:/ymir work/ui/public/slot_cover_button_02.sub', 'd:/ymir work/ui/public/slot_cover_button_03.sub')
		self.slotbar_Skill1czas, self.Skill1czas = self.comp.EditLine(self.Board, '120', 68, 125, 25, 15, 3)
		self.slotbar_Skill2czas, self.Skill2czas = self.comp.EditLine(self.Board, '83', 108, 125, 25, 15, 3)
		self.slotbar_Skill3czas, self.Skill3czas = self.comp.EditLine(self.Board, '45', 148, 125, 25, 15, 3)

		self.About1 = self.comp.TextLine(self.BoardInfo, 'Althaia Project - English', 20, 30, self.comp.RGB(223, 129, 83),Czciaka)
		self.About2 = self.comp.TextLine(self.BoardInfo, 'Click on "Retarget Skill" to set the skill for', 20, 45, self.comp.RGB(223, 129, 83),Czciaka)
		self.About7 = self.comp.TextLine(self.BoardInfo, 'your character.', 20, 56, self.comp.RGB(223, 129, 83),Czciaka)
		self.About3 = self.comp.TextLine(self.BoardInfo, 'Do not use "AFK Attack" and "Target Hunt"', 20, 67, self.comp.RGB(223, 129, 83),Czciaka)
		self.About6 = self.comp.TextLine(self.BoardInfo, 'at the same time. It is your own risk!', 20, 78, self.comp.RGB(223, 129, 83),Czciaka)
		self.About4 = self.comp.TextLine(self.BoardInfo, 'This system is still in testing.', 20, 89, self.comp.RGB(223, 129, 83),Czciaka)
		self.About5 = self.comp.TextLine(self.BoardInfo, 'System remade, adjusted and (kind of.. optimized)', 8, 106, self.comp.RGB(223, 129, 83),Czciaka)
		self.About8 = self.comp.TextLine(self.BoardInfo, ' by KolenMG', 20, 116, self.comp.RGB(223, 129, 83),Czciaka)

		self.infotext = self.comp.TextLine(self.Board, 'Doar magiile cu durata pot fi utilizate.',33,100,self.comp.RGB(223,129,83),Czciaka)
		self.infotext2 = self.comp.TextLine(self.Board, 'Apasa pe butonul About pentru mai multe info.',10,110,self.comp.RGB(223,129,83),Czciaka)


		self.MobberSlot = ui.ExpandedImageBox()
		self.MobberSlot.SetParent(self.tylpotki)
		self.MobberSlot.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')
		self.MobberSlot.OnMouseLeftButtonUp = lambda: self.MobberSlotFunc()
		self.MobberSlot.OnMouseRightButtonUp = lambda: self.usunpele()
		self.MobberSlot.SetPosition(9,89)
		self.MobberSlot.Show()

		self.MobberSlotIcon = ui.ExpandedImageBox()
		self.MobberSlotIcon.SetParent(self.tylpotki)
		self.MobberSlotIcon.SetPosition(9,89)
		self.MobberSlotIcon.LoadImage('')
		self.MobberSlotIcon.OnMouseLeftButtonUp = lambda: self.MobberSlotFunc()
		self.MobberSlot.OnMouseRightButtonUp = lambda: self.usunpele()
		self.MobberSlotIcon.Show()

		self.PotySlot = ui.ExpandedImageBox()
		self.PotySlot.SetParent(self.tylpotki)
		self.PotySlot.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')
		self.PotySlot.OnMouseLeftButtonUp = lambda: self.Set_Poty_1_ID()
		self.PotySlot.OnMouseRightButtonUp = lambda: self.usunpotehp()
		self.PotySlot.SetPosition(9,5)
		self.PotySlot.Show()

		self.PotySlotIcon = ui.ExpandedImageBox()
		self.PotySlotIcon.SetParent(self.tylpotki)
		self.PotySlotIcon.SetPosition(9,5)
		self.PotySlotIcon.OnMouseLeftButtonUp = lambda: self.Set_Poty_1_ID()
		self.PotySlotIcon.OnMouseRightButtonUp = lambda: self.usunpotehp()
		self.PotySlotIcon.Show()

		self.PotySlot2 = ui.ExpandedImageBox()
		self.PotySlot2.SetParent(self.tylpotki)
		self.PotySlot2.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')
		self.PotySlot2.OnMouseLeftButtonUp = lambda: self.Set_Poty_2_ID()
		self.PotySlot2.OnMouseRightButtonUp = lambda: self.usunpotemp()
		self.PotySlot2.SetPosition(9,47)
		self.PotySlot2.Show()

		self.PotySlotIcon2 = ui.ExpandedImageBox()
		self.PotySlotIcon2.SetParent(self.tylpotki)
		self.PotySlotIcon2.SetPosition(9,47)
		self.PotySlotIcon2.OnMouseLeftButtonUp = lambda: self.Set_Poty_2_ID()
		self.PotySlotIcon2.OnMouseRightButtonUp = lambda: self.usunpotemp()
		self.PotySlotIcon2.Show()


	def DivideToFloat(self,x, y):
		try:
			return x * (y**-1)
		except:
			return 0

	def GetTmpTeleport(self,DestX, DestY):
		global DivideToFloat
		(PlayerX, PlayerY, PlayerZ) = player.GetMainCharacterPosition()
		DifX = DestX - PlayerX
		DifY = DestY - PlayerY
		Vektor = self.DivideToFloat(2000, math.sqrt(DifX**2 + DifY**2))
		TempX = PlayerX + Vektor*DifX
		TempY = PlayerY + Vektor*DifY
		Count = self.DivideToFloat((DestX - PlayerX), (Vektor*DifX))
		return (TempX, TempY, Count)

	def Debug(self):
		player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
		player.SetSingleDIKKeyState(app.DIK_UP, FALSE)

	def TeleportToDest(self,aimx, aimy):
		global Debug, GetTmpTeleport, TeleportState
		(TmpX, TmpY, Count) = self.GetTmpTeleport(aimx, aimy)
		TmpCount = 0
		myVid = player.GetMainCharacterIndex()
		while TmpCount < Count:
			chr.SelectInstance(myVid)
			(TmpX, TmpY, Crap) = self.GetTmpTeleport(aimx, aimy)
			chr.SetPixelPosition(int(TmpX), int(TmpY))
			TmpCount += 1
			self.Debug()

		chr.SetPixelPosition(int(aimx), int(aimy))
		self.Debug()
		TeleportState = 1
		chr.SelectInstance(myVid)

	def Zoom_func(self):
		self.zoom=XX()
		self.zoom.XX1(1)
		self.zoom.XX2(self.Zoom_func)
		app.SetCameraMaxDistance(80000) #100000

	def MobberSlotFunc(self):
		global Mobber_ID
		if mouseModule.mouseController.isAttached():
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
			item.SelectItem(attachedSlotVnum)

			Mobber_ID = mouseModule.mouseController.GetAttachedItemIndex()
			mouseModule.mouseController.DeattachObject()

			item.SelectItem(int(attachedSlotVnum))
			self.MobberSlotIcon.LoadImage(str(item.GetIconImageFileName()))

	def Set_Poty_1_ID(self):
		global Poty_1_ID
		global Poty_1_Icon
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()

			Poty_1_ID = mouseModule.mouseController.GetAttachedItemIndex()
			item.SelectItem(attachedSlotVnum)

		item.SelectItem(int(attachedSlotVnum))
		self.PotySlotIcon.LoadImage(str(item.GetIconImageFileName()))
		mouseModule.mouseController.DeattachObject()


	def Set_Poty_2_ID(self):
		global Poty_2_ID
		global Poty_2_Icon
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()

			Poty_2_ID = mouseModule.mouseController.GetAttachedItemIndex()
			item.SelectItem(attachedSlotVnum)

		item.SelectItem(int(attachedSlotVnum))
		self.PotySlotIcon2.LoadImage(str(item.GetIconImageFileName()))
		mouseModule.mouseController.DeattachObject()


	def SetItemSlot(self, renderingSlotNumber, ItemIndex, ItemCount = 0):
		if 0 == ItemIndex or None == ItemIndex:
			wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)
			return

		item.SelectItem(ItemIndex)
		itemIcon = item.GetIconImage()

		item.SelectItem(ItemIndex)
		(width, height) = item.GetItemSize()

		wndMgr.SetSlot(self.hWnd, renderingSlotNumber, ItemIndex, width, height, itemIcon)
		wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount)

	def SelectEmptySlot(self, slot):
		global Dopalacz_ID,Slotlista,cfg,xox,Dopalacz_ID
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
			itemVnum = player.GetItemIndex(attachedSlotPos)
			Dopalacz_ID[xox] = (attachedSlotVnum)
			Slotlista[xox] = (slot)
			self.itemlist[slot] = attachedSlotPos
			xox += 1
			if player.SLOT_TYPE_INVENTORY == attachedSlotType:
				self.gives.SetItemSlot(slot, itemVnum)
		mouseModule.mouseController.DeattachObject()

	def SelectEmptySlot1(self, slot):
		global xoxx,Otwieracz_ID
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
			itemVnum = player.GetItemIndex(attachedSlotPos)
			Otwieracz_ID[xoxx] = (attachedSlotVnum)
			self.itemlist1[slot] = attachedSlotPos
			xoxx += 1
			if player.SLOT_TYPE_INVENTORY == attachedSlotType:
				self.gives1.SetItemSlot(slot, itemVnum)
		mouseModule.mouseController.DeattachObject()


	def Dzien_func(self):
		background.SetEnvironmentData(0)

	def Noc_func(self):
		background.SetEnvironmentData(1)

	def Zamknijgre_func(self):
		app.Exit()

	def AutoAtak_func(self, arg):
		if arg=='on':
			self.AutoAttackStartFunc()
			self.AutoAtak.SetText(Przyciskon+'A.Attack ON')
		elif arg=='off':
			self.AutoAttackStopFunc()
			self.AutoAtak.SetText(Przyciskoff+'A.Attack OFF')
	def AutoAttackStartFunc(self):
		self.AutoAttackx = XX()
		self.AutoAttackx.XX1(5)
		self.AutoAttackx.XX2(self.AutoAttackStartFunc)
		if self.Autoaacombo.GetCurrentText() == 'Normal':
			player.SetAttackKeyState(TRUE)

		if self.Autoaacombo.GetCurrentText() == 'Rotatie':
			Direction = app.GetRandom(0,3)
			player.SetAttackKeyState(TRUE)
			chr.SetDirection(Direction)
	def AutoAttackStopFunc(self):
		player.SetAttackKeyState(FALSE)
		self.AutoAttackx=XX()
		self.AutoAttackx.XX1(999999999999)
		self.AutoAttackx.XX2(self.AutoAttackStopFunc)
		player.SetAttackKeyState(FALSE)

	def Poty_func(self, arg):
		if arg=='on':
			self.PotyStartFunc()
			self.Poty.SetText(Przyciskon+'Potiuni ON')
		elif arg=='off':
			self.PotyStopFunc()
			self.Poty.SetText(Przyciskoff+'Potiuni OFF')


	def PotyStartFunc(self):
		global Poty
		global Poty_1_ID
		global Poty_2_ID

		Potyt = self.Potyhpczas.GetText()
		Attack.hp_threshold = int(Potyt)  # Update the shared HP threshold
		maxhp = player.GetStatus(player.MAX_HP)
		aktualnehp = player.GetStatus(player.HP)
		if (float(aktualnehp) / float(maxhp)) * 100 < int(int(Potyt)):
			for i in xrange(player.INVENTORY_PAGE_SIZE*4):
				CzerwonePotki = player.GetItemIndex(i)
				if CzerwonePotki == (int(Poty_1_ID)):
					net.SendItemUsePacket(i)
					break

		Potyt1 = self.Potympczas.GetText()
		maxmp = player.GetStatus(player.MAX_SP)
		aktualnemp = player.GetStatus(player.SP)
		if (float(aktualnemp) / float(maxmp)) * 100 < int(int(Potyt1)):
			for i in xrange(player.INVENTORY_PAGE_SIZE*4):
				NiebieskiePotki = player.GetItemIndex(i)
				if NiebieskiePotki == (int(Poty_2_ID)):
					net.SendItemUsePacket(i)
					break


		self.Potyx = XX()
		self.Potyx.XX1(float(0.1))
		self.Potyx.XX2(self.PotyStartFunc)


	def PotyStopFunc(self):
		self.Potyx = XX()
		self.Potyx.XX1(float(99999999999999999))
		self.Potyx.XX2(self.PotyStopFunc)

	def Mobber_func(self, arg):
		if arg=='on':
			self.MobberStartFunc()
			self.Mobberek.SetText(Przyciskon+'Mantii On')
		elif arg=='off':
			self.MobberStopFunc()
			self.Mobberek.SetText(Przyciskoff+'Mantii OF')

	def MobberStartFunc(self):
		global Mobber_ID,cipa
		if self.Mobbercombo.GetCurrentText() == 'Normal':
			mobbert = self.Peleczas.GetText()
			self.Mobber=XX()
			self.Mobber.XX1(int(mobbert))
			self.Mobber.XX2(self.MobberStartFunc)
			for i in xrange(player.INVENTORY_PAGE_SIZE*4):
				Mobberitemx = player.GetItemIndex(i)
				if Mobberitemx == (int(Mobber_ID)):
					net.SendItemUsePacket(i)
					break

		if self.Mobbercombo.GetCurrentText() == 'Mega':
			self.Mobber=XX()
			self.Mobber.XX1(float(0.2))
			self.Mobber.XX2(self.MobberStartFunc)
			myVid = player.GetMainCharacterIndex()
			mobbert = self.Peleczas.GetText()
			for i in xrange(player.INVENTORY_PAGE_SIZE*4):
				Mobberitemx = player.GetItemIndex(i)
				if Mobberitemx == (int(Mobber_ID)):
					net.SendItemUsePacket(i)
					break
					i=i
			a=1
			while a:
				x, y, z = player.GetMainCharacterPosition()
				if cipa == 0:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) - 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 1:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) - 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 2:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) + 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 3:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) + 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 4:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) - 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 5:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) - 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 6:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) + 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 7:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) + 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 8:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) + 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 9:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) + 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 10:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) - 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 11:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x) - 1200, int(y), int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 12:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) + 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 13:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) + 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 14:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) - 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = cipa + 1
					continue
				if cipa == 15:
					chr.SelectInstance(myVid)
					chr.SetPixelPosition(int(x), int(y) - 1200, int(z))
					player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
					player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
					net.SendItemUsePacket(i)
					net.SendItemUsePacket(i)
					a = 0
					cipa = 0
					self.Mobber=XX()
					self.Mobber.XX1(int(mobbert))
					self.Mobber.XX2(self.MobberStartFunc)
					continue
	def MobberStopFunc(self):
		self.Mobber=XX()
		self.Mobber.XX1(100000000)
		self.Mobber.XX2(self.MobberStopFunc)
		a = 0
		cipa = 0


	def Kamera_func(self, arg):
		if arg=='on':
			x, y, z = player.GetMainCharacterPosition()
			app.SetCameraSetting(int(x), int(-y), int(z), 5000, 10, 30)
			self.Kamera.SetText(Przyciskon+'Camera Mod on')
		elif arg=='off':
			app.SetDefaultCamera()
			self.Kamera.SetText(Przyciskoff+'Camera Mod Off')

	def Snieg_func(self, arg):
		if arg=='on':
			background.EnableSnow(1)
			self.Snieg.SetText(Przyciskon+'Ninsoare')
		elif arg=='off':
			background.EnableSnow(0)
			self.Snieg.SetText(Przyciskoff+'Ninsoare')

	def Combo_func(self, arg):
		if arg=='on':
			chr.testSetComboType(2)
			self.Combo.SetText(Przyciskon+'Combo')

		elif arg=='off':
			chr.testSetComboType(0)
			self.Combo.SetText(Przyciskoff+'Combo')


	def AutoWstawanie_func(self, arg):
		if arg=='on':
			self.Autowstawaniestart()
			self.AutoWstawanie.SetText(Przyciskon+'Respawn')
		elif arg=='off':
			self.Autowstawaniestop()
			self.AutoWstawanie.SetText(Przyciskoff+'Respawn')

	def Autowstawaniestart(self):
		global autowtawanie_pozwo
		self.awfunc=XX()
		self.awfunc.XX1(15.0)
		self.awfunc.XX2(self.Autowstawaniestart)
		maxhp=player.GetStatus(player.MAX_HP)
		aktualnehp=player.GetStatus(player.HP)
		if autowtawanie_pozwo == 1 and float(aktualnehp) / float(maxhp) * 100 >= int(50):
			#oldSendChatPacket('Start')
			autowtawanie_pozwo = 0
		if float(aktualnehp) / float(maxhp) * 100 <= int(0):
			player.SetAttackKeyState(FALSE)
			#oldSendChatPacket('Stop')
			oldSendChatPacket('/restart_here')
			autowtawanie_pozwo = 1

	def Autowstawaniestop(self):
		self.awfunc=XX()
		self.awfunc.XX1(100000000.0)
		self.awfunc.XX2(self.Autowstawaniestop)


	def usunpotehp(self):
		global Poty_1_ID
		Poty_1_ID = 0
		self.PotySlotIcon.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')

	def usunpotemp(self):
		global Poty_2_ID
		Poty_2_ID = 0
		self.PotySlotIcon2.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')

	def usunpele(self):
		global Mobber_ID
		Mobber_ID = 0
		self.MobberSlotIcon.LoadImage('d:/ymir work/ui/public/Slot_Base.sub')


	def Skill3Buff_func(self, arg):
		if arg=='on':
			self.Skill3Buff()
		elif arg=='off':
			self.Skill3Buffstop()

	def Skill4Buff_func(self, arg):
		if arg=='on':
			self.Skill4Buff()
		elif arg=='off':
			self.Skill4Buffstop()

	def Skill5buff_func(self, arg):
		if arg=='on':
			self.Skill5buff()
		elif arg=='off':
			self.Skill5buffstop()

	def Skill6buff_func(self, arg):
		if arg=='on':
			self.Skill6buff()
		elif arg=='off':
			self.Skill6buffstop()

	def Skill6buff_func1(self, arg):
		if arg=='on':
			self.Skill6buff1()
		elif arg=='off':
			self.Skill6buffstop1()

	def horse(self):
		oldSendChatPacket('/ride')

	def Skil3(self):
		player.ClickSkillSlot(3)

	def Skil4(self):
		player.ClickSkillSlot(4)

	def Skil5(self):
		player.ClickSkillSlot(5)

	def Skil6(self):
		player.ClickSkillSlot(6)

	def Skill3Buff(self):
		if player.IsMountingHorse():
			oldSendChatPacket('/unmount')
			self.Skill30 = XX()
			self.Skill30.XX1(1)
			self.Skill30.XX2(self.Skil3)
			self.Skill31 = XX()
			self.Skill31.XX1(3)
			self.Skill31.XX2(self.horse)
			self.Skill32 = XX()
			self.Skill32.XX1(int(self.Skill2czas.GetText()))
			self.Skill32.XX2(self.Skill3Buff)
			self.Skill31.XX2(self.horse)
			self.Skill31.XX2(self.horse)
		else:
			self.Skill30 = XX()
			self.Skill30.XX1(1)
			self.Skill30.XX2(self.Skil3)
			self.Skill32 = XX()
			self.Skill32.XX1(int(self.Skill2czas.GetText()))
			self.Skill32.XX2(self.Skill3Buff)

	def Skill3Buffstop(self):
		self.Skill32 = XX()
		self.Skill32.XX1(int(9999999999999))
		self.Skill32.XX2(self.Skill3Buff)

	def Skill4Buff(self):
		if player.IsMountingHorse():
			oldSendChatPacket('/unmount')
			self.Skill40 = XX()
			self.Skill40.XX1(1)
			self.Skill40.XX2(self.Skil4)
			self.Skill41 = XX()
			self.Skill41.XX1(3)
			self.Skill41.XX2(self.horse)
			self.Skill42 = XX()
			self.Skill42.XX1(int(self.Skill1czas.GetText()))
			self.Skill42.XX2(self.Skill4Buff)
			self.Skill31.XX2(self.horse)
			self.Skill31.XX2(self.horse)
		else:
			self.Skill40 = XX()
			self.Skill40.XX1(1)
			self.Skill40.XX2(self.Skil4)
			self.Skill42 = XX()
			self.Skill42.XX1(int(self.Skill1czas.GetText()))
			self.Skill42.XX2(self.Skill4Buff)
	def Skill4Buffstop(self):
		self.Skill42 = XX()
		self.Skill42.XX1(int(9999999999999))
		self.Skill42.XX2(self.Skill4Buff)

	def Skill5buff(self):
		if player.IsMountingHorse():
			oldSendChatPacket('/unmount')
			self.Skill50 = XX()
			self.Skill50.XX1(1)
			self.Skill50.XX2(self.Skil5)
			self.Skill51 = XX()
			self.Skill51.XX1(3)
			self.Skill51.XX2(self.horse)
			self.Skill52 = XX()
			self.Skill52.XX1(int(self.Skill3czas.GetText()))
			self.Skill52.XX2(self.Skill5buff)
			self.Skill31.XX2(self.horse)
			self.Skill31.XX2(self.horse)
		else:
			self.Skill50 = XX()
			self.Skill50.XX1(1)
			self.Skill50.XX2(self.Skil5)
			self.Skill52 = XX()
			self.Skill52.XX1(int(self.Skill3czas.GetText()))
			self.Skill52.XX2(self.Skill5buff)
	def Skill5buffstop(self):
		self.Skill52 = XX()
		self.Skill52.XX1(int(9999999999))
		self.Skill52.XX2(self.Skill5buff)

	def Skill6buff(self):
		if player.IsMountingHorse():
			oldSendChatPacket('/unmount')
			self.Skill60 = XX()
			self.Skill60.XX1(1)
			self.Skill60.XX2(self.Skil6)
			self.Skill61 = XX()
			self.Skill61.XX1(3)
			self.Skill61.XX2(self.horse)
			self.Skill62 = XX()
			self.Skill62.XX1(int(self.Skill1czas.GetText()))
			self.Skill62.XX2(self.Skill6buff)
			self.Skill31.XX2(self.horse)
			self.Skill31.XX2(self.horse)
		else:
			self.Skill60 = XX()
			self.Skill60.XX1(1)
			self.Skill60.XX2(self.Skil6)
			self.Skill62 = XX()
			self.Skill62.XX1(int(self.Skill1czas.GetText()))
			self.Skill62.XX2(self.Skill6buff)

	def Skill6buffstop(self):
		self.Skill62 = XX()
		self.Skill62.XX1(int(999999999))
		self.Skill62.XX2(self.Skill6buff)

	def Skill6buff1(self):
		if player.IsMountingHorse():
			oldSendChatPacket('/unmount')
			self.Skill601 = XX()
			self.Skill601.XX1(1)
			self.Skill601.XX2(self.Skil6)
			self.Skill611 = XX()
			self.Skill611.XX1(3)
			self.Skill611.XX2(self.horse)
			self.Skill621 = XX()
			self.Skill621.XX1(int(self.Skill2czas.GetText()))
			self.Skill621.XX2(self.Skill6buff1)

		else:
			self.Skill60 = XX()
			self.Skill60.XX1(1)
			self.Skill60.XX2(self.Skil6)
			self.Skill62 = XX()
			self.Skill62.XX1(int(self.Skill1czas.GetText()))
			self.Skill62.XX2(self.Skill6buff)
	def Skill6buffstop1(self):
		self.Skill621 = XX()
		self.Skill621.XX1(int(999999999))
		self.Skill621.XX2(self.Skill6buff1)



	def Teleportuj_Do_Kordow_M_(self):
		global met,papec,Pozwolenie,teleport_mode,telestep,TeleportState, Debug, GetCurrentMapSize, TeleportToDest, DivideToFloat,ch
		self.Wykrywaczmetinow=XX()
		self.Wykrywaczmetinow.XX1(5)
		self.Wykrywaczmetinow.XX2(self.Teleportuj_Do_Kordow_M_)

		if Pozwolenie == 0:
			if os.path.exists('c:montes_cfg/farm_cords.cfg'):
				kordziki = open('c:montes_cfg/farm_cords.cfg', 'r').read().split()
			My_VID = player.GetMainCharacterIndex()
			x_coordinate1 = int(kordziki[papec])
			y_coordinate1 = int(kordziki[papec+1])
			Position_Xx = int(kordziki[papec])
			Position_Yx = int(kordziki[papec+1])
			myVid = player.GetMainCharacterIndex()
			chr.SelectInstance(myVid)
			self.TeleportToDest((Position_Xx+10)*100,(Position_Yx+10)*100)
			chr.MoveToDestPosition(int(myVid),Position_Xx*100,Position_Yx*100)
			self.Auto_Atak_M_x()
			(My_X1, My_Y1, My_Z1) = chr.GetPixelPosition(myVid)
			My_X1 = int(My_X1 / 100)
			My_Y1 = int(My_Y1 / 100)
			if (My_X1 >= (x_coordinate1)-20 and My_X1 <= (x_coordinate1)+20) and (My_Y1 >= (y_coordinate1)-20 and My_Y1 <= (y_coordinate1)+20):
				if papec != (len(kordziki)):
					papec += 2
				if papec == (len(kordziki)):
					papec = 0
			self.PozycjaText.SetText(str('Pozycja ')+str(papec/2)+str(' / ')+str((len(kordziki)/2)))
	def Teleportuj_Do_Kordow_M_Stop(self):
		self.Wykrywaczmetinow=XX()
		self.Wykrywaczmetinow.XX1(19999999999990)
		self.Wykrywaczmetinow.XX2(self.Teleportuj_Do_Kordow_M_)

	def Auto_Atak_M_x(self):
		global listatypow,TargetVid2,TargetVid,VidyPozwolenie,ListaVidow,ListaVidow2,listash2
		listatypow = []
		Odleglosc = 149
		Moja_Pozycja = player.GetMainCharacterIndex()
		My_VID1 = player.GetMainCharacterIndex()
		(My_X1, My_Y1, My_Z1) = chr.GetPixelPosition(My_VID1)
		My_X1 = int(My_X1 )
		My_Y1 = int(My_Y1 )
		o=player.GetMainCharacterIndex()
		for i in listash2:
			Typ = chr.GetInstanceType(i)
			if chr.HasInstance(i):
				if Typ==2:
					(xm,ym,zm)= chr.GetPixelPosition(i)
					chr.SelectInstance(My_VID1)
					self.TeleportToDest(xm,ym)

	def Auto_Atak_M_(self):
		global listatypow,Pozwolenie,TargetVid2,TargetVid,VidyPozwolenie,ListaVidow,ListaVidow2,listash2
		listatypow = []
		Odleglosc = 149
		Odleglosc1 = []
		teleportek = 1
		self.Wykrywaczmetinow44=XX()
		self.Wykrywaczmetinow44.XX1(1)
		self.Wykrywaczmetinow44.XX2(self.Auto_Atak_M_)
		Moja_Pozycja = player.GetMainCharacterIndex()
		My_VID1 = player.GetMainCharacterIndex()
		(My_X1, My_Y1, My_Z1) = chr.GetPixelPosition(My_VID1)
		My_X1 = int(My_X1 )
		My_Y1 = int(My_Y1 )
		o=player.GetMainCharacterIndex()


		for i in listash2:
			Typ = chr.GetInstanceType(i)
			if chr.HasInstance(i):
				listatypow.append(Typ)
				if listatypow.count(int(2)) == 1:
					Pozwolenie = 1
					teleportek = 0
				if	listatypow.count(int(2))== 0:
					Pozwolenie = 0
					player.SetAttackKeyState(FALSE)
					teleportek = 1
				if listatypow.count(int(2)) >= 2:
					teleportek = 1
					Pozwolenie = 1
			else:
				pass
			if Typ==2:
				dystans = player.GetCharacterDistance(i)
				b = (dystans,i)
				Odleglosc1.append(b)
				Odleglosc1.sort()
				if (Odleglosc1[0][0]) > 150:
					if teleportek == 0:
						x, y, z = chr.GetPixelPosition(Odleglosc1[0][1])
						self.TeleportToDest(int(x+10), int(y+10))
						player.SetAttackKeyState(FALSE)
				else:
					player.SetAttackKeyState(TRUE)


	def Auto_Atak_M_Stop(self):
		global Odleglosc
		self.Wykrywaczmetinow44=XX()
		self.Wykrywaczmetinow44.XX1(19999999999999999999)
		self.Wykrywaczmetinow44.XX2(self.Auto_Atak_M_)
		player.SetAttackKeyState(FALSE)


	def Rozdziel_func(self):
		global SlotDoDzielenia
		IloscStacku = (float(self.PoIleRozdzielicIn.GetText()))
		for i in xrange(player.INVENTORY_PAGE_SIZE*4):
			if player.GetItemIndex(i) == 0:
				net.SendItemMovePacket(SlotDoDzielenia, i, IloscStacku)


	def Ulepsz_Item(self):
		global SlotUlepszania
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()

			SlotUlepszania = mouseModule.mouseController.GetAttachedSlotNumber()
			item.SelectItem(attachedSlotVnum)

		item.SelectItem(int(attachedSlotVnum))
		self.UlepszanieSlotIcon.LoadImage(str(item.GetIconImageFileName()))
		mouseModule.mouseController.DeattachObject()

	def SlotUleDo(self):
		global SlotUlepszaniaDO
		if mouseModule.mouseController.isAttached():
			attachedSlotType = mouseModule.mouseController.GetAttachedType()
			attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
			attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()

			SlotUlepszaniaDO = attachedSlotVnum
			item.SelectItem(attachedSlotVnum)

		item.SelectItem(int(attachedSlotVnum))
		self.UlepszanieSlotIconx.LoadImage(str(item.GetIconImageFileName()))
		mouseModule.mouseController.DeattachObject()


	def __OnScroll(self):
		board_count = len(self.gui['boards'])
		pos = int(self.gui['scrollbar'].GetPos() * (len(listaWysz) - 7))
		for l in xrange(board_count):
			realPos = l + pos
			self.gui['boards'][l].SetBoardInfo(realPos, listaWysz[realPos][0], listaWysz[realPos][2], listaWysz[realPos][1])

	def CreateScrollbar(self, parent, height, x, y):
		scrollbar = ui.ScrollBar()
		scrollbar.SetParent(parent)
		scrollbar.SetScrollBarSize(height)
		scrollbar.SetPosition(x, y)
		scrollbar.Show()
		return scrollbar



	def OpenWindowZap(self):
		if self.BoardZap.IsShow():
			self.BoardZap.Hide()
		else:
			self.BoardZap.Show()

	def CloseZap(self):
		self.BoardZap.Hide()


	def OpenWindow(self):
		global SPAM
		self.btns3.Hide()
		SPAM = TRUE
		if self.Board1.IsShow():
			self.Board1.Hide()
		else:
			self.Board1.Show()

	def OpenWindowUstawieniao(self):
		if self.Ustawieniao.IsShow():
			self.Ustawieniao.Hide()
		else:
			self.Ustawieniao.Show()

	def OpenWindowPogoda(self):
		if self.Pogoda.IsShow():
			self.Pogoda.Hide()
		else:
			self.Pogoda.Show()


	def AutoSkileWindow(self):
		self.Aurax.Hide()
		self.Berekx.Hide()
		self.Silnex.Hide()
		self.Ostrzex.Hide()
		self.Strachx.Hide()
		self.Zbrojax.Hide()
		self.Ochronkax.Hide()
		self.Duchx.Hide()
		self.Pomocx.Hide()
		self.Odbiciex.Hide()
		self.Blogox.Hide()
		self.Zwinnoscx.Hide()
		self.Atakx.Hide()
		self.Aurax1.Hide()
		self.Berekx1.Hide()
		self.Silnex1.Hide()
		self.Ostrzex1.Hide()
		self.Strachx1.Hide()
		self.Zbrojax1.Hide()
		self.Ochronkax1.Hide()
		self.Duchx1.Hide()
		self.Pomocx1.Hide()
		self.Blogox1.Hide()
		self.Odbiciex1.Hide()
		self.Zwinnoscx1.Hide()
		self.Atakx1.Hide()

		self.slotbar_Skill1czas.Hide()
		self.slotbar_Skill2czas.Hide()
		self.slotbar_Skill3czas.Hide()

		Race = net.GetMainActorRace()
		Group = net.GetMainActorSkillGroup()
		if (Race == 0 and Group == 1) or (Race == 4 and Group == 1):
			self.Aurax.Show()
			self.Berekx.Show()
			self.Aurax1.Show()
			self.Berekx1.Show()
			self.slotbar_Skill1czas.Show()
			self.slotbar_Skill2czas.Show()
			#self.AutoSkileBoard.SetSize(112, 110)
		if (Race == 0 and Group == 2) or (Race == 4 and Group == 2):
			self.Silnex.Show()
			self.Silnex1.Show()
			self.slotbar_Skill1czas.Show()
			#self.AutoSkileBoard.SetSize(72, 110)
		if (Race == 2 and Group == 1) or (Race == 6 and Group == 1):
			self.Ostrzex.Show()
			self.Strachx.Show()
			self.Zbrojax.Show()
			self.Ostrzex1.Show()
			self.Strachx1.Show()
			self.Zbrojax1.Show()
			self.slotbar_Skill1czas.Show()
			self.slotbar_Skill2czas.Show()
			self.slotbar_Skill3czas.Show()
			#self.AutoSkileBoard.SetSize(152, 110)
		if (Race == 2 and Group == 2) or (Race == 6 and Group == 2):
			self.Ochronkax.Show()
			self.Duchx.Show()
			self.Ochronkax1.Show()
			self.Duchx1.Show()
			self.slotbar_Skill1czas.Show()
			self.slotbar_Skill2czas.Show()
			#self.AutoSkileBoard.SetSize(112, 110)
		if (Race == 3 and Group == 1) or (Race == 7 and Group == 1):
			self.Blogox.Show()
			self.Odbiciex.Show()
			self.Pomocx.Show()
			self.Blogox1.Show()
			self.Odbiciex1.Show()
			self.Pomocx1.Show()
			self.slotbar_Skill1czas.Show()
			self.slotbar_Skill2czas.Show()
			self.slotbar_Skill3czas.Show()
		    #self.AutoSkileBoard.SetSize(152, 110)
		if (Race == 3 and Group == 2) or (Race == 7 and Group == 2):
			self.Zwinnoscx.Show()
			self.Atakx.Show()
			self.Zwinnoscx1.Show()
			self.Atakx1.Show()
			self.slotbar_Skill1czas.Show()
			self.slotbar_Skill3czas.Show()
			self.slotbar_Skill3czas.SetPosition(63, 75)
			#self.AutoSkileBoard.SetSize(112, 110)

	def OpenWindowInfo(self):
		if self.BoardInfo.IsShow():
			self.BoardInfo.Hide()
		else:
			self.BoardInfo.Show()


	def Close(self):
		global SPAM
		self.Board1.Hide()
		self.btns3.Show()
		SPAM = FALSE

	def Ustawieniaoclose(self):
		self.Ustawieniao.Hide()

	def ClosePogoda(self):
		self.Pogoda.Hide()

	def CloseInfo(self):
		self.BoardInfo.Hide()

class XX(ui.ScriptWindow):

	def __init__(self):
		ui.ScriptWindow.__init__(self)
		self.eventTimeOver = lambda *arg: None
		self.eventExit = lambda *arg: None

	def __del__(self):
		ui.ScriptWindow.__del__(self)

	def XX1(self, waitTime):
		curTime = time.clock()
		self.endTime = curTime + waitTime

		self.Show()

	def Close(self):
		self.Destroy()

	def Destroy(self):
		self.Hide()

	def XX2(self, event):
		self.eventTimeOver = ui.__mem_func__(event)

	def SAFE_SetExitEvent(self, event):
		self.eventExit = ui.__mem_func__(event)


	def OnUpdate(self):
		lastTime = max(0, self.endTime - time.clock())
		if 0 == lastTime:
			self.Close()
			self.eventTimeOver()

		else:
			return

class ExampleBoard(ui.ScriptWindow):
	def __init__(self, parent, x, y):
		ui.ScriptWindow.__init__(self)
	def Podglad(self):
		global listaWysz
		net.SendOnClickPacket(listaWysz[self.index][4])
	def Teleport(self):
		global listaWysz
		(XS, YS, ZS) = chr.GetPixelPosition(listaWysz[self.index][4])
		self.TeleportToDest(XS,YS)
	def DivideToFloat(self,x, y):
		try:
			return x * (y**-1)
		except:
			return 0
	def GetTmpTeleport(self,DestX, DestY):
		global DivideToFloat
		(PlayerX, PlayerY, PlayerZ) = player.GetMainCharacterPosition()
		DifX = DestX - PlayerX
		DifY = DestY - PlayerY
		Vektor = self.DivideToFloat(2000, math.sqrt(DifX**2 + DifY**2))
		TempX = PlayerX + Vektor*DifX
		TempY = PlayerY + Vektor*DifY
		Count = self.DivideToFloat((DestX - PlayerX), (Vektor*DifX))
		return (TempX, TempY, Count)
	def Debug(self):
		player.SetSingleDIKKeyState(app.DIK_UP, TRUE)
		player.SetSingleDIKKeyState(app.DIK_UP, FALSE)
	def TeleportToDest(self,aimx, aimy):
		global Debug, GetTmpTeleport, TeleportState
		(TmpX, TmpY, Count) = self.GetTmpTeleport(aimx, aimy)
		TmpCount = 0
		myVid = player.GetMainCharacterIndex()
		while TmpCount < Count:
			chr.SelectInstance(myVid)
			(TmpX, TmpY, Crap) = self.GetTmpTeleport(aimx, aimy)
			chr.SetPixelPosition(int(TmpX), int(TmpY))
			TmpCount += 1
			self.Debug()
		chr.SetPixelPosition(int(aimx), int(aimy))
		self.Debug()
		TeleportState = 1
		chr.SelectInstance(myVid)
	def SetBoardInfo(self, index, price, amount, nazwa):
		self.index = index
		self.gui['textlines']['cena'].SetText('Cena: %s Yang' % price)
		self.gui['textlines']['ilosc'].SetText('Ilosc: %s' % amount)
		self.gui['textlines']['Nume TP'].SetText('Nume TP: %s' % nazwa)
	def GetIndex(self):
		return self.index
	def HideBoard(self):
		self.board.Hide()
	def ShowBoard(self):
		self.board.Show()
	def CreateTextline(self, parent, x, y):
		textline = ui.TextLine()
		textline.SetParent(parent)
		textline.SetPosition(x,y)
		textline.Show()
		return textline
	def CreateBoard(self, parent, width, height, x, y):
		board = ui.Board()
		board.SetParent(parent)
		board.SetSize(width, height)
		board.SetPosition(x, y)
		board.SetTop()
		board.Show()
		return board
	def CreateButton(self, parent, x, y, text, event):
		button = ui.Button()
		button.SetParent(parent)
		button.SetPosition(x, y)
		button.SetUpVisual('d:/ymir work/ui/public/Middle_Button_01.sub')
		button.SetOverVisual('d:/ymir work/ui/public/Middle_Button_02.sub')
		button.SetDownVisual('d:/ymir work/ui/public/Middle_Button_03.sub')
		button.SetText(text)
		button.SetEvent(event)
		button.Show()
		return button
	def __del__(self):
		ui.ScriptWindow.__del__(self)
	def Destroy(self):
		self.Hide()


class Component:
	def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):
		button = ui.Button()
		if parent != None:
			button.SetParent(parent)
		button.SetPosition(x, y)
		button.SetUpVisual(UpVisual)
		button.SetOverVisual(OverVisual)
		button.SetDownVisual(DownVisual)
		button.SetText(buttonName)
		button.SetToolTipText(tooltipText)
		button.Show()
		button.SetEvent(func)
		return button

	def ToggleButton(self, parent, buttonName, tooltipText, x, y, funcUp, funcDown, UpVisual, OverVisual, DownVisual):
		button = ui.ToggleButton()
		if parent != None:
			button.SetParent(parent)
		button.SetPosition(x, y)
		button.SetUpVisual(UpVisual)
		button.SetOverVisual(OverVisual)
		button.SetDownVisual(DownVisual)
		button.SetText(buttonName)
		button.SetToolTipText(tooltipText)
		button.Show()
		button.SetToggleUpEvent(funcUp)
		button.SetToggleDownEvent(funcDown)
		return button


	def EditLine(self, parent, editlineText, x, y, width, heigh, max):
		SlotBar = ui.SlotBar()
		if parent != None:
			SlotBar.SetParent(parent)
		SlotBar.SetSize(width, heigh)
		SlotBar.SetPosition(x, y)
		SlotBar.Show()
		Value = ui.EditLine()
		Value.SetParent(SlotBar)
		Value.SetSize(width, heigh)
		Value.SetPosition(5, 1)
		Value.SetMax(max)
		Value.SetLimitWidth(width)
		Value.SetMultiLine()
		Value.SetText(editlineText)
		Value.Show()
		return SlotBar, Value

	def TextLine(self, parent, textlineText, x, y, color,rozmiar):
		textline = ui.TextLine()
		textline.SetFontName(rozmiar)
		if parent != None:
			textline.SetParent(parent)
		textline.SetPosition(x, y)
		if color != None:
			textline.SetFontColor(color[0], color[1], color[2])
		textline.SetText(textlineText)
		textline.Show()
		return textline

	def SlotbarText(self, parent, editlineText, x, y, width, heigh):
		SlotBar = ui.SlotBar()
		SlotBar.SetParent(parent)
		SlotBar.SetSize(width, heigh)
		SlotBar.SetPosition(x, y)
		SlotBar.Show()
		TextLine = ui.TextLine()
		TextLine.SetParent(SlotBar)
		TextLine.SetText(editlineText)
		TextLine.SetHorizontalAlignCenter()
		TextLine.SetVerticalAlignCenter()
		TextLine.SetWindowHorizontalAlignCenter()
		TextLine.SetWindowVerticalAlignCenter()
		TextLine.Show()
		return SlotBar, TextLine


	def RGB(self, r, g, b):
		return (r*255, g*255, b*255)

	def SliderBar(self, parent, sliderPos, func, x, y):
		Slider = ui.SliderBar()
		if parent != None:
			Slider.SetParent(parent)
		Slider.SetPosition(x, y)
		Slider.SetSliderPos(sliderPos / 100)
		Slider.Show()
		Slider.SetEvent(func)
		return Slider

	def ExpandedImage(self, parent, x, y, img):
		image = ui.ExpandedImageBox()
		if parent != None:
			image.SetParent(parent)
		image.SetPosition(x, y)
		image.LoadImage(img)
		image.Show()
		return image

	def ComboBox(self, parent, text, x, y, width):
		combo = ui.ComboBox()
		if parent != None:
			combo.SetParent(parent)
		combo.SetPosition(x, y)
		combo.SetSize(width, 15)
		combo.SetCurrentItem(text)
		combo.Show()
		return combo

	def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
		thin = ui.ThinBoard()
		if parent != None:
			thin.SetParent(parent)
		if moveable == TRUE:
			thin.AddFlag('movable')
			thin.AddFlag('float')
		thin.SetSize(width, heigh)
		thin.SetPosition(x, y)
		if center == TRUE:
			thin.SetCenterPosition()
		thin.Show()
		return thin

	def Gauge(self, parent, width, color, x, y):
		gauge = ui.Gauge()
		if parent != None:
			gauge.SetParent(parent)
		gauge.SetPosition(x, y)
		gauge.MakeGauge(width, color)
		gauge.Show()
		return gauge

	def ListBoxEx(self, parent, x, y, width, heigh, SVIC, event):
		bar = ui.Bar()
		if parent != None:
			bar.SetParent(parent)
		bar.SetPosition(x, y)
		bar.SetSize(width, heigh)
		bar.SetColor(0x77000000)
		bar.Show()
		ListBox=ui.ListBoxEx()
		ListBox.SetParent(bar)
		ListBox.SetPosition(0, 0)
		ListBox.SetSize(width, heigh)
		ListBox.SetViewItemCount(SVIC)
		ListBox.SetSelectEvent(event)
		ListBox.Show()
		scroll = ui.ScrollBar()
		scroll.SetParent(ListBox)
		scroll.SetPosition(width-15, 0)
		scroll.SetScrollBarSize(heigh)
		scroll.Show()
		ListBox.SetScrollBar(scroll)
		return bar, ListBox

	def ListBoxEx1(self, parent, x, y, width, heigh, SVIC, event):
		bar = ui.Bar()
		if parent != None:
			bar.SetParent(parent)
		bar.SetPosition(x, y)
		bar.SetSize(width, heigh)
		bar.SetColor(0x77000000)
		bar.Show()
		ListBox=ui.ListBoxEx()
		ListBox.SetParent(bar)
		ListBox.SetPosition(0, 0)
		ListBox.SetSize(width, heigh)
		ListBox.SetViewItemCount(SVIC)
		ListBox.SetSelectEvent(event)
		ListBox.Show()
		scroll = ui.ScrollBar()
		scroll.SetParent(ListBox)
		scroll.SetPosition(width-15, 0)
		scroll.SetScrollBarSize(heigh)
		scroll.Show()
		ListBox.SetScrollBar(scroll)
		return bar, ListBox

	def HorizontalBar(self, parent, x, y, Create):
		horizontalBar = ui.HorizontalBar()
		if parent != None:
			horizontalBar.SetParent(parent)
		horizontalBar.SetPosition(x, y)
		horizontalBar.Create(Create)
		horizontalBar.Show()
		return horizontalBar

	def GetCurrentText(self):
		return self.textLine.GetText()
	def OnSelectItem(self, index, name):
		self.SetCurrentItem(name)
		self.CloseListBox()
		self.event()
	ui.ComboBox.GetCurrentText = GetCurrentText
	ui.ComboBox.OnSelectItem = OnSelectItem

class Item(ui.ListBoxEx.Item):
	def __init__(self, text):
		ui.ListBoxEx.Item.__init__(self)
		self.canLoad=0
		self.text=text
		self.textLine=self.__CreateTextLine(text[:1000])
	def __del__(self):
		ui.ListBoxEx.Item.__del__(self)
	def GetText(self):
		return self.text
	def SetSize(self, width, height):
		ui.ListBoxEx.Item.SetSize(self,2*len(self.textLine.GetText()) + 35, height)
	def __CreateTextLine(self, text):
		textLine=ui.TextLine()
		textLine.SetParent(self)
		textLine.SetPosition(0, 0)
		textLine.SetText(text)
		textLine.Show()
		return textLine

	#########################################

	#############################################################
# Remade the functionality from iPUSH, optimized and changed by KolenMG - M2.Dev - Althaia Project. 
#############################################################

import sys, os, math, time


### Classes instead of packages & modules to fit all in one file ###
class SimpleRandom:
    def __init__(self, seed=12345):
        self.seed = seed

    def rand(self):
        a = 1664525
        c = 1013904223
        m = 2**32
        self.seed = (a * self.seed + c) % m
        return self.seed

    def randint(self, min_val, max_val):
        return min_val + self.rand() % (max_val - min_val + 1)

simple_random = SimpleRandom(seed=12345)  # Initialize with a specific seed
class Util:
    class File:
        [MENTION=8379099]StaticM[/MENTION]ethod
        def read(path):
            try:
                f = open(path, 'r')
                lines = f.readlines()
                f.close()
                return lines
            except:
                pass

        [MENTION=8379099]StaticM[/MENTION]ethod
        def write(path, name, id, time):
            f = open(path, 'a+')
            f.write("Name=%s\n" % (name))
            f.write("ID=%i\n" % (id))
            f.write("Time=%i\n\n" % (time))
            f.close()

        [MENTION=817952]class[/MENTION]method
        def removeLastLines(cls, path, num):
            allLines = cls.read(path)
            f = open(path, "w+")
            f.writelines(allLines[:-num])
            f.close()

    class Module:
        [MENTION=817952]class[/MENTION]method
        def find(cls, name, atr):
            for module_name in sys.modules:
                if name == '*' or name in module_name:
                    try:
                        module = __import__(module_name)
                        getattr(module, atr)
                        return module
                    except:
                        pass

            return cls.find('*', atr)

        [MENTION=8379099]StaticM[/MENTION]ethod
        def dump(path):
            for m in sys.modules:
                f = open(path, 'a+')
                
                try:
                    module = __import__(m)

                    f.write("\n# %s\nimport %s\n" % (m, m))

                    for atr in dir(module):
                        atr_name = atr
                        atr = getattr(module, atr)

                        if callable(atr):
                            f.write("%s.%s() # %s\n" % (m, atr_name, type(atr)))
                            for sub_atr in ['__code__', '__defaults__', '__kwdefaults__']:
                                if sub_atr == '__code__':
                                    for co_atr in ['co_argcount', 'co_varnames', 'co_nlocals', 'co_names', 'co_cellvars', 'co_consts', 'co_freevars', 'co_posonlyargcount', 'co_kwonlyargcount']:
                                        try:
                                            f.write("%s.%s.%s.%s = %s\n" % (m, atr_name, sub_atr, co_atr, getattr(getattr(atr, sub_atr), co_atr)))
                                        except:
                                            pass
                                else:
                                    try:
                                        f.write("%s.%s.%s = %s\n" % (m, atr_name, sub_atr, getattr(atr, sub_atr)))
                                    except:
                                        pass
                        else:
                            f.write("%s.%s # %s\n" % (m, atr_name, type(atr)))
                except:
                    f.write("\n# ImportError: No module named %s\n" % (m))

                f.close()

### Import Metin2 modules ###
app = Util.Module.find('app', 'GetRandom')
item = Util.Module.find('item', 'GetItemName')
chr = Util.Module.find('chr', 'SetRotation')
net = Util.Module.find('net', 'SendChatPacket')
player = Util.Module.find('player', 'SetAttackKeyState')
ui = Util.Module.find('ui', 'ThinBoard')
textTail = Util.Module.find('textTail', 'Pick')
chat = Util.Module.find('chat', 'AppendChat')
systemSetting = Util.Module.find('systemSetting', 'GetCurrentResolution')

class Mt2:
    class Event:
        def __init__(self, delay, task, name=None, repeat=False):
            self.delay = delay
            self.task = task
            self.name = name
            self.repeat = repeat
            self.over = False
            self.timeOfExec = time.clock() + delay

        def run(self, curTime):
            if not self.over and curTime >= self.timeOfExec:
                self.timeOfExec = curTime + self.delay
                self.task()
                self.over = True if not self.repeat else False

    class EventHandler(ui.Window):
        def __init__(self, layer = "UI"):
            ui.Window.__init__(self, layer)
            self.events = []
            self.add(10, self.clean, "Clean Events", True)
            self.Show()

        def __del__(self):
            ui.Window.__del__(self)

        def get(self, name):
            return next((e for e in self.events if e.name == name), None)

        def has(self, name):
            return eventHandler.get(name) is not None

        def add(self, delay, task, name=None, repeat=False):
            self.events.append(Mt2.Event(delay, task, name, repeat))

        def remove(self, name, task=None):
            self.events = [e for e in self.events if e.name != name]
            if task is not None: task()

        def pause(self, name, delay):
            event = self.get(name)
            if event is None: return
            self.remove(name)
            self.add(delay, lambda: self.add(event.delay, event.task, event.name, event.repeat))

        def clean(self):
            self.events = [e for e in self.events if not e.over]

        def OnUpdate(self):
            curTime = time.clock()
            for event in self.events: event.run(curTime)

    class Gui:
        [MENTION=8379099]StaticM[/MENTION]ethod
        def addThinBoard(parent, x, y, width, heigh):
            board = ui.ThinBoard()
            if parent is not None: board.SetParent(parent)
            board.AddFlag('movable')
            board.AddFlag('float')
            board.SetPosition(x, y)
            board.SetSize(width, heigh)
            board.Hide()
            return board

        [MENTION=8379099]StaticM[/MENTION]ethod
        def addEditLine(parent, x, y, width, heigh, text, charLimit):
            slotBar = ui.SlotBar()
            if parent is not None: slotBar.SetParent(parent)
            slotBar.SetSize(width, heigh)
            slotBar.SetPosition(x, y)
            slotBar.Show()
            editLine = ui.EditLine()
            editLine.SetParent(slotBar)
            editLine.SetSize(width, heigh)
            editLine.SetPosition(6, 2)
            editLine.SetMax(charLimit)
            editLine.SetNumberMode()
            editLine.SetText(text)
            editLine.Show()
            return slotBar, editLine


        [MENTION=8379099]StaticM[/MENTION]ethod
        def addToggleButton(parent, label, x, y, size, eventDown, eventUp=None, delay=None, closure=False):
            button = ui.ToggleButton()
            if parent is not None: button.SetParent(parent)
            button.SetPosition(x, y)
            button.SetUpVisual('d:/ymir work/ui/public/' + size + '_button_01.sub')
            button.SetOverVisual('d:/ymir work/ui/public/' + size + '_button_02.sub')
            button.SetDownVisual('d:/ymir work/ui/public/' + size + '_button_03.sub')
            button.SetText(label)
            button.SetToggleDownEvent(eventDown if delay is None else lambda: eventHandler.add(delay, eventDown() if closure else eventDown, label, True))
            button.SetToggleUpEvent(eventUp if delay is None else lambda: eventHandler.remove(label, eventUp))
            button.Show()
            return button

    class Api:
        targets = []
      
        
        [MENTION=817952]class[/MENTION]method
        def getTargets(cls, Type):
            r = [0]  # Keeping track of the target search range
    
            def getTargetVIDs():
                # Check if the targets need to be refreshed
                if not cls.targets or (Type == 0 and not any(player.GetCharacterDistance(t) < 4000 for t in cls.targets[:5])) or all(player.GetCharacterDistance(t) == -1 for t in cls.targets[:5]):
                    del cls.targets[:]  # Clear previous targets
                    
                    # Ensure that r[0] stays within a manageable range
                    if r[0] > 10000000:
                        r[0] = 0
    
                    # Generate new targets
                    cls.targets.extend([
                        vid for vid in xrange(r[0], r[0] + 1000000, 3 if Type == 0 else 1)
                        if chr.GetInstanceType(vid) == Type and (Type != 0 or player.GetCharacterDistance(vid) < 6000)
                    ])
                    cls.targets.sort(key=lambda t: player.GetCharacterDistance(t))
                    r[0] += 1000000  # Increment the search range
    
                # Reset the search range if it exceeds the limit
                if r[0] > 100000000:
                    r[0] = 0
    
                return cls.targets or []  # Ensure it returns a list
            
            return getTargetVIDs


        [MENTION=8379099]StaticM[/MENTION]ethod
        def getDegree(vid):
            mobX, mobY, _ = chr.GetPixelPosition(vid)
            playerX, playerY, _ = player.GetMainCharacterPosition()
            try:
                rada = 180 * (math.acos((mobY - playerY) / math.sqrt((mobX - playerX)**2 + (mobY - playerY)**2))) / math.pi + 180
                if playerX >= mobX:
                    rada = 360 - rada
            except:
                rada = 0
            return rada
        ### Char move to position and dodge if get stucked ###
        [MENTION=817952]class[/MENTION]method
        def moveToTarget(cls, vid):
            x, y, _ = chr.GetPixelPosition(vid)
            mX, mY, _ = player.GetMainCharacterPosition()
            
            # Adjust target coordinates slightly to avoid obstacles
            x = x + 135 if x < mX else x - 135
            y = y + 135 if y < mY else y - 135
    
            def moveToDestPosition(x, y):
                chr.MoveToDestPosition(player.GetMainCharacterIndex(), x, y)
                eventHandler.add(2, lambda: eventHandler.remove("moveToTarget"))
    
            # Add a timer for movement duration
            start_time = time.time()
            eventHandler.add(0, lambda x=x, y=y: moveToDestPosition(x, y), "moveToTarget")

        
            # Add logic to reset targets if the player is stuck
        #def check_if_stuck(self, vid):
        #    #current_distance = player.GetCharacterDistance(vid)
        #    # Check if the player is too far from the target and cannot reach it (stuck behind obstacles)
        #    if not self.canReachTarget(vid):  # Using self for instance method
        #    #if current_distance > 4000 or not self.canReachTarget(vid):  # Using self for instance method
        #        print("Player stuck or target unreachable, resetting.")
        #        del self.targets[:]  # Clear the current targets list
        #        self.getTargets(0)  # Reattempt to find new targets
            def check_if_stuck():
                current_distance = player.GetCharacterDistance(vid)
                elapsed_time = time.time() - start_time

                if player.SetAttackKeyState is True:
                   return
                if current_distance > 250 and current_distance < 380 and player.SetAttackKeyState is False:
                   cls.dodge(vid)
                   del cls.targets[:]

                # Check if the player is too far from the target or if the move is taking too long
                if current_distance > 500 or elapsed_time > 10:  # 30 seconds threshold
                   print("Player stuck or move taking too long, resetting.")
                   cls.dodge(vid)  # Trigger dodge behavior
                   del cls.targets[:]  # Clear the current targets list
                   cls.getTargets(0)  # Reattempt to find new targets
                
				      
            eventHandler.add(10, check_if_stuck)  # Check for stuck status after 5 seconds




#       [MENTION=817952]class[/MENTION]method
#       def moveToTarget(cls, vid):
#           x, y, _ = chr.GetPixelPosition(vid)
#           mX, mY, _ = player.GetMainCharacterPosition()
#			
#           x = x + 135 if x < mX else x - 135
#           y = y + 135 if y < mY else y - 135
#
#           def moveToDestPosition(x, y):
#               chr.MoveToDestPosition(player.GetMainCharacterIndex(), x, y)
#               eventHandler.add(2, lambda: eventHandler.remove("moveToTarget"))
#               
#           if not eventHandler.has("moveToTarget"): eventHandler.add(0, lambda x=x, y=y: moveToDestPosition(x, y), "moveToTarget")
#
#           if not eventHandler.has("dodge"): eventHandler.add(5, lambda: cls.dodge(vid), "dodge")

        ### Char dodge into random direction ###

        [MENTION=8379099]StaticM[/MENTION]ethod
        def dodge(vid):
            if player.GetCharacterDistance(vid) < 400:
                return
    
            directions = [app.DIK_DOWN, app.DIK_RIGHT, app.DIK_LEFT, app.DIK_UP ]
            direction = directions[simple_random.randint(0, 3)]  # Fixed index range for four directions
    
            if player.IsMountingHorse():
                player.ClickSkillSlot(9)
    
            player.SetSingleDIKKeyState(direction, True)
    
            def stopDodge():
                player.SetSingleDIKKeyState(direction, False)
                eventHandler.remove("dodge")
    
            eventHandler.add(10, stopDodge)
    


   #     [MENTION=8379099]StaticM[/MENTION]ethod
   #     def dodge(vid):
   #         if player.GetCharacterDistance(vid) < 500: return
#
   #         directions = [ app.DIK_UP, app.DIK_DOWN, app.DIK_LEFT, app.DIK_RIGHT ]
   #         direction = directions[simple_random.randint(0, 8)]
#
   #         if player.IsMountingHorse(): player.ClickSkillSlot(9)
#
   #         player.SetSingleDIKKeyState(direction, True)
#
   #         def stopDodge():
   #             player.SetSingleDIKKeyState(direction, False)
   #             eventHandler.remove("dodge")
#
   #         eventHandler.add(2, stopDodge)

        ### Get VIDs of near targets ###


#        def getTargets(cls, Type):
#            targets = []
#            r = [0]
#
#            def getTargetVIDs():
#                if not targets or (Type == 0 and not any(player.GetCharacterDistance(t) < 5000 for t in targets[:5])) or all(player.GetCharacterDistance(t) == -1 for t in targets[:5]):
#                    del targets[:]
#                    targets.extend([ vid for vid in xrange(r[0], r[0]+1000000, 3 if Type == 0 else 1) if chr.GetInstanceType(vid) == Type and (Type != 0 or player.GetCharacterDistance(vid) < 10000) ])
#                    targets.sort(key=lambda t: player.GetCharacterDistance(t))
#                    r[0] += 1000000
#                    return targets
#                if targets or r[0] > 100000000:
#                    r[0] = 0
#                return targets
#            
#            return getTargetVIDs



class Bot:
    class Api:
        ### AutoAttack ###

        # Static variable to track the last wait time across multiple calls
        #last_wait_time = 0

        [MENTION=8379099]StaticM[/MENTION]ethod
        def autoAttack(Type):
            getTargets = Mt2.Api.getTargets(Type)

            def attack():
                # Access hp_threshold from the Attack class
                hp_threshold = Attack.hp_threshold
                current_hp_percentage = (float(player.GetStatus(player.HP)) / float(player.GetStatus(player.MAX_HP))) * 100

                # Check if HP is below the threshold
                if 0 < current_hp_percentage < hp_threshold:
                        chr.SetDirection(simple_random.randint(0, 8))
                        player.SetAttackKeyState(True)
                        player.PickCloseItem(True)

                        return  # Skip attacking while waiting
               
                # If HP is above the threshold, continue with normal attack logic
                targets = getTargets()
                target = next((t for t in targets if player.GetCharacterDistance(t) != -1), False)
                if not target: return
                Mt2.Api.moveToTarget(target)

                if 0 < player.GetCharacterDistance(target) < 300:

                    chr.SetRotation(Mt2.Api.getDegree(target))
                    player.SetAttackKeyState(True)
                    chr.testSetComboType(2)
                else:
                    player.SetAttackKeyState(False)

            return attack



#        [MENTION=8379099]StaticM[/MENTION]ethod
#        def autoAttack(Type):
#            getTargets = Mt2.Api.getTargets(Type)
#            def attack():
#                hp_threshold = Attack.hp_threshold
#                if 0 < (float(player.GetStatus(player.HP)) / (float(player.GetStatus(player.MAX_HP))) * 100) < hp_threshold:
#                    chr.SetDirection(simple_random.randint(0, 8))
#                    player.SetAttackKeyState(True)
#                    return				
#                targets = getTargets()
#                target = next((t for t in targets if player.GetCharacterDistance(t) != -1), False)
#                if not target: return
#                Mt2.Api.moveToTarget(target)
#                
#                if 0 < player.GetCharacterDistance(target) < 200:
#                    chr.SetRotation(Mt2.Api.getDegree(target))
#                    player.SetAttackKeyState(True)
#                else:
#                    player.SetAttackKeyState(False)
#            return attack

        ### Follow target ###
        [MENTION=8379099]StaticM[/MENTION]ethod
        def followTarget():
            targetVID = player.GetTargetVID()

            def follow():
                player.SetTarget(targetVID)
                if player.GetCharacterDistance(targetVID) > 1000:
                    Mt2.Api.moveToTarget(targetVID)

            return follow

    class Gui:
        def __init__(self):
            self.Board = ui.BoardWithTitleBar()
            self.mainBoard = Mt2.Gui.addThinBoard(None, 15, 100, 100, 240)

            self.autoAttackEditLine = Mt2.Gui.addEditLine(self.mainBoard, 0, 0, 0, 0, "0", 0)
            self.autoAttackBtn = Mt2.Gui.addToggleButton(self.Board, "Target Hunt", 25, 80, "large",
                lambda: Bot.Api.autoAttack(int(self.autoAttackEditLine[1].GetText())),
                lambda: player.SetAttackKeyState(False),
                1, True
            )
        def getAutoAttackComponents(self):
           	return self.autoAttackEditLine, self.autoAttackBtn


eventHandler = Mt2.EventHandler()
gui_instance = Bot.Gui()
gui = Bot.Gui()


Attack().Show()

#Bot.Gui.mainBoard.Show()
andu200311 is offline  
Old 09/13/2025, 04:15   #2
 
elite*gold: 0
Join Date: Jul 2013
Posts: 8
Received Thanks: 0
you can get the inventory size and avoid harcoding some values in your code, that way it can be used in more servers!
enzuto is offline  
Reply


Similar Threads Similar Threads
[Trading] Hunt showdown hacking-Hunt showdown brand new magic cheat -Hunt showdown Aimbot +esp
01/26/2022 - Hunt: Showdown Trading - 2 Replies
Hunting Showdown New Listing Cheat high stability and high compatibility very distinctive silence aim,special features Drawing skeleton occupies very low cpu, which can cause esp not to reduce fps It also contains extremely stable legal modules to provide a stable cheating process
[Selling] 7x Hunt Showdown Key's - Only 3€- from Hunt Showdown!
06/27/2018 - Steam Trading - 9 Replies
Hey Guys, i have from Hunter Showdown 7 Keys for you... Only 3€ for 1Alpha Key. Want more? Then only 2€. Write me, Thanks. Greetz



All times are GMT +1. The time now is 14:25.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.