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

Rozdzielczosci


Rekomendowane odpowiedzi

Opublikowano

Witam,otóż mój problem polega na tym:stworzyłem bota(dla siebie) lecz myślę tak aby w końcu dodać coś PIERWSZEGO I WŁASNEGO. Jak pisałem wyżej zrobiłem go dla siebie więc spoko działa, lecz zapewne nie wszyscy mają taką rozdzielczość jak ja więc okno gry również się zmieni. I tu jest problem. W jednej funkcji mojego bota są potrzebne współrzędne.Jeśli u mnie dajmy na to pole do wpisania linku jest na x:100,y:100 u kogoś może być x:150,y:150 więc da się jakoś z tego wybrnąć?

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

są funkcje którymi pobierasz rozdzielczość okna, ew. macro do rozdzielczosci ekranu

dzięki rozdzielczości, zrobisz sobie stałą, którą będziesz mnożył wartości wpisane, tak aby działało uniwersalnie

moge ci zrobić przykład bo nudy :D

Opublikowano

są funkcje którymi pobierasz rozdzielczość okna, ew. macro do rozdzielczosci ekranu

dzięki rozdzielczości, zrobisz sobie stałą, którą będziesz mnożył wartości wpisane, tak aby działało uniwersalnie

moge ci zrobić przykład bo nudy :D

dałbyś rade to jakoś wytłumaczyć? Ja mam 1024x768 i "punkt jest na jakieś wspolrzednej",ale na innej rozdzielczosci beda juz inne wspolrzedne tego samego punktu.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

Przykładowo masz rozdzielczość 1000x500 i klikasz 1 punkt w 100x50 i 2 punkt w 230x65

Więc ustalasz sobie jedną rozdzielczość niech będzie ta 1000x1000

$true1_x = 100

$true1_y = 50

$true2_x = 230

$true2_y = 65

Następnie każdą inną dzielisz przez 1000 i 500

$now1_x = @DesktopWidth / 1000 * $true1_x

$now1_y = @DesktopHeight / 500 * $true1_y

$now2_x = @DesktopWidth / 1000 * $true2_x

$now2_y = @DesktopHeight / 500 * $true2_y

 

Czyli w twoim wypadku stala rozdzielczosc:

$true_x = 1024 ;rozdzielczosc u ciebie
$true_y = 728 ;rozdzielczosc u ciebie
$true1_x = 100 ;punkt u ciebie
$true1_y = 100 ;punkt u ciebie
$now_x = @DesktopWidth ;rozdzielczosc u usera
$now_y = @DesktopHeight ;rozdzielczosc u usera
$now1_x = $now_x / $true_x * $true1_x ;punkt u niego
$now1_y = $now_y / $true_y * $true1_y ;punkt u niego
Proste..

/ GA-970A-UD3 / FX-6300 / Sapphire Xtreme 5830 / OCZ ZS 550W / Brutus M23 /

| MPC Coders Team | MPC Gold Member | C#, C++, PHP, (N)ASM, AutoIT, Python, Java |

Opublikowano

Może i proste ale ja w tym zaawansowany nie jestem.Czyli do bota musze uzyc tylko z zmiennymi rozdzielczosciami.

@Edit

Global $mojarozdz_x, $mojarozdz_y
Global $mojpkt_x, $mojpkt_y
Global $nowarozdz_x, $nowarozdz_y
Global $jegopkt_x, $jegopkt_y
$mojarozdz_x = 1024 ;moja rozdzielczosc
$mojarozdz_y = 768 ;moja rozdzielczosc
$mojpkt_x = 820 ;punkt na mojej rozdzielczosci
$mojpkt_y = 20 ;punkt na mojej rozdzielczosci
$nowarozdz_x = @DesktopWidth ;rozdzielczosc zmieniona
$nowarozdz_y = @DesktopHeight ;rozdzielczosc zmieniona
$jegopkt_x = $nowarozdz_x / $mojarozdz_x * $mojpkt_x ;obliczenie pkt na nowej rozdzielczosci
$jegopkt_y = $nowarozdz_y / $mojarozdz_y * $mojpkt_y ;obliczenie pkt na nowej rozdzielczosci
MsgBox(0, "Found!", "na rozdzielczosci: "&$mojarozdz_x&"x "&$mojarozdz_y)
MsgBox(0, "Found!", "pozycja punktu wynosi x: "&$mojpkt_x&"y: "&$mojpkt_y)
MsgBox(0, "Found!", "na rozdzielczosci: "&$nowarozdz_x&"x "&$nowarozdz_y)
MsgBox(0, "Found!", "pozycja punktu wynosi x: "&$jegopkt_x&"y: "&$jegopkt_y)

Mając coś takiego gdy zmienie rozdzielczosc zle pokazuje.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano
$poczatkowyx= 800
$poczatkowez = 600
$punktx = 50
$punktz = 50
$stalax = $punktx / $poczatkowyx
$stalaz = $punktz / $poczatkowez
$zmiennax = @DesktopWidth * $stalax
$zmiennaz = @DesktopHeight * $stalaz
msgbox(0,"",$zmiennax & " " & $zmiennaz)
 

obliczasz procent($stala), a potem mnozysz przez aktualna rozdzialke($zmienna)

Opublikowano

Moje na to samo wychodzi jacku : P

 

Dowody, że moje działa:

http://puu.sh/28gMa

http://puu.sh/28gMD

Kodzik tylko z dodanym zaokrąglaniem:

$true_x = 1024 ;rozdzielczosc u ciebie
$true_y = 728 ;rozdzielczosc u ciebie
$true1_x = 100 ;punkt u ciebie
$true1_y = 100 ;punkt u ciebie
$now_x = @DesktopWidth ;rozdzielczosc u usera
$now_y = @DesktopHeight ;rozdzielczosc u usera
$now1_x = Round($now_x / $true_x * $true1_x) ;punkt u niego
$now1_y = Round($now_y / $true_y * $true1_y) ;punkt u niego
MsgBox(0,"x",$true_x & ":" & @DesktopWidth & @CRLF & $true1_x & ":" & $now1_x)
MsgBox(0,"y",$true_y & ":" & @DesktopHeight & @CRLF & $true1_y & ":" & $now1_y)

/ GA-970A-UD3 / FX-6300 / Sapphire Xtreme 5830 / OCZ ZS 550W / Brutus M23 /

| MPC Coders Team | MPC Gold Member | C#, C++, PHP, (N)ASM, AutoIT, Python, Java |

Opublikowano

@2Up

$mojarozdz_x = 1024 ;rozdzielczosc poczatkowa
$mojarozdz_y = 768
$mojpkt_x = 820 ;moj punkt
$mojpkt_y = 20
$moje_x = $mojpkt_x / $mojarozdz_x;nazwales to stala
$moje_y = $mojpkt_y / $mojarozdz_y
$nowarozdz_x = @DesktopWidth ;rozdzielczosc u usera
$nowarozdz_y = @DesktopHeight ;rozdzielczosc u usera
$jegopkt_x = $nowarozdz_x * $moje_x;punkt u niego
$jegopkt_y = $nowarozdz_y * $moje_y * $mojpkt_y ;punkt u niego
MsgBox(0, "Found!", "na rozdzielczosci: "&$mojarozdz_x&"x "&$mojarozdz_y);pokazuje pierwotna rozdzielczosc
MsgBox(0, "Found!", "pozycja punktu wynosi x: "&$mojpkt_x&"y: "&$mojpkt_y);i wspolrzedne
MsgBox(0, "Found!", "na rozdzielczosci: "&$nowarozdz_x&"x "&$nowarozdz_y);tutaj juz wykryta rozdzielczosc
MsgBox(0, "Found!", "pozycja punktu wynosi x: "&$jegopkt_x&"y: "&$jegopkt_y);przeliczone wspolrzedne

Lecz to jakoś źle pokazuje.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

Tak do okienka.Ale zmieniając rozdzielczość zmienia się okienko więc chyba to samo?Nie biorąc pod uwagę funkcji cały ekran

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

okno gry ma często DWA wymiary z belką i bez belki

 

w pixelku parametr 2 użyć

 

Opt("PixelCoordMode", par)

Ustala system współrzędnych w funkcjach związanych z odczytem wartości pikseli (PixelGetColor, PixelChecksum, PixelSearch).

par = 0 - współrzędne względne do aktywnego okna

par = 1 - współrzędne bezwzględne całego ekranu (wartość domyślna)

par = 2 - współrzędne względne do obszaru roboczego aktywnego okna (pominięta ramka i belka)

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Tak ale własnie nie w tej grze.Ona jest jak przeglądarka. tylko zmniejszona albo zmaksymalizowana(bla bla bla jak to tak się pisze)

Tylko nie wiem dlaczego szukanie obrazków na malym dziala (pod to robilem) a na powiekszone nie dziala (chociaz obrazki sa takie same,wymiary również)

Nie pixelsearch tylko imagesearch:)

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

no to moja wtopa, ale się przyda na przyszłość na pewno

 

 

źle podeszłe do tego i wytłumaczyłeś w czym problem, w przeglądarce fizycznie nie zmienia sie rozmiar widocznego obrazu co najwyżej zmniejsza/zwiększa sie POLE szukania

 

inna sprawa to indywidualne ustawienia użytkownika dla strony. wyszukiwane obrazki musiał by sobie robić sam dla swoich ustawień

 

wyszukiwanie musisz ustawić z uchwytem dla konkretnego okna w którym szuka, wtedy nie trzeba robić żadnych korekcji na rozmiar

 

domyślnie szukać zaczyna NA PULPICIE od pozycji 0,0

 

 

do funkcji musisz użyć _ImageSearchArea dla którego koordynaty obszaru szukania bez problemu można pobrać WinGetPos ( pozycja okna ) i WinGetClientSize ( pozycja okna + rozmiar okna i masz zakres szukania )

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

BOT DO GRY.Więc może sprobujemy na wielkość okna gry?

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

nawet nie ma co próbować jak się kompletnie nie ma pojęcia na czym się robi

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Wiem na co sie robi tylko nie konczymy i sie gubimy.Mam sobie gre:normalnie o małych wymiarach,gdy dam zmaksymalizowanie rozszerza sie przykrywajac tapete.Paski z nazwą/startem nadal są

Przepraszam za jakość ale inne sie nie chcialy wrzucić. Zdj są z rozdzielczosci 1024x768.

Chcę aby rozdzielczosc mogła być zmienna

post-112334-0-18560000-1361869620_thumb.jpg

post-112334-0-38346400-1361869625_thumb.jpg

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

Ok mam pobraną rozmiar okna lecz jak to przeliczyć?

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

przeczytaj co wcześniej napisałem

potem WinGetClientSize i obliczyą zakres szukania

zazwe okna znasz ty.... bo ją zamalowałeś ;/

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

To już nie rozumiem. Daje sobie WinGetPos pobieram rozmiar okna Notatnika dajmy na to.

Zwraca mi rozmiar oraz położenie.

$size = WinGetPos ("Bez tytułu - Notatnik") ;sprawdza
MsgBox(1, "Aktualny rozmiar okna gry (width,height) : ", $size[0] & " " & $size[1]) ;msgbox o polozeniu gornego lewego rogu notatnika
MsgBox(1, "Aktualny rozmiar okna gry (width,height) : ", $size[2] & " " & $size[3]) ;msgbox o rozmiarze okna notatnika

Pracuje nad tym aby wyszukało ten czarny punkt pod minimalizacją (imagesearch daje mi wspołrzędne.Te współrzędne porównuje tam do jakiś,jeśli się zgadza coś robi.Gdy zmienie rozdzielczość polozenie punktu jest inne wiec porownujac nie zgodzi się. A nie chce robić 154564894 rozdzielczosci bo będzie mulić.

post-112334-0-36437900-1361872947_thumb.jpg

post-112334-0-49954000-1361873013_thumb.jpg

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

chodzi o to że zmieniając rozdzielczość zmieniają ci się wymiary ale wzorzec wyszukiwania jest stały i działa tylko dla jednej rozdzielczości. więc nie będzie działać dla różnych wymiarów !

 

 

do szukania w konkretnym oknie użyj _ImageSearchArea położenie i wymiary okna znasz

 

nadal nie wiemy co jest w oknie ! za cholerę nie można ci pomóc idąc twoim tokiem myślenia nie wiedząc czego chcesz

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Owszem też tak myślałem ale jednak cześć okna której szukam jest taki sam.Wyszukuje obrazek zwraca kordy lecz ,te kordy na każdej rozdzielczosci są inne.

 

Więc potrzebuje zrobić tak:

  • wykrywa rozdzielczość -to umiemy
  • znajduje obrazek -robi to
  • zwraca mi polozenie obrazka -robi
  • lecz polożenie obrazka jest zmienne (przez zmiane rozdzielczosci)
  • Wiec czy da sie policzyc na jakim polozeniu bedzie na innej rozdzielczosci?

Chyba ze zrobic tak ze sprawdza rozdzielczosc i potem przekierowuje aby porownywalo z wspolrzednymi pod ta rozdzielczosc lecz wtedy musze spisac wszystkie mozliwe rozdzielczosci-bedzie troche mulic

 

Na rozdzielczosci 800x600 punkt bedzie na x 100 y 100,lecz na rozdzielczosci 1500x1000 punkt bedzie na x 150 y 150.

Wiec zrobic ze jesli rozdzielczosc jest "..." przeliczy gdzie bedzie ten punkt.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...