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

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Wstęp:

Poradnik nie jest w całości przezemnie, jest on w 60% przezemnie edytowany. Zapraszam!

 

 

Witam.

W tym temacie zajmiemy się botem do gry PrisonWars.pl z wykorzystaniem Mozilli Firefox. By korzystanie z naszego bota w Fifefoxie było możliwe potrzebujemy przygotować nasze stanowisko pracy. Jak to zrobić można przeczytać w tutorialu Wprowadzenie do FF.au3.

 

1. GUI - logowanie, dane, siłka

 

A) Na początku będzie nam potrzebne GUI, które posłuży nam do logowania, pokaże nam nasze dane z konta oraz umożliwi korzystanie z siłki. Ja skorzystałem w narzędzia Koda(FormDesigner) (Alt + m). Całość wygląda tak:

 

Skrypt autoit

To jest ukryta treść, proszę

 

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

 

 

B) Pora na wyjaśnienie kodu

 

Skrypt:

Skrypt autoit

To jest ukryta treść, proszę

 

 

 

 

Skrypt autoit

$Form1_1 = GUICreate("PrisonWars.pl", 287, 414, 192, 124) ;Tworzymy GUI z tekstem PrisonWars.pl (na pasku tytułu) oraz o podanych wymiarach.

 

 

 

Skrypt autoit

$Tab1 = GUICtrlCreateTab(0, 0, 281, 409) ;Tworzymy pole dla zakładek.

 

 

 

Skrypt autoit

$TabSheet1 = GUICtrlCreateTabItem("Logowanie") ;Tworzymy pierwszą zakładkę o widocznej nazwie Logowanie

 

 

Skrypt autoit

$Label1 = GUICtrlCreateLabel("Login", 8, 42, 37, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Label2 = GUICtrlCreateLabel("Hasło", 8, 74, 40, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$inpLogin = GUICtrlCreateInput("", 56, 42, 121, 22)

GUICtrlSetFont(-1, 8, 400, 0, "Arial")

$inpHaslo = GUICtrlCreateInput("", 56, 74, 121, 22)

GUICtrlSetFont(-1, 8, 400, 0, "Arial")

$btnLoguj = GUICtrlCreateButton("Loguj", 8, 114, 75, 25, $WS_GROUP)

GUICtrlSetFont(-1, 10, 400, 0, "Arial") ;Tworzymy 2 pola label z napisami Login i Hasło, 2 pola input, do który będziemy wprowadzać dane do logowania oraz button, który zainicjuje logowanie do gry.

 

 

 

Skrypt autoit

$TabSheet2 = GUICtrlCreateTabItem("Dane") ;Tworzymy drugą zakładkę z widoczną nazwą Dane

 

 

 

Skrypt autoit

$Label3 = GUICtrlCreateLabel("Ksywa", 8, 33, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label4 = GUICtrlCreateLabel("Ranga", 8, 57, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label5 = GUICtrlCreateLabel("Szmal", 8, 81, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label6 = GUICtrlCreateLabel("Poziom", 8, 105, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label7 = GUICtrlCreateLabel("Punkty", 8, 129, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label8 = GUICtrlCreateLabel("Zdrowie", 8, 153, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label9 = GUICtrlCreateLabel("Energia", 8, 177, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label10 = GUICtrlCreateLabel("Reakcja", 8, 201, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label11 = GUICtrlCreateLabel("Nerwy", 8, 225, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label12 = GUICtrlCreateLabel("Doświadczenie", 8, 249, 95, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labKsywa = GUICtrlCreateLabel("", 120, 33, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labRanga = GUICtrlCreateLabel("", 120, 57, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labSzmal = GUICtrlCreateLabel("", 120, 81, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labPoziom = GUICtrlCreateLabel("", 120, 105, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labPunkty = GUICtrlCreateLabel("", 120, 129, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labZdrowie = GUICtrlCreateLabel("", 120, 153, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labEnergia = GUICtrlCreateLabel("", 120, 177, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labReakcja = GUICtrlCreateLabel("", 120, 201, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labNerwy = GUICtrlCreateLabel("", 120, 225, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labDoswiadczenie = GUICtrlCreateLabel("", 120, 249, 100, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial") ;Tworzymy 20 pól label, które pokażą oraz "objaśnią" nam dane z naszego konta

 

 

 

Skrypt autoit

$TabSheet3 = GUICtrlCreateTabItem("Siłka") ;Tworzymy trzecią zakładkę o nazwie Siłka

 

 

 

Skrypt autoit

$Label23 = GUICtrlCreateLabel("Siła", 8, 41, 65, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label24 = GUICtrlCreateLabel("Obrona", 8, 65, 65, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label25 = GUICtrlCreateLabel("Szybkość", 8, 89, 65, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label26 = GUICtrlCreateLabel("Razem", 8, 113, 65, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labSila = GUICtrlCreateLabel(" ", 88, 41, 100, 18)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labObrona = GUICtrlCreateLabel(" ", 88, 65, 100, 18)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labSzybkosc = GUICtrlCreateLabel(" ", 88, 89, 100, 18)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$labRazem = GUICtrlCreateLabel(" ", 88, 113, 100, 18)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label13 = GUICtrlCreateLabel("Siła do", 8, 168, 80, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label14 = GUICtrlCreateLabel("Obrona do", 8, 192, 80, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$Label15 = GUICtrlCreateLabel("Szybkość do", 8, 216, 80, 20)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")

$inpSila = GUICtrlCreateInput("", 96, 168, 73, 22)

GUICtrlSetFont(-1, 8, 400, 0, "Arial")

$inpObrona = GUICtrlCreateInput("", 96, 192, 73, 22)

GUICtrlSetFont(-1, 8, 400, 0, "Arial")

$inpSzybkosc = GUICtrlCreateInput("", 96, 216, 73, 22)

GUICtrlSetFont(-1, 8, 400, 0, "Arial")

$btnSilka = GUICtrlCreateButton("Trenuj", 8, 248, 75, 25, $WS_GROUP)

GUICtrlSetFont(-1, 10, 400, 0, "Arial")Tworzymy 8 pól input, które pokażą nam ile mamy siły, obrony, szybkości i łączna ich suma oraz 3 pola label i 3 pola input, które posłużą do tego by wybrać do jakiej ilości danej statystyki (umiejętności) mamy trenować a także button, który zainicjuje ćwiczenie.

 

 

 

Skrypt autoit

GUICtrlSetState(-1,$GUI_SHOW) ;Wyświetla nam GUI

 

 

 

Skrypt autoit

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd ;Tworzymy główną pętlę, która na razie wyłącza bota po wyłączeniu programu (krzyżyk w rogu)

 

2. Logowanie

 

A więc zaczynamy od logowania.

 

Na początek dodamy do naszej pętli nowy przełącznik (case), który obsłuży funkcje logowania w momencie naciśnięcia buttona Loguj:

 

Skrypt autoit

Case $btnLoguj

Logowanie()

 

 

 

Całość wygląda teraz tak:

 

Skrypt autoit

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $btnLoguj

Logowanie()

EndSwitch

WEnd

 

 

Do logowania będą nam potrzebne informacje o formularzy do logowania na stronie. Potrzebujemy id lub name obu pól input oraz id, name lub index formularza. W tym celu:

 

Wybieramy z plugina Web Developer Zaznacz -> Zaznacz wskazany element a następnie najeżdżamy kursorem na oba pola input (najpierw login potem hasło). Widzimy, że oba pola mają ustawioną klasę (.loginForm) a nie mają id. Dlatego wybieramy z Web Developera Pokaż źródło -> Wygeneruj źródło strony. Otworzy nam się nowe okno przeglądarki w którym zobaczymy kod źródłowy. Przewijamy kawałek strony do momentu znalezienia formularza logowania:

KOD: ZAZNACZ CAŁY

<form action="http://prisonwars.pl/"'>http://prisonwars.pl/" method="post">

 

<input name="log_in" value="1" type="hidden">

<div><img src="http://prisonwars.pl/gfx/lay/login.png"></div>'>http://prisonwars.pl/gfx/lay/login.png"></div>

<div style="margin-top: 11px;"><input name="login" class="loginForm" type="text"></div>

<div><img src="http://prisonwars.pl/gfx/lay/password.png"></div>'>http://prisonwars.pl/gfx/lay/password.png"></div>

<div style="margin-top: 11px;"><input name="password" class="loginForm" type="password"></div>

<div style="margin-top: 11px;"><input src="http://prisonwars.pl/gfx/forms/login.png"'>http://prisonwars.pl/gfx/forms/login.png" type="image"></div>

<div style="width: 103px; margin-top: 16px;"><a href="http://prisonwars.pl/forgottenpass/">'>http://prisonwars.pl/forgottenpass/"><span'>http://prisonwars.pl/forgottenpass/">'>http://prisonwars.pl/forgottenpass/"><span class="gold">odzyskaj hasło</span></a></div>

</form>

 

Otwieramy plugin FireBug ikonką na pasku stanu przeglądarki (dla mnie wygląda jak mały robaczek - żuczek czy coś ;) ) lub F12. Otworzy nam się (w dolnej części przeglądarki) plugin. Wybieramy ikonkę w kształcie ramki ze strzałką (Wskaż element strony, aby go zbadać). Następnie najeżdżamy kursorem na pole input (np. to do loginu) i klikamy. W oknie plugina (ta większa część) rozwinie nam się kod źródłowy strony do miejsca gdzie znajduje się kod odpowiedzialny za wybrane pole input. I tak w prosty sposób odnaleźliśmy kod odpowiedzialny za formularz logowania:

KOD: ZAZNACZ CAŁY

<form method="post" action="http://prisonwars.pl/"'>http://prisonwars.pl/">

<input type="hidden" value="1" name="log_in"/>

<div>

<img src="http://prisonwars.pl/gfx/lay/login.png"/>'>http://prisonwars.pl/gfx/lay/login.png"/>

</div>

<div style="margin-top: 11px;">

<input class="loginForm" type="text" name="login"/>

</div>

<div>

<img src="http://prisonwars.pl/gfx/lay/password.png"/>'>http://prisonwars.pl/gfx/lay/password.png"/>

</div>

<div style="margin-top: 11px;">

<input class="loginForm" type="password" name="password"/>

</div>

<div style="margin-top: 11px;">

<input type="image" src="http://prisonwars.pl/gfx/forms/login.png"'>http://prisonwars.pl/gfx/forms/login.png"/>

</div>

<div style="width: 103px; margin-top: 16px;">

<a href="http://prisonwars.pl/forgottenpass/">'>http://prisonwars.pl/forgottenpass/">

<span class="gold">odzyskaj hasło</span>

</a>

</div>

</form>

 

Widzimy, że oba pola input mają atrybut name a formularz nie ma ani id ani name.

Login:

KOD: ZAZNACZ CAŁY

<input name="login" class="loginForm" type="text">

 

Hasło:

KOD: ZAZNACZ CAŁY

<input name="password" class="loginForm" type="password">

 

Formularz:

KOD: ZAZNACZ CAŁY

<form action="http://prisonwars.pl/"'>http://prisonwars.pl/" method="post">

 

I tak oto mamy name pola loginu (login), name pola hasła (password) oraz przeglądając kod źródłowy widzimy, że formularz jest pierwszy czyli jego index jest 0.

Czas na naszą funkcję logowania, która wygląda następująco:

 

Skrypt autoit

Func Logowanie()

$login = GUICtrlRead($inpLogin)

$haslo = GUICtrlRead($inpHaslo)

If _FFConnect() Then

_FFOpenURL("http://prisonwars.pl/"'>http://prisonwars.pl/")

_FFSetValueByName("login", $login)

_FFSetValueByName("password", $haslo)

_FFFormSubmit(0)

EndIf

EndFunc

 

 

 

I krótkie objaśnienie:

 

Skrypt autoit

$login = GUICtrlRead($inpLogin)

$haslo = GUICtrlRead($inpHaslo) ; do zmiennych login i hasło przypisujemy wartości z pól input z naszego GUI

 

 

 

Skrypt autoit

If _FFConnect() Then ;sprawdza czy mamy połączenie z Firefoxem

 

 

 

Skrypt autoit

_FFOpenURL("http://prisonwars.pl/"'>http://prisonwars.pl/") ;Otwiera stronę o adresie http://prisonwars.pl

 

 

 

Skrypt autoit

_FFSetValueByName("login", $login)

_FFSetValueByName("password", $haslo) ; Do pól input wstawia nasz login i hasło (parametr 1 to name pola input a 2 to wprowadzany tekst - tutaj ze zmiennych)

 

 

 

Skrypt autoit

_FFFormSubmit(0) ;Wysyła formularz o indexie 0. Można było zrobić tak: _FFFormSubmit(0, "index"), jednak jest to niepotrzebne, bo index jest ustawiony domyślnie. W przypadku gdybyśmy mieli w formularzu ustawione np id to byloby _FFFormSubmit("formLogin", "id"), gdzie formLogin to id formularza

 

Podsumowanie

Dla tych, którym nie chce się przepisywać (lub kopiować) kawałków kodu zamieszam całość. Po każdym dodatku kod będzie aktualizowany.

 

Skrypt autoit

#include <FF.au3>

#include <ButtonConstants.au3>

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

 

 

 

@edit

 

Nie wszysto w code, zajęło by mi to z 2 godz. :D

 

 

Liczę na + lub 5*. Pozdrawiam!

Edytowane przez Dohoian
Opublikowano

Nie ma całego kodu na koniec :)

Kod dawaj w [code*][/code*], a te dłuższe kawałki jeszcze w [spoiler*][/spoiler*] ;)

 

Tak to jest jak się skopiuje... :/

 

Skrypt AutoIt

Msgbox(16, "Dohoian", "Weź to kurwa wyedytuj, żeby jakoś wyglądało.")

 

#EDIT

Poza tym tutaj masz tylko logowanie, a to już jest w jednym tutku ;) Jeśli rozwiniesz tego tutka i dopiszesz, jak zrobić resztę bota, bo dodam do tamtego tematu :P

 

#EDIT2

Takie tematy dajemy do gotowych skryptów ;) Przy zakładaniu nowych nie zapomnij o tym ;)

Opublikowano

_FFConnect() nie sprawdza tylko się łączy do mozrepl który to plugin działa jak serewer odpalony w programie , bez tego nie zadziałał by skrypt , zmień troche jego położenie powoduje po kilku przeładowaniach wieszanie sie mozrepl wystarczy że jest raz na początku samym skryptu a nie w funkcji która się powtarza czasem kilka razy ;)

 

dane, idy itp , ,mozna pobrać bezpośrednio ze strony otwierając ją i uruchomić FFanalizator ( program w mojej sygnaturce )

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

@up2 dobrze powiedziane, zmienię.

@up

 

Wiem, sorry, zapomniałem źródła, było to kopiowane wczoraj, a jeśli chodzi o code to czytaj cały temat ;)

Opublikowano

niewiem co na pisać do tego więc tylko powiem spoko i dzięki za to i do tego +

Nie pierdol i nie spamuj mi tutaj, takie posty to do kosza. Nie widzę +'a.

×
×
  • Dodaj nową pozycję...