AutoIT Creare Switcher in autoit

Stato
Discussione chiusa ad ulteriori risposte.

luca3193

Utente Silver
26 Gennaio 2009
139
11
26
92
Salve a tutti, ieri mi è passato per la testa il fatto che nel lontano 2011 in questo forum si leggevano i bot che tramite autoit o actool permettevano di pozzare su metin2 se la barra rossa degli hp scendeva e il programma rilevava la parte nera.

Detto ciò mi è passato per la testa l'idea di creare un bot che giri all'infinito finchè non trova i bonus che sul server dove gioco io, se sono bonus maxati, vengono mostrati con il colore giallo.
giphy.gif

Mi chiedevo se tutto ciò fosse possibile e se si poteva chiedere al programma di non cliccare anche se uscivano 3 bonus su 5, e non tutti e 5.
 
Probabilmente la migliore cosa da fare è utilizzare un memory scanner per ottenere un puntatore. Dopo che l'hai trovato, in autoit inizierai a programmare il codice, ti serviranno le funzioni _MemoryOpen() e _MemoryPointerRead(). Dopo che hai aperto il processo, in un'array enumera bene gli offset del tuo del puntatore, dichiari una variabile e gli assegni quello che returna _MemoryPointerRead() passandogli il base address, processo e l'array dei tuoi offset.
Ricorda ovviamente che _MemoryPointerRead() returna sempre un'array, dovrai quindi comparare il valore del tuo bonus, che è salvato in:
Codice:
$variabile[indicedellultimooffsetdelpuntatore]
e quell'indice dovrebbe essere sempre 1 se hai ordinato adeguatamente i tuoi offset.
Il file di inclusione che dovrai utilizzare per quelle funzioni è NomadMemory.au3.
 
Probabilmente la migliore cosa da fare è utilizzare un memory scanner per ottenere un puntatore. Dopo che l'hai trovato, in autoit inizierai a programmare il codice, ti serviranno le funzioni _MemoryOpen() e _MemoryPointerRead(). Dopo che hai aperto il processo, in un'array enumera bene gli offset del tuo del puntatore, dichiari una variabile e gli assegni quello che returna _MemoryPointerRead() passandogli il base address, processo e l'array dei tuoi offset.
Ricorda ovviamente che _MemoryPointerRead() returna sempre un'array, dovrai quindi comparare il valore del tuo bonus, che è salvato in:
Codice:
$variabile[indicedellultimooffsetdelpuntatore]
e quell'indice dovrebbe essere sempre 1 se hai ordinato adeguatamente i tuoi offset.
Il file di inclusione che dovrai utilizzare per quelle funzioni è NomadMemory.au3.
Io ho detto di aver letto di questi bot, non di averli mai creati xD
Quello che mi hai scritto o poco più comprensibile dell'arabo, però provo a leggermi qualche guida e a seguire queste dritte per arrivare a qualche conclusione, grazie .
 
È più semplice di quello che pensi. La parte di trovare il puntatore del bonus forse è la più difficile paragonata con quella di scrivere il codice per il tuo script.
Se provassi a trovarlo forse ti potrei dare una mano a scrivere lo script.
 
Funzionerebbe solo se la finestra dello screen che hai postato fosse una vera finestra di controllo, ed intendo un popup. Sicuro, è solo una finestra modale renderizzata. Se non mi credi e vorresti provare lo stesso, prova ad ottenere le window info con autoit e posta i risultati.
Inoltre se vuoi fare così, dovrai far uso di un engine OCR come Tesseract, in cui dopo che gli specifichi in che parte di quella finestra si trova il numero del bonus, lui ti dovrebbe dare come risultato quello che ha letto. Questo potrebbe moltiplicare il tuo lavoro e quello che dovrai fare sarà molto più difficile.
Per ovvi motivi leggere direttamente da memoria il valore del bonus è più efficiente e la cosa più giusta da fare.
 
la finestra è in game e quindi come finestra viene segnata quella principale del gioco
Perciò come ti ho detto, è una finestra renderizzata.
L'idea che mi è venuta adesso, un po' troppo da smartass, quando escono 3 bonus su 5, il colore del testo cambia? Mi chiedo la stessa cosa per 5 bonus su 5.

Edit:
Se si, in quel caso potresti fare un controllo del colore del testo utilizzando la funzione PixelGetColor(), settandogli le coordinate dei pixel.

p.s: non conosco Metin2, scusa la mia ignoranza.
 
Ultima modifica:
Non sono sicuro se sai cosa si intende per variabile dato che in questo contesto potrebbe non aver senso. Sicuro che è proprio gialla? Anche se fosse giallo trasparente lo script potrebbe non rilevarlo.
In questo caso secondo me utilizzare PixelGetColor() basta e avanza. PixelSearch() serve a controllare più di un pixel.
Potresti direttamente controllare se il colore del pixel è diverso dal colore normale. Esempio, la scritta:
dalla tua foto, ha il colore che equivale in modello RGB: 197, 200, 201. Mentre in esadecimale equivale a: 0xC5C8C9.
Ti faccio un esempio, prova a procedere così:

Codice:
procedimento()
Func procedimento()
; ottengo l'handle della finestra corrente attiva
WinGetHandle("[ACTIVE]")

; ottengo il colore del pixel con le coordinate determinate
; nell'asse x e y, specificale
Local $color = PixelGetColor(x, y)
; trasformo il colore da valore decimale a esadecimale
Local $hexcolor = Hex($color, 6)

If $hexcolor <> 0xC5C8C9 Then ; se il colore è diverso da quello che ho trovato prima
; codice
EndIf

EndFunc

se ti serve un altro colore, per ottenere il suo valore in rgb puoi utilizzare paint.

p.s: non uso Skype.
 
Purtroppo io sono fermo al punto di partenza dato che non riesco ad applicare le tue perle su una scrittura in autoit della quale non conosco un accidenti...
Il colore è quello della finestra, ma non so se riusciremo mai a creare un qualcosa che funzioni.
Ti spiego la finestra ha 5 bonus variabili

15 spada
15 spadone
15 freccia
15 pugnale
15 critici

questi sono i bonus più ambiti, ma se escono anche solo 2 di questi bonus e non in ordine, come faccio a dire al programma di fermarsi?
nel senso che se i 2 15 che saranno di colore giallo, escono nella 3-4 riga il programma si ferma lo stesso?
per girare c'è il tasto "gira" come vedi, da premere con il tasto sinistro del mouse e smettere di premerlo nel caso escano i bonus
 
Il colore è quello della finestra
A te serve il colore del testo, non della finestra. Ora che ci ripenso, è anche meglio utilizzare PixelSearch.
Perchè? Il motivo è spiegato in questa foto che ho fatto io ora:

jsljx0.png


utilizzare PixelSearch ti servirà quindi per rendere più ampio il range di distanza da un pixel e l'altro.
Quello che ti toccherà fare è posizionare il mouse su Gira, attivare lo script - che a sua volta dovrà aspettare almeno di un secondo - e per finire lasciarlo lavorare.
 
Ultima modifica:
Ho deciso di passare a python alla quale riesco a fare qualcosina anche se è difficile trovare un python loader funzionante.

per ora sono qui con il codice:
Codice:
import chat
import item
import net
import player
import snd
#import locale
import shop
import ui
import uiTip
import event

Bonus0 = 0
Bonus1 = 0
Bonus2 = 0
Bonus3 = 0
Bonus4 = 0
SwitchButton = 0  
Boniswitchvalue = 71084         #71300 10m
PRESSWISH0 = 0
PRESSWISH1 = 0
PRESSWISH2 = 0
PRESSWISH3 = 0
PRESSWISH4 = 0

class SwitchBotDialog2(ui.ThinBoard):

    def __init__(self):
        ui.ThinBoard.__init__(self)
        self.LoadSwitchBotDialog22()
      
    def __del__(self):
        ui.ThinBoard.__del__(self)

    def Destroy(self):
        self.Hide()
        return TRUE
      
    def Bonuschangevalue(self):
  
  
      
        global Boniswitchvalue
      
        for i in xrange(player.INVENTORY_PAGE_SIZE*2):
            itemIndex = player.GetItemIndex(i)
            item.SelectItem(itemIndex)
            ItemValue = player.GetItemIndex(i)
          
      
    def LoadSwitchBotDialog22(self):
        #if str(locale.APP_TITLE).find("DragonWrath") != -1:
            #return
        self.SetPosition(5,35)
        self.SetSize(170, 490)
        self.Show()
        self.AddFlag("movable")
        snd.PlaySound("sound/ui/type.wav")
      
        self.LoadTextLines()
        self.LoadButtons()
        self.LoadEditLines()
        self.Bonuschangevalue()
      
        self.BoardMessage = uiTip.BigBoard()
  
    def LoadEditLines(self):
      
        #######################################
        self.vals = ui.SlotBar()
        self.vals.SetParent(self)
        self.vals.SetSize(29, 14)
        self.vals.SetPosition(50, 327)
        self.vals.SetWindowHorizontalAlignCenter()
        #self.vals.Show()
      
        self.val = ui.EditLine()
        self.val.SetParent(self.vals)
        self.val.SetSize(29, 18)
        self.val.SetPosition(6, 0)
        self.val.SetMax(5)
        self.val.SetNumberMode()
        self.val.SetText("71084")
        #self.val.Show()
      
        self.box = ui.TextLine()
        self.box.SetParent(self)
        self.box.SetDefaultFontName()
        self.box.SetPosition(125, 327)
        self.box.SetFeather()
        self.box.SetText("10m")
        self.box.SetFontColor(2.3, 2.9, 4.1)
        self.box.SetOutline()
        self.box.Hide()
        #######################################
      
        self.SlotwahlSlotBar = ui.SlotBar()
        self.SlotwahlSlotBar.SetParent(self)
        self.SlotwahlSlotBar.SetSize(29, 14)
        self.SlotwahlSlotBar.SetPosition(40, 200)
        self.SlotwahlSlotBar.SetWindowHorizontalAlignCenter()
        self.SlotwahlSlotBar.Show()
      
        self.Slotbar = ui.EditLine()
        self.Slotbar.SetParent(self.SlotwahlSlotBar)
        self.Slotbar.SetSize(29, 18)
        self.Slotbar.SetPosition(6, 0)
        self.Slotbar.SetMax(2)
        self.Slotbar.SetNumberMode()
        self.Slotbar.SetText("0")
        self.Slotbar.SetTabEvent(ui.__mem_func__(self.StartSwitchBot))
        self.Slotbar.SetReturnEvent(ui.__mem_func__(self.StartSwitchBot))
        self.Slotbar.Show()
      
        self.BonusValue5SlotBar = ui.SlotBar()
        self.BonusValue5SlotBar.SetParent(self)
        self.BonusValue5SlotBar.SetSize(29, 14)
        self.BonusValue5SlotBar.SetPosition(40, 170)
        self.BonusValue5SlotBar.SetWindowHorizontalAlignCenter()
        self.BonusValue5SlotBar.Show()
      
        self.Bvalue5 = ui.EditLine()
        self.Bvalue5.SetParent(self.BonusValue5SlotBar)
        self.Bvalue5.SetSize(29, 18)
        self.Bvalue5.SetPosition(6, 0)
        self.Bvalue5.SetMax(4)
        self.Bvalue5.SetNumberMode()
        self.Bvalue5.SetText("0")
        self.Bvalue5.SetTabEvent(ui.__mem_func__(self.Slotbar.SetFocus))
        self.Bvalue5.SetReturnEvent(ui.__mem_func__(self.Slotbar.SetFocus))
        self.Bvalue5.Show()

        self.speeds = ui.SlotBar()
        self.speeds.SetParent(self)
        self.speeds.SetSize(29, 14)
        self.speeds.SetPosition(0, 327)
        self.speeds.SetWindowHorizontalAlignCenter()
        self.speeds.Hide()

        self.speed = ui.EditLine()
        self.speed.SetParent(self.speeds)
        self.speed.SetSize(29, 18)
        self.speed.SetPosition(6, 0)
        self.speed.SetMax(4)
        self.speed.SetNumberMode()
        self.speed.SetText("0.40")
        self.speed.Hide()
      
      

        self.BonusValue4SlotBar = ui.SlotBar()
        self.BonusValue4SlotBar.SetParent(self)
        self.BonusValue4SlotBar.SetSize(29, 14)
        self.BonusValue4SlotBar.SetPosition(40, 140)
        self.BonusValue4SlotBar.SetWindowHorizontalAlignCenter()
        self.BonusValue4SlotBar.Show()
      
        self.Bvalue4 = ui.EditLine()
        self.Bvalue4.SetParent(self.BonusValue4SlotBar)
        self.Bvalue4.SetSize(29, 18)
        self.Bvalue4.SetPosition(6, 0)
        self.Bvalue4.SetMax(4)
        self.Bvalue4.SetNumberMode()
        self.Bvalue4.SetFocus()
        self.Bvalue4.SetText("0")
        self.Bvalue4.SetTabEvent(ui.__mem_func__(self.Bvalue5.SetFocus))
        self.Bvalue4.SetReturnEvent(ui.__mem_func__(self.Bvalue5.SetFocus))
        self.Bvalue4.Show()

        self.BonusValue3SlotBar = ui.SlotBar()
        self.BonusValue3SlotBar.SetParent(self)
        self.BonusValue3SlotBar.SetSize(29, 14)
        self.BonusValue3SlotBar.SetPosition(40, 110)
        self.BonusValue3SlotBar.SetWindowHorizontalAlignCenter()
        self.BonusValue3SlotBar.Show()
      
        self.Bvalue3 = ui.EditLine()
        self.Bvalue3.SetParent(self.BonusValue3SlotBar)
        self.Bvalue3.SetSize(29, 18)
        self.Bvalue3.SetPosition(6, 0)
        self.Bvalue3.SetMax(4)
        self.Bvalue3.SetNumberMode()
        self.Bvalue3.SetText("0")
        self.Bvalue3.SetTabEvent(ui.__mem_func__(self.Bvalue4.SetFocus))
        self.Bvalue3.SetReturnEvent(ui.__mem_func__(self.Bvalue4.SetFocus))
        self.Bvalue3.Show()

        self.BonusValue2SlotBar = ui.SlotBar()
        self.BonusValue2SlotBar.SetParent(self)
        self.BonusValue2SlotBar.SetSize(29, 14)
        self.BonusValue2SlotBar.SetPosition(40, 79)
        self.BonusValue2SlotBar.SetWindowHorizontalAlignCenter()
        self.BonusValue2SlotBar.Show()
      
        self.Bvalue2 = ui.EditLine()
        self.Bvalue2.SetParent(self.BonusValue2SlotBar)
        self.Bvalue2.SetSize(29, 18)
        self.Bvalue2.SetPosition(6, 0)
        self.Bvalue2.SetMax(4)
        self.Bvalue2.SetNumberMode()
        self.Bvalue2.SetText("0")
        self.Bvalue2.SetTabEvent(ui.__mem_func__(self.Bvalue3.SetFocus))
        self.Bvalue2.SetReturnEvent(ui.__mem_func__(self.Bvalue3.SetFocus))
        self.Bvalue2.Show()

        self.BonusValue1SlotBar = ui.SlotBar()
        self.BonusValue1SlotBar.SetParent(self)
        self.BonusValue1SlotBar.SetSize(29, 14)
        self.BonusValue1SlotBar.SetPosition(40, 44)
        self.BonusValue1SlotBar.SetWindowHorizontalAlignCenter()
        self.BonusValue1SlotBar.Show()
      
        self.Bvalue1 = ui.EditLine()
        self.Bvalue1.SetParent(self.BonusValue1SlotBar)
        self.Bvalue1.SetSize(29, 18)
        self.Bvalue1.SetPosition(6, 0)
        self.Bvalue1.SetMax(4)
        self.Bvalue1.SetNumberMode()
        self.Bvalue1.SetText("0")
        self.Bvalue1.SetFocus()
        self.Bvalue1.SetTabEvent(ui.__mem_func__(self.Bvalue2.SetFocus))
        self.Bvalue1.SetReturnEvent(ui.__mem_func__(self.Bvalue2.SetFocus))
        self.Bvalue1.Show()
      
    def LoadButtons(self):
        self.CloseButton = ui.Button()
        self.CloseButton.SetParent(self)
        self.CloseButton.SetPosition(150, 30)
        self.CloseButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
        self.CloseButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
        self.CloseButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
        #self.CloseButton.SetToolTipText(locale.UI_CLOSE, 0, - 23)
        self.CloseButton.SetEvent(ui.__mem_func__(self.Close))
        self.CloseButton.Show()

        self.Wunschbonus01 = ui.Button()
        self.Wunschbonus01.SetParent(self)
        self.Wunschbonus01.SetPosition(15, 40)
        self.Wunschbonus01.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Wunschbonus01.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Wunschbonus01.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Wunschbonus01.SetText("1.Bonus")
        self.Wunschbonus01.SetEvent(ui.__mem_func__(self.__Wish_1_Option))
        self.Wunschbonus01.Show()

        self.Wunschbonus02 = ui.Button()
        self.Wunschbonus02.SetParent(self)
        self.Wunschbonus02.SetPosition(15, 75)
        self.Wunschbonus02.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Wunschbonus02.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Wunschbonus02.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Wunschbonus02.SetText("2.Bonus")
        self.Wunschbonus02.SetEvent(ui.__mem_func__(self.__Wish_2_Option))
        self.Wunschbonus02.Show()

        self.Wunschbonus03 = ui.Button()
        self.Wunschbonus03.SetParent(self)
        self.Wunschbonus03.SetPosition(15, 110)
        self.Wunschbonus03.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Wunschbonus03.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Wunschbonus03.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Wunschbonus03.SetText("3.Bonus")
        self.Wunschbonus03.SetEvent(ui.__mem_func__(self.__Wish_3_Option))
        self.Wunschbonus03.Show()

        self.Wunschbonus04 = ui.Button()
        self.Wunschbonus04.SetParent(self)
        self.Wunschbonus04.SetPosition(15, 140)
        self.Wunschbonus04.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Wunschbonus04.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Wunschbonus04.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Wunschbonus04.SetText("4.Bonus")
        self.Wunschbonus04.SetEvent(ui.__mem_func__(self.__Wish_4_Option))
        self.Wunschbonus04.Show()

        self.Wunschbonus05 = ui.Button()
        self.Wunschbonus05.SetParent(self)
        self.Wunschbonus05.SetPosition(15, 170)
        self.Wunschbonus05.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Wunschbonus05.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Wunschbonus05.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Wunschbonus05.SetText("5.Bonus")
        self.Wunschbonus05.SetEvent(ui.__mem_func__(self.__Wish_5_Option))
        self.Wunschbonus05.Show()

        self.ResetbonusallButton = ui.Button()
        self.ResetbonusallButton.SetParent(self)
        self.ResetbonusallButton.SetPosition(35, 395)
        self.ResetbonusallButton.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.ResetbonusallButton.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.ResetbonusallButton.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.ResetbonusallButton.SetText("Rimuovi")
        self.ResetbonusallButton.SetEvent(ui.__mem_func__(self.__Resetbonusall))
        self.ResetbonusallButton.Show()

        self.Switchtingabbruchbutton = ui.Button()
        self.Switchtingabbruchbutton.SetParent(self)
        self.Switchtingabbruchbutton.SetPosition(35, 370)
        self.Switchtingabbruchbutton.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.Switchtingabbruchbutton.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.Switchtingabbruchbutton.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.Switchtingabbruchbutton.SetEvent(ui.__mem_func__(self.__BreakSwitching))
        self.Switchtingabbruchbutton.SetText("Esci")
        self.Switchtingabbruchbutton.Show()

        self.StartButton = ui.Button()
        self.StartButton.SetParent(self)
        self.StartButton.SetPosition(35, 345)
        self.StartButton.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.StartButton.SetOverVisual("d:/ymir work/ui/public/Large_Button_02.sub")
        self.StartButton.SetDownVisual("d:/ymir work/ui/public/Large_Button_03.sub")
        self.StartButton.SetEvent(ui.__mem_func__(self.StartSwitchBot))
        self.StartButton.SetText("Avvia")
        self.StartButton.Show()
      
        ############################################
        self.gira1Button = ui.Button()
        self.gira1Button.SetParent(self)
        self.gira1Button.SetPosition(122, 345)
        self.gira1Button.SetUpVisual("d:/ymir work/ui/public/small_Button_01.sub")
        self.gira1Button.SetOverVisual("d:/ymir work/ui/public/small_Button_02.sub")
        self.gira1Button.SetDownVisual("d:/ymir work/ui/public/small_Button_03.sub")
        self.gira1Button.SetEvent(ui.__mem_func__(self.Gira10m))
        self.gira1Button.SetText("10m")
        self.gira1Button.Hide()
      
        self.gira6Button = ui.Button()
        self.gira6Button.SetParent(self)
        self.gira6Button.SetPosition(122, 370)
        self.gira6Button.SetUpVisual("d:/ymir work/ui/public/small_Button_01.sub")
        self.gira6Button.SetOverVisual("d:/ymir work/ui/public/small_Button_02.sub")
        self.gira6Button.SetDownVisual("d:/ymir work/ui/public/small_Button_03.sub")
        self.gira6Button.SetEvent(ui.__mem_func__(self.Gira12ore))
        self.gira6Button.SetText("12ore")
        self.gira6Button.Hide()
      
        #####################################################################

        self.SlotButton = ui.Button()
        self.SlotButton.SetParent(self)
        self.SlotButton.SetPosition(15, 200)
        self.SlotButton.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.SlotButton.SetOverVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.SlotButton.SetDownVisual("d:/ymir work/ui/public/Large_Button_01.sub")
        self.SlotButton.SetText("Slot")
        self.SlotButton.SetEvent(ui.__mem_func__(self.StartSwitchBot))
        self.SlotButton.Show()      
      
    def LoadTextLines(self):
        self.Headline = ui.TextLine()
        self.Headline.SetParent(self)
        self.Headline.SetDefaultFontName()
        self.Headline.SetPosition(22, 15)
        self.Headline.SetFeather()
        self.Headline.SetText("Switchbot by luca3193")
        self.Headline.SetFontColor(2.9, 2.9, 4.1)
        self.Headline.SetOutline()
        self.Headline.Show()

        self.LastChangeText = ui.TextLine()
        self.LastChangeText.SetParent(self)
        self.LastChangeText.SetDefaultFontName()
        self.LastChangeText.SetPosition(15, 425)
        self.LastChangeText.SetFeather()
        self.LastChangeText.SetText("Info:")
        self.LastChangeText.SetFontColor(2.3, 2.9, 4.1)
        self.LastChangeText.SetOutline()
        self.LastChangeText.Show()

        self.BonusHeadline22 = ui.TextLine()
        self.BonusHeadline22.SetParent(self)
        self.BonusHeadline22.SetDefaultFontName()
        self.BonusHeadline22.SetPosition(43, 327)
        self.BonusHeadline22.SetFeather()
        self.BonusHeadline22.SetText("Delay:")
        self.BonusHeadline22.SetFontColor(0.1, 0.9, 1)
        self.BonusHeadline22.SetOutline()
        self.BonusHeadline22.Hide()      

        self.LastChange = ui.TextLine()
        self.LastChange.SetParent(self)
        self.LastChange.SetDefaultFontName()
        self.LastChange.SetPosition(15, 445)
        self.LastChange.SetFeather()
        self.LastChange.SetText("Posiziona item 1  slot")
        self.LastChange.SetFontColor(0.1, 0.9, 1)
        self.LastChange.SetOutline()
        self.LastChange.Show()      

        self.BonusHeadline = ui.TextLine()
        self.BonusHeadline.SetParent(self)
        self.BonusHeadline.SetDefaultFontName()
        self.BonusHeadline.SetPosition(15, 225)
        self.BonusHeadline.SetFeather()
        self.BonusHeadline.SetText("Lista Bonus:")
        self.BonusHeadline.SetFontColor(2.3, 2.9, 4.1)
        self.BonusHeadline.SetOutline()
        self.BonusHeadline.Show()  

        self.BonusHeadline2 = ui.TextLine()
        self.BonusHeadline2.SetParent(self)
        self.BonusHeadline2.SetDefaultFontName()
        self.BonusHeadline2.SetPosition(20, 460)
        self.BonusHeadline2.SetFeather()
        self.BonusHeadline2.SetText("Copyright 2016 luca3193")
        self.BonusHeadline2.SetFontColor(0.1, 0.9, 1)
        self.BonusHeadline2.SetOutline()
        self.BonusHeadline2.Show()

        self.Bonus1Attr = ui.TextLine()
        self.Bonus1Attr.SetParent(self)
        self.Bonus1Attr.SetDefaultFontName()
        self.Bonus1Attr.SetPosition(18, 250)
        self.Bonus1Attr.SetFeather()
        self.Bonus1Attr.SetText("-")
        self.Bonus1Attr.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus1Attr.SetOutline()
        self.Bonus1Attr.Show()  

        self.Bonus1Var = ui.TextLine()
        self.Bonus1Var.SetParent(self)
        self.Bonus1Var.SetDefaultFontName()
        self.Bonus1Var.SetPosition(140, 250)
        self.Bonus1Var.SetFeather()
        self.Bonus1Var.SetText("0")
        self.Bonus1Var.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus1Var.SetOutline()
        self.Bonus1Var.Show()  

        self.Bonus2Attr = ui.TextLine()
        self.Bonus2Attr.SetParent(self)
        self.Bonus2Attr.SetDefaultFontName()
        self.Bonus2Attr.SetPosition(18, 265)
        self.Bonus2Attr.SetFeather()
        self.Bonus2Attr.SetText("-")
        self.Bonus2Attr.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus2Attr.SetOutline()
        self.Bonus2Attr.Show()  

        self.Bonus2Var = ui.TextLine()
        self.Bonus2Var.SetParent(self)
        self.Bonus2Var.SetDefaultFontName()
        self.Bonus2Var.SetPosition(140, 265)
        self.Bonus2Var.SetFeather()
        self.Bonus2Var.SetText("0")
        self.Bonus2Var.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus2Var.SetOutline()
        self.Bonus2Var.Show()  

        self.Bonus3Attr = ui.TextLine()
        self.Bonus3Attr.SetParent(self)
        self.Bonus3Attr.SetDefaultFontName()
        self.Bonus3Attr.SetPosition(18, 280)
        self.Bonus3Attr.SetFeather()
        self.Bonus3Attr.SetText("-")
        self.Bonus3Attr.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus3Attr.SetOutline()
        self.Bonus3Attr.Show()  

        self.Bonus3Var = ui.TextLine()
        self.Bonus3Var.SetParent(self)
        self.Bonus3Var.SetDefaultFontName()
        self.Bonus3Var.SetPosition(140, 280)
        self.Bonus3Var.SetFeather()
        self.Bonus3Var.SetText("0")
        self.Bonus3Var.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus3Var.SetOutline()
        self.Bonus3Var.Show()  

        self.Bonus4Attr = ui.TextLine()
        self.Bonus4Attr.SetParent(self)
        self.Bonus4Attr.SetDefaultFontName()
        self.Bonus4Attr.SetPosition(18, 295)
        self.Bonus4Attr.SetFeather()
        self.Bonus4Attr.SetText("-")
        self.Bonus4Attr.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus4Attr.SetOutline()
        self.Bonus4Attr.Show()  

        self.Bonus4Var = ui.TextLine()
        self.Bonus4Var.SetParent(self)
        self.Bonus4Var.SetDefaultFontName()
        self.Bonus4Var.SetPosition(140, 295)
        self.Bonus4Var.SetFeather()
        self.Bonus4Var.SetText("0")
        self.Bonus4Var.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus4Var.SetOutline()
        self.Bonus4Var.Show()  

        self.Bonus5Attr = ui.TextLine()
        self.Bonus5Attr.SetParent(self)
        self.Bonus5Attr.SetDefaultFontName()
        self.Bonus5Attr.SetPosition(18, 310)
        self.Bonus5Attr.SetFeather()
        self.Bonus5Attr.SetText("-")
        self.Bonus5Attr.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus5Attr.SetOutline()
        self.Bonus5Attr.Show()  

        self.Bonus5Var = ui.TextLine()
        self.Bonus5Var.SetParent(self)
        self.Bonus5Var.SetDefaultFontName()
        self.Bonus5Var.SetPosition(140, 310)
        self.Bonus5Var.SetFeather()
        self.Bonus5Var.SetText("0")
        self.Bonus5Var.SetFontColor(1.0, 1.0, 1.0)
        self.Bonus5Var.SetOutline()
        self.Bonus5Var.Show()  
      
    def __BreakSwitching(self):
        global SwitchButton
        if SwitchButton == 1:
            self.LastChange.SetText("Inforge")
            self.Switchtingabbruchbutton.SetText("Stop")
            SwitchButton = 0      
        else:
            self.Hide()
      
    ######################################################
    def Gira10m(self):
        self.val.SetText("71804")
        self.box.SetText("10m")
        self.Hide()
      
    def Gira12ore(self):
        self.val.SetText("71084")
        self.box.SetText("12ore")
        self.Hide()
      
    ########################################################  
    def StartSwitchBot(self):
      
        global SwitchButton
        SwitchButton = 1
        self.LastChange.SetText("Rilevo bonus...")
        self.Switchtingabbruchbutton.SetText("Ferma Bot")
        self.__Switchtingdialog()

      
    def __Switchtingdialog(self):
        global BoniSwitchvalue
        global Bonus0
        global Bonus1
        global Bonus2
        global Bonus3
        global Bonus4
        global SwitchButton
        Slot = self.Slotbar.GetText()
        val0, bon0 = player.GetItemAttribute((int(Slot)), 0) #(itemposition, atrribute)
        val1, bon1 = player.GetItemAttribute((int(Slot)), 1) #(itemposition, atrribute)
        val2, bon2 = player.GetItemAttribute((int(Slot)), 2) #(itemposition, atrribute)
        val3, bon3 = player.GetItemAttribute((int(Slot)), 3) #(itemposition, atrribute)
        val4, bon4 = player.GetItemAttribute((int(Slot)), 4) #(itemposition, atrribute)
      
        ########################################
        #Switchvalue = Boniswitchvalue
      
        Switchvalue = self.val.GetText()
        ########################################
      
        Search0 = self.Bvalue1.GetText()
        Search1 = self.Bvalue2.GetText()
        Search2 = self.Bvalue3.GetText()
        Search3 = self.Bvalue4.GetText()
        Search4 = self.Bvalue5.GetText()
        DELAY_SEC = self.speed.GetText()

#1 Bonus switchen:
        if SwitchButton == 1:
            if (int(Bonus1) == 0) and (val0 == int(Bonus0) and bon0 >= int(Search0) or (val1 == int(Bonus0) and bon1 >= int(Search0)) or (val2 == int(Bonus0) and bon2 >= int(Search0)) or (val3 == int(Bonus0) and bon3 >= int(Search0)) or (val4 == int(Bonus0) and bon4 >= int(Search0))):
                self.BoardMessage.SetTip("Bonus Trovati!")
                self.BoardMessage.SetTip("(c)copyright by luca3193")
                self.BoardMessage.SetTop()
                self.LastChange.SetText("BONUS TROVATI GUARDA!")
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
#2 Bonis switchen:
            elif (int(Bonus2) == 0) and (val0 == int(Bonus0) and bon0 >= int(Search0) or (val1 == int(Bonus0) and bon1 >= int(Search0)) or (val2 == int(Bonus0) and bon2 >= int(Search0)) or (val3 == int(Bonus0) and bon3 >= int(Search0)) or (val4 == int(Bonus0) and bon4 >= int(Search0))) and ((val0 == int(Bonus1) and bon0 >= int(Search1)) or (val1 == int(Bonus1) and bon1 >= int(Search1)) or (val2 == int(Bonus1) and bon2 >= int(Search1)) or (val3 == int(Bonus1) and bon3 >= int(Search1)) or (val4 == int(Bonus1) and bon4 >= int(Search1))):
                self.BoardMessage.SetTip("Bonus Trovati!")
                self.BoardMessage.SetTip("(c)copyright by luca3193")
                self.BoardMessage.SetTop()
                self.LastChange.SetText("BONUS TROVATI GUARDA!")
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
#3 Bonis switchen:
            elif (int(Bonus3) == 0) and (val0 == int(Bonus0) and bon0 >= int(Search0) or (val1 == int(Bonus0) and bon1 >= int(Search0)) or (val2 == int(Bonus0) and bon2 >= int(Search0)) or (val3 == int(Bonus0) and bon3 >= int(Search0)) or (val4 == int(Bonus0) and bon4 >= int(Search0))) and ((val0 == int(Bonus1) and bon0 >= int(Search1)) or (val1 == int(Bonus1) and bon1 >= int(Search1)) or (val2 == int(Bonus1) and bon2 >= int(Search1)) or (val3 == int(Bonus1) and bon3 >= int(Search1)) or (val4 == int(Bonus1) and bon4 >= int(Search1))) and ((val0 == int(Bonus2) and bon0 >= int(Search2)) or (val1 == int(Bonus2) and bon1 >= int(Search2)) or (val2 == int(Bonus2) and bon2 >= int(Search2)) or (val3 == int(Bonus2) and bon3 >= int(Search2)) or (val4 == int(Bonus2) and bon4 >= int(Search2))):
                self.BoardMessage.SetTip("Bonus Trovati!")
                self.BoardMessage.SetTip("(c)copyright by luca3193")
                self.BoardMessage.SetTop()
                self.LastChange.SetText("BONUS TROVATI GUARDA!")
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
#4 Bonis switchen:
            elif (int(Bonus4) == 0) and (val0 == int(Bonus0) and bon0 >= int(Search0) or (val1 == int(Bonus0) and bon1 >= int(Search0)) or (val2 == int(Bonus0) and bon2 >= int(Search0)) or (val3 == int(Bonus0) and bon3 >= int(Search0)) or (val4 == int(Bonus0) and bon4 >= int(Search0))) and ((val0 == int(Bonus1) and bon0 >= int(Search1)) or (val1 == int(Bonus1) and bon1 >= int(Search1)) or (val2 == int(Bonus1) and bon2 >= int(Search1)) or (val3 == int(Bonus1) and bon3 >= int(Search1)) or (val4 == int(Bonus1) and bon4 >= int(Search1))) and ((val0 == int(Bonus2) and bon0 >= int(Search2)) or (val1 == int(Bonus2) and bon1 >= int(Search2)) or (val2 == int(Bonus2) and bon2 >= int(Search2)) or (val3 == int(Bonus2) and bon3 >= int(Search2)) or (val4 == int(Bonus2) and bon4 >= int(Search2))) and ((val0 == int(Bonus3) and bon0 >= int(Search3)) or (val1 == int(Bonus3) and bon1 >= int(Search3)) or (val2 == int(Bonus3) and bon2 >= int(Search3)) or (val3 == int(Bonus3) and bon3 >= int(Search3)) or (val4 == int(Bonus3) and bon4 >= int(Search3))):
                self.BoardMessage.SetTip("Bonus Trovati!")
                self.BoardMessage.SetTip("(c)copyright by luca3193")
                self.BoardMessage.SetTop()
                self.LastChange.SetText("BONUS TROVATI GUARDA!")
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
#5 Bonis switchen:
            elif (int(Bonus4) != 0) and (val0 == int(Bonus0) and bon0 >= int(Search0) or (val1 == int(Bonus0) and bon1 >= int(Search0)) or (val2 == int(Bonus0) and bon2 >= int(Search0)) or (val3 == int(Bonus0) and bon3 >= int(Search0)) or (val4 == int(Bonus0) and bon4 >= int(Search0))) and ((val0 == int(Bonus1) and bon0 >= int(Search1)) or (val1 == int(Bonus1) and bon1 >= int(Search1)) or (val2 == int(Bonus1) and bon2 >= int(Search1)) or (val3 == int(Bonus1) and bon3 >= int(Search1)) or (val4 == int(Bonus1) and bon4 >= int(Search1))) and ((val0 == int(Bonus2) and bon0 >= int(Search2)) or (val1 == int(Bonus2) and bon1 >= int(Search2)) or (val2 == int(Bonus2) and bon2 >= int(Search2)) or (val3 == int(Bonus2) and bon3 >= int(Search2)) or (val4 == int(Bonus2) and bon4 >= int(Search2))) and ((val0 == int(Bonus3) and bon0 >= int(Search3)) or (val1 == int(Bonus3) and bon1 >= int(Search3)) or (val2 == int(Bonus3) and bon2 >= int(Search3)) or (val3 == int(Bonus3) and bon3 >= int(Search3)) or (val4 == int(Bonus3) and bon4 >= int(Search3))) and ((val0 == int(Bonus4) and bon0 >= int(Search4)) or (val1 == int(Bonus4) and bon1 >= int(Search4)) or (val2 == int(Bonus4) and bon2 >= int(Search4)) or (val3 == int(Bonus4) and bon3 >= int(Search4)) or (val4 == int(Bonus4) and bon4 >= int(Search4))):
                self.BoardMessage.SetTip("Bonus Trovati!")
                self.BoardMessage.SetTip("(c)copyright by luca3193")
                self.BoardMessage.SetTop()
                self.LastChange.SetText("BONUS TROVATI GUARDA!")
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
            elif Bonus0 == 0:
                self.Switchtingabbruchbutton.SetText("Esci")
                SwitchButton = 0      
                self.LastChange.SetText("Imposta i Bonus")
                chat.AppendChat(chat.CHAT_TYPE_INFO, "Inserisci i bonus")      
                chat.AppendChat(chat.CHAT_TYPE_INFO, "O correggi!")      
            else:
                self.WaitingDelay = WaitingDialog()
                self.WaitingDelay.Open(float(DELAY_SEC))
                self.WaitingDelay.SAFE_SetTimeOverEvent(self.__Switchtingdialog)
                event.QuestButtonClick(94)
                for eachSlot in xrange(player.INVENTORY_PAGE_SIZE*2):
                    itemVNum = player.GetItemIndex(eachSlot)

                    if itemVNum == int(Switchvalue):
                        net.SendItemUseToItemPacket(eachSlot, (int(Slot)))
                        break
            if player.GetItemCountByVnum(int(Switchvalue)) <= 1:
                for eachSlot in xrange(shop.SHOP_SLOT_COUNT):
                    getShopItemID = shop.GetItemID(eachSlot)
                    if getShopItemID == int(Switchvalue) and not itemVNum == int(Switchvalue):
                        net.SendShopBuyPacket(eachSlot)
          
    def __Resetbonusall(self):
        global Bonus0
        global Bonus1
        global Bonus2
        global Bonus3
        global Bonus4
        Bonus0 = 0
        Bonus1 = 0
        Bonus2 = 0
        Bonus3 = 0
        Bonus4 = 0
        self.Bvalue1.SetText("0")
        self.Bvalue2.SetText("0")
        self.Bvalue3.SetText("0")
        self.Bvalue4.SetText("0")
        self.Bvalue5.SetText("0")
        self.Bonus1Attr.SetText(".")
        self.Bonus2Attr.SetText("-")
        self.Bonus3Attr.SetText("-")
        self.Bonus4Attr.SetText("-")
        self.Bonus5Attr.SetText("-")
        self.LastChange.SetText("Bonus Rimossi")
  
    def __Wish_1_Option(self):
        global Bonus0
        global PRESSWISH0
        PRESSWISH0 = 1
        self.BonusListBox = FileListDialog()
      
    def __Wish_2_Option(self):
        global Bonus1
        global PRESSWISH1
        PRESSWISH1 = 1
        self.BonusListBox = FileListDialog()
      
    def __Wish_3_Option(self):
        global Bonus2
        global PRESSWISH2
        PRESSWISH2 = 1
        self.BonusListBox = FileListDialog()

    def __Wish_4_Option(self):
        global Bonus3
        global PRESSWISH3
        PRESSWISH3 = 1
        self.BonusListBox = FileListDialog()
      
    def __Wish_5_Option(self):
        global Bonus4
        global PRESSWISH4
        PRESSWISH4 = 1
        self.BonusListBox = FileListDialog()
  
    def OnUpdate(self):
        global Bonus0
        global Bonus1
        global Bonus2
        global Bonus3
        global Bonus4
        if self.Bonus1Attr.GetText() != str(BonusListe[int(Bonus0)]) and int(Bonus0) != 0:
            self.Bonus1Attr.SetText(str(BonusListe[int(Bonus0)]))
        elif self.Bonus1Attr.GetText() != "" and int(Bonus0) == 0:
            self.Bonus1Attr.SetText("-")      
        if self.Bonus2Attr.GetText() != str(BonusListe[int(Bonus1)]) and int(Bonus1) != 0:
            self.Bonus2Attr.SetText(str(BonusListe[int(Bonus1)]))
        elif self.Bonus2Attr.GetText() != "" and int(Bonus1) == 0:
            self.Bonus2Attr.SetText("-")      
        if self.Bonus3Attr.GetText() != str(BonusListe[int(Bonus2)]) and int(Bonus2) != 0:
            self.Bonus3Attr.SetText(str(BonusListe[int(Bonus2)]))
        elif self.Bonus3Attr.GetText() != "" and int(Bonus2) == 0:
            self.Bonus3Attr.SetText("-")      
        if self.Bonus4Attr.GetText() != str(BonusListe[int(Bonus3)]) and int(Bonus3) != 0:
            self.Bonus4Attr.SetText(str(BonusListe[int(Bonus3)]))
        elif self.Bonus4Attr.GetText() != "" and int(Bonus3) == 0:
            self.Bonus4Attr.SetText("-")      
        if self.Bonus5Attr.GetText() != str(BonusListe[int(Bonus4)]) and int(Bonus4) != 0:
            self.Bonus5Attr.SetText(str(BonusListe[int(Bonus4)]))
        elif self.Bonus5Attr.GetText() != "" and int(Bonus4) == 0:
            self.Bonus5Attr.SetText("-")
        if self.Bonus1Var.GetText() != self.Bvalue1.GetText():
            self.Bonus1Var.SetText(str(self.Bvalue1.GetText()))
        if self.Bonus2Var.GetText() != self.Bvalue2.GetText():
            self.Bonus2Var.SetText(str(self.Bvalue2.GetText()))
        if self.Bonus3Var.GetText() != self.Bvalue3.GetText():
            self.Bonus3Var.SetText(str(self.Bvalue3.GetText()))
        if self.Bonus4Var.GetText() != self.Bvalue4.GetText():
            self.Bonus4Var.SetText(str(self.Bvalue4.GetText()))
        if self.Bonus5Var.GetText() != self.Bvalue5.GetText():
            self.Bonus5Var.SetText(str(self.Bvalue5.GetText()))
              
    def Show(self):
        ui.ThinBoard.Show(self)
      
    def Close(self):
        self.Hide()
        return TRUE

    def OnPressEscapeKey(self):
        self.Hide()
        return TRUE

BonusListe = (
    "",
    "Max HP",
    "Max MP",
    "Vitalita",
    "Intelligenza",
    "Forza",
    "Destrezza",
    "Velocita d'Attacco",
    "Velocita di Movimento",
    "Velocita della Magia",
    "Rigenerazione HP",
    "Rigenerazione MP",
    "Poss. di Avvelenamento",
    "Poss. di Svenimento",
    "Poss. di Rallentamento",
    "Poss. sui Colpi Critici",
    "Poss. sui Colpi che Trafiggono",
    "Forte contro Mezziuomini",
    "Forte contro Animali",
    "Forte contro Orchi",
    "Forte contro Esoterici",
    "Forte contro Zombie",
    "Forte contro Diavoli",
    "Danni Assorbiti da HP",
    "Danni Assorbiti da MP",
    "Poss. di prendere MP dall'Avversario",
    "Poss. di ottenere MP quando colpiti",
    "Poss. di Bloccare l'Attacco Corporale",
    "Poss. di Schivare Frecce",
    "Difesa Spada",
    "Difesa Spadone",
    "Difesa Pugnale",
    "Difesa Campana",
    "Difesa Ventaglio",
    "Resistenza Freccia",
    "Resistenza Fuoco",
    "Resistenza Lampo",
    "Resistenza Magia",
    "Resistenza Vento",
    "Poss. di Riflettere l'Attacco Corporale",
        "Poss. di Riflettere la Maledizione",
    "Resistenza Avvelenamento",
    "Poss. di rigenerare MP",
    "Poss. sull'EXP Bonus",
    "Poss. di far cadere il Doppio degli Yang",
    "Poss. di far cadere il Doppio del Drop",
    "Aumento efficacia pozioni",
    "Poss. di rigenerare HP",
    "Difesa contro Svenimento",
    "Difesa contro Rallentamento",
    "Difesa contro Caduta",
    "-",
    "Raggio dell'arco",
    "Valore di Attacco",
    "Difesa",
    "Valore d'Attacco Magico",
    "Difesa Magica",
    "-",
    "Max. Resistenza",
    "Forte contro Guerrieri",
    "Forte contro Ninja",
    "Forte contro Sura",
    "Forte contro Shamani",
    "Forte contro Mostri",
    "ItemShop - Valore d'attacco(%)",
    "ItemShop - Difesa(%)",
    "ItemShop - Exp-Bonus(%)",
    "ItemShop - ItemDrop-Bonus(%)",
    "ItemShop - Yang-Bonus(%)",
    "Max. HP (???)",
    "Max. MP (???)",
    "Danni Abilita",
    "Danni Medi",
    "Resistenza Danni Abilita",
    "Resistenza Danni Medi",
    "-",
    "iCafe EXP-Bonus",
    "iCafe Item-Bonus",
    "Difesa contro attacchi di Guerrieri",
    "Difesa contro attacchi di Ninja",
    "Difesa contro attacchi di Sura",
    "Difesa contro attacchi di Shamani",
)

BonusIDListe = {
    "" : 0,
    "Max HP" : 1,
    "Max MP" : 2,
    "Vitalita" : 3,
    "Intelligenza" : 4,
    "Forza" : 5,
    "Destrezza" : 6,
    "Velocita d'Attacco" : 7,
    "Velocita di Movimento" : 8,
    "Velocita della Magia" : 9,
    "Rigenerazione HP" : 10,
    "Rigenerazione MP" : 11,
    "Poss. di Avvelenamento" : 12,
    "Poss. di Svenimento" : 13,
    "Poss. di Rallentamento" : 14,
    "Poss. sui Colpi Critici" : 15,
    "Poss. sui Colpi che Trafiggono" : 16,
    "Forte contro Mezziuomini" : 17,
    "Forte contro Animali" : 18,
    "Forte contro Orchi" : 19,
    "Forte contro Esoterici" : 20,
    "Forte contro Zombie" : 21,
    "Forte contro Diavoli" : 22,
    "Danni Assorbiti da HP" : 23,
    "Danni Assorbiti da MP" : 24,
    "Poss. di prendere MP dall'Avversario" : 25,
    "Poss. di ottenere MP quando colpiti" : 26,
    "Poss. di Bloccare l'Attacco Corporale" : 27,
    "Poss. di Schivare Frecce" : 28,
    "Difesa Spada" : 29,
    "Difesa Spadone" : 30,
    "Difesa Pugnale" : 31,
    "Difesa Campana" : 32,
    "Difesa Ventaglio" : 33,
    "Resistenza Freccia" : 34,
    "Resistenza Fuoco" : 35,
    "Resistenza Lampo" : 36,
    "Resistenza Magia" : 37,
    "Resistenza Vento" : 38,
    "Poss. di Riflettere l'Attacco Corporale" : 39,
    "Poss. di Riflettere la Maledizione" : 40,
    "Resistenza Avvelenamento" : 41,
    "Poss. di rigenerare MP" : 42,
    "Poss. sull'EXP Bonus" : 43,
    "Poss. di far cadere il Doppio degli Yang" : 44,
    "Poss. di far cadere il Doppio del Drop" : 45,
    "Aumento efficacia pozioni" : 46,
    "Poss. di rigenerare HP" : 47,
    "Difesa contro Svenimento" : 48,
    "Difesa contro Rallentamento" : 49,
    "Difesa contro Caduta" : 50,
    "-" : 51,
    "Raggio dell'arco" : 52,
    "Valore di Attacco" : 53,
    "Difesa" : 54,
    "Valore d'Attacco Magico" : 55,
    "Difesa Magica" : 56,
    "-" : 57,
    "Max. Resistenza" : 58,
    "Forte contro Guerrieri" : 59,
    "Forte contro Ninja" : 60,
    "Forte contro Sura" : 61,
    "Forte contro Shamani" : 62,
    "Forte contro Mostri" : 63,
    "ItemShop - Valore d'attacco(%)" : 64,
    "ItemShop - Difesa(%)" : 65,
    "ItemShop - Exp-Bonus(%)" : 66,
    "ItemShop - ItemDrop-Bonus(%)" : 67,
    "ItemShop - Yang-Bonus(%)" : 68,
    "Max. HP (???)" : 69,
    "Max. MP (???)" : 70,
    "Danni Abilita" : 71,
    "Danni Medi" : 72,
    "Resistenza Danni Abilita" : 73,
    "Resistenza Danni Medi" : 74,
    "-" : 75,
    "iCafe EXP-Bonus" : 76,
    "iCafe Item-Bonus" : 77,
    "Difesa contro attacchi di Guerrieri" : 78,
    "Difesa contro attacchi di Ninja" : 79,
    "Difesa contro attacchi di Sura" : 80,
    "Difesa contro attacchi di Shamani" : 81,
}
  
class FileListDialog(ui.ThinBoard):
    def __init__(self):
        ui.ThinBoard.__init__(self)

        self.isLoaded=0
        self.selectEvent=None
        self.fileListBox=None

        self.SetCenterPosition()
        self.SetSize(220, 305)
        self.Show()
        self.AddFlag("movable")
        self.AddFlag("float")
      
    def __del__(self):
        ui.ThinBoard.__del__(self)

    def Show(self):
        if self.isLoaded==0:
            self.isLoaded=1

            self.__Load()

        ui.ThinBoard.Show(self)

    def Open(self):
        self.Show()

        self.SetCenterPosition()
        self.SetTop()
        self.UpdateFileList()

    def Close(self):
        self.Hide()

    def OnPressEscapeKey(self):
        self.Close()
        return TRUE

    def __CreateFileListBox(self):
        fileListBox = ui.ListBoxEx()
        fileListBox.SetParent(self)
        fileListBox.SetPosition(15, 50)
        fileListBox.Show()
        return fileListBox

    def __Load(self):
        self.__Load_BindObject()

        self.UpdateFileList()

    def __Load_BindObject(self):
        self.fileListBox = self.__CreateFileListBox()
        self.LoadFuckingScrollBar()
        self.LoadTextLines()
        self.fileListBox.SetScrollBar(self.ScrollBar)

        self.UpdateButton = ui.Button()
        self.UpdateButton.SetParent(self)
        self.UpdateButton.SetUpVisual("d:/ymir work/ui/public/Large_button_01.sub")
        self.UpdateButton.SetOverVisual("d:/ymir work/ui/public/Large_button_02.sub")
        self.UpdateButton.SetDownVisual("d:/ymir work/ui/public/Large_button_03.sub")
        self.UpdateButton.SetText("Aktualisieren")
        self.UpdateButton.SetPosition(15, 265)
        self.UpdateButton.SetEvent(ui.__mem_func__(self.UpdateFileList))
        self.UpdateButton.Show()
        self.UpdateButton.Hide()
      
        self.SelectBonus = ui.Button()
        self.SelectBonus.SetParent(self)
        self.SelectBonus.SetPosition(19, 265)
        self.SelectBonus.SetUpVisual("d:/ymir work/ui/public/Middle_Button_01.sub")
        self.SelectBonus.SetOverVisual("d:/ymir work/ui/public/Middle_Button_02.sub")
        self.SelectBonus.SetDownVisual("d:/ymir work/ui/public/Middle_Button_03.sub")
        self.SelectBonus.SetText("OK")
        self.SelectBonus.SetEvent(ui.__mem_func__(self.SetBonis))
        self.SelectBonus.Show()

        self.CancelBonus = ui.Button()
        self.CancelBonus.SetParent(self)
        self.CancelBonus.SetPosition(89, 265)
        self.CancelBonus.SetUpVisual("d:/ymir work/ui/public/Middle_Button_01.sub")
        self.CancelBonus.SetOverVisual("d:/ymir work/ui/public/Middle_Button_02.sub")
        self.CancelBonus.SetDownVisual("d:/ymir work/ui/public/Middle_Button_03.sub")
        self.CancelBonus.SetText("Exit")
        self.CancelBonus.SetEvent(ui.__mem_func__(self.Close))
        self.CancelBonus.Show()

      
    def LoadTextLines(self):
        self.copyright = ui.TextLine()
        self.copyright.SetParent(self)
        self.copyright.SetDefaultFontName()
        self.copyright.SetPosition(50, 29)
        self.copyright.SetFeather()
        self.copyright.SetText("Select Bonus:")
        self.copyright.SetFontColor(2.9, 2.9, 4.1)
        self.copyright.SetOutline()
        self.copyright.Show()


    def LoadFuckingScrollBar(self):
        self.ScrollBar = ui.ScrollBar()
        self.ScrollBar.SetParent(self)
        self.ScrollBar.SetPosition(200, 40)
        self.ScrollBar.SetScrollBarSize(220)
        self.ScrollBar.Show()

    def CancelGuildName(self):
        self.guildNameBoard.Close()
        self.guildNameBoard = None
        return TRUE

    def UpdateFileList(self):
        self.__RefreshFileList()
        for BonusType in BonusListe:
            if BonusType == "":
                self.fileListBox.AppendItem(Item("Remove"))
            elif BonusType != "":
                self.fileListBox.AppendItem(Item(BonusType))
            #chat.AppendChat(chat.CHAT_TYPE_INFO, str(BonusIDListe[BonusType]))      
      
    def __RefreshFileList(self):
        self.fileListBox.RemoveAllItems()
      
    def SetBonis(self):
        global Bonus0
        global Bonus1
        global Bonus2
        global Bonus3
        global Bonus4
        global PRESSWISH0
        global PRESSWISH1
        global PRESSWISH2
        global PRESSWISH3
        global PRESSWISH4
        SelectedIndex = self.fileListBox.GetSelectedItem()
        SelectedIndex = SelectedIndex.GetText()
        if str(SelectedIndex) != "Remove" and str(SelectedIndex) != "":
            if PRESSWISH0 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "1.Bonus " + str(SelectedIndex))
                Bonus0 = BonusIDListe[str(SelectedIndex)]
                PRESSWISH0 = 0
            elif PRESSWISH1 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "2.Bonus " + str(SelectedIndex))
                Bonus1 = int(BonusIDListe[SelectedIndex])
                PRESSWISH1 = 0
            elif PRESSWISH2 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "3.Bonus " + str(SelectedIndex))
                Bonus2 = int(BonusIDListe[SelectedIndex])
                PRESSWISH2 = 0
            elif PRESSWISH3 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "4.Bonus " + str(SelectedIndex))
                Bonus3 = int(BonusIDListe[SelectedIndex])
                PRESSWISH3 = 0
            elif PRESSWISH4 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "5.Bonus " + str(SelectedIndex))
                Bonus4 = int(BonusIDListe[SelectedIndex])
                PRESSWISH4 = 0
              
        elif str(SelectedIndex) == "Remove" and str(SelectedIndex) != "":
            if PRESSWISH0 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "1.Bonus wurde a")
                Bonus0 = 0
                PRESSWISH0 = 0
            elif PRESSWISH1 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "2.Bonus wurde a")
                Bonus1 = 0
                PRESSWISH1 = 0
            elif PRESSWISH2 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "3.Bonus wurde a")
                Bonus2 = 0
                PRESSWISH2 = 0
            elif PRESSWISH3 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "4.Bonus wurde a")
                Bonus3 = 0
                PRESSWISH3 = 0
            elif PRESSWISH4 == 1:
                chat.AppendChat(chat.CHAT_TYPE_INFO, "5.Bonus wurde a")
                Bonus4 = 0
                PRESSWISH4 = 0  
              
        else:
            chat.AppendChat(chat.CHAT_TYPE_INFO, "Kein Bonus ausgewahlt")      
        self.Close()

class WaitingDialog(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 Open(self, waitTime):
        import time
        curTime = time.clock()
        self.endTime = curTime + waitTime

        self.Show()      

    def Close(self):
        self.Hide()

    def Destroy(self):
        self.Hide()

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

    def SAFE_SetExitEvent(self, event):
        self.eventExit = ui.__mem_func__(event)
      
    def OnUpdate(self):
        import time
        lastTime = max(0, self.endTime - time.clock())
        if 0 == lastTime:
            self.Close()
            self.eventTimeOver()
        else:
            return
      
    def OnPressExitKey(self):
        self.Close()
        return TRUE
      
FILE_NAME_LEN = 40

class Item(ui.ListBoxEx.Item):
    def __init__(self, fileName):
        ui.ListBoxEx.Item.__init__(self)
        self.canLoad=0
        self.text=fileName
        self.textLine=self.__CreateTextLine(fileName[:FILE_NAME_LEN])         

    def __del__(self):
        ui.ListBoxEx.Item.__del__(self)

    def GetText(self):
        return self.text

    def SetSize(self, width, height):
        ui.ListBoxEx.Item.SetSize(self, 6*len(self.textLine.GetText()) + 4, height)

    def __CreateTextLine(self, fileName):
        textLine=ui.TextLine()
        textLine.SetParent(self)
        textLine.SetPosition(0, 0)
        textLine.SetText(fileName)
        textLine.Show()
        return textLine
      
StartDialog = SwitchBotDialog2()
StartDialog.Show()

Risultato grafico:
rLsV25t.jpg

Oz6ZWlc.png


6Fc9Q23.jpg

Ora, mi manca una cosa... Essendo uno switcher manuale, mi servirebbe che al rilevamento dei bonus ricercati, venga aperta una finestra (anche vuota al max con una X per chiuderla) che impedisca di premere "Gira" nella finestra del gioco..
Any Solution?
 
Anche se questo messaggio arriva in ritardo che però non si può comunque nemmeno immaginare come necropost,

si vede che non hai idea di quello che scrivi. Quando decidi di metterci un po' di testa e di rivalutare le tue soluzioni forse mi potrai ricontattare.

ad essere sinceri avevo già abbandonato la discussione perchè avevo perso la pazienza. Non solo sei andato ot, hai pure cambiato linguaggio di programmazione senza motivo.
p.s: non conosco il Python.
 
Fare sta cosa qua in autoit è da pazzi.

Come hai scelto di fare ora, è meglio utilizzare il python :\ Non avrai molte difficoltà dato che ne trovi bizzeffe switcher fatti per metin2 con python
 
Fare sta cosa qua in autoit è da pazzi.

Come hai scelto di fare ora, è meglio utilizzare il python :\ Non avrai molte difficoltà dato che ne trovi bizzeffe switcher fatti per metin2 con python
Ma anche no se usi un metodo semplice o uno più preciso, come combinare autoit con il reversing. Forse potrebbe essere più facile perchè ci sono più librerie out of the box appositamente per metin2 per farli in python.
 
Stato
Discussione chiusa ad ulteriori risposte.