|
You last visited: Today at 00:33
Advertisement
Dauerhafter Deathcheck
Discussion on Dauerhafter Deathcheck within the Guild Wars forum part of the MMORPGs category.
12/31/2008, 15:03
|
#1
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,098
Received Thanks: 198
|
Dauerhafter Deathcheck
Hi also ich wollte gerne den Deathcheck über AdlibEnable laufen lassen.
Aber das geht ja nicht, weil er dann die laufende Funktion nicht abbricht.
Wie regelt ihr das denn mit den Deathcheck?
|
|
|
12/31/2008, 15:17
|
#2
|
elite*gold: 0
Join Date: Mar 2008
Posts: 374
Received Thanks: 198
|
Ich würds wie folgt machen (ich denke das du probleme damit hast, wegen der MoveTo).
Lass den DeathCheck einfach parallel laufen...
PHP Code:
Bot.exe DeathCheck.exe
In der 'DeathCheck.exe' sollte dann folgendes sein... wenn Bot/Char stirbt dann beende Process Bot.exe und starte ihn erneut (In Bot.exe sollte dann nur die Running Phase sein und keine GUI).
Hoffe es hilft dir
Mit freundlichen Grüßen
|
|
|
12/31/2008, 15:23
|
#3
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,098
Received Thanks: 198
|
Denke schon. Dann würde ich das so machen das er zuerst zurück zum Außenposten geht und dann die exe killt. An der MoveTo lag es nicht.^^ Er hat ja resignt als er tot war nur macht er dann trotzdem mit der laufenden funktion weiter
|
|
|
12/31/2008, 15:27
|
#4
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,403
Received Thanks: 918
|
Ich habs so:
Code:
AdlibEnable("_Deathcheck", 500)
[...]
Func _Deathcheck()
Select
Case _MemoryRead($Death, $hprocess) = 1
$Runs = $Runs - 1
*resign*
_Schleife()
EndSelect
EndFunc
_schleife() ist dann halt die Schleife die er normal durchgehend ausführt also
while 1
*Wayout*
*fight*
*loot*
*resign*
wend
endfunc
Ist bestimmt auch nicht die beste Lösung, funktioniert aber.
|
|
|
12/31/2008, 15:29
|
#5
|
elite*gold: 0
Join Date: Nov 2008
Posts: 576
Received Thanks: 191
|
erstell einen zweiten thread, der das für dich überprüft.
|
|
|
12/31/2008, 15:29
|
#6
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,098
Received Thanks: 198
|
Danke ihr beiden.
|
|
|
12/31/2008, 15:30
|
#7
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
@ gabba2 was passiert während dessen mit deiner fight func?
|
|
|
12/31/2008, 17:57
|
#8
|
elite*gold: 0
Join Date: Feb 2008
Posts: 147
Received Thanks: 184
|
Habs im Prinzip auch so gelöst nur dass ich in den Unterschritten und in meiner
MoveTo beim Einsrpung auf einen globalen "dead" Status prüfe, der im addlib Thread gesetzt wird. Dadurch fällt die main loop durch bis an einen bestimmten Punkt zB dort wo auch im Normalfall resign o.ä. abgewickelt wird.
War ganz nützlich bei den ersten Schneemanndungeon Versionen
|
|
|
12/31/2008, 18:05
|
#9
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,403
Received Thanks: 918
|
Quote:
Originally Posted by kknb
@ gabba2 was passiert während dessen mit deiner fight func?
|
Wie während dessen? Während was genau? Die läuft halt normal weiter bis der Char tot ist, dann wird resigned und die Schleife neu ausgeführt
|
|
|
12/31/2008, 18:34
|
#10
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
die fight func wird doch nicht abgebrochen wenn die bedingung eintrift, oder?
hab mal nen beispiel gemacht, wenn du f5 drückst wird zwar adlibenable ausgeführt, aber nebenbei läuft noch die "main func weiter, und wird somit nicht abgebrochen.
Code:
#include <Misc.au3>
$dll = DllOpen("user32.dll")
go()
func go()
adlibenable("msgbox1", 100)
while 1
MsgBox (0,"","go")
sleep(1000)
wend
adlibdisable()
EndFunc
func msgbox1()
if _IsPressed("74", $dll) Then
MsgBox (0,"","msgbox")
EndIf
EndFunc
|
|
|
12/31/2008, 18:44
|
#11
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,403
Received Thanks: 918
|
Ne die func wird nicht abgebrochen aber es werden ja die Funcs dann dazwischen geschoben und _Schleife ist halt eine endlos Schleife. Wenn die Schleife irgendwann enden würde, würde danach die fight Func zu ende gemacht werden da ses aber nie ist...
Optimal ist die Lösung bestimmt nicht und es gibt garantiert elegantere Lösungen aber es funktioniert halt. € Ok, es funtzt doch nicht so wirklich prickelnd.
|
|
|
12/31/2008, 18:50
|
#12
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
hm bin mir nicht sicher, aber würde dann nicht mit der zeit die speicherauslastung potenziell ansteigen^^?
übrigens hatte ich j199207 vor paar tagen im icq geraten so zu machen, nur ich dachte das es da vielleicht zu problemen mit den funktionen kommen könnte.
|
|
|
01/01/2009, 09:36
|
#13
|
elite*gold: 0
Join Date: Feb 2008
Posts: 147
Received Thanks: 184
|
Erstmal ein gutes neues Jahr @ all ,
scheinbar hat meinen kleinen Einwurf niemand so recht verstanden oder ernst genommen hier die Grundarchitektur:
* deathcheck, parallelcasts (beim rennen) und status krams in addlib-thread
* ablauf steuerung, einsammeln, resign usw. in main loop
Also in pseudo code sieht das dann so aus:
global tick=0
global dead=false
global running=false
renncast()
if dead return
else
deathcheck()
if tick=0 then hau_ne_sf_rein / running=false ;cast hat running abgebrochen
if tick=7 then machdiesunddas
tick +=1
if tick=72 then tick=0 ;72 is ne nette zahl wenn man obsi loops baut ;-)
killcast()
if dead return
else
deatthcheck()
if mod(tick, 10) then hauaufsmaul ;zyklisch alle 10s
tick +=1
if tick= 30 then tick=0
rennen(x,y)
if dead return
if running=false then running=true / rennlos()
while nichtda und !dead
drehdich und steuer
sleep(100)
wend
deathcheck()
if readmem() then dead=true
;main
rennen(..)
addlib(deathcheck)
rennen(..)
rennen(..)
addlib(renncast)
rennen(..)
rennen(..)
bleibstehn() / running=false /tick=0
if !dead then
addlib(killcast)
while !alletot and !dead
sleep()
wend
sammelkrams()
else
ojeschontoträummalauf()
resign
tick=0 / running=false /dead=false
nochmlvonvorn
so long..
|
|
|
01/01/2009, 11:53
|
#14
|
elite*gold: 0
Join Date: Jan 2008
Posts: 1,403
Received Thanks: 918
|
Das geht so schon aber du musst halt bei längeren Funcs extrem viele If Abfragen machen was bei nem X100 Zeilen Script auch nicht so praktisch ist.
Quote:
Originally Posted by kknb
hm bin mir nicht sicher, aber würde dann nicht mit der zeit die speicherauslastung potenziell ansteigen^^?
|
Jo stimmt müsste se theoretisch. Aber sagen wir mal der übersprungene Teil hat 5kb selbst wenn der dann 1000 mal übersprungen wird hast du am Ende nur 5mb mehr Ram die verbraucht werden. Eventuell löst AutoIT das ganze ja auch anders und braucht da (fast) gar nicht mehr Speicher für oder löscht die Befehle nach X Stunden oder so.
|
|
|
01/01/2009, 20:54
|
#15
|
elite*gold: 0
Join Date: Jul 2008
Posts: 614
Received Thanks: 164
|
Also ich habs immer so gemacht
PHP Code:
AdlibEnable("_deathcheck") Func _deathcheck() $dcheck = PixelGetColor(x,y) $farbe = Iniread(...) If $dcheck = $farbe Then _resign() While 1 _bot() Wend Else EndFunc
Ging soweit auch ganz gut.
|
|
|
|
Similar Threads
|
Ständiger Deathcheck | Start-Button
05/13/2010 - GW Bots - 28 Replies
Hey ihr,
nachdem ich über das letzte Event hinweg ein paar der hier zu findenden Bots durchprobiert habe, spinnt seit vorgestern der Wunsch in meinem Kopf rum, sowas tolles möchte ich auch können! :D
Also habe ich mir ein paar Tuts angesehn, da mir AutoIt ja bis dato noch gänzlich unbekannt war und dann einfach mal drauflosgelegt. Ganz nach dem Motto: Learning by Doing. Klappt auch soweit besser als erwartet. Immerhin bin ich schonmal soweit, dass mein kleiner Bot in den nötigen...
|
GWCA Deathcheck
02/04/2010 - GW Bots - 3 Replies
Hey...irgendwie bekomm ichs nicht hin, nen vernünftigen Deathcheck in GWCA zu schreiben. Der hier funktioniert nicht:
$cbType = "int"
Do
Sleep(250)
CmdCB($CA_GETDEAD)
Until $cbVar = 1
Kann mir jemand helfen? Wäre nett ;-)
|
Deathcheck
04/26/2009 - GW Bots - 65 Replies
Ich hab in der Suchfunktion gesucht und hab mir fast alles durchgelesen...
dabei kam das hier raus:
If _MemoryRead($Check_NPC, $hprocess) = 1 Then
Sleep(10000)
ControlSend("Guild Wars", "", "", "ö")
Sleep(100)
ControlSend("Guild Wars", "", "", "{SPACE}")
Sleep(100)
|
Frage zu Memories + DeathCheck
02/13/2009 - GW Bots - 62 Replies
Kann mir wer das Script für den DeathCheck nochmal zeigen? Wäre sehr nett.
Und noch eine Frage: Wie kriege ich das hin, das der Bot weiss wieviele Kreaturen ich schon getötet habe?
Danke im vorraus!
#N.E.O.
|
Dauerhafter Deathcheck
12/16/2008 - Guild Wars - 19 Replies
Also meine frage ist nun wie ich einen dauerhaften Deathcheck einbauen kann.
Also natürlich mit einer schleife welcher schleifencode wäre dafür am besten?
Diese schleife soll dauerhaft im ganzen script laufen halt per memory abfrage
Die memory adresse dafür ist momentan
$Deathcheck = a044ec
Valuers sind
Nicht Tod = 0
Tod = 1
|
All times are GMT +2. The time now is 00:33.
|
|