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

[Pomocy] Moje problemy


Rekomendowane odpowiedzi

Opublikowano

Witam! Z myślą o nie zakładaniu już kolejnych tematów z moimi różnymi problemami, postanowiłem o wszystkie problemy z AutoIT pytać się tutaj ;).

 

No to najpierw mam taki problem:

 

Func Start()
While 1
Start2()
WEnd
EndFunc

Func Start2()
Global $xr, $yr, $xpd, $ypd, $xf, $yf, $xe, $ye, $xp, $yp
$Egzo1 = _ImageSearch("C:\zwojegzo1.bmp", 1, $xe, $ye, 1)
$EgzoF = _ImageSearch("C:\zwojegzof.bmp", 1, $xe, $ye, 1)
$Pustel1 = _ImageSearch("C:\radapustelnika1.bmp", 1, $xp, $yp, 1)
$PustelF = _ImageSearch("C:\radapustelnikaf.bmp", 1, $xp, $yp, 1)
$PD = _ImageSearch("C:\wymagane-pd.bmp", 1, $xpd, $ypd, 1)
$Neutralny = _ImageSearch("C:\neutralny.bmp", 1, $xr, $yr, 1)
$Agresywny = _ImageSearch("C:\agresywny.bmp", 1, $xr, $yr, 1)
$Nieuczciwy = _ImageSearch("C:\nieuczciwy.bmp", 1, $xr, $yr, 1)
$Zlosliwy = _ImageSearch("C:\zlosliwy.bmp", 1, $xr, $yr, 1)
$Okrutny = _ImageSearch("C:\okrutny.bmp", 1, $xr, $yr, 1)
$Fasolka = _ImageSearch("C:\fasolka_all.bmp", 1, $xf, $yf, 1)
If $Egzo1 = 1 Then MouseClick("right", $xe, $ye)
If $EgzoF = 1 Then MouseClick("right", $xe, $ye)
If $Pustel1 = 1 Then MouseClick("right", $xp, $yp)
If $PustelF = 1 Then MouseClick("right", $xp, $yp)
If $PD = 1 Then MouseMove($xpd - 15, $ypd - 29)
If $Neutralny And $Fasolka = 1 Then MouseClick("right", $xf, $yf)
If $Agresywny And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 2)
If $Nieuczciwy And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 4)
If $Zlosliwy And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 6)
If $Okrutny And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 10)
EndFunc

 

Bot klika w przedmioty w takiej kolejności:

1. Klika w Zwój Egzorcyzmu (Zmienna: $Egzo1 lub $EgzoF).

2. Klika Rada Pustelnika (Zmienna: $Pustel1 lub $PustelF).

3. Najeżdża na pole PD dzięki czemu może sprawdzić rangę (Rangi to: $Neutralny, $Agresywny, $Nieuczciwy, $Zlosliwy, $Okrutny).

4. Znowu klika w Zwój Egzorcyzmu (Zmienna: $Egzo1 lub $EgzoF).

5. Znowu klika w Rada Pustelnika (Zmienna: $Pustel1 lub $PustelF).

6. Znowu najeżdża na pole PD dzięki czemu może sprawdzić rangę (Rangi to: $Neutralny, $Agresywny, $Nieuczciwy, $Zlosliwy, $Okrutny).

7. Klika w Fasolkę Zeń (Zmienna: $Fasolka).

(8. Po czym powtarza całą pętlę od nowa).

 

Jak widać bot nie wiadomo czemu klika 2 razy w Zwój Egzorcyzmu i Radę Pustelnika (Pierwszy raz klika w pkt. 1, 2 i drugi raz klika w pkt. 4, 5) oraz najeżdża na pole PD (Pierwszy raz w pkt. 3 i drugi) raz w pkt. 6.

 

Trzeba wyeliminować jakoś pkt. 4 i 5 oraz 6.

Więc bot ma klikać w takiej kolejności:

1. Klika w Zwój Egzorcyzmu (Zmienna: $Egzo1 lub $EgzoF).

2. Klika Rada Pustelnika (Zmienna: $Pustel1 lub $PustelF).

3. Najeżdża na pole PD dzięki czemu może sprawdzić rangę (Rangi to: $Neutralny, $Agresywny, $Nieuczciwy, $Zlosliwy, $Okrutny).

4. Klika w Fasolkę Zeń (Zmienna: $Fasolka) - Wcześniej był to pkt. 7.

(5. Po czym powtarza całą pętlę od nowa). - Wcześniej był to pkt. 8.

 

Czemu bot powtarza mi w pętli pkt. 1, 2 oraz 3 według tej drugiej kolejności ? Czym to jest spowodowane? Proszę o pomoc daję +'y.

Opublikowano

Wg. mnie musisz bardziej skomplikować program.

 

Wg. mnie powinieneś osobne funkcje dać do szukania każdego itemku po koleji, i jedną funkcje do sprawdzania rangi, i dać te funkcje po koleji w funkcji start2 lub też zamiast start2 wrzucić po koleji te funkcje i dać między tymi funkcjami może sleep z 200 może 100.

Opublikowano

Dobry pomysł spróbuję :). Ale czy to nie spowolni pracy programu? I tak mam już chyba dużo zmiennych globalnych :(.

 

@Edit

Dzięki działa :D. Funkcji w funkcji dać nie mogłem bo mi błędy wywalało ale z tymi oddzielnymi funkcjami to był dobry pomysł :P. Łap plusa.

Opublikowano

Nie łatwiej tak?:

 

Global $xr, $yr, $xpd, $ypd, $xf, $yf, $xe, $ye, $xp, $yp
$Egzo1 = _ImageSearch("C:\zwojegzo1.bmp", 1, $xe, $ye, 1)
$EgzoF = _ImageSearch("C:\zwojegzof.bmp", 1, $xe, $ye, 1)
$Pustel1 = _ImageSearch("C:\radapustelnika1.bmp", 1, $xp, $yp, 1)
$PustelF = _ImageSearch("C:\radapustelnikaf.bmp", 1, $xp, $yp, 1)
$PD = _ImageSearch("C:\wymagane-pd.bmp", 1, $xpd, $ypd, 1)
$Neutralny = _ImageSearch("C:\neutralny.bmp", 1, $xr, $yr, 1)
$Agresywny = _ImageSearch("C:\agresywny.bmp", 1, $xr, $yr, 1)
$Nieuczciwy = _ImageSearch("C:\nieuczciwy.bmp", 1, $xr, $yr, 1)
$Zlosliwy = _ImageSearch("C:\zlosliwy.bmp", 1, $xr, $yr, 1)
$Okrutny = _ImageSearch("C:\okrutny.bmp", 1, $xr, $yr, 1)
$Fasolka = _ImageSearch("C:\fasolka_all.bmp", 1, $xf, $yf, 1)

While 1
If $Egzo1 = 1 Then MouseClick("right", $xe, $ye)
If $EgzoF = 1 Then MouseClick("right", $xe, $ye)
If $Pustel1 = 1 Then MouseClick("right", $xp, $yp)
If $PustelF = 1 Then MouseClick("right", $xp, $yp)
If $PD = 1 Then MouseMove($xpd - 15, $ypd - 29)
If $Neutralny And $Fasolka = 1 Then MouseClick("right", $xf, $yf)
If $Agresywny And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 2)
If $Nieuczciwy And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 4)
If $Zlosliwy And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 6)
If $Okrutny And $Fasolka = 1 Then MouseClick("right", $xf, $yf, 10)
WEnd

 

Jak na metinowca przystalo.

Opublikowano

Nie łatwiej bo muszę mieć to w funkcji żeby za pomocą przycisku uruchomić i co to da problem będzie dalej przecież. Chyba, że jest inny sposób wiesz ja tam jestem nowy... I mój problem wyglądał inaczej i nerv234 udzielił już mi pomocnej odpowiedzi. Jak bym to tak zostawił w pętli to samo by się odpalało. A tak mam pętle, która powtarza funkcje start2 w funkcji start wiec odpalam pętlę za pomocą przycisku.

Opublikowano

Kolejny problem :(. Da radę zrobić, takie coś np.: Mam taki skrypt:

 

Func Start()
While 1
send("Jak to zrobić")
send("Enter")
MouseClick("right", 200, 200)
WEnd
EndFunc

 

Jak spauzować funkcję? Można wogóle zrobić coś takiego? Chodzi mi o to na przykładzie powyższego skryptu: Program za pomocą wybranej funkcji wpisuje w np. w notatniku "Jak to zrobić", potem wciska klawisz "Enter" i powiedzmy, że w tym momencie pauzuję funkcję. I powiedzmy np. za 10 minut wracam do kompa i wznawiam funkcję spowrotem i jak to zrobić, aby po wznowieniu funkcji po uprzednim spauzowaniu jej tuż po wciśnięciu klawisza "Enter" funkcja nie rozpoczęła pracy od nowa tylko od momentu jej spauzowania czyli zamiast wpisać "Jak to zrobić", to żeby wykonała kliknięcie prawym przyciskiem myszy na pozycję 200, 200. Jak zrobić coś takiego? Proszę o pomoc będą +.

Weteran
Opublikowano

Huh..helpa czytaj

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")

While 1
   Sleep(100)
WEnd

Func TogglePause()
   $Paused = NOT $Paused
   While $Paused
       sleep(100)
       ToolTip('Script is "Paused"',0,0)
   WEnd
   ToolTip("")
EndFunc

 

Wciskasz pause break pauzuje sie, wciskasz ponownie wznawia sie od momentu gdzie zatrzymales

1329036830-U154499.png
Opublikowano

Teraz mam znowu schody :/. Więc mam w grze napis zielonymi literami, a dookoła tych liter jest przeźroczyste tło, czy można jakoś zastosować image search, tak aby pomijał przeźroczyste tło i szukał tylko napisu?

Opublikowano

Przezroczyste tło ma kolor tła, tak?

 

Sprawdzając jego kolor otrzymujesz kolor tła.

 

Gdzieś istnieje zapisana informacja o kanale alpha. Ale nie otrzymasz jej odczytując pixelColor z contekstu (do czego się sprowadza ImageSearch).

 

Być może to ci w jakiś sposób pomoże:

http://www.mpcforum.pl/topic/357012-pobieranie-pojedynczych-pikseli-z-aktywnego-okna-lub-pliku/page__view__findpost__p__2520600__fromsearch__1

Ostrzegam, że jest to dość wolne w AutoIcie.

Ta sygnatura jest pusta.

Opublikowano
Przezroczyste tło ma kolor tła, tak?

 

Mam coś takiego:

 

beztytuuqvz.png

 

I chcę, aby bot odczytywał tylko te zielone napisy "Silny przeciwko...", "Odporność na...". Kiedyś coś czytałem, że jest jakiś kolor, który jest uważany jako całkowicie, przeźroczysty, chyba różowy, ale próbowałem i nie działało.

 

@Edit Może tak: Mam te napisy. Czy istnieje jakiś kolor, który jest pomijany przez AutoIt podczas odczytywania obrazka? Tak, żebym np. dookoła napisów dał ten kolor i aby AutoIt go pomijał i szukał tylko tego co nie jest w tym kolorze, czyli napisów?

Opublikowano

Tworzysz image z białym tłem, i potem w imagesearch jest parametr, który określa jaki kolor z twojego obrazka ma uważać za przeźroczysty. Ustawiasz go na biały i będzie go ignorował, czyli przy szukaniu obrazka, nie będzie sprawdzał tych pixeli, które są białe na twoim obrazku. Możesz tak zrobić z każdym kolorem

Opublikowano

Dzięki to już coś, że można zrobić coś takiego :D.

No ale w helpie AutoIt'a nie ma nic o ImageSearch :/.

Mam to:

 $Lol = _ImageSearch("C:\lol.bmp", 1, $xr, $yr, 1)

Gdzie mam podać ten kolor, który ma być ignorowany? Na samym końcu zaraz po "1"?

Opublikowano

W helpie nic o tym nie będzie bo to jest UDF, nie tworzony przez twórców autoit i nie wpisali tego do helpa. Wejdź sobie w imagesearch.au3 i tam masz wszystkie funkcji dokładnie opisane, parametry, zwracane wartości, tak jak w helpie.

Opublikowano

Mam coś takiego:

 

Func Start()
Global $od, $do
$Test = _ImageSearch("C:\odpr_na_miecze.bmp", 1, $od, $do, 1, 0xffffff)
	If $Test = 1 Then MouseMove($od, $do)
EndFunc

 

I gdy uruchamiam funkcję to zamiast najechać na mój obrazek to najeżdża za każdym razem prawie w lewy górny róg ekranu. Czemu tak się dziej coś źle zrobiłem?

Opublikowano

Orientuje się ktoś dlaczego tak się dzieje? Co mam nie tak?

Może tak spróbuję jeszcze: Mam napis zielonymi literami. Tło wokół niego ciągle się zmienia. Jak zrobić, aby szukał tylko napisu z zielonymi literami, a ignorował zmieniające się tło?

Proszę dam + za pomoc.

Opublikowano

Jak wcześniej pisałem, w Metin2 mam takie napisy, a tło dookoła nich jest przeźroczyste i się ciągle zmienia, a wygląda to tak:

 

beztytuuqvz.png

 

Mam taki kod:

 

Func Start()
       Global $od, $do
       $Test = _ImageSearch("C:\odpr_na_miecze.bmp", 1, $od, $do, 1, 0xffffff)
               If $Test = 1 Then MouseMove($od, $do)
       EndFunc

 

A "C:\odpr_na_miecze.bmp" wygląda tak:

 

odprnamiecze.png

 

I nie najeżdża mi na obrazek tylko w lewy górny róg ekranu (prawie).

Opublikowano

Kurde sam jestem ciekaw rozwiązania...

Ale dobrze kombinujesz hancoock ^^

Albo raczej: wiem CO kombinujesz ;) Taki bot to byłoby cudo...

 

Co do tego problemu, to może po prostu nie znajduje tego, albo coś nie tak z obrazkiem...

Albo popełniłeś jakąś gafę, bo jeśli ma się pokazać ten bon to trzeba najpierw najechać na item myszką.

$Test = _ImageSearch("C:\odpr_na_miecze.bmp", 1, $od, $do, 1, 0xffffff)

I czemu to ma klikać na bon? Jak "zjedziesz" myszką z przedmiotu to całe info o bonach znika.

Dumny członek MPCforum od 09 czerwca 2009 ;)

Opublikowano

To nie ma klikać na przedmiot tylko na niego najechać i sprawdzić czy jest bon :).

Zresztą wiem o co Ci chodzi, ale ja to testowałem tak dla pewności w paint czy na to najedzie i nie działa :/.

Opublikowano

Wszystko wygląda na prawidłowe, nie wiem o co chodzi. Może popełniłeś jakiś inny błąd?

 

@edt. Spróbój zwiększyć tolerancje. przed ostatni parametr

Opublikowano

Zwiększyłem i dalej nie działa. Może ktoś, spróbuje czy u niego działa, ponieważ nie wiem czy u mnie coś nie tak, a może obrazek powinien być w png?

Opublikowano

Dołączam się do pytania.

PS.Hancoock1995 napisz na gg wysłałem ci na PW może mi będzie działać.

Dumny członek MPCforum od 09 czerwca 2009 ;)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...