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

Jak napisać prostego bota działąjącego w tle?


Rekomendowane odpowiedzi

Opublikowano

Witam chciałbym napisać bota do gry przeglądarkowej(aby działał tak jakby w ukryciu) Czy jest w ogóle taka możliwość?

Dopiero zaczynam się uczyć przejrzałem kilka'kursów' gdzies wygoglowanych lecz moja wiedze jest na bardzo niskim poziomie

Od czego zacząć nauke według Was? Co mi bedzie potrzebne do pisania bota właśnie pod gry przeglądarkowe na co zwracać uwagę być może macie dla mnie inne rady.

 

Dostać kod to jedno a napisać swój który działa to drugie chciałbym napisać niezbyt zaawansowane boty wyłącznie dla siebie zawsze interesowało mnie jak to działa i chciałbym poznać tajniki działania od strony kodu.

 

Mam nadzieję iż zrozumiecie mnie i pomożecie mi ;)

Chciałbym z góry podziękować wszystkim którzy cokolwiek wniosą do mojego tematu.

Opublikowano

Napisz co ten bot miałby robić.

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

Przykład może być na grze typu pokewars.pl gra dośc prosta przynajmniej tak mi sie wydaje. Chciałbym aby bot wynonywał takie jakby ataki. Jeśli miałby mniej niż 80% hp to klikal leczenie i tak w kółko ;P

takie coś na początek bym chciał ogarnąć

Opublikowano

leczenie do któregoś lvl jest za free więc nie bedzie problemu... chciałbym nauczyć się od prostych gier zastanawiam się czy to nieco za trudne nie jest. Może coś innego?

Opublikowano

Zarejestrowałem się, ale za dużo tam opcji - nie chce mi się szukać jak wygląda walka - opisz ją. Wygląda jednak na to, że walka jest w pełni "tekstowa" - takiego bota nie robiłem (odsyłam do biblioteki wskazanej przez eXnR).

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

$oIE = _IECreateEmbedded()

obj = GUICtrlCreateObj($oIE, lewo, góra, wysokosc, szerokosc)

linki w górę

Opublikowano

dziena za dotychczasową pomoc ;D dopiero się uczę, próbuję od strony praktycznej poznać co jak działa.

Nie mam zielonego pojęcia jak zrobić aby wyświetlić np ile życia ma pokemon w gui mojego okienka?

Jakiej funkcji szukać?

Opublikowano

Chcesz wyświetlić pasek żecia na podstawie pobranej ze strony liczby? Czy nie wiesz jak pobrać tą liczbę? Czy może jeszcze co innego? Napisz dokładniej.

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

Nie wiem jak pobrać w prosty sposób element który nie ma przypisanego name ani id - możesz natomiast pobrać zawartość całego bloku i potem wyciągnąć ta wartość korzystając z funkcji dla stringów:

 

- wyszukaj w pobranym bloku wyraz "Życie" za pomocą StringInStr() - > dostaniesz wskaźnik położenia tego wyrazu

- usuń lewą część stringu (wskaźnik z poprzedniego punktu + ilość znaków wyrazu Życie i wszystkich pozostałych znaków do szukanej wartości): StringTrimLeft()

- wyszukaj znak / kończący szukaną wartość: znowu StringInStr(),

- odrzuć niepotrzebną część po prawej (wskaźnik z poprzedniego punktu): StringTrimRight

 

No i masz czystą wartość życia;)

 

Sposób może mało elegancki ale zadziała (a nic innego mi nie przychodzi do głowy).

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

Mam problem nie potrafię sobie poradzić z pobieraniem danych ze strony czy to zycie czy inne punkty by dalej moc wykorzystać dane w celu automatyzacji mojego bocika.. Próbowałem sam dojść ale niestety nie idzie mi.

Opublikowano

Wrzuć to co masz do tej pory.

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

Mam problem jak odwołać się do konkretnej opcji w COMBOBOXIE

$combo1 = GUICtrlCreateCombo("Wybierz BOLE", 128, 80, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "POKE BOLE|NEST + NES|Jakieś inne xd")
Opublikowano

Spróbuj skorzystać z tego przykładu:

#include <GUIConstants.au3>

Opt("GUIOnEventMode", 1) ; ważne! przełączenie w tryb obsługi zdarzeń
Local $link = "link1" ; domyślna wartość dla pola combo

GUICreate("Test")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEButton")

;**************To możesz pominąć jak chcesz tylko przypisać zmienną
Local $text = GUICtrlCreateLabel ( "Aktualny: ", 20, 20)
Local $value = GUICtrlCreateLabel ( $link, 20, 50)
;******************************************************************
Local $hCombo = GUICtrlCreateCombo("Pierwszy", 128, 80, 105, 25, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData(-1, "Drugi|Trzeci", "Pierwszy") ;pozostałe pozycje oraz ustalenie pozycji domyślnej
GUICtrlSetOnEvent($hCombo, "ComboEvent") ; najważniejsza rzecz - przypisujesz funkcję do zdarzenia związanego z zaznaczeniem opcji w combo

GUISetState()

While 1
    Sleep(100)
WEnd
 
Func ComboEvent() ; a tu funkcja jaka ma być wykonywana za każdym razem gdy user zmieni combo
    $pole = GUICtrlRead($hCombo)
    Switch $pole
        Case "Pierwszy"
            $link = "link1"
        Case "Drugi"
            $link = "link2"
        Case "Trzeci"
            $link = "link3"
    EndSwitch
    ;**************To możesz pominąć jak chcesz tylko przypisać zmienną
    GUICtrlSetData ($value, $link)
    ;******************************************************************
EndFunc

Func CLOSEButton()
    Exit
EndFunc

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

Polecał bym Ci wpierw zapoznanie się z KODA, dzięki niej nie będziesz się męczył jak ja kiedyś pół dnia by zrobić GUI.

Jest to taki Edytor dzięki któremu będziesz mógł szybciej zrobić GUI, przy czym więcej czasu poświęcisz na pisanie kodu.

Jak czegoś nie wiesz to pytaj tutaj, zawszę znajdzie się jakiś geniusz który Ci pomoże, lub zhejtuje a potem pomoże. :D

A no i najważniejsze, nie chodzi o to byś się uczył komend itd na pamięć, ważne jest żebyś wiedział co Ci potrzeba i żebyś myślał logicznie (Co jest najtrudniejsze).

Jeżeli nie wiesz na przykład jak należy odczytywać tekst z txt, to wpisujesz w google: AutoIT odczytywanie z Plików.

­

Opublikowano

o tym edytorze do gui wiedziałem zanim napisałem pierwsza linię kodu :P filmiki yt pomogły bo pewnie nie wiedział bym o tym, ale dzięki za pomoc chwilowo jestem od kilku dni w górach i projekt został wstrzymany do mojego powrotu :P najczęściej zaczynam od szukania w google jak coś zrobić lecz jeśli nie mogę znaleźć bądź nie potrafię tego dobrze ustawić to pisze albo na forum albo na gg do paru znajonych którzy oharniaja temat.

Opublikowano

Z jakimś programikiem który sekwencyjnie działa poradziłem sobie być może nie jest to full automat ale jakiś wspomagacz przy którym dość sporo się nauczyłem.

Ciag dalszy nauki - nie wiem od czego rozpocząć działanie na wartościach w grach przeglądarkowych. Czy to Pokewars ile zostało PTK AKCJI czy przykładowo w plemionach ile mamy surowców itd? Jak wyciągać te wartości bo myślę że dalej sobie poradzę a jeśli nie to będę dalej zadawał pytania.

Chcialbym podziękować wszystkim którzy pomogli mi do tej pory ;)

Opublikowano

Nie wiem jak pobrać w prosty sposób element który nie ma przypisanego name ani id - możesz natomiast pobrać zawartość całego bloku i potem wyciągnąć ta wartość korzystając z funkcji dla stringów:

 

- wyszukaj w pobranym bloku wyraz "Życie" za pomocą StringInStr() - > dostaniesz wskaźnik położenia tego wyrazu

- usuń lewą część stringu (wskaźnik z poprzedniego punktu + ilość znaków wyrazu Życie i wszystkich pozostałych znaków do szukanej wartości): StringTrimLeft()

- wyszukaj znak / kończący szukaną wartość: znowu StringInStr(),

- odrzuć niepotrzebną część po prawej (wskaźnik z poprzedniego punktu): StringTrimRight

 

No i masz czystą wartość życia;)

 

Sposób może mało elegancki ale zadziała (a nic innego mi nie przychodzi do głowy).

Za bardzo kombinujesz.

#include <String.au3>
_StringBetween ( $sString, $sStart, $sEnd [, $iMode = $STR_ENDISSTART [, $bCase = False]] )

https://www.autoitscript.com/autoit3/docs/libfunctions/_StringBetween.htm

TuByłaSygnatura.png

Opublikowano

Za bardzo kombinujesz.

#include <String.au3>
_StringBetween ( $sString, $sStart, $sEnd [, $iMode = $STR_ENDISSTART [, $bCase = False]] )

https://www.autoitscript.com/autoit3/docs/libfunctions/_StringBetween.htm

Rzeczywiście, z rozpędu napisałem własną funkcję ;) Dzięki za gotowca. Powinno to wyglądać tak:

_StringBetween ( $pobranyDiv, "Życie ", "/")

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

Wysłałem ci na gg ale wrzucam też tutaj - może się komuś innemu też przyda:

;###### POBIERANIE DOWOLNEGO TEKSTU ZE STRONY ######

#include <IE.au3>
#include <String.au3>
; PAMIĘTAJ: Zawsze (no prawie zawsze, ale tego nie musisz teraz wiedzieć) aby wynik funkcji nie poszedł "w próżnię" musisz ta funkcję przypisać do jakiejś zmiennej - wtedy zapiszesz w niej wynik działania funkcji.

; w przykładzie pobierzemy liczbę graczy z zakładki statystyki w grze Plemiona: https://pl94.plemiona.pl/stat.php

; do zmiennej $oIE (możesz ją nazwać dowolnie jak każdą zmienną) przypisujemy funkcję która zwraca uchwyt do obiektu ze stroną (funkcja ta przy okazji też otwiera tą stronę):
$oIE = _IECreate ( "https://pl94.plemiona.pl/stat.php" )

; Teraz możemy albo pobrać cały kod strony albo tylko fragment ze znacznika o określonym id, im mniejszy fragment pobierzemy tym lepiej.

; POBIERANIE CAŁEGO KODU STRONY:
$kodStrony = _IEBodyReadHTML ($oIE)

; POBIERANIE FRAGMENTU O OKRESLONYM ID (nie podaje konkretnego przykładu bo na plemionach wszystko jest niestety "luzem" i trzeba pobierać całość):
; $kodStrony = _IEGetObjById ( $oIE, "TuTrzebaWpisacIdElementu" ).innerhtml

; Teraz wycinamy interesujący nas fragment - w html kod wygląda tak:
;
; ...
; <table class="vis" width="98%">
;   <tr><th width="150px">Liczba graczy:</th><th>28.980</th></tr>
;   <tr><td>Liczba wiosek:</td><td>74.945 (2.59 na gracza) </td></tr>
;   <tr><td>Wioski gracza:</td><td>30.971</td></tr>
;   <tr><td>Wioski barbarzyńskie:</td><td>43.923</td></tr>
;   <tr><td>Osady koczownicze:</td><td>3.402</td></tr>
; </table>
; ...
;
; Musimy więc znaleźć unikalny tekst pomiędzy jakim znajduje się szukana wartość, wrzucamy to w funkcję _StringBetween i przypisujemy jej wynik do zmiennej (uwaga - zmienna ta będzie tablicą!):

$liczbaGraczy = _StringBetween ( $kodStrony, "Liczba graczy:</th><th>", "</th>")

; Jako, że zmienna jest tablicą to żeby wyświetlić jej zawartość trzeba podać numer elementu tablicy - u nas znalazlo tylko jeden wynik więc odwolujemy się do pierwszego elementu (uwaga: elementy tablicy są numerowane od 0):

MsgBox(0,"", $liczbaGraczy[0])


; oczywiście zamiast wyświetlać wartość w okienku tak jak zrobiłem to powyżej możesz pozyskaną wartość użyć w dowolny sposób

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" 

  • 3 tygodnie później...
Opublikowano

Wystarczy go nie wyświetlać, IE jest zintegrowany z systemem więc bez problemu bot działający na stronie działa w tle. 

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ę...