Seite 1 von 1

Denkblockade für mein Programmablauf

Verfasst: Dienstag 13. Oktober 2020, 21:43
von xXSkyWalkerXx1
Guten Abend,

als Stütze für mich habe ich folgende Notiz in meinen Algorithmus geschrieben (sprich Kommentar):
"""
1. Get settings
2. Get hwnd data
3. Take Screenshot (&cnvt color-space)
4. Set ROI
5. Create mask
6. Mix mask & screenshot
7. Match template
8. Get template coords
9. If templ found:
- calc position
- move crosshair while distance > 10
"""
Sprich, es holt sich zunächst Daten, bearbeitet sie für eine bessere Verarbeitung, sucht nach einem Template und berechnet davon die Koordinate. Anschließend soll es das Fadenkreuz auf das Ziel richten. Dabei wird ein Vektor erzeugt - von der Mitte des ROI's (entspricht Mitte des Fadenkreuzes) bis zum Ziel. Damit wird die Länge berechnet. Denn es soll das Fadenkreuz solange bewegen, bis die Vektorlänge weniger als 10px beträgt und somit das Fadenkreuz so ziemlich auf dem Ziel ist.

Doch, hier kommt für mich der Knackpunkt. Nachdem es immer wieder nicht richtig funktionierte - erst vermutet die Berechnungen sind falsch, dann, dass ein Modul das Problem sei, etc. - ist mir aufgefallen, dass mein Fehler nur bei 9.II liegen kann.

Damit mein Vorhaben allerdings realisierbar wird, dachte ich mir, dass 9.II seperat - also über einen Thread - verlaufen muss. Geht ja allerdings auch nicht, da 9.II von den vorherigen Schritten abhängig ist. Ich stecke hier also gedanklich fest...

Habt ihr Tipps/Ideen/Inweiße/etc. ,die mir bei meinem Problem weiterhelfen können?

Grüße,
xXSkyWalkerXx1

Re: Denkblockade für mein Programmablauf

Verfasst: Dienstag 13. Oktober 2020, 23:05
von __deets__
Das while ist falsch. Ohne den ganzen brass oben drüber weißt du doch gar nicht, wie groß die Distanz ist. Und “Fadenkreuz bewegen” ist recht allgemein. Wie bewegst du das denn? Wieso muss sich das annähern, warum kannst du nicht einfach direkt die gewünschte Bewegung durchführen?

Re: Denkblockade für mein Programmablauf

Verfasst: Dienstag 13. Oktober 2020, 23:18
von __blackjack__
@__deets__: Annähern weil die anderen Mitspieler sonst sofort merken das da einer bescheisst‽ Natürlich nur eine Vermutung.

Re: Denkblockade für mein Programmablauf

Verfasst: Mittwoch 14. Oktober 2020, 00:18
von xXSkyWalkerXx1
Dass das while ni ganz stimmig ist, ist mir bewusst, da der wichtige Parameter (die aktuelle,berechnete Zielposition) sich während des Ablaufs dieser While-Schleife nicht ändert. Das Fadenkreuz bewege ich mit der CronusMax API.
"Annähern" aus dem Grund, damit der Algorithmus weiß, wann er am Ziel ist - die Distanz sollte natürlich weniger als 10px sein, die 10 ist nur ein Bsp.

Also nein, nicht damit andere den Beschmuh nicht bemerken. ;D
Aber nette Idee! ^^

Re: Denkblockade für mein Programmablauf

Verfasst: Montag 19. Oktober 2020, 17:09
von xXSkyWalkerXx1

Code: Alles auswählen

# Set button if distance crosshair->enemy (2D) is > 0.
if distance > 0:
	cronusmax.EnterApiMode()
	sleep(0.016)# sleep = time.sleep
	cronusmax.set_Rotation(enemyPosPolar['x'], enemyPosPolar['y'])# Set RX,RY of gamepad
	sleep(0.016)# Hier Problem
	cronusmax.ExitApiMode()
Es werden die Werte für die RX&RY Btns gesetzt und nach 16ms wird die API wieder verlassen.
D.h. die Btns werden auch nur 16ms gesetzt. (16ms, weil laut Community so viel Zeit benötigt wird, damit das Gerät das Signal/den Befehl erhält - und das stimmt auch)
Das Problem ist, dass ich so schnell wie möglich die API verlassen muss, damit mein Gamepad-Input nicht weiter durch die API blockiert wird.
(Solange wie das Gerät in API-Mode ist, ignoriert es die Signale des Gamepads)
Eigentlich soll es ja die Werte setzen (diese bleiben autom. solange bis API- Mode verlassen wird) und erst dann den API-Mode verlassen, wenn die Distanz (Fadenkreuz zu Gegner) kleiner als 1 ist.

Bis aber die Position (in Polarwerte) des Gegner neu berechnet wurde, vergehen ~40ms (gesamte Laufzeit) - lasse ich die Werte solange gesetzt, zielt es zu lang nach x,y Richtung.
Was kann ich also hier machen? Liegt es vllt nur an der Performance - muss ich diese durch Codeoptimierung verbessern?