Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bocik w Auto IT


Rekomendowane odpowiedzi

Opublikowano
Witam

chciałbym prosić was o pomoc.

Mianowicie chce napisać bota do gry w autoit. Wcześniej pisałem sobie skrypty do innej gry w lua i nie mogę się odnaleźć w auto it(od razu zaznaczam ze nie jestem jakoś bardzo zaawansowany w te klocki)

nie jest on bardzo skomplikowany ,ale jak to ma działać i w czym mam problem

 

 

 

Zacznę od gry

Gra działa w przeglądarce, bot ma dojść do celu, wykonać klika akcji i wrócić do stanu początkowego .

Wiem ze to jest banalnie proste ,ale długość bicia każdego Moba(potworka) jest zawsze inna i występuje on w innych miejscach (stoi nieruchomo)

Mapa zbudowana jest z siatki. Postać zawsze staje na środku"kwadratu" ,oczywiście mapa nigdy się nie zmienia (w sensie nie jest generowana losowo) no i sterujemy tylko myszką

i jak ja to widzę.

 

 

waypointy jaki bym sobie obrał  to klikniecie myszka w Górę-dol-lewo-prawo ,od postaci(która zawsze jest na środku ekranu)

i o ile to jest proste to dalej się kładę

 

po każdym wejściu na waypoint, potwór może nas zakatować, ale nie musi i tutaj mam swój 1 problem

 

nie potrafię znaleźć odpowiedniej pętli czy funkcji , do wykonania tego czego chce

 

Czyli opisze krok po kroku  co ten bot ma robić a was proszę o pokierowanie mnie czego dokładnie mam użyć aby uzyskac cel

 

1.klik myszka w gore od postaci - odczekanie powiedzmy 5 sekund na atak lub brak ataku (ekran ładowania walki) to mam

2.Atak potwora -wykonanie szeregu czynności  lub brak ataku potwora udanie sie do następnego waypointa(zamyka petle wpt 1 i leci wpt 2) 

tutaj chciałem użyć PixelSearch ale nie wiem jak zamknąć pętle jeżeli nie spełnia warunków i leci do dalszej części kodu

3. Walka, klika w 3 rożne rzeczy na ekranie(zawsze te same i o tych samych współrzędnych) i tutaj mam tez problem ponieważ chce aby klikał w trzecią rzecz np co 5 sekund aż nie zmieni się kolor danego pixela a jak się zmieni to kliknie "zakończ walkę" czyli inna współrzędną

 

4,zaczyna od nowa wszystkie 3 punkty tylko zmieniają się współrzędne wpt(gora lewo prawo dol)

 

naprawdę próbowałem rożnych sposobów rozwiązania tego problemu i dużo czytałem na ten temat ale zawsze coś mi nie działa. 

 

i mam jeszcze jedno pytanko czy można zdeklarować zmienna jako współrzędna np

local góra = (123 , 321)  cos w ten deseń tylko zęby działało :D(bo innaczej trzeba rozbić współrzędne na 2 zmienię)

Opublikowano

Jeśli masz 32bitowy system polecam ImageSearch na takie boty, przydatne. Masz je w bibliotece na tym forum.

579571423327107377857.png


  • 3 tygodnie później...
Opublikowano

Trochę mnie nie było ale widzę ze albo coś źle wytłumaczyłem albo nikt nie jest w stanie mi pomoc wiec spróbuje jeszcze raz dla pewności :)

 

mam taki kod

MouseClick("left", $g, $g2)
Sleep (1500)
PixelSearch(2184, 859,2256, 925,0x417400)
if not @ Then
MouseClick("left", $ta, $ta2)
MouseClick("left", $z, $z2)
MouseClick("left", $tb, $tb2)


while
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
MouseClick("left", 2980, 809)
if @ then MouseClick("left", $z, $z2)


EndIf
WEnd
EndIf

schody zaczynają się przy while  potrzebuje pętli która po wykonaniu zamknie się taka jak Do until  ale nie wiem jak ja zastosować

Chciałbym zrobić coś takiego

Szuka pixela

znalazł pixel klika w punkt koniec pętli

nie znalazł pixela klika w inny punkt ale nie kończy pętli i znowu zaczyna szukać jak nie znajdzie. znalazł klika w punkt koniec nie znalazł klika w inny punkt i szuka od nowa i tak  w kolko 

 

Opublikowano

Coś z dupy wzięte te koordynaty, nie pomyliłeś się czasami i złe wpisałeś ? Na dodatek kompletnie nie ogarniasz składni, zacznij naukę od podstaw. 

Do tego te zmienne, skąd ty je bierzesz ? 

AAA, BBB, CCC I DDD koordynaty w jakich ma się pojawić kolor 


while 1
sleep(100)
local $szukaj= PixelSearch(AAA,BBB,CCC,DDD,0x000000,0)
if not @ Then
mousemove($szukaj[0],$szukaj[1],0)
; tu dajesz np  mouseclick z warunkami kiedy ma klikać 
EndIf
sleep(100)
; tu dajesz co ma robić jak nei znajdzie 
WEnd

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Dobra udało mi sie zrobić to co chcialem

MouseClick("left", $d, $d2)
Sleep (1500)
PixelSearch(2184, 859,2256, 925,0x417400)
if not @ Then
MouseClick("left", $ta, $ta2)
MouseClick("left", $z, $z2)
MouseClick("left", $tb, $tb2)
while 1
MouseClick("left", $z, $z2)
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
MouseClick("left", 2980, 809)
Sleep (1500)
ExitLoop
EndIf
WEnd
EndIf

Ale mam kolejne pytanie czy dało by sie zrobić tak aby bot reagował na kilka pixeli a nie na 1

czyli np

 

jeśli 3 pixele (w odpowiedniej odległości od siebie) sa na dannym obszarze to wykonuje akcje

Opublikowano

Możesz odpowiedzieć na pytanie, bo naprawdę ten skrypt jest bez sensu i brak jakiejkolwiek składni.

Co to za zmienne w skrypcie, tylko nie mów ze to wszystko działa jak należy bo nie ma prawa działać! 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

dajesz wtedy 3x pixel search i jakis warunek.

Np;

PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
$pixel1 = 1
Else
$pixel1 = 0
Endif
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
$pixel2 = 1
Else
$pixel2 = 0
Endif
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
$pixel3 = 1
Else
$pixel3 = 0
Endif
if($pixel1 = 1 & $pixel2 = 1 &pixel3 = 1) Then
///////
Endif 

Mozna to jeszcze krocej napisac xD

PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
PixelSearch(2922, 797,3008, 816,0xFFFFFE)
if not @ Then
///////
Endif 
Endif
Endif
Opublikowano

Jak pomyślisz zrozumiesz gdzie masz błąd, funkcja zwraca koordynaty wystąpienia koloru ( dwie liczby ) a nie że wystąpił kolor ,  zwracane jest zawsze 1 kiedy nie wystąpił kolor 

​Funkcja wywoływana ponownie zaczyna skanowanie od początku a nie kontynuuje gdzie skończyła poprzednio  ! 

 

Znowu do cholerki koordynaty, ludzie zacznijcie myśleć logicznie, z takimi koordynatami to wy skanujecie co najmniej  obraz o rozdzielczości 4K albo nawet 8K !  

Logiczne chyba że skanując na jednym ekranie nawet w FullHD  koordynaty powinny zawierać się w granicach 1920 x 1080 , jesli koordynat 0,0 jest w lewym górnym rogu ekranu ! 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Ktosiu

Ten kod co wkleiłem jest tylko częścią skryptu a nie jego całością

i dokładnie ma działać tak jak napisałeś, ma tylko raz sprawdzić czy pixel występuje nie występuje to leci do dalszej części kodu (którego tu nie wkleiłem bo nie miałem z nim problemów)

a co do koronatów sa one prawidłowe 

"Logiczne chyba że skanując na jednym ekranie"

a ktoś mówił ze ogranicza mnie tylko 1 ekran ?

Opublikowano

No teraz to wiadomo że są przynajmniej dwa monitory i takie koordynaty mają sens.

 

Kolor następnych pixeli nie ma potrzeby sprawdzać PixelSearch bo to bez sensowne i spowalnia działanie skryptu. Masz koordynaty gotowe i wystarczy dodać sobie kilka pixeli, pobrać kolor PixelGetColor i porównać. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Zrobiłem tak jak napisałeś wykorzystałem pixelgetcolor i działa to duzp lepiej ale pojawił sie drugi problem

jak ustawić rozdzielczość okna przeglądarki w autoit

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...