[Python] Quest Bot

01/28/2015 10:29 evoh12#1
Hallo,

ich versuche gerade einen Bot zu realisieren, der eine Quest ausführt.
Das ganze teste ich gerade mit dem Seelenstein.

Das ganze sind dann 4 Buttons (Weiter, Fähigkeit auswählen, wieder weiter und dann ok).

Ich hab das ganze so versucht:
PHP Code:
class Botdialog(ui.ThinBoard):
###########################################################################################################################################
    
def __init__(self):
        
ui.ThinBoard.__init__(self)
        
self.LoadBoard()
        
self.OldRecv game.GameWindow.OpenQuestWindow
        self
.InstallQuestWindowHook()
        
###########################################################################################################################################
    
def InstallQuestWindowHook(self):
        
game.GameWindow.OpenQuestWindow self.HookedQuestWindow
        chat
.AppendChat(1"Quest Window wurde erfolgreich gehooked.")        
        
    
def UnHookQuestWindow(self):
        
game.GameWindow.OpenQuestWindow self.OldRecv
        chat
.AppendChat(1"Quest Window Hook wurde entfernt.")
        
    
def HookedQuestWindow(selfskinidx):
        
pass    
    
#####################################################################################
    
def __del__(self):
        
ui.ThinBoard.__del__(self)
                
self.UnHookQuestWindow()

    
def Destroy(self):
        
self.Hide()
        return 
TRUE    #####################################################################################
    
def LoadBoard(self):
        
self.SetCenterPosition()
        
self.SetSize(300200)
        
self.Show()
        
self.AddFlag("movable")
#######################################################
        
self.LoadText()
        
self.LoadButton()
######################################################
    
def LoadText(self):
        
self.Titel ui.TextLine()
        
self.Titel.SetParent(self)
        
self.Titel.SetDefaultFontName()
        
self.Titel.SetPosition(-804)
        
self.Titel.SetFeather()
        
self.Titel.SetWindowHorizontalAlignCenter()
        
self.Titel.SetText("Tool")
        
self.Titel.SetFontColor(1.12.87)
        
self.Titel.SetOutline()
        
self.Titel.Show()    #####################################################################################
    
def LoadButton(self):
        
self.CloseButton ui.Button()
        
self.CloseButton.SetParent(self)
        
self.CloseButton.SetPosition(2804)
        
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_CLOSE0, - 23)
        
self.CloseButton.SetEvent(ui.__mem_func__(self.Destroy))
        
self.CloseButton.Show()
    
######################################################
        
self.Seelensteinstart ui.Button()
        
self.Seelensteinstart.SetParent(self)
        
self.Seelensteinstart.SetPosition(2020)
        
self.Seelensteinstart.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
        
self.Seelensteinstart.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
        
self.Seelensteinstart.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
        
self.Seelensteinstart.SetEvent(ui.__mem_func__(self.Seelensteinquest))
        
self.Seelensteinstart.Show()        #####################################################################################
    
def Seelensteinquest(self):
        for 
i in xrange(player.INVENTORY_PAGE_SIZE*2):
            
ItemValue player.GetItemIndex(i)
            if 
ItemValue == 50513:
                
net.SendItemUsePacket(i)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                break
################################################################ 
Das ganze funktioniert leider nicht so ganz :/
Was mach ich falsch?

Mfg
01/29/2015 22:10 evoh12#2
keiner eine Idee? :/
Mach ich beim Hooken was falsch? Sind ja eig. die Func von DaRealFreak.
01/29/2015 22:27 Poccix#3
Andere Frage, wieso?
01/29/2015 22:56 xGr33n#4
Eine bessere Fehlerbeschreibung , die syserr und das komplette Script wären von Vorteil, wenn du ernsthafte, nützliche Antworten möchtest
01/29/2015 23:07 evoh12#5
Nadann hier der ganze Code:
PHP Code:
###########################################################################################################################################
import app
import chat
import chr
import locale
import net
import player
import time
import ui
import player
import chrmgr
import background
import nonplayer
import os 
import event
import game
###########################################################################################################################################

class Botdialog(ui.ThinBoard):
###########################################################################################################################################
    
def __init__(self):
        
ui.ThinBoard.__init__(self)
        
self.LoadBoard()
        
self.OldRecv game.GameWindow.OpenQuestWindow
        self
.InstallQuestWindowHook()
        
###########################################################################################################################################
    
def InstallQuestWindowHook(self):
        
game.GameWindow.OpenQuestWindow self.HookedQuestWindow
        chat
.AppendChat(1"Quest Window wurde erfolgreich gehooked.")        
        
    
def UnHookQuestWindow(self):
        
game.GameWindow.OpenQuestWindow self.OldRecv
        chat
.AppendChat(1"Quest Window Hook wurde entfernt.")
        
    
def HookedQuestWindow(selfskinidx):
        
pass    
    
########################################################################################################################################    
    
def __del__(self):
        
ui.ThinBoard.__del__(self)

    
def Destroy(self):
        
self.Hide()
        return 
TRUE
    
###########################################################################################################################################
    
def LoadBoard(self):
        
self.SetCenterPosition()
        
self.SetSize(300200)
        
self.Show()
        
self.AddFlag("movable")
        
###########################################################################################################################################
        
self.LoadText()
        
self.LoadButton()
        
###########################################################################################################################################
    
def LoadText(self):
        
self.Titel ui.TextLine()
        
self.Titel.SetParent(self)
        
self.Titel.SetDefaultFontName()
        
self.Titel.SetPosition(-804)
        
self.Titel.SetFeather()
        
self.Titel.SetWindowHorizontalAlignCenter()
        
self.Titel.SetText("Tool")
        
self.Titel.SetFontColor(1.12.87)
        
self.Titel.SetOutline()
        
self.Titel.Show()
        
###########################################################################################################################################
    
def LoadButton(self):
        
self.CloseButton ui.Button()
        
self.CloseButton.SetParent(self)
        
self.CloseButton.SetPosition(2804)
        
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_CLOSE0, - 23)
        
self.CloseButton.SetEvent(ui.__mem_func__(self.Destroy))
        
self.CloseButton.Show()
        
###########################################################################################################################################
        
self.Seelensteinstart ui.Button()
        
self.Seelensteinstart.SetParent(self)
        
self.Seelensteinstart.SetPosition(2020)
        
self.Seelensteinstart.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
        
self.Seelensteinstart.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
        
self.Seelensteinstart.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
        
self.Seelensteinstart.SetEvent(ui.__mem_func__(self.Seelensteinquest))
        
self.Seelensteinstart.Show()
        
        
        
        
###########################################################################################################################################
    
def Seelensteinquest(self):
        for 
i in xrange(player.INVENTORY_PAGE_SIZE*2):
            
ItemValue player.GetItemIndex(i)
            if 
ItemValue == 50513:
                
net.SendItemUsePacket(i)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                
event.SelectAnswer(10)
                break
################################################################
class WaitingDialog(ui.ScriptWindow):

    
def __init__(self):
        
ui.ScriptWindow.__init__(self)
        
self.eventTimeOver lambda *argNone
        self
.eventExit lambda *argNone

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

    
def Open(selfwaitTime):
        
curTime time.clock()
        
self.endTime curTime waitTime

        self
.Show()        

    
def Close(self):
        
self.Hide()

    
def Destroy(self):
        
self.Hide()

    
def SAFE_SetTimeOverEvent(selfevent):
        
self.eventTimeOver ui.__mem_func__(event)

    
def SAFE_SetExitEvent(selfevent):
        
self.eventExit ui.__mem_func__(event)
        
    
def OnUpdate(self):
        
lastTime max(0self.endTime time.clock())
        if 
== lastTime:
            
self.Close()
            
self.eventTimeOver()
        else:
            return
        
    
def OnPressExitKey(self):
        
self.Close()
        return 
TRUE    
    
###########################################################################################################################################
StartDialog Botdialog()
StartDialog.Show() 
Syserr ist natürlich nichts drin ;) schließlich bekomme ich keine Fehlermeldung.
Naja also ich will damit die Seelensteinquest vorerst automatisieren (Bot) nur leider öffnet er durch die Hookfunktion den Seelenstein anscheind nicht -> es passiert nichts.

Quote:
Originally Posted by Isaac™ View Post
Andere Frage, wieso?
Was wieso? :D

Danke :)