|
You last visited: Today at 08:25
Advertisement
GWCA Bot an einen Charakter binden
Discussion on GWCA Bot an einen Charakter binden within the GW Bots forum part of the Guild Wars category.
01/31/2010, 02:52
|
#1
|
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
|
GWCA Bot an einen Charakter binden
Gute Nacht allerseits
Ich wurde in meinem Chestbot-Thread gefragt, ob man eine Funktion einbauen könne, bei der man den Namen seines Charakters eingibt, weil der Bot sonst seine Befehle an das falsche GW senden kann, wenn man mehrere GWs gleichzeitig am Laufen hat.
Ich würd das ganze gerne per .ini regeln.
Wenn der Parameter $CharName "variabel" ist (also so in der .ini eingestellt wird), soll eine Abfrage beim Botstart erfolgen, bei der man den Charakternamen eingibt. Der Bot soll dann selbstverständlich die Befehle nur an das GW mit dem richtigen Namen senden.
Wenn der Parameter nicht "variabel" ist sondern ein Name, in diesem Fall natürlich der Charaktername, dann soll der Bot ohne Abfrage starten und die Befehle logischerweise nur an dieses Fenster schicken.
Meine Überlegungen führen bisher so weit: Wären diese richtig?
Code:
Global $GuildWarsWindowName
Const $CharName = IniRead("Chestbot.ini", " General Settings ", "$CharName", "Not found")
SetGuildWarsName()
Chestbot() ;Rest des Bots eben...
Code:
Func SetGuildWarsName()
If $CharName = "variabel" Then
$InputName = InputBox("Name", "Enter your Character's Name:")
$GuildWarsWindowName = "Guild Wars - " & $InputName
TraySetToolTip($sInputName)
ElseIf $CharName <> "variabel" Then
$GuildWarsWindowName = "Guild Wars - " & $CharName
EndIf
EndFunc
Wenn nun dies für sich schon mal richtig ist, wie bringe ich dann den Bot dazu, die Befehle an das richtige Guild Wars (mit dem Namen $GuildWarsWindowName) zu senden?
Danke schonmal im Voraus!
|
|
|
01/31/2010, 04:21
|
#2
|
elite*gold: 0
Join Date: Dec 2007
Posts: 324
Received Thanks: 85
|
Müsste doch eigtl so gehen:
Quote:
Global $hwnd = WinGetHandle($GuildWarsWindowName)
$cGUI = GUICreate("GWCA " & $GuildWarsWindowName)
GUIRegisterMsg(0x500, "WndCallback")
Global $PID = WinGetProcess($hwnd)
|
|
|
|
01/31/2010, 11:21
|
#3
|
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
|
Scheint zu funktionieren, ja
Wie könnte man noch eine Funktion einbauen, die den Bot beendet, wenn das entsprechende Guild Wars Fenster nicht gefunden wurde (weil der Name falsch geschrieben ist)? Am besten noch mit ner Fehlermeldung, damit sich der Benutzer auskennt.
Danke schonmal und Danke für die bisherige Hilfe
Edit: Nein...verdammt. Der Bot läuft auch weiter, wenn der Name falsch geschrieben ist, dabei müsste er die Befehle dann an ein nicht vorhandenes GW schicken.
|
|
|
01/31/2010, 20:21
|
#4
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,281
|
Einmal mit dem WinHandle (um zu überprüfen ob es existiert - muss bereits einmal existiert haben!)
Code:
Func checkWin($hWnd)
If HWnd($hWnd) = 0 Then Exit
EndFunc
Und einmal mit WinName
Code:
Func checkWin($sWinName)
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) = 0 Then Exit
EndFunc
Aufruf:
Code:
Func checkWin($sWinName)
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Exit
EndFunc
$pName = "Strong Elitepvper"
$sWinName = "Guild Wars - " & $pName
checkWin($sWinName)
Und das hier könnte evtl. noch hilfreich sein.
Code:
;returns the hwnd of a given windowtitle
;sWinName = Window Title
;limi = timeout in seconds (default = 3)
Func safeFindWindow($sWinName, $limit = 3)
Opt('WinTitleMatchMode', 3)
Local $hWnd = WinGetHandle($sWinName)
Local $timeout = 0
If HWnd($hWnd) = 0 Then
While HWnd($hWnd) = 0 Or $timeout > $limit
$hWnd = WinGetHandle($sWinName)
Sleep(1000)
$timeout += 1
WEnd
EndIf
Opt('WinTitleMatchMode', 1)
Return $hWnd
EndFunc
bei safeFindWindow ist zu sagen, das es dort auch um Groß und Kleinschreibung geht.
|
|
|
01/31/2010, 23:30
|
#5
|
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
|
Ok, danke. Die Abfrage, ob das "benötigte GW" vorhanden ist, funktioniert.
Aber ich hab immer noch das Problem, dass der Bot gar nicht die Befehle an eben genau dieses eine "richtige" GW schickt.
Egal welchen Namen ich eingebe (und egal ob per .ini oder per Userabfrage)...
Der Bot beendet sich zwar jetzt, da die Überprüfung von U-Core ihn dazu zwingt, sich zu beenden. Aber wenn ich die Abfrage nicht durchführen lasse, läuft der Bot weiter, ganz egal mit welchen Namen usw.
|
|
|
02/01/2010, 16:01
|
#6
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,281
|
oben ans skript
Code:
Opt('WinTitleMatchMode', 3)
|
|
|
02/02/2010, 17:27
|
#7
|
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
|
Ich poste nochmal eben, was ich jetzt rund um die "Namensgebung" im Skript habe.
Wenn ich das Skript so starte, passiert nichts, also es erfolgt keine Abfrage, unabhängig von irgendwelchen Namen und der Bot beendet sich sofort wieder.
Tut mir wirklich Leid, wenn ich euch aufn Sack gehe. Ich versuch's, aber ich krieg's einfach nicht auf die Reihe...
Code:
Opt('WinTitleMatchMode', 3)
Global $cGUI = GUICreate("GWCA")
GUIRegisterMsg(0x500, "WndCallback")
Global $sWinName
Const $CharacterName = IniRead("Chestbot.ini", " General Settings ", "$CharName", "Not found")
SetGuildWarsName()
;Chestruns usw...
Func SetGuildWarsName()
If $CharacterName = "variabel" Then
$InputName = InputBox("Name", "Enter your Character's Name:")
$sWinName = "Guild Wars - " & $InputName
ElseIf $CharacterName <> "variabel" Then
$sWinName = "Guild Wars - " & $CharacterName
EndIf
Local $hWnd = WinGetHandle($sWinName) ;Check if a Window named $sWinName exists
If HWnd($hWnd) <> 1 Then Exit
EndFunc
|
|
|
02/04/2010, 15:37
|
#8
|
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
|
*up*...?^^
|
|
|
02/05/2010, 12:37
|
#9
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,281
|
Code:
Func GetClientName($sCharName)
Local $nChar = $sCharName
Local $sWinName = 'Guild Wars - '
Switch StringLower($nChar)
Case "variabel"
$nChar = InputBox("Name", "Enter your Character's Name!")
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
Case "not found"
$nChar = InputBox("Name", "Enter your Character's Name!")
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
Case Else
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
EndSwitch
EndFunc ;==>GetClientName
|
|
|
02/06/2010, 12:32
|
#10
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,281
|
Nimm mal die Funktion so, die andere war Fehlerhaft.
Code:
Func GetClientName($sCharName)
Local $nChar = $sCharName
Local $sWinName = 'Guild Wars - '
Switch StringLower($nChar)
Case "variabel"
$nChar = InputBox("Name", "Enter your Character's Name!")
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
Case "not found"
$nChar = InputBox("Name", "Enter your Character's Name!")
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
Case Else
Local $hWnd = WinGetHandle($sWinName)
If HWnd($hWnd) <> 1 Then Return -1
$sWinName &= $nChar
Return ($sWinName)
EndSwitch
EndFunc ;==>GetClientName
|
|
|
|
Similar Threads
|
Suche einen Charakter lvl 60+
09/12/2010 - Trading - 5 Replies
Hi alle Zusammen,
ich suche einen Account lvl 60+
Klasse ist egal, sollte aber die letzte Job Quest fertig haben!!!!!!!
Zahlen würde ich bis zu 100 Euro (PSC oder Paypal ist mir egal), kommt auf das LVL und das Equipment an!!!
Bei Angeboten folgende Daten angeben:
Klasse:
LVL:
Waffe:
Rüssi:
|
mobs auf map binden
11/22/2009 - Metin2 Private Server - 5 Replies
hi leute wie binde ich mobs auf map´s ein z.b im eisland Feuer mobs rein wen ich im ordner Map die regen datei bearbeite und mobs beifüge kommen keine entferne ich mobs sind sie aber weg wen ich aus tausche die ID von mobs mit den dieich will sind die mobs die ich aus getauscht habe weg und keine neuen da
|
Netlimiter Binden
11/07/2008 - World of Warcraft - 1 Replies
Kann man Netlimiter @ WoW.exe an eine Taste binden, dass automatisch wenn ich z.B "F12" drücke er den Lag erzeugt?
|
macros binden
12/03/2007 - World of Warcraft - 2 Replies
hallooo würde gerne wissen wie ich nen macro auf f binden kann es aber nicht in meiner main leiste haben muss. ist dies überhaupt möglich? gibt nen thx für ne gute und schnelle antwort ^^
macro ist:
/point
/s Noob
*gg*
|
All times are GMT +1. The time now is 08:25.
|
|