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

Skrypt nie przytrzymuje spacji


Rekomendowane odpowiedzi

Opublikowano

Mam problem z kodem mojego skryptu, mianowicie skrypt powinien trzymac spacje do momentu pojawienia sie w danym miejscu pikselu o odpowiednim kolorze. Niestety caly czas podbija spacje nawet jak naciskam ja manualnie. Kombinuje juz kilka godzin niestety bez efektu, moze ktos zerknac i powiedziec gdzie tkwi problem?

Z gory dziekuje

HotKeySet("{F1}", "Start")
HotKeySet("{F2}", "End")

$P1=true
Sleep(500)

While 2
   Sleep(1000)
WEnd

Func start()
    while 1
    if $P1 then
    Work()
    $P1=true
    EndIf
 Wend
 EndFunc

Func Work()
				$spacja = PixelSearch(521,483,541,503,0x60C4EE,20)
					If Not @ Then
					Send("{SPACE up}")
					Sleep(200)
                                        Else
                                        Send("{SPACE down}")
					EndIf

				$esc = PixelSearch(757,362,794,394,0x7C6A51,20)
				        If Not @ Then
					Send("{ESC}")
					EndIf
EndFunc

Func End()
   Exit 0
EndFunc
Opublikowano

@bachado

Po co ci ta zmienna $P1 skoro nigdy jej nie używasz, bo zawsze jest równa true i tak?

W funkcji Work() jeśli nie ma pixelu o danym kolorze to wciskasz spacje, jak jest to ją podnosisz, nie powinno być na odwrót? Jak dla mnie to tego "else" nie powinno tutaj w ogóle być.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

funkcja Work powinna trzymac spacje do momentu az pojawi sie piksel o zadanym kolorze, po czym podbija spacje na 2 msek i tak w kolko, do momentu $esc gdzie po pojawienu sie innego odpwiednieg piksela naciska escape i znow powinno spacje trzymac...

$esc dziala poprawnie

Opublikowano

@bachado

Po co ci ta zmienna $P1 skoro nigdy jej nie używasz, bo zawsze jest równa true i tak?

Po co w ogóle tam jest if.

 

 

funkcja Work powinna trzymac spacje do momentu az pojawi sie piksel o zadanym kolorze, po czym podbija spacje na 2 msek i tak w kolko, do momentu $esc gdzie po pojawienu sie innego odpwiednieg piksela naciska escape i znow powinno spacje trzymac...

$esc dziala poprawnie

Pomyśl co twój kod robi, ciągle uruchamia funkcję Work()

Która:

1. Szuka piksela

2a. Znajdzie go, to podnosi spacje, więc nic nie wysyła przez 200ms.

2b. Nie znajdzie go, to wciska spacje.

3. Znajdzie kolejny piksel to wciśnie esc i kończy wciskać spacje.

 

Z tego wynika, że jeśli pierwszy piksel jest to nigdy spacja nie zostanie wciśnięta.

 

Ps. te zmienne nie są ci potrzebne, przy pikselsearch.

TuByłaSygnatura.png

Opublikowano

Po co w ogóle tam jest if.

@1373230489-U611928.pngVereX.

Właśnie o to pytam :yay:

 

@bachado

Dobra, może lepszym sposobem byłoby użycie jakiegoś postmessage, może dobrałeś zły kolor pixela, może "tolerancja" pixela jest za duża?

Inna sprawa że pewnie wystarczy przytrzymać ją na początku, tzn:

Send("{SPACE down}")
<pixelsearch>                    
If Not @ Then
Sleep(200)
Send("{SPACE up}")                    
EndIf

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

@bachado 

 

To daje np naciśnięcie spacji na 10s 

Opt("SendKeyDownDelay", 10000)
Send("{SPACE}")
Opt("SendKeyDownDelay", 1)

Domyślnie przez OPTY  jest naciskana prze 5 ms , czyli cokolwiek nie zrobisz od 

 Send("{SPACE down}")

po 5 ms będzie i tak spacja PUSZCZONA i zakończony EndIf . Logika się kłania. 

 

 

Autoit jest jednowątkowy i nie potrafi "trzymać spacji" i robić co innego w tym samym momencie ! 

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

Opublikowano

@Ktosiu

Da się to obejść - wystarczy sobie dodać taki drugi "wątek" - czyli zrobić osobny skrypcik, który będzie miał za zadanie tylko i wyłącznie przytrzymywać spację - wtedy w głównym skrypcie można skanować ekran i odpalać / zamykać skrypt pomocniczy gdy to potrzebne.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

To nie mój problem że może użyć AdlibRegister, wytłumaczyłem mu po prostu co robi skrypt i co może zrobić. Nie jestem tu od myślenia i pisania komuś skryptów. 

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

Opublikowano

@bachado 

 

Domyślnie przez OPTY  jest naciskana prze 5 ms , czyli cokolwiek nie zrobisz od 

 Send("{SPACE down}")

po 5 ms będzie i tak spacja PUSZCZONA i zakończony EndIf . Logika się kłania. 

 

To też nie jest prawda - źle rozumiesz to co jest napisane w dokumentacji (już to kiedyś sprawdzałem).

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...