Hallo wertes Forum,
ich bin noch recht neu in jedweder Programmierung(seit 1 Woche dabei), benötige jedoch einen Rat von euch. Ich habe mir ein Skript für ein Spiel geschrieben welche auch ohne Probleme tut was er soll jedoch würde ich diesen gerne erweitern. Dafür soll das Skript erkennen wie viele HP mein Charakter noch besitzt und ggf. bei zu wenigen einen Trank nutzen.
Gibt es eine Art diese Informationen auszulesen?
Das Spiel ist in Java geschrieben und nennt sich Old School Runescape, sofern diese Information nützlich ist.
Ich würde gerne selber tüfteln, um es so zu lernen, nur habe ich keinen Ansatz finden können.. :/
Falls ihr mein Skript benötigt kann ich diesen hinzufügen.
Danke fürs Lesen und für die vermeintliche Hilfe :]
Neuling benötigt Rat von den Weisen unter euch Topic is solved
Moderator: jNizM
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Das nenne ich mal eine Motvationshilfe für vermeidliche Hilfe... und für die vermeintliche Hilfe :]
Re: Neuling benötigt Rat von den Weisen unter euch
Java ist schwierig(er) antriggerbar. Welche von den 54 gelisteten threads kommt deinem Problem am Nächsten?
https://www.google.com/search?q=site%3Aautohotkey.com+runescape+old+school
https://www.google.com/search?q=site%3Aautohotkey.com+runescape+old+school
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Ich danke dir erstmal für die schnelle Antwort! :]BoBo wrote: ↑18 Jul 2020, 21:52Java ist schwierig(er) antriggerbar. Welche von den 54 gelisteten threads kommt deinem Problem am Nächsten?
https www.google.com /search?q=site%3Aautohotkey.com+runescape+old+school Broken Link for safety
Um ehrlich zu sein, gibt es dort keinen der das, was ich benötige, unterstreicht.
Im Grunde funktioniert mein Skript so dass mein Charakter den Npc ausknockt und dann bestiehlt bis er wieder bei Verstand ist(Wird in Runescape Blackjacking gennant.). Je nach dem Diebstahl Level des Charakters kann dies schiefgehen und der Npc schlägt den Charakter. Wenn dies zu oft passiert stirbt der Charakter da sich die Lebenspunkte nur langsam wiederherstellen.
Um den Tod des Charakters zu verhindern, müsste ich einen Loop einbauen, der immer wieder schaut wie viele Lebenspunkte(hp) der Charakter noch hat um gegebenenfalls einen Trank zu trinken.
Ich habe auch schon in YT geschaut jedoch nutzen die meisten dort pixelsearch etc womit man die Lebenspunkte natürlich nicht im Auge behalten kann.
Dies wäre mein derzeitiger Code:
Code: Select all
#SingleInstance, force
#IfWinActive RuneLite
;Globale Variablen;
Random, Rand, 500, 2500
Count := 0
Knockout()
{
while(Count <= 15)
{
click Right
sleep 50
Mousemove, 0, 70, 5, Rel
sleep 50
Click
sleep 50
Mousemove, 0, -70, 5, Rel
sleep 1100
loop, 2
{
click Right
sleep 75
Mousemove, 0, 40, 5, Rel
sleep 75
Click
Mousemove, 0, -45, 5, Rel
sleep 425
}
Sleep, Rand
Count++
}
Reload
}
1::Knockout()
3::exitapp
4::reload
Re: Neuling benötigt Rat von den Weisen unter euch
Hi,
kann man im Spiel denn die Lebenspunkte "anwählen", also z.B. mit Doppelklick? Wenn sich die Anzeige immer an einer bestimmten Stelle befindet, könnte man die Maus dorthin dirigieren und den aktuellen Wert per Doppelklick oder durch Markieren eines Bereiches in die Zwischenablage holen. Von dort aus kannst du dann weiterarbeiten.
kann man im Spiel denn die Lebenspunkte "anwählen", also z.B. mit Doppelklick? Wenn sich die Anzeige immer an einer bestimmten Stelle befindet, könnte man die Maus dorthin dirigieren und den aktuellen Wert per Doppelklick oder durch Markieren eines Bereiches in die Zwischenablage holen. Von dort aus kannst du dann weiterarbeiten.
Herzliche Grüße aus dem Rheinland
Lucky Joe
Lucky Joe
Re: Neuling benötigt Rat von den Weisen unter euch
Bin mir nicht sicher ob man/frau das so stehen lassen kann. Dargestellte Zahlenwerte (0123456789) dürften bestimmte Pixelkombinationen aufweisen, durch welche sie identifizierbar sein sollten. Kann mich allerdings nicht erinnern das jemand schon mal diese Positionen ausgekaspert hat.jedoch nutzen die meisten dort pixelsearch etc womit man die Lebenspunkte natürlich nicht im Auge behalten kann.
Mathemarrayisch sollten derartige Punkte doch errechenbar sein, oder ??
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Hey,LuckyJoe wrote: ↑19 Jul 2020, 12:36Hi,
kann man im Spiel denn die Lebenspunkte "anwählen", also z.B. mit Doppelklick? Wenn sich die Anzeige immer an einer bestimmten Stelle befindet, könnte man die Maus dorthin dirigieren und den aktuellen Wert per Doppelklick oder durch Markieren eines Bereiches in die Zwischenablage holen. Von dort aus kannst du dann weiterarbeiten.
nein das ist leider nicht möglich. Die Anzeige der Lebenspunkte hat ihren festen Standort aber eine Interaktion vom Spieler ist so nicht möglich. Sie haben ihr eigenes Farbschema, ich bin mir nur nicht sicher ob es dort Funktionen in AHK gibt welche Zahlen auswerten können? Ich bin leider noch ein wirklicher Neuling im Programmieren :/
Das Interface des Spiels sieht so aus:
https://en.wikipedia.org/wiki/Old_School_RuneScape#/media/File:Osrsinterface.png
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Was würdest du mir denn vorschlagen mit welchen Funktionen bzw. Algorithmus ich dies mit AHK schreiben könnte? Bis jetzt habe ich nur in etwa diese Art von Code genutzt, um via Pixel/Farben im Spiel automatische Abläufe zu schreiben.BoBo wrote: ↑20 Jul 2020, 02:27Bin mir nicht sicher ob man/frau das so stehen lassen kann. Dargestellte Zahlenwerte (0123456789) dürften bestimmte Pixelkombinationen aufweisen, durch welche sie identifizierbar sein sollten. Kann mich allerdings nicht erinnern das jemand schon mal diese Positionen ausgekaspert hat.jedoch nutzen die meisten dort pixelsearch etc womit man die Lebenspunkte natürlich nicht im Auge behalten kann.
Mathemarrayisch sollten derartige Punkte doch errechenbar sein, oder ??
Sorry wenn's eine dumme Frage ist o.o Ich brauche nur einen kleinen Tipp in welcher Ecke ich schauen muss, um die richtigen Tutorials für solch etwas zu finden ^^
Code: Select all
1::
loop
{
PixelSearch, FoundX, FoundY, 896, 241, 1700, 152, 0x00FFFF, 5, Fast RGB
if (ErrorLevel == 0)
{
MsgBox, 1, MsgBox, Color was Found!
}
}
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Habe einen Weg gefunden die Lebenspunkte im Auge zu behalten und damit zu arbeiten!
Ich danke trotzdem jeden für die Hilfe und wünsche eine ruhige Woche!
Ich danke trotzdem jeden für die Hilfe und wünsche eine ruhige Woche!
Re: Neuling benötigt Rat von den Weisen unter euch
... und du wolltest uns noch mitteilen wie genau du das jetzt bwerkstelligst, oder?? Weil Wissen teilen freut auch den Verteilenden
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Oh tut mir leid Ich habe mal genauer darauf geachtet und habe festgestellt, dass sich die Farbe der Lebenspunkte je nach Prozentsatz verändern. Habe also letztlich PixelSearch in einen Loop genutzt, um bei Änderung der Farbe dann einen Trank zu nutzen.
Habe aber leider schon das nächste Problem wo ich am Tüfteln bin ^^ anstelle von der Mausposition wollte ich nun Pixelsearch nutzen um also besser Variieren zu können, da sich der Npc ab und an bewegt und der Cursor so nicht folgen würde.
Leider tut der Script gar nichts
Vielleicht kann jemand von euch das Problem erkennen. Skript startet und zeigt auch keine Errors an aber bleibt im Spiel einfach untätig.
Code wäre folgender:
Code: Select all
#IfWinActive RuneLite
#SingleInstance force
Esc::ExitApp
;Globale Variablen;
global IsPickpocketing
global IsFullHp
;Main Loop;
F12::
Loop
{
If(IsPickpocketing == 0 && IsFullHp == 1)
{
StartPickpocketing()
}
if(IsFullHp == 0)
{
EatFood()
}
}
return
IsPickpocketing()
{
IsPickpocketing := 0
PixelSearch, PX, PY, 2, 26, 1909, 1029, 0x00ffff, 5, Fast RGB
if(ErrorLevel == 0)
{
IsPickpocketing := 1
}
else
{
IsPickpocketing := 0
}
return IsPickpocketing()
}
IsFullHp()
{
IsFullHp := 0
PixelSearch, 1712, 81, 1734, 97, 0x00ff00, 5, Fast RGB
If(ErrorLevel == 0)
{
IsFullHp := 1
}
else
{
IsFullHp := 0
}
return IsFullHp()
}
StartPickpocketing()
{
PixelSearch, X1, Y1, 6, 29, 1704, 991, 0x00ffff, 5, Fast RGB
if(ErrorLevel == 0)
{
Loop
{
MouseMove, X1, Y1, 5
Click Right
sleep, 50
Mousemove, 0, 70, 5
sleep, 50
Click
sleep, 50
Mousemove, 0, -70, 5
sleep, 1000
break
}
loop, 2
{
click Right
sleep, 50
Mousemove, 0, 40, 5, Rel
sleep, 50
Click
Mousemove, 0, -45, 5, Rel
sleep, 500
break
}
}
}
EatFood()
{
PixelSearch, x1, y1, 1720, 734, 1914, 996, 0x00ff00, 5, Fast RGB
if(ErrorLevel == 0)
{
MouseMove, x1, y1, 5
Click
EatFood := 1
}
else
{
EatFood := 0
MsgBox,,, There's no Food to click! Stopping script
}
return EatFood()
}
Re: Neuling benötigt Rat von den Weisen unter euch Topic is solved
Zum Zeitpunkt des Starts (F12) sind die Variablen IsPickpocketing/IsFullHp zwar als Global deklariert, aber ohne Wert AKA wertlos.
Code befrickelt, aber nicht auf etwaige Logikfehler geprüft ...
Code befrickelt, aber nicht auf etwaige Logikfehler geprüft ...
Code: Select all
#IfWinActive RuneLite
#SingleInstance force
global IsPickpocketing := 0 ; Globale Variablen
global IsFullHp := 0
F12::
Loop {
If (IsPickpocketing == 0 && IsFullHp == 1) {
StartPickpocketing()
}
If (IsFullHp == 0) {
EatFood()
}
}
Return
IsPickpocketing() {
PixelSearch, PX, PY, 2, 26, 1909, 1029, 0x00ffff, 5, Fast RGB
IsPickpocketing := (ErrorLevel == 0) ? 1 : 0
return IsPickpocketing
}
IsFullHp() {
PixelSearch, 1712, 81, 1734, 97, 0x00ff00, 5, Fast RGB
IsFullHp := (ErrorLevel == 0) ? 1 : 0
return IsFullHp
}
StartPickpocketing() {
PixelSearch, X1, Y1, 6, 29, 1704, 991, 0x00ffff, 5, Fast RGB
if (ErrorLevel == 0) {
Loop {
MouseMove, X1, Y1, 5
Click Right
sleep, 50
Mousemove, 0, 70, 5
sleep, 50
Click
sleep, 50
Mousemove, 0,-70, 5
sleep, 1000
break
}
Loop 2 {
click Right
sleep, 50
Mousemove, 0, 40, 5, Rel
sleep, 50
Click
Mousemove, 0,-45, 5, Rel
sleep, 500
break
}
}
}
EatFood() {
PixelSearch, x1, y1, 1720, 734, 1914, 996, 0x00ff00, 5, Fast RGB
if (ErrorLevel == 0) {
MouseMove, x1, y1, 5
Click
EatFood := 1
}
else {
EatFood := 0
MsgBox,,, There's no Food to click! Stopping script
}
Return EatFood
}
Esc::ExitApp
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Also muss ich einer globalen variablen auch Werte zuweisen? Das wusste ich nicht. Vielen Dank für die erneute Hilfe! ^^ Ich werde es so ausprobieren und mich dann nochmals melden, ob alles ohne Probleme läuft! LGBoBo wrote: ↑24 Jul 2020, 13:25Zum Zeitpunkt des Starts (F12) sind die Variablen IsPickpocketing/IsFullHp zwar als Global deklariert, aber ohne Wert AKA wertlos.
Code befrickelt, aber nicht auf etwaige Logikfehler geprüft ...
Code: Select all
#IfWinActive RuneLite #SingleInstance force global IsPickpocketing := 0 ; Globale Variablen global IsFullHp := 0 F12:: Loop { If (IsPickpocketing == 0 && IsFullHp == 1) { StartPickpocketing() } If (IsFullHp == 0) { EatFood() } } Return IsPickpocketing() { PixelSearch, PX, PY, 2, 26, 1909, 1029, 0x00ffff, 5, Fast RGB IsPickpocketing := (ErrorLevel == 0) ? 1 : 0 return IsPickpocketing } IsFullHp() { PixelSearch, 1712, 81, 1734, 97, 0x00ff00, 5, Fast RGB IsFullHp := (ErrorLevel == 0) ? 1 : 0 return IsFullHp } StartPickpocketing() { PixelSearch, X1, Y1, 6, 29, 1704, 991, 0x00ffff, 5, Fast RGB if (ErrorLevel == 0) { Loop { MouseMove, X1, Y1, 5 Click Right sleep, 50 Mousemove, 0, 70, 5 sleep, 50 Click sleep, 50 Mousemove, 0,-70, 5 sleep, 1000 break } Loop 2 { click Right sleep, 50 Mousemove, 0, 40, 5, Rel sleep, 50 Click Mousemove, 0,-45, 5, Rel sleep, 500 break } } } EatFood() { PixelSearch, x1, y1, 1720, 734, 1914, 996, 0x00ff00, 5, Fast RGB if (ErrorLevel == 0) { MouseMove, x1, y1, 5 Click EatFood := 1 } else { EatFood := 0 MsgBox,,, There's no Food to click! Stopping script } Return EatFood } Esc::ExitApp
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
@BoBo
Habe es ausprobiert und das Problem, das der Script nichts mehr tut, ist gelöst, vielen Dank! Er findet die Pixel jedoch sobald er in den Loop zum Pickpocketing() springt, fährt die Maus zu dem Npc springt dann jedoch oben links an die Bildschirmecke und fängt dort an zu klicken. Habe die Koordinaten überprüft, welche aber vollkommen in Ordnung sind.
Des Weiteren habe ich einfache Frage, zu dem, was du im Skript korrigiert hast.
Was ist hiermit gemeint: ? 1 : 0 Das habe ich zuvor noch nicht sehen dürfen, weshalb ich nicht weiß was dies tut.
Lg ^^
Habe es ausprobiert und das Problem, das der Script nichts mehr tut, ist gelöst, vielen Dank! Er findet die Pixel jedoch sobald er in den Loop zum Pickpocketing() springt, fährt die Maus zu dem Npc springt dann jedoch oben links an die Bildschirmecke und fängt dort an zu klicken. Habe die Koordinaten überprüft, welche aber vollkommen in Ordnung sind.
Des Weiteren habe ich einfache Frage, zu dem, was du im Skript korrigiert hast.
Was ist hiermit gemeint: ? 1 : 0 Das habe ich zuvor noch nicht sehen dürfen, weshalb ich nicht weiß was dies tut.
Lg ^^
Re: Neuling benötigt Rat von den Weisen unter euch
Code: Select all
var := <Bedingung> ? 1 : 0
var enthält, wenn die bedingung wahr ist, 1 sonst 0
-
- Posts: 9
- Joined: 18 Jul 2020, 13:10
Re: Neuling benötigt Rat von den Weisen unter euch
Werde ich tun. Vielen Dank für die ganze Hilfe ^^BoBo wrote: ↑28 Jul 2020, 14:15Stichwort in der AHK–Hilfe hierfür „ternary operator“Code: Select all
var := <Bedingung> ? 1 : 0 var enthält, wenn die bedingung wahr ist, 1 sonst 0
Who is online
Users browsing this forum: No registered users and 44 guests