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

Oczekiwanie na zamknięcie.


Rekomendowane odpowiedzi

Opublikowano

Witajcie, chciałbym się Was o cos zapytać, ale najpierw pokażę kod

 

 

Func UpdatePlayer()

   Do

      $msg = GUIGetMsg()

      If $msg = $stop1 OR $msg = $stop2 OR $msg = $wyjdz1 OR $msg = $wyjdz2 OR $msg = $wyjdz3 Then ExitLoop

      $hp1 = _MemoryRead("0x07E99E84", $MemoryOpen)

      $hp2 = _MemoryRead("0x07E99E80", $MemoryOpen)

      $mp1 = _MemoryRead("0x07E99EFC", $MemoryOpen)

      $mp2 = _MemoryRead("0x07E99EF8", $MemoryOpen)

      $mp = Round(($mp1/$mp2) * 100)

      $hp = Round(($hp1/$hp2) * 100)

      $dHp = StringFormat('%.f' & "%", $hp)

      $dMp = StringFormat('%.f' & "%", $mp)

      GUICtrlSetData($text1, $dHp)

      GUICtrlSetData($text2, $dMp)

      GUICtrlSetData($text3, $hp1&"/"&$hp2)

      GUICtrlSetData($text4, $mp1&"/"&$mp2)

      GUICtrlSetData($PB1, $hp)

      GUICtrlSetData($PB2, $mp)

      Sleep(450)

   Until $msg = $GUI_EVENT_CLOSE OR $msg = $stop1 OR $msg = $stop2 OR $msg = $wyjdz1 OR $msg = $wyjdz2 OR $msg = $wyjdz3

 GUI()

EndFunc   ;==>Example

 

 

 

Jakiego rodzaju pętli użyć, by podczas jej wykonywania można było bez opóźnienia zatrzymać bota? O co mi chodzi? Widzicie, że sprawdzam 2 razy czy gracz nie kliknął któregos z buttonów, lecz muszę klikać +/- 7 sekund w button, żeby bot zaczaił, że chcę go zatrzymać. Wygląda to mniej wiecej tak - Odpalam, bot wykonuje to co jest w pętli Do...While, a ja muszę trafić w moment upienia - Sleep() - żebym mógł go wyłączyć.
Co powinienem zrobić, żeby bot zatrzymał się za pierwszym kliknięciem? Od razu mówię, że HotKeySet nie wchodzi w grę - chociaż się sprawdza.

 

Pozdrawiam.

Opublikowano

Global $Paused = False
HotKeySet("{F8}", "TogglePause")

HotKeySet("{F7}","UpdatePlayer")

 

 

 

Func UpdatePlayer()

   Do

      $msg = GUIGetMsg()

      If $msg = $stop1 OR $msg = $stop2 OR $msg = $wyjdz1 OR $msg = $wyjdz2 OR $msg = $wyjdz3 Then ExitLoop

      $hp1 = _MemoryRead("0x07E99E84", $MemoryOpen)

      $hp2 = _MemoryRead("0x07E99E80", $MemoryOpen)

      $mp1 = _MemoryRead("0x07E99EFC", $MemoryOpen)

      $mp2 = _MemoryRead("0x07E99EF8", $MemoryOpen)

      $mp = Round(($mp1/$mp2) * 100)

      $hp = Round(($hp1/$hp2) * 100)

      $dHp = StringFormat('%.f' & "%", $hp)

      $dMp = StringFormat('%.f' & "%", $mp)

      GUICtrlSetData($text1, $dHp)

      GUICtrlSetData($text2, $dMp)

      GUICtrlSetData($text3, $hp1&"/"&$hp2)

      GUICtrlSetData($text4, $mp1&"/"&$mp2)

      GUICtrlSetData($PB1, $hp)

      GUICtrlSetData($PB2, $mp)

      Sleep(450)

   Until $msg = $GUI_EVENT_CLOSE OR $msg = $stop1 OR $msg = $stop2 OR $msg = $wyjdz1 OR $msg = $wyjdz2 OR $msg = $wyjdz3

 GUI()

EndFunc   ;==>Example

 

 

 

Func TogglePause()
$Paused = Not $Paused
While $Paused
  Sleep(100)
WEnd
EndFunc

Opublikowano

To jak sobie wyobrażasz uruchomienie zatrzymania, telepatycznie?  

 

Podepnij pod pause akcje kliknięcia w przycisk. Sam sobie zrobiłeś problem wpieprzając do gui funkcje, zamiast robić osobne gui i funkcje 

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

Opublikowano

Przeczytaj kod - no smiało, ja poczekam.

 

Sam sobie zrobiłeś problem wpieprzając do gui funkcje, zamiast robić osobne gui i funkcje 

GUI jest w osobnej funkcji jakbys nie zauważył, a wywołanie GUI() jest za pętlą - czyli co - czyli to, że dopóki jednego z buttonów nie kliknę, program nie wychodzi z pętli.
Myslenie nie boli! :)

Opublikowano

To  ciebie  chyba nie boli, jakbyś nie zauważył wszystkie funkcje gui sa w tej samej pętli co sprawdzanie stanu pamięci więc skrypt musi wykonać pełen cykl  od

$msg = GUIGetMsg() 

by w końcu dojść do polecenia. 

Until $msg = $GUI_EVENT_CLOSE OR $msg = $stop1 OR $msg = $stop2 OR $msg = $wyjdz1 OR $msg = $wyjdz2 OR $msg = $wyjdz3
 

Bezproblemowo działający skrypt byłby rozbity na dwa osobne i niezależne, skrypt sprawdzający stan pamięci i odświeżający dopiero stan gui .

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

Opublikowano

I właśnie przez takich użytkowników jak Ty, coraz rzadziej mam ochotę odwiedzać te forum.
Problemu nie pomogłeś rozwiązać ani trochę, a ja nie mam przyjemności dalej konwersować z człowiekiem Twojego pokroju.
Problem nie rozwiązany, a temat można zamknąć.

Opublikowano

Podałem ci dokładnie to co chciałeś, rozwiązanie problemu z opóźnieniem wyłączenia skryptu a ty jeszcze narzekasz bo nie potrafisz zrozumieć swojego błędy w skrypcie?

Innej możliwości nie ma, w Autoit skrypt musi być wykonany według kolejności albo przynajmniej sprawdzany stan wykonywania poleceń po kolei by można  było sobie zatrzymać wykonywanie w dowolnym momencie. 

W twoim skrypcie dopiero ostatnie polecenie powoduje wyłączenie to chyba normalne że muszą się wczesniej wykonać wszystkie polecenia inne co sa przed nią 

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

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...