Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars
You last visited: Today at 00:33

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

Advertisement



Dauerhafter Deathcheck

Discussion on Dauerhafter Deathcheck within the Guild Wars forum part of the MMORPGs category.

Reply
 
Old   #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?
i4mSoH34Vy is offline  
Old 12/31/2008, 15:17   #2
 
Valvepro's Avatar
 
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
Valvepro is offline  
Thanks
1 User
Old 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
i4mSoH34Vy is offline  
Old 12/31/2008, 15:27   #4
 
Gabba2's Avatar
 
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.
Gabba2 is offline  
Thanks
1 User
Old 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.

__wadim is offline  
Thanks
1 User
Old 12/31/2008, 15:29   #6
 
elite*gold: 0
Join Date: Jan 2008
Posts: 1,098
Received Thanks: 198
Danke ihr beiden.
i4mSoH34Vy is offline  
Old 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?
kknb is offline  
Old 12/31/2008, 17:57   #8
 
tonitusch666's Avatar
 
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
tonitusch666 is offline  
Old 12/31/2008, 18:05   #9
 
Gabba2's Avatar
 
elite*gold: 0
Join Date: Jan 2008
Posts: 1,403
Received Thanks: 918
Quote:
Originally Posted by kknb View Post
@ 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
Gabba2 is offline  
Old 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
kknb is offline  
Old 12/31/2008, 18:44   #11
 
Gabba2's Avatar
 
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.
Gabba2 is offline  
Old 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.
kknb is offline  
Old 01/01/2009, 09:36   #13
 
tonitusch666's Avatar
 
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..
tonitusch666 is offline  
Old 01/01/2009, 11:53   #14
 
Gabba2's Avatar
 
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 View Post
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.
Gabba2 is offline  
Old 01/01/2009, 20:54   #15
 
aLasca's Avatar
 
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.
aLasca is offline  
Reply


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


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.