Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Guides & Templates
You last visited: Today at 15:14

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

Advertisement



[Guide] "Mein erster Bot mit GWCA"

Discussion on [Guide] "Mein erster Bot mit GWCA" within the GW Guides & Templates forum part of the Guild Wars category.

Reply
 
Old   #1
 
Killerzwerg829's Avatar
 
elite*gold: 30
Join Date: Feb 2009
Posts: 1,296
Received Thanks: 451
[Guide] "Mein erster Bot mit GWCA"

Moin

Da mir aufgefallen ist, dass es noch keinen Guide gibt, wo GWCA an einem Beispiel erklärt wird, mache ich das mal.

Der ganze Guide ist sehr einfach gehalten und eher für Anfänger gedacht. Also nicht flamen, ihr Pro´s, ich programmiere sonst besser

Als Grundwissen wäre es schon gut, wenn du mit einigermaßen gut AutoIt umgehen könnt und das hier angeschaut habt:
Genaueres zu den Call Back Typen und so werde ich deshalb nicht nochmal erklären.

Falls du noch nicht so geübt in AutoIt bist, oder keine Programmierkenntnisse hast, schau dir das an:




Viel zu erklären gibt es bei GWCA eigentlich nicht.
Auf dieser Seite steht eigentlich alles, was wir an Funktionen wissen müssen:

Was noch wichtig ist, dass wir zum aufrufen einer Funktion immer folgendes benutzen: Cmd($FUNKTION, Parameter)
Beispiel: Cmd($CA_Resign) Hier wird kein Parameter gebraucht.

Wenn wir eine Variable mit einem Wert deklarieren wollen, dann schreiben wir: CmdCB($FUNKTION, Parameter)
Beispiel: $dead = CmdCB($CA_GetDead) Unser Rückgabe Wert wäre hier $dead[0]


Gebraucht wird auch die Graphics.dll und die GWCAConstants.au3. Ich packe meine dann in den Anhang. Die neuste gibt es immer hier
Zum injecten nehmen wir einfach eines der Sachen:


In der GWCAConstants.au3 stehen auch viele Befehle, die wir benutzen können.


Als Farmspot wähle ich bewusste etwas im Tutorial von Prophecies aus, da dies wohl für jeden möglich ist, den Script zu testen.
Hier nehmen wir als Farmort die Skale bei Fort Ranik.


Nachdem wir GW injectet haben, kann es ja los gehen.
Als erstes bereiten wir von Hand einen FastWayout vor. Dies kann man natürlich später auch noch den Bot übernehmen lassen
Wir laufen also einmal aus Fort Ranik raus und dann wieder selbst rein...
Jetzt spawnen wir direkt vor dem Ausgang.

Der Script startet wie immer bei GWCA mit:
PHP Code:
#include <GWCAConstants.au3> 
Dann starten wir in einer While Schleife unsere Funktion zum farmen...
PHP Code:
#include <GWCAConstants.au3>

While 1
    _Farm
()
WEnd 

Diese Funktion programmieren wir jetzt.

Als erstes wollen wir die Stadt verlassen. Die Koordinaten finden wir mit einem Tool heraus. Entweder sucht man im Forum eins, oder man coded eins selber.
Ich werde meins an den Anhang packen

Die Koordinate zum rausgehen sehen in unserem Fall so aus: x = 22579.541015625 y = 6983.630859375

Zum laufen benutzen wir die MoveToEx() Funktion.

PHP Code:
Func _Farm()
   
MoveToEx(22579.5410156256983.630859375)
EndFunc 
Jetzt muss gewartet werden, bis die Map geladen ist. Dazu einfach folgende Funktion irgentwo im Script einfügen und einbinden:

PHP Code:
Func _SleepUpToDungeon()
    Do 
        
$cbType "int"
        
$load CmdCB($CA_GetMapLoading) ;Map Status erneuern
        Sleep
(50)
    
Until $load[0] = ;solange wartenbis man im Dungeon steht
    Sleep
(Random(600080001)) ;kurzes wartenehe es weiter geht.
EndFunc 
Ab hier gibt es nicht viel zu erklären. Ich werde jetzt den Script nur beschriften.

PHP Code:
#include <GWCAConstants.au3>
While 1
    _Farm
()
WEnd




Func _Farm
()
    
MoveToEx(22579.5410156256983.630859375) ;rausgehen

    _SleepUpToDungeon
() ;wartenbis die Map geladen ist

    MoveToEx
(22633.0839843756419.4296875) ; zu den Skalen hinlaufen
    MoveToEx
(22550.3378906255798.71923828125)
    
MoveToEx(22510.9628906255251.8388671875)
    
MoveToEx(22453.9746093754746.20361328125)
    
MoveToEx(22370.402343754354.01025390625)
    
MoveToEx(22046.6718753893.0419921875)
    
MoveToEx(21714.6074218753520.04711914063)
    
MoveToEx(21381.6113281253203.36254882813)
    
MoveToEx(20943.6230468752877.46142578125)
    
MoveToEx(20484.7597656252713.96362304688)
    
MoveToEx(19886.6113281252711.67309570313)
    
MoveToEx(19286.050781252798.49243164063)
    
MoveToEx(18830.2753906252859.05639648438)
    
MoveToEx(18206.238281252916.47778320313)
    
MoveToEx(17816.0957031252905.92895507813)
    
MoveToEx(17298.52798.46166992188)

    
Sleep(Random(150020001))
    
Cmd($CA_UseSkill4) ;Skill No4 aktivieren (Trollsalbe)
    
Sleep(Random(50010001))

$cbType "int"
    
$Casting CmdCB($CA_Casting)
    Do
        
$CBType "int"
        
$Casting CmdCB($CA_Casting)
    
Until $Casting[0] = ;solange wartenbis kein Skill mehr am casten ist.

    
MoveToEx(16781.5957031252289.080078125) ; Alle Skale anlocken und hinter die Mauer stellen
    MoveToEx
(16226.04199218752338.08764648438)
    
MoveToEx(16013.4589843752091.767578125)
    
MoveToEx(16015.73339843751700.30676269531)
    
MoveToEx(16473.503906251420.47546386719)
    
MoveToEx(16942.9550781251413.08337402344)
    
MoveToEx(17324.636718751425.16784667969)
    
MoveToEx(17812.894531251456.3173828125)
    
MoveToEx(18380.9316406251557.02783203125)
    
MoveToEx(18859.644531251761.35070800781)

    
Sleep(Random(300040001))
    
Cmd($CA_TargetNearestFoe) ;nächsten Feind auswählen
    Sleep
(Random(300040001))
    
Cmd($CA_UseSkill3, -1) ;Skill No4 aktivieren (Feuersturm) -1damit der aktuelle Target angegriffen wird.
    
Sleep(Random(850095001)) ;warten bis alle tot sind

    PickupItems
(101012) ;bis zu 10 Items aufsammeln

    Sleep
(Random(300050001))
    
Cmd($CA_Resign) ;aufgeben
    Sleep
(Random(350050001))
    
Cmd($CA_ReturnToOutpost) ;zum Außenposten zrück

_SleepUpToCitie
()
EndFunc   ;==>_Farm


Func _SleepUpToDungeon
()
    Do 
        
$cbType "int"
        
$load CmdCB($CA_GetMapLoading) ;Map Status erneuern
        Sleep
(50)
    
Until $load[0] = ;solange wartenbis man im Dungeon steht
    Sleep
(Random(600080001)) ;kurzes wartenehe es weiter geht.
EndFunc   ;==>_SleepUpToDungeon

Func _SleepUpToCitie
() ;selbe wie _SleepUpToDungeon() nur halt für Städte ^^
    Do 
        
$cbType "int"
        
$load CmdCB($CA_GetMapLoading) ;Map Status erneuern
        Sleep
(50)
    
Until $load[0] = ;solange wartenbis man im Dungeon steht
    Sleep
(Random(600080001))
EndFunc   ;==>_SleepUpToCitie 




Optional:



Bot mehrmals starten:

Um den Bot mehrmals auf verschieden Accounts zu starten, kopieren wir ihn und schreiben das in den Script:
PHP Code:
$sGW "Guild Wars - Dein Character Name" 


Deathcheck über AdlibRegister:
Ist zwar bei dem Beispiel eher unötig, aber hinterher wichtig.

Als erstes schreiben wir das oben in den Script:
PHP Code:
AdlibRegister("Deathcheck",2000
Jetzt wird alle 2 Sekunden aufgerufen. Der Script wird dabei pausiert.

Die Funktion sollte dann so aussehen:

PHP Code:
Func Deathcheck()
    
$cbType "int"
    
$dead CmdCB($CA_GetDead) ;gucke ob tot ist :O
    
If $dead[0] = 1 Then ;Wenn ja dnan...
        
Cmd($CA_Resign) ;aufgeben
        Sleep
(Random(350050001))
        
Cmd($CA_ReturnToOutpost) ;zum Außenposten zrück
        _SleepUpToCitie
()
        
_Farm() ; Die farmen Funktion neu aufrufen
    
EndIf
EndFunc   ;==>Deathcheck 

Ich hoffe, dass war gut erklärt. Ich bin eigentlich ein ziemlich schlechter Erklärer o.O

lg Chris
Attached Files
File Type: rar Skale Bot.rar (1.3 KB, 11 views)
File Type: rar Skale Bot + Deathcheck.rar (1.5 KB, 15 views)
File Type: rar GWCAConstants.rar (5.5 KB, 28 views)
File Type: rar Graphics.rar (65.2 KB, 13 views)
File Type: rar waypoint recorder by KillerZwerg829.rar (421 Bytes, 37 views)
Killerzwerg829 is offline  
Thanks
5 Users
Old 05/15/2010, 12:29   #2

 
clemi1's Avatar
 
elite*gold: 0
The Black Market: 134/0/0
Join Date: Jun 2007
Posts: 6,956
Received Thanks: 576
Nicht schlecht-werde es mir mal genauer anschauen.
clemi1 is offline  
Old 05/15/2010, 13:16   #3
 
sunrise123's Avatar
 
elite*gold: 0
Join Date: May 2010
Posts: 29
Received Thanks: 0
Saubere Arbeit genau das hätte ich gebraucht! ; Bin mir sicher du tust vielen Anfängern damit einen Gefallen
sunrise123 is offline  
Old 05/15/2010, 13:23   #4
 
Killerzwerg829's Avatar
 
elite*gold: 30
Join Date: Feb 2009
Posts: 1,296
Received Thanks: 451
Danke für das positive Feedback.

@sunrise123
Ich hatte eigentlich schon lange vor das zu machen, da ich am Anfang selber ein paar Probleme mit GWCA hatte. Mein eigentlich Grund, warum ich mich ausgerechnet heute daran gesetzt habe, warst du
Killerzwerg829 is offline  
Old 05/15/2010, 14:31   #5
 
menchecktor's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 73
Received Thanks: 21
Schonmal nicht schlecht.Allerdings glaube ich kaum,dass ein Anfänger wirklich nachvollziehen kann,was du da eigentlich machst.
Ich würde auf jeden Fall noch auf diese 2 Tutorials verweißen,die ein paar Grundkenntnisse liefern:
-
-

€dit: Bei "Bot mehrmals starten" muss die Variable heißen $sGW
menchecktor is offline  
Thanks
1 User
Old 05/15/2010, 14:37   #6
 
Killerzwerg829's Avatar
 
elite*gold: 30
Join Date: Feb 2009
Posts: 1,296
Received Thanks: 451
Danke. Ich habe ja auch noch dabei geschrieben, dass AutoIt Kenntnisse gut sind. Son Zeug wie Schleifen und so habe ich nicht nochmal erklärt. Das Tut bezieht sich auch Haupsächlich nur auf dem Umgang mit GWCA anhand eines simplen Beispiels.
Ich werde die beiden Links nochmal oben reinedieren.

Edit: Ich schreibe immer $sgw und es funzt. Ich schreibs aber trotzdem mal so wie du
Killerzwerg829 is offline  
Old 05/15/2010, 15:26   #7
 
menchecktor's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 73
Received Thanks: 21
Quote:
Originally Posted by killerzwerk View Post
Danke. Ich habe ja auch noch dabei geschrieben, dass AutoIt Kenntnisse gut sind. Son Zeug wie Schleifen und so habe ich nicht nochmal erklärt. Das Tut bezieht sich auch Haupsächlich nur auf dem Umgang mit GWCA anhand eines simplen Beispiels.
Ich werde die beiden Links nochmal oben reinedieren.

Edit: Ich schreibe immer $sgw und es funzt. Ich schreibs aber trotzdem mal so wie du
hmm...In der GWCAConstants steht auch $sGW
menchecktor is offline  
Old 05/15/2010, 15:34   #8
 
menchecktor's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 73
Received Thanks: 21
Quote:
Originally Posted by killerzwerk View Post

PHP Code:
Func _SleepUpToDungeon()
    
$load CmdCB($CA_GetMapLoading) ;Map Status überprüfen
    
While Not $load[0] = ;solange wartenbis man im Dungeon steht
        Sleep
(50)
        
$load CmdCB($CA_GetMapLoading) ;Map Status erneuern
    WEnd
    Sleep
(Random(600080001)) ;kurzes wartenehe es weiter geht.
EndFunc 
Das geht aber auch einfacher^^
PHP Code:
    Do
        
$cbType "int"
        
Sleep(250)
        
CmdCB($CA_GETMAPLOADING)
    
Until $cbVar[0] = 
menchecktor is offline  
Old 05/15/2010, 15:44   #9
 
Killerzwerg829's Avatar
 
elite*gold: 30
Join Date: Feb 2009
Posts: 1,296
Received Thanks: 451
Jo. Viele Sachen gehen da einfacher und kürzer. Mit geht es aber hauptsächlich darum, dass es gut verständlich ist. Beim casten von Skills lese ich zB auch aus, ob der noch am casten ist, ehe ich weiter botte. Das aber alles reinzupacken wäre für einen Anfänger möglicherweise verwirrent.
Naja trotzdem nehme ich deinen Vorschlag gerne entgegen und ändere dort die Schleife.

Edit: Oh lol mir fällt grad auf, dass ich das mit dem casten doch gemacht hab ^^
Killerzwerg829 is offline  
Old 05/16/2010, 01:27   #10
 
elite*gold: 0
Join Date: May 2010
Posts: 21
Received Thanks: 1
find ich gutes tutorial. einfach erklärt,hilft anfängern bestimmt weiter.
find ich schön das sich jemand noch mit sowas beschäftigt.
alaska nebraska is offline  
Old 05/16/2010, 13:49   #11
 
elite*gold: 100
Join Date: Oct 2007
Posts: 738
Received Thanks: 485
Code:
Func LoadFunc()
	$oldCbType = $cbType
	$cbType = "int"
	Cmd($CA_InitMapLoad)
	UpdateStatus("Load inited")
	RndSleep(250)
	Do
		RndSleep(250)
		CmdCB($CA_MapIsLoaded)
	Until $cbVar[0] = True
	UpdateStatus("Load finished")
	RndSleep($WaitAfterLoadTime)
	$cbType = $oldCbType
EndFunc   ;==>LoadFunc
Universal LadeSleep
ddl is offline  
Old 05/16/2010, 18:06   #12
 
menchecktor's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 73
Received Thanks: 21
Quote:
Originally Posted by DDL View Post
Code:
Func LoadFunc()
	$oldCbType = $cbType
	$cbType = "int"
	Cmd($CA_InitMapLoad)
	UpdateStatus("Load inited")
	RndSleep(250)
	Do
		RndSleep(250)
		CmdCB($CA_MapIsLoaded)
	Until $cbVar[0] = True
	UpdateStatus("Load finished")
	RndSleep($WaitAfterLoadTime)
	$cbType = $oldCbType
EndFunc   ;==>LoadFunc
Universal LadeSleep
Aber nicht sehr anfängerfreundlich
menchecktor is offline  
Old 05/16/2010, 18:13   #13



 
Frutex's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 18,585
Received Thanks: 3,863
Quote:
Originally Posted by menchecktor View Post
Aber nicht sehr anfängerfreundlich
Was ist daran nicht anfängerfreundlich?
Frutex is offline  
Old 05/16/2010, 18:23   #14
 
elite*gold: 100
Join Date: Oct 2007
Posts: 738
Received Thanks: 485
Quote:
Originally Posted by indisturbalcha View Post
Was ist daran nicht anfängerfreundlich?
Richtig, das ist eine ziemlich simple Funktion...
Wenn man den nicht versteht, sollte man erst einmal AutoIt3 lernen!
ddl is offline  
Old 05/16/2010, 18:48   #15
 
Killerzwerg829's Avatar
 
elite*gold: 30
Join Date: Feb 2009
Posts: 1,296
Received Thanks: 451
Die Funktion ist schon simpel. Aber wenn man zum ersten mal GWCA sieht, ist dies möglicherweise auch verwirrent.
Der Sinn von diesem Thread ist für mich, dass man Anfängern zeigt, wie GWCA funktioniert und wie man es an einem extrem simplen Beispiel anwendet.
Wenn man das schon verstanden hat, ist dies kein Problem selber alles umzusetzen. Das setzt natürlich auch voraus, dass man mit AutoIt umgehen kann
Killerzwerg829 is offline  
Reply


Similar Threads Similar Threads
GWCA "mitlaufen" mit Team Mates
03/25/2010 - GW Bots - 3 Replies
Hallo Jungs. Ich bin gerade an meinem RA Bot drann, welcher zumindest schonmal gut und realistisch kämpft. Dennoch habe ich Problem undzwar der Start des Kampfes. Es wirkt nicht menschlich wenn der Bot am Anfang direkt anfängt die Gegner anzugreifen und sich von der Gruppe abspaltet. Daher suche ich eine Lösung das der Bot für die erste Zeit mit den Teammates mitläuft (oder so?!). Wie würdet ihr das lösen? Lg wop123



All times are GMT +2. The time now is 15:14.


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.