Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Bots
You last visited: Today at 08:25

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

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.

Reply
 
Old   #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!
Garry goes Sheep is offline  
Old 01/31/2010, 04:21   #2
 
solos's Avatar
 
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)
solos is offline  
Thanks
1 User
Old 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.
Garry goes Sheep is offline  
Old 01/31/2010, 20:21   #4


 
buFFy!'s Avatar
 
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.
buFFy! is offline  
Thanks
1 User
Old 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.
Garry goes Sheep is offline  
Old 02/01/2010, 16:01   #6


 
buFFy!'s Avatar
 
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,281
oben ans skript
Code:
Opt('WinTitleMatchMode', 3)
buFFy! is offline  
Old 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
Garry goes Sheep is offline  
Old 02/04/2010, 15:37   #8
 
elite*gold: 0
Join Date: Apr 2008
Posts: 362
Received Thanks: 353
*up*...?^^
Garry goes Sheep is offline  
Old 02/05/2010, 12:37   #9


 
buFFy!'s Avatar
 
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
buFFy! is offline  
Thanks
1 User
Old 02/06/2010, 12:32   #10


 
buFFy!'s Avatar
 
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
buFFy! is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.