Archiwum
- LATANIE W KATARZE
- Przyznaj to ,przyznaj tamto ... czyli ... ?
- Telewizory 3D i odtwarzacze Blu-ray 3D w USA, czyli ogromna ofensywa marketingowa i r
- dot A i dot U, czyli nowe, cienkie notebooki od Packard Bell
- Mass Effect 3, Dragon Age II oraz Dead or Alive 5 - czyli plotek o E3 ciąg dalszy
- Bitwa z żołnierzami Imperium, czyli nowy film z gry Star Wars: The Old Republic
- AMD Fusion, czyli procesor centralny i grafika DirectX 11 w jednym układzie
- Instalowanie gier i system osiągnięć w 3DS? Czyli plotek o nowej konsolce Nintendo ci
- Sterowanie systemem Windows za pomocą programu NirCmd (Windows XP, Vista, 7)
- ASUS Eee PC 1015T, czyli netbook z AMD i ATI na pokładzie
- Hyper-X blu, czyli nowa seria modułów pamięci RAM, od firmy Kingston
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- fotocyk.pev.pl
Cytat
Długie szaty krępują ciało, a bogactwa duszę. Sokrates
I byłem królem. Lecz sen przepadł rankiem. William Szekspir (właść. William Shakespeare, 1564 - 1616)
Dalsza krewna: Czy śmierć to krewna? - życia pytasz się kochanie, tak krewna, ale dalsza, już na ostatnim planie. Sztaudynger Jan
Dla aktywnego człowieka świat jest tym, czym powinien być, to znaczy pełen przeciwności. Luc de Clapiers de Vauvenargues (1715 - 1747)
A ludzie rzekną, że nieba szaleją, a nieba rzekną: że przyszedł dzień Wiary. Cyprian Kamil Norwid (1821-1883)
aaaaLATANIE W KATARZEaaaa
Dzieńdobry, cześć i czołem!Dzisiaj zgodnie z obietnicą będzie o hotkey'ach. Pewnie wielu z was już poszperało w pomocy AutoIT i znalazło (nie)wspaniałą funkcję (HotKeySet()). Zobaczmy jak się ona sprawdza w praktyce, modyfikując kod z poprzedniej lekcji:
Opt('PixelCoordMode', 2)
HotkeySet("{HOME}", "Lowic_czas()")
while 1
WEnd
Func Lowic_czas()
while 1
$ilosc=4
Dim color[$ilosc]
Send("{F3}")
Send("{F4}")
while 1
for $i=0 to ($ilosc2)-1 step +1
$color[$i*2]=PixelGetColor(150+$i, 150)
$color[$i*2+1]=PixelGetColor(150, 150+$i)
Next
for $i=0 to 4 step +1
if Not($color[$i]<=0xFFFFFF and $color[$i]>=0xDDDDDD) then
ContinueLoop(2)
else
ExitLoop(2)
endif
Next
WEnd
WEnd
EndFunc
No i świetnie! Przyjrzyjmy się wyczynom naszego programu. Nie dość, że łowi ryby, to jeszcze zaczyna kiedy chcemy. mam nadzieję, że nie będzie problemów z dodaniem funkcji kończącej program wraz z hotkeyem. oczywiście: "Opt('PixelCoordMode', 2)" utwierdza nas w przekonaniu, że współrzędne w skrypcie zgrywają się ze współrzędnymi z Au3Info.
Pewnie wielu z was zadaje sobie pytanie: "Dlaczego zakładam osobną lekcję o hotkey'ach?". Ano, żeby się nie rozpisywać:
[Only registered and activated users can see links. Click Here To Register...]
Łooooł! 97%?! (fakt, przy moim procku, to nie jest wyczyn ;]). Przecież to marnotrawstwo cennych zasobów. Taki skrypt spowoduje, ze gra będzie się tła(:)) i nie będzie prawidłowo łowił ryb. Spróbujmy użyć innej funkcji. Może jakaś funkcja, która sprawdza czy dany klawisz jest wciśnięty? Jeśli dobrze szukamy, to bez problem znajdujemy odpowiednią funkcję:
_IsPressed($sHexKey [, $vDLL = 'user32.dll']) $sHexKey, to wartość hexowa, określająca klawisz. Pełna lista klawiszy dostępna jest oczywiście w pomocy AutoIT. Przekształćmy zatem nasz kod:
Opt('PixelCoordMode', 2)
while 1
if _IsPressed(0x24) then
Lowic_czas()
WEnd
Func Lowic_czas()
while 1
$ilosc=4
Dim color[$ilosc]
Send("{F3}")
Send("{F4}")
while 1
for $i=0 to ($ilosc2)-1 step +1
$color[$i*2]=PixelGetColor(150+$i, 150)
$color[$i*2+1]=PixelGetColor(150, 150+$i)
Next
for $i=0 to 4 step +1
if Not($color[$i]<=0xFFFFFF and $color[$i]>=0xDDDDDD) then
ContinueLoop(2)
else
ExitLoop(2)
endif
Next
WEnd
WEnd
EndFunc
Sprawdźmy! owszem działa jak należy. Drugi test:
[Only registered and activated users can see links. Click Here To Register...]
No... trochę mniej, ale nadal nas to nie zadowala. pewnie zauważyliście, że użycie CPU skacze, ale mi akurat udało się uchwycić taką wspaniałą wartość. Teraz pomyślmy. Co robi nasz program. Sprawdza, czy został wciśnięty klawisz, jeśli nie, to... Sprawdza znowu! i tak w kółko. nawet do kilkudziesięciu tysięcy razy na sekunde. Nasz procek musi się nieźle namęczyć, żeby wypocić taką ilość obliczeń. Dlatego właśnie, spróbujemy mu trochę zmniejszyć tempo pracy. Jak tego dokonamy? Każemy mu się przespać przez chwilę. Dajmy mu najpierw pół sekundy("Sleep(500)"). Łooooooooł! Zużycie CPU 0%. Skoro teraz obliczenia nie sprawiają mu trudności zwiększmy jego precyzje. zmniejszając czas odpoczynku, do 0,1s("Sleep(100)"). Dalej 0%. No to co?! Zaszalejemy sobie?! Wpiszmy: "Sleep(1)" Wyniki widać na SS:
[Only registered and activated users can see links. Click Here To Register...]
Wow(zakrzyczną zagorzali gracze). nawet przy międzyczasie 0.001s zużycie procesora spada do 0. niektórzy pewnie powiedzą, że może to spowodować, że program 'nie łapnie' jakiegoś klawisza. Tak? To spróbujcie naciskać jeden klawisz krócej niż przez 0.001s!
Mam nadzieję, że wyciągnęliście odpowiednie wnioski. Zawsze sprawdzajcie ile zasobów zżera waz program. Teraz, po dodaniu okienka z konfiguracjami, będziecie gotowi, do zaprezentowania znajomym swojeo bota, ale to nie wszystko. W następnej części opiszę wam jak tworzyć menu główne, tray'a i kontekstowe. Zaszpanujcie na maxa ;].
Serdecznie życzę sukcesów programistycznych w przyszłośći.
Byłbym niezmiernie wdzięczny, gdyby ktoś zechciał wrzucić Screeny, bo informatycy, to z natury leniwe bestie :].
Zezwalam na kopiowanie poradnika tylko z dołączonym linkiem i BANNEREM swiata gier! (tego serwisu) i oczywiście tylko i wyłącznie z tym dopiskiem.
Pozdrawiam:
WaY
to tez nie dziala ;/