Frage zu GUI von meinem Bot

05/16/2010 15:25 Rorc#1
Hallo erstmal,

ich, als anfänger in AutoIT brauche eure hilfe bei diesem Bot
PHP Code:
#cs
;Name: Nostale Spammbot by Oodama
;Features:Eigene Texteingabe,Eigene Zeitangabe
;
;
Bitte vor abändern der Datei mich Fragen, Danke.
;
;
;
#ce





#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Spamm-Bot by Oodama", 633, 311, 192, 124)
$Button1 = GUICtrlCreateButton("Spammen!", 416, 16, 169, 97, 0)
$Button2 = GUICtrlCreateButton("Schliessen", 416, 120, 169, 49, 0)
$Label1 = GUICtrlCreateLabel("Was soll Geschrieben werden?", 24, 8, 348, 41)
$text = GUICtrlCreateInput("Dein Text!", 24, 64, 345, 21)
$Label2 = GUICtrlCreateLabel("In welchem Abstand soll Geschrieben werden? (Millisekunden)", 24, 96, 348, 41)
$zeit = GUICtrlCreateInput("Zeitabstand", 24, 152, 345, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
= GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            
While 1
            ControlSend
("NosTale", "", 0, "{enter}")
            
ControlSend("NosTale", "", 0,  $text )
            
ControlSend("NosTale", "", 0, "{space}")
            
sleep($zeit)
            
WEnd
        
Case $Button2
            
Exit
    EndSwitch
WEnd 
sowit so gut, aber der bot schreibt nie das was ich in das input eingegeben habe
wie muss ich es machen dass wenn ich in das erste input etwas eingebe dass es dann auch das schreibt ??

das war auch schon meine frage, wenn irgendetwas unklar ist melden,
und bitte anfängerfreundlich erklären :D
05/16/2010 15:36 mipez#2
Das ist ein Problem der meisten Newbies^^

Bevor du die Daten aus einem Control - sei es nun ein Input, ein Edit oder eine Listbox, etc - verwenden kannst, musst du sie erst auslesen.
Dies kannst du mit
PHP Code:
GUICtrlRead(Dein Control z.B. $text) 
machen.
So würde das z.B. für Send() aussehen:
PHP Code:
$read = GUICtrlRead($text)
Send($read) 
MfG. mipez
05/16/2010 16:38 huberhans#3
Quote:
Originally Posted by mipez View Post
Das ist ein Problem der meisten Newbies^^

Bevor du die Daten aus einem Control - sei es nun ein Input, ein Edit oder eine Listbox, etc - verwenden kannst, musst du sie erst auslesen.
Dies kannst du mit
PHP Code:
GUICtrlRead(Dein Control z.B. $text) 
machen.
So würde das z.B. für Send() aussehen:
PHP Code:
$read = GUICtrlRead($text)
Send($read) 
MfG. mipez
Geht auch einfacher:

PHP Code:
Send(GUICtrlRead($text)) 
ohne den Umweg über eine extra Variable zu machen.

Welches Problem aber sicher noch auf dich zukommen wird, ist, daß sich der Spambot nach starten der 2. Schleife (Spam) nicht mehr über die Buttons beenden lassen wird.
Dieses wurde aber schon in einem anderen Thread hier im AutoIt-Bereich, es war auch ein Spambot, gelöst.
Das Problem liegt ganz einfach darin, daß der Bot, wenn die Spam-Funktion erstmal gestartet ist, nur noch die kurze Schleife ausführt, der Rest aber nicht mehr gelesen wird.


Gruß
05/16/2010 16:44 black_byte#4
Wenn das nicht mehr kappen sollte mit dem schließen sollte man einfach denn "GUIOnEventMode" verwenden, denn man mit Opt("GUIOnEventMode", 1) starten kann. Dazu sollte man sich dann aber erstmal die bsp. in der hilfe anschauen.

MfG Xxx Daniel xxX
05/16/2010 16:59 huberhans#5
Quote:
Originally Posted by Xxx Daniel xxX View Post
Wenn das nicht mehr kappen sollte mit dem schließen sollte man einfach denn "GUIOnEventMode" verwenden, denn man mit Opt("GUIOnEventMode", 1) starten kann. Dazu sollte man sich dann aber erstmal die bsp. in der hilfe anschauen.

MfG Xxx Daniel xxX
Ich persönlich mag den "GUIOnEventMode" nicht.
Im Grunde kann der TE seinen Aufbau beibehalten, wenn er die Spamfunktion ohne Zweit-Schleife abarbeiten lässt. Würde dann bei seinem Script so aussehen:

PHP Code:
#cs
;Name: Nostale Spammbot by Oodama
;Features:Eigene Texteingabe,Eigene Zeitangabe
;
;
Bitte vor abändern der Datei mich Fragen, Danke.
;
;
;
#ce





#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Spamm-Bot by Oodama", 633, 311, 192, 124)
$Button1 = GUICtrlCreateButton("Spammen!", 416, 16, 169, 97, 0)
$Button2 = GUICtrlCreateButton("Schliessen", 416, 120, 169, 49, 0)
$Label1 = GUICtrlCreateLabel("Was soll Geschrieben werden?", 24, 8, 348, 41)
$text = GUICtrlCreateInput("Dein Text!", 24, 64, 345, 21)
$Label2 = GUICtrlCreateLabel("In welchem Abstand soll Geschrieben werden? (Millisekunden)", 24, 96, 348, 41)
$zeit = GUICtrlCreateInput("Zeitabstand", 24, 152, 345, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $Bedingung = False
Global $Timer = TimerInit()

While 
1
    $nMsg 
= GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
            
If $Bedingung = True Then
               $Bedingung 
= False
            
ElseIf $Bedingung = False Then
               $Bedingung 
= True
            
EndIf
        Case 
$Button2
            
Exit
    EndSwitch

Spamfunktion()
WEnd  

Func Spamfunktion
()
      If 
$Bedingung = True And Timerdiff($Timer)>= GUICtrlRead($zeit) Then
            ControlSend
("NosTale", "", 0, "{enter}")
            
ControlSend("NosTale", "", 0,  GUICtrlRead($text))
            
ControlSend("NosTale", "", 0, "{space}")
            
$Timer = Timerinit()
      EndIf
EndFunc 
05/16/2010 18:39 black_byte#6
Bei extrem großen GUI's ist der GUIOnEventMode aber viel übersichtlicher. Ist halt meine Meinung ;)

MfG Xxx Daniel xxX
05/16/2010 18:55 huberhans#7
Quote:
Originally Posted by Xxx Daniel xxX View Post
Bei extrem großen GUI's ist der GUIOnEventMode aber viel übersichtlicher. Ist halt meine Meinung ;)

MfG Xxx Daniel xxX
Ansichtssache... Kannst ja das Spambot-Script mal auf OnEvent umstricken, dann kann sich der TE aussuchen, welche Variante er verwenden mag.

Man kann beide Varianten so "verwursteln" daß es unübersichtlich wird. Mit etwas Strukturierung kann auch meine Variante übersichtlich gestaltet werden.