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

Proźba o napisanie małego skryptu


Rekomendowane odpowiedzi

Opublikowano

Witam, chciałbym prosić osobę która właśnie czyta ten post, aby napisała mi mały skrypt. Po wciśnięciu danego klawisza, komputer wykonywał by takie coś trzyma W, oraz trzy razy kliknął strzałkę w dół.

Za działający skrypt daje Naj, plus!

Pomogłem? Daj like ;)

Opublikowano

 

Po wciśnięciu danego klawisza

While 1
    HotKeySet("{ESC}", "ExitScript")
    HotKeySet("1", "nazwafunkcji")
WEnd

Po naciśnięciu klawisza '1' skrypt przejdzie do funkcji, którą dodasz (prościej - zacznie działać), a po naciśnięciu escapa przestanie.

Teraz musisz dodać funkcje, wyłączającą skrypt.

Func ExitScript()
     Exit
EndFunc

Teraz wystarczy dodać do drugiej funkcji polecenia, odpowiedzialne za naciskanie klawiszy. Żebyś się czegoś nauczył nie wpisałem ich, tutaj jest wszystko.

Func nazwafunkcji()
POLECENIA
EndFunc

 

Opublikowano

A tu masz gotowy skrypt:

;definicja gorących klawiszy
HotKeySet("{F11}", "action")
HotKeySet("{ESC}", "end")

;pętla podtrzymująca działanie skryptu
Do
   Sleep(5)  ;mała pauza celem zmniejszenia obciążenia procesora
Until False

;funkcja powodująca wirtualne wciskanie klawiszy po naciśnięciu F11
Func action()
   BlockInput(1)     ;zablokowanie fizycznej klawiatury
   Send("{w DOWN}")  ;wciśnięcie i przytrzymanie klawisza w
   Send("{DOWN 3}")  ;3-krotne wciśnięcie strzałki w dół
   Send("{w UP}")    ;zwolnienie klawisza w
   BlockInput(0)     ;odblokowanie fizycznej klawiatury
EndFunc

;funkcja kończąca skrypt po wciśnięciu ESC
Func end()
   Exit
EndFunc

A jak chcesz się coś poduczyć, to poczytaj tu: https://pl.wikibooks.org/wiki/AutoIt/Przejmowanie_kontroli#Send

 

P.S. Prośba, a nie proźba.

  • 2 tygodnie później...
Opublikowano

Ja również mam prośbę, mianowicie potrzebuje skrypt który uruchamia się i zamyka pod jakimiś klawiszami,  po odczekaniu 5 sekund naciska LPM następnie po znalezieniu obrazka (lub pikseli) naciska PPM następnie po odnalezieniu innego obrazka naciska i przytrzymuje klawisz q przez ok 10s oraz po upływie tych 10s dodatkowo naciska klawisz f1 bądź jakiś inny jeżeli f1 nie może być . I żeby tak chodził w koło.

Za pomoc z góry dziękuje, morduje się z tym już trzeci dzień i nie mogę sobie poradzić. kolasadaniel@tlen.pl

Próbowałem coś takiego :

 


MsgBox(0, "hej", :) ")
HotKeySet("1","start")
HotKeySet("2","exits")
Global $x = False
While 1
Sleep(1000)
MouseClick("left")
Sleep(3000)
PixelSearch(778, 958,1046, 909, 0xF8A8FF
If $search = 1 Then
MouseClick ("right")
Sleep(2000)
PixelSearch(771, 956, 966, 1037, 0x050B10
If $search = 1 Then
Send("{q down}")
Sleep(8000)
Send("{q up}")

Sleep(8000)
EndIf
WEnd

Opublikowano

Ten skrypt to niestety nie mógł ci zadziałać. W zasadzie co wiersz to błąd.

 

MsgBox(0, "hej", :) ") - brak " przed buźką

 

HotKeySet("1","start")
HotKeySet("2","exits")

 - rejestrujesz funkcje gorących klawiszy, a nie definiujesz tych funkcji (na marginesie HotKeySet("1","start") nie jest chyba potrzebne)

 

Global $x = False - deklarujesz zmienną, której nigdzie nie używasz.

 

PixelSearch(778, 958,1046, 909, 0xF8A8FF - brak zamknięcia nawiasu na końcu, druga współrzędna Y powinna być większa od pierwszej,
czyli prawdopodobnie powinno być: PixelSearch(778, 909, 1046, 958, 0xF8A8FF).

 

If $search = 1 Then - sprawdzasz wartość zmiennej  $search, której wcześniej ani nie zadeklarowałeś, ani nie nadałeś jej wartości. Zmienna ta więc de facto z punktu widzenia
skryptu nie istnieje. Nie może ona więc zawierać informacji, czy punkt o danym kolorze został znaleziony. Taką informację zawiera makro "@error". Powinno więc być:

If Not @error Then. Ponadto brak ENDIF kończącego instrukcję warunkową.

 

PixelSearch(771, 956, 966, 1037, 0x050B10 - brak zamknięcia nawiasu na końcu.

 

If $search = 1 Then - jak wyżej, ale tym razem masz ENDIF.

 

Ponadto rób wcięcia podkreślające zakres pętli, instrukcji warunkowych itp.

 

Oto poprawiony skrypt wykonujący czynności, które opisałeś:

MsgBox(0, "Hej", ":)")
HotKeySet("{ESC}","ExitScript") ;rejestrowanie funkcji kończącej skrypt po wciśnięciu ESC

While 1
   Sleep(1000)
   MouseClick("left")                              ;wciśnięcie lewego klawisza myszy
   Sleep(3000)
   PixelSearch(778, 909, 1046, 958, 0xF8A8FF)      ;szukanie piksela w prostokątnym obszarze ekranu
   If Not @ Then                              ;jeżeli nie ma błedu to znaczy, że piksel został znaleziony
      MouseClick ("right")                         ;wciśnięcie prawego klawisza myszy
      Sleep(2000)
   EndIf

   PixelSearch(771, 956, 966, 1037, 0x050B10)
   If Not @ Then
      Send("{q down}")                             ;wciśnięcie i przytrzymanie klawisza q
      Sleep(10000)
      Send("{q up}")                               ;zwolnienie klawisza q
      Send("{F1}")                                 ;wciśnięcie klawisza F1
   EndIf
WEnd

;definicja funkcji kończącej skrypt po wciśnięciu klawisza ESC
Func ExitScript()
   Exit       ;zakończenie skryptu
EndFunc

Skrypt w tej wersji wykonuje tylko to co opisałeś, ale nie znaczy że będzie robił to o czym myślałeś.

Jeżeli chcesz nauczyć się czegoś o programowaniu w AutoIt to polecam mój podręcznik na WIKIBOOKS.

Masz tam wszystko opisane od A do Z i to jeszcze w języku polskim: https://pl.wikibooks.org/wiki/AutoIt

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...