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>
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.541015625, 6983.630859375)
EndFunc
PHP Code:
Func _SleepUpToDungeon()
Do
$cbType = "int"
$load = CmdCB($CA_GetMapLoading) ;Map Status erneuern
Sleep(50)
Until $load[0] = 1 ;solange warten, bis man im Dungeon steht
Sleep(Random(6000, 8000, 1)) ;kurzes warten, ehe es weiter geht.
EndFunc
PHP Code:
#include <GWCAConstants.au3>
While 1
_Farm()
WEnd
Func _Farm()
MoveToEx(22579.541015625, 6983.630859375) ;rausgehen
_SleepUpToDungeon() ;warten, bis die Map geladen ist
MoveToEx(22633.083984375, 6419.4296875) ; zu den Skalen hinlaufen
MoveToEx(22550.337890625, 5798.71923828125)
MoveToEx(22510.962890625, 5251.8388671875)
MoveToEx(22453.974609375, 4746.20361328125)
MoveToEx(22370.40234375, 4354.01025390625)
MoveToEx(22046.671875, 3893.0419921875)
MoveToEx(21714.607421875, 3520.04711914063)
MoveToEx(21381.611328125, 3203.36254882813)
MoveToEx(20943.623046875, 2877.46142578125)
MoveToEx(20484.759765625, 2713.96362304688)
MoveToEx(19886.611328125, 2711.67309570313)
MoveToEx(19286.05078125, 2798.49243164063)
MoveToEx(18830.275390625, 2859.05639648438)
MoveToEx(18206.23828125, 2916.47778320313)
MoveToEx(17816.095703125, 2905.92895507813)
MoveToEx(17298.5, 2798.46166992188)
Sleep(Random(1500, 2000, 1))
Cmd($CA_UseSkill, 4) ;Skill No. 4 aktivieren (Trollsalbe)
Sleep(Random(500, 1000, 1))
$cbType = "int"
$Casting = CmdCB($CA_Casting)
Do
$CBType = "int"
$Casting = CmdCB($CA_Casting)
Until $Casting[0] = 0 ;solange warten, bis kein Skill mehr am casten ist.
MoveToEx(16781.595703125, 2289.080078125) ; Alle Skale anlocken und hinter die Mauer stellen
MoveToEx(16226.0419921875, 2338.08764648438)
MoveToEx(16013.458984375, 2091.767578125)
MoveToEx(16015.7333984375, 1700.30676269531)
MoveToEx(16473.50390625, 1420.47546386719)
MoveToEx(16942.955078125, 1413.08337402344)
MoveToEx(17324.63671875, 1425.16784667969)
MoveToEx(17812.89453125, 1456.3173828125)
MoveToEx(18380.931640625, 1557.02783203125)
MoveToEx(18859.64453125, 1761.35070800781)
Sleep(Random(3000, 4000, 1))
Cmd($CA_TargetNearestFoe) ;nächsten Feind auswählen
Sleep(Random(3000, 4000, 1))
Cmd($CA_UseSkill, 3, -1) ;Skill No. 4 aktivieren (Feuersturm) -1, damit der aktuelle Target angegriffen wird.
Sleep(Random(8500, 9500, 1)) ;warten bis alle tot sind
PickupItems(10, 1012) ;bis zu 10 Items aufsammeln
Sleep(Random(3000, 5000, 1))
Cmd($CA_Resign) ;aufgeben
Sleep(Random(3500, 5000, 1))
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] = 1 ;solange warten, bis man im Dungeon steht
Sleep(Random(6000, 8000, 1)) ;kurzes warten, ehe 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] = 0 ;solange warten, bis man im Dungeon steht
Sleep(Random(6000, 8000, 1))
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)
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(3500, 5000, 1))
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