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

[Pytanie] Bot Do Grepolis


Rekomendowane odpowiedzi

Opublikowano

witam,

jestem nowym użytkownikiem tego forum. z programem autoit także nie miałem zbyt długiej styczności, bo zaledwie kilka dni. przestudiowałem te najprostsze poradniki i tutoriale.

 

potrzebuję pomocy ulepszenia bota do gry grepolis.

w tej chwili mam napisanego prostego bota, którego działanie opiera się tylko na trzech funkcjach:

mousemove, mouseclick i sleep. dziś zrobiłem do tego pętlę.. niestety nic więcej nie potrafię. :(

 

chcę zrobić takiego bota, który będzie działał w tle, tzn. żeby mi myszka nie chodziła, a ja mógł surfować po internecie i w ogóle korzystać z dobrodziejstw mojego komputera. w chwili obecnej jest to niemożliwe, bo myszka co jakiś czas się rusza, kilka i w ogóle. podobno da się napisać bota inaczej, by przeglądarka mogła być zminimalizowana.

 

mam MozRepl i FF.au3.

bot ma:

1. najeżdżać i klikać LPM na wioskę do farmienia.

2. kliknąć LPM drugi raz w tym samym miejscu(przycisk "żądaj" wyskakuje centralnie pod kursorem myszy, więc nie trzeba myszką ruszać).

3. /wyskoczy okienko/ bot ma najechać na napis "zażądaj" pierwszy z lewej(są cztery takie napisy, potem zrobię screeny) i kliknąć LPM.

4. najeżdża na kolejną wioskę do farmienia i powtarza czynności - wiosek jest pięć.

5. zapętla się i robi to od początku po jakimś czasie.

 

screeny:

SCREEN1 - na czerwono wioski, na które muszę klikać

SCREEN2 - po kliknięciu na którąś z wiosek wyskakuje takie menu, muszę kliknąć w zaznaczone kółko

SCREEN3 - wyskakuje tabelka, muszę wybrać opcję zaznaczoną strzałką

 

no i doszedłem do tego momentu:

#include<FF.au3>
_FFConnect()
sleep(500)
$wyrazenie = '/html/body/div/div[2]/div[4]/div/div/div/map/area[8]'
$xpath = _FFXPath($wyrazenie)
_FFClick($xpath)
sleep(1000) ; screen 1-DZIAŁA!



;//*[@id="claim_info"]
;//*[@id="context_menu"]
;'/html/body/div/div[7]/div/span'
;są


sleep(500)
$wyr = '/html/body/div/div[7]/div/span'
$xpath2 = _FFXpath($wyr)
_FFClick($xpath2)
sleep(500) ;screen 2-NIE DZIAŁA!



$w = '/html/body/div[8]/div[2]/div[5]/div[4]/div[2]/div/a'
$xp = _FFXpath($w)
_FFclick($xp) ;screen 3-DZIAŁA!
sleep(500)

 

screen 1 - klika mi na wioskę - OK!

screen 2 - klika na środkowe kółko - NIE DZIAŁA!

screen 3 - klika na przycisk żądaj - OK!

 

elementy do klikana badam firebugiem, przez wybranie "zbadaj element".

tylko, że mam problem ze zbadaniem drugiego elementu. :( w grze jak kliknę PPM na obrazek w kształcie koła z napisem "zażądaj"(jest na screenie) to gra odbiera to jak kliknięcie LPM i otwiera mi się okienko, a nie wyskakuje menu gdzie mogę wybrać "zbadaj element". ;/

trochę pokombinowałem i poszukałem w FireBugu i po najechaniu na ten kod podświetla mi właśnie te kółeczko, którego szukam.

kkoqp.jpg

 

 

jak widać są trzy linijki, wziąłem xpath każdej(są w kodzie programu jako komentarz) ale żadna nie działa!

 

 

jak to naprawić?

jak inaczej to zrobić? chcę, żeby bot pracował zminimalizowany - bez ruszania myszką.

może jakaś inna funkcja, mousesend, search image czy coś takiego?

 

 

z góry dziękuję za każdą odpowiedź.

Opublikowano

Hahahaha ..

Kurwa co to jest?

$wyrazenie = '/html/body/div/div[2]/div[4]/div/div/div/map/area[8]'
$xpath = _FFXPath($wyrazenie)
_FFClick($xpath)

 

Wystarczy to zrobić tak:

_FFClick(_FFXpath("/html/body/div/div[2]/div[4]/div/div/div/map/area[8]"))

 

$wyr = '/html/body/div/div[7]/div/span'
$xpath2 = _FFXpath($wyr)
_FFClick($xpath2)

 

_FFClick(_FFXpath("/html/body/div/div[7]/div/span"))

Opublikowano

a co mu szkodzi że robi taki zapis? wygodniejszy w razie poprawek a nawet łatwiejszy w dopasowaniu i użyciu tej samej zmiennej w innej funkcji

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Dżizas, testy gimnazjalne były dwa dni temu, a ty żeś teraz walnął taką rozprawkę...*

 

Zapomnij o 'klikaniu LPM' na elemencie DOMu. Nic tam nie klika myszką. Zostają tylko wyzwolone wirtualne eventy (kwestia terminologii).

 

Ogólnie radzisz sobie całkiem nieźle.

Spróbuj zamiast XPath'a

/html/body/div/div[7]/div/span

 

Obydwa z poniższych:

/html/body/div/div[7]/div
/html/body/div/div[7]

 

Kiedy klikasz myszką - ty, użytkownik - na to "kółeczko" - nie możesz być pewien jak są skonstruowane skrypty na stronie.

 

div[7], div[7]/div, div[7]/div/span -> te trzy elementy zajmują dokładnie ten sam obszar.

Skrypty strony mogą być powiązane z każdym z nich. Zwłaszcza, że event kliknięcia może być przesyłany w górę i w dół drzewa strony.

 

Jeśli żadne z tych dwóch nie zadziała, to czeka cię więcej zabawy i lekki kurs javascriptu, gdyż musiałbyś zinterpretować skrypty strony obsługujące te klknięcia.

 

 

 

* Chociaż i tak lepsze to niż tematy "nie działa. Zróbcie żeby tak, żeby było dobrze".

Ta sygnatura jest pusta.

Opublikowano

Dżizas, testy gimnazjalne były dwa dni temu, a ty żeś teraz walnął taką rozprawkę...*

 

Zapomnij o 'klikaniu LPM' na elemencie DOMu. Nic tam nie klika myszką. Zostają tylko wyzwolone wirtualne eventy (kwestia terminologii).

 

Ogólnie radzisz sobie całkiem nieźle.

Spróbuj zamiast XPath'a

/html/body/div/div[7]/div/span

 

Obydwa z poniższych:

/html/body/div/div[7]/div
/html/body/div/div[7]

 

Kiedy klikasz myszką - ty, użytkownik - na to "kółeczko" - nie możesz być pewien jak są skonstruowane skrypty na stronie.

 

div[7], div[7]/div, div[7]/div/span -> te trzy elementy zajmują dokładnie ten sam obszar.

Skrypty strony mogą być powiązane z każdym z nich. Zwłaszcza, że event kliknięcia może być przesyłany w górę i w dół drzewa strony.

 

Jeśli żadne z tych dwóch nie zadziała, to czeka cię więcej zabawy i lekki kurs javascriptu, gdyż musiałbyś zinterpretować skrypty strony obsługujące te klknięcia.

 

 

 

* Chociaż i tak lepsze to niż tematy "nie działa. Zróbcie żeby tak, żeby było dobrze".

 

 

niestety żaden z podanych przez ciebie xpathów nie działa. :(

jak na tym screenie:

kkoqp.jpg

najadę na ostatnią linijkę, czyli "<span>Zażądaj</span>" to nie podświetla mi na niebiesko tego kółeczka. jak najadę na linijkę/dwie wyżej to podświetla. czy ma to jakieś znaczenie?

 

zawsze na końcu ścieżki xpath jest wartość inna od reszty np w moich "area[8]" lub "a" czy też w niedziałającym kodzie "span".

może to ma wpływ?

nie rozumiem nic z tej strony:

_FFXpath

o co chodzi z

$sAttribute = "textContent"

? może to jakoś pomoże, doprecyzuje w co ma klikać?

 

 

mógłbyś się zarejestrować w tej grze i sam zobaczyć o co tam chodzi? myślę, że będzie łatwiej i szybciej rozwiązać problem. bardzo cię proszę. :)

Opublikowano

nie znam się w ogóle na tym całym kodowaniu czy też htmlu, ale z tego co wyczytałem na google to znacznik <span> używa się do rozciągania TEKSTU.

problemspan.jpg

 

czyli ten ffxpath odnosi się do tego żółtego napisu na czarnym tle na powyższym screenie. a nie do kółeczka. dobrze myślę?

Opublikowano

doinstalować tylko Gresemonke i użyć skryptów gotowych dla FF , bez potzreby robienia w autoit

chyba nawet niektóre skrypty sa po polsku

http://userscripts.org/search?cref=http%3A%2F%2Fuserscripts.org%2Fcse.xml&cof=FORID%3A9&q=Grepolis&x=0&y=0#859

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

no niestety widzę, że nie ma ekspertów na tym forum, większość wie tyle co ja, a ja jestem kompletnym laikiem. pojawia się problem, którego nie da się rozwiązać zmieniając jedną linijkę w kodzie i nagle nikt nic nie wie. :D :D temat można skasować, a autor posta wyżej chyba nie wie czym są sktypty z powyższej strony - albo ich kodu na oczy nie widział albo nawet nigdy ich nie używał.

Opublikowano

Czymkolwiek by one nie były, jest duża szansa, że spośród nich znajdziesz to, czego potrzebujesz - mianowicie odniesienie się do wskazanego elementu.

 

Osobiście w FF.au3 bawiłem się dość krótko, mogę natomiast z czystego javascriptu polecić funkcję

dispatchEvent()

 

Która służy do wyzwalenie eventów - w tym kliknięć, na danym elemencie DOMu strony.

 

https://developer.mozilla.org/pl/DOM/element.dispatchEvent

 

Dokumentacja nawet po polsku.

 

Odniesienie się do prawidłowego elementu to już kwestia znalezienia poprawnego XPatha. Listener eventów może być zagnieżdżony w dowolnym miejscu i nasłuchiwać w dół drzewa. (lub być umieszczonym bezpośrednio na elemencie w formie atrybutu onclick, jednak tutaj nie ma to miejsca).

 

Nie istnieje metoda (według standardowej specyfikacji) pozwalajca iterować przez istniejące eventListener'y.

 

Nie istnieje więc jednoznaczny sposób określenia do którego elementu należy się odnieść.

 

Z uwagi na nacisk położony na interfejs graficzny dogodny dla użytkownika, najefektywniejszy sposób poszukiwania znajdowałbym w obserwowaniu zachowań i sposobu formatowania stylów CSS.

Ta sygnatura jest pusta.

Opublikowano

zelgawis2 , to chyba tobie nawet się nie chciało sprawdzić skryptów bo jakoś grałem i nie miałem zadnego problemu z mini , nie potrafisz pewnie nawet zainstalować właściwie

 

używałem skrypt GrepoFarmer , na podstawie statystyk atakowanych miast wysyłał wojska obliczając max skuteczności ataku i opłacalności , był jeszcze i FarmingBot ikilka innych przydatnych, tylko poszukać i sprawdzić albo wyedytować sobie by działał w wersji polskiej gry ( czasem dodanie serwera czasem poprawienie angielskich na polskie słów )

 

zresztą to twój problem jakie użyjesz

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...