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] [Help Me] Noobksi Bot Potrzebuje Pomocy ;]


Rekomendowane odpowiedzi

Opublikowano

#include <nomadmemory.au3>
$PID = ProcessExists("Tibia.exe")
$memarray = _MemoryOpen($PID)
Global $x, $y
While 1
Sleep(1000)
$y = _MemoryRead(0x67BA30 + 4, $memarray)
$x = _MemoryRead(0x67BA30 + 8, $memarray)
ToolTip($x & "|" & $y)
ide()
WEnd

;y31569|x32396
Func ide()
If $x < 32396 Then
	ControlSend("[CLASS:TibiaClient]", "", "", "{right}")
ElseIf $x > 32396 Then
	ControlSend("[CLASS:TibiaClient]", "", "", "{left}")
EndIf
If $y < 31596 Then
	ControlSend("[CLASS:TibiaClient]", "", "", "{down}")
ElseIf $y > 31596 Then
	ControlSend("[CLASS:TibiaClient]", "", "", "{up}")
EndIf
EndFunc   ;==>ide

 

@up wlasnie zauwalyalem ze stanal bo zablokowal sie na kamieniu.

no ale zaraz cos sie wymysli:P jest gdzies opisane jak odczytywac przeszkody z batle listy?

 

ps oczywiscie ten kod to tylko sprawdzenie czy to dziala zeby ktos sobie nie pomyslal:d

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

  • Odpowiedzi 98
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Nie weim co mogę robić źle : (

 

Hotkeysy mam ustawione istawiam na suwaku mp jak ma 1000 many... wciskam radio skill

i nic sie nie dzije fooda tez nie je

sygna1.png
Opublikowano

@lokuxd próbowałem też twoim sposobem, ale to mizerna robota, zablokuje się tragicznie, myślę że mamy za małą wiedzę, żeby na tej podstawie zrobić cavebota, Maciek by musiał nam trochę pomóc, targetting na razie zostaw, bo to łatwiejsze niż Cavebot :P ja sobie kiedyś napisałem bota ( byłem zdeterminowany strasznie ). To waypointy mi dodawał na zasadzie gdzie kliknołem myszką robił się screen 100x100 bez kursora,i zapisywał się do folderu o podanej nazwie w impucie, po naciśnięciu start po prostu wyszukiwał screen 1.bmp i klikał na niego i tak po kolei, ale niestety to też było awaryjne strasznie, gracz mógł nam stanąć na miejscu zdjęcia, lub ktoś mógł jakiegoś śmiecia wyrzucić :P

Opublikowano

Nie weim co mogę robić źle : (

 

Hotkeysy mam ustawione istawiam na suwaku mp jak ma 1000 many... wciskam radio skill

i nic sie nie dzije fooda tez nie je

 

 

a masz 1000many?? jesli nie to nic sie nie stanie bo czeka az ja bedziesz mial:P

i jak masz 1000 to zrobi runke i zje hama

@up i troche pamieci rzarlo co?:D nie no mi chodzi i nawet ladnie dopuki nie ma kamienia krzaczka czy cos:d

jakis algorytm trzeba lepszy dac bo ten jest lipny :P

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

Mówię Ci kolego albo poducz się podstaw albo przeżuć na gotowego bota...

Co do cave, przecież wam podałem gotowy algorytm jedyne co to znać trochę zaawansowanej matematyki i zaimplementować go do AutoIt.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

nie bardzo rozumiem jak ten algorytm ma wyszukiwac przeszkody?? no chyba poprostu" probuje kombinacji i chodzi na slepo" az dojdzie tak??

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano
Algorytm A* – algorytm przeszukiwania grafu, odnajdujący najkrótszą ścieżkę pomiędzy dwoma danymi wierzchołkami grafu (lub dokładniej: między wierzchołkiem początkowym a dowolnym z wierzchołków docelowych). Wykorzystuje heurystykę. Przy przeszukiwaniu grafu najpierw sprawdza najbardziej obiecujące, jeszcze nie odkryte wierzchołki.

Pierwszy wers z wikipedii. Ten algorytm oblicza najkrótszą trasę między wierzchołkami grafu, w przypadku Tibii jako wierzchołki grafu przyjmujesz pozycje po których można chodzić. No niestety tutaj wyższa matma jest potrzebna. W odnośnikach masz link do implementacji w c++, możesz sobie podpatrzeć jak to działa (musisz znać angielski).

Wiesz, korzystając z gotox y z możesz to zrobić bez A*, po prostu waypointy muszą być od siebie w odległości takiej jak daleko można kliknąć na minimapce żeby szedł a nie "Distance is out of range.". Trochę trzeba myśleć niestety :)

 

#EDIT: uuuu, ktoś nie potrafił mnie zrozumieć i dał -? Faaajnie, brawo neosie, idź powiedz mamie. (nie wiem do kogo to więc proszę nie czuć się urażonym).

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

Wzasadzie to po co sie meczyc moge nagrac cala trase kratka po kratce i poprostu po nich chodzic

i gdy zaznacze potworka i zmieni trase to bedzie wracal po tej samej co poszedl(nagranej przy zaznaczeniu)moze byc?:D

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

A* ? Obawiam się, że może być niedostatecznie przekomplikowany na potrzeby cavebota.

 

Radziłbym raczej rozważyć problem wedle topologicznej teorii grafów czterowymiarowych w ujęciu postklasycznym, z zastosowaniem wzorów Francisco L'abroutte dotyczących nierówności subpłaszczyznowych niestałych. -_- <_<

 

 

Na dwuwymiarowej siatce kwadratów ( Tibia ) droga, spełniająca warunek najkrótszej, między dwoma punktami będzie dowolną, w której nie będziesz się cofać (to znaczy "ścieżka" będzie przebiegać stale w jednym kierunku).

 

 

Inaczej:

 

__Każda__ droga w stałym kierunku jest najkrótsza, jeśli tylko nie pójdziesz w kierunku przeciwnym. (przy tibijskiej siatce)

Naprawdę potrzeba tu zaprzęgać algorytmy przeszukiwania grafu...? =.=

Ta sygnatura jest pusta.

Opublikowano

Narazie nie umiem sobie tego pryelozyc na autoit wiec sprobuje motody jak juz opisalem wyzej,

ale to nie dzis bo jutro egzamin z matmy wiec mam co robic:P

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

Ja nie mam zielonego pojęcia jak zaimplementować A* i nigdzie nie twierdzę inaczej.

 

Uważam, że nie ma sensu go implementować.

 

Na otwartych przestrzeniach, jeśli nawet spotkasz jakąś przeszkodę -> przesuwasz się jeden w kierunku celu (pionowo lub poziomo, w zalęzności jak do tej pory się poruszałeś) -> jako, że w kierunku celu, to wciąż idziesz najkrótszą ścieżką.

 

Jeśli już jesteś w którejś osi "na linii" z celem, to niezależnie w którą stronę o jeden się teraz przesuniesz - i tak wciąż będzie to najkrótsza ścieżka (jako, że do tej pory wybierałeś najkrótszą...).

 

Natomiast w przestrzeniach zamkniętych, p.okoje, jaskinie, budynki, wąskie przejścia -> musisz ustawiać waypoint'y w wąskich gardłach.

Ta sygnatura jest pusta.

Opublikowano

lepiej do z :P

a tak na serio to nie wiem o co Ci chodzi ale jak będzie działało to ok.

Porostu napisz jakiś prosty testowy kod i sprawdź zamiast czekać godzine na odpowiedź

Opublikowano

juz mam na najkrotsza droge(staje na przeszkodach) i robie na zapis trasy:P

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

A* ? Obawiam się, że może być niedostatecznie przekomplikowany na potrzeby cavebota.

 

Radziłbym raczej rozważyć problem wedle topologicznej teorii grafów czterowymiarowych w ujęciu postklasycznym, z zastosowaniem wzorów Francisco L'abroutte dotyczących nierówności subpłaszczyznowych niestałych. -_-

 

 

Na dwuwymiarowej siatce kwadratów ( Tibia ) droga, spełniająca warunek najkrótszej, między dwoma punktami będzie dowolną, w której nie będziesz się cofać (to znaczy "ścieżka" będzie przebiegać stale w jednym kierunku).

 

 

Inaczej:

 

__Każda__ droga w stałym kierunku jest najkrótsza, jeśli tylko nie pójdziesz w kierunku przeciwnym. (przy tibijskiej siatce)

Naprawdę potrzeba tu zaprzęgać algorytmy przeszukiwania grafu...? =.=

 

 

Kurwa nie sparsowało mojego posta i muszę od nowa pisać ;/ Algorytmu A* używam dla wygody usera końcowego - lepiej jest postawić trzy - cztery waypointy niż biegać po cave i ustawiać. Wszystko zależy od was - czy chcecie lamić i robić lamerskie boty które ustawia się sto lat żeby zobaczyć error przy zapisywaniu? Chyba nie... wybór należy do was. A Ty 4ggr~ zachowujesz się jak jakiś niewyżyty trzynastoletni troll, byle tylko rozpocząć kłótnię... ups... nie udało się.

 

@3x up:

Jak chcesz to tak zapisuj, tylko pytanie jak to będziesz odtwarzał potem, bo Send nie jest najlepszym wyjściem - zatnie Ci się i tyle.

 

@Rand:

A może tak skończysz spamować? Dwa ostatnie posty nie wniosły nic do tematu... tak cie podnieca ta liczba postów? Załóż sobie forum na jakimś darmowym hostingu i sobie tam spamuj do woli.

 

Jeśli kogoś uraziłem to przepraszam mam to gdzieś, zostałem obrażony wcześniej więc nie czuję się winny czegokolwiek.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

a twoja co wniosła ?

Ja pomagam , jak widzisz loku sam sobie poradził nie czekając na odpowiedź.

Widze że masz jakiś kompleks na punkcie nabijania postów . Masz z tym jakiś problem emocjonalny ? Polecam Ci jakiegoś terapeute + porusz z nim temat twojego przerośniętego ego. To że nikt Cię w szkole nie lubi to nie musisz dowartościowywać się na forum.

Jak widać każdy post delikatnie pokazujący że się mylisz (4gr) odbierasz tak jakby mordowano Ci matke, ogarnij się człowieku, to że Ci w szkole głowę w kiblu spuszczają to nie nasza wina, więc z łaski swojej WYPIERDALAJ Z TEGO FORUM.

Na potwierdzenie twojej zawyżonej samooceny wystarczy podać ze za warna odeszłes z forum ma długi czas.

Boli zwrócenie uwagi ?

Trudno przyznać się do błędu ?

Opublikowano

Wlasnie sendem no ale zacina sie troche;/

pokombinuje i bedzie cacy:P

 

[edit] zrobilem ze smiga od a do z przez a-b-c-d-e-f-...-x-y-z i od c do d pojdzie dopiero jak dojdzie do c :D

jeszcze tylko kwestia targetu jak go odciagnie od trasy. Ale damy rade

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

@Rand:

Nie znasz sprawy - zamknij ryj... ty na prawdę nie wiesz do kogo mówisz. Jednym słowem *plonk* i tyle.

 

@up:

Jak ogarniasz adlibregister to możesz chodzenie dać w jeden timer, który po prostu zatrzymasz w momencie ataku, a potem wznowisz (jeśli pobierasz pozycję gracza w jakikolwiek sposóB). Nie wiem czy w ogóle odczytujesz cokolwiek z pamięci (nie wiem na jakiej zasadzie twój bot działa), ale sprawdzanie czy gracz coś atakuje możesz zrobić pobierając wartość adresu Player.TargetId (TibiaApi) - jeśli na battle jest kreatura o ID przechowanym w tym adresie to znaczy że gracz coś atakuje, jeśli nie ma to "Target lost.". Nie pamiętam czy ten adres się zeruje po zabiciu moba czy zostaje tam ID ostatnio atakowanego.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

nie wiem do kogo mówie ?

A co namierzysz mnie i zchakierujesz mnie ?

Opublikowano

ogarniam adlibregister ale teraz mam problem maly:/

zrobilem zapis i odczyt z chodzeniem jako 2 osobne kody i teraz pomieszalem laczenie

a kordy zapisuje z pamieci x i y i tyle chodzil lanie ale nie chodzi dopuki nie odplacze kodu:P

 

[edit] dobra dziala jako tako jutro ataki reszta.

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

Co do pauzy cavebota gdy masz target to możesz nad cavebota dodać IF sprawdzający.

 

$target = _MemoryRead($x, $memarray) - za $x daj sobie adres Player.TargetId z TibiaApi, jeśli nic nie atakujesz to $target = 0, jeśli atakujesz to nie, na tej podstawie możesz to zrobić.

Opublikowano

if $target=1 then
atak()
else
cave()
endif 

 

o tak mi sie to widzi:)

 

 

 

Maciek możesz trochę pomóc

adres targetu według kolejności z Tibiaapi

#include <nomadmemory.au3>
$PID = ProcessExists("Tibia.exe")
$memarray = _MemoryOpen($PID)
$exp = 0x63FD50;adres exp
$flag = $exp - 112;Player.Flags
$targ = $flag + 68;Player.RedSquare =Player.TargetId
$target = _MemoryRead($targ, $memarray);i wkoncu Player.TargetId


While 1
$celownik = _MemoryRead($targ, $memarray)
$target = _MemoryRead($targ -5, $memarray)

If $target = 64 Then
	;_MemoryWrite($target, $celownik, $memarray) to jest zle  nie wiem jak zrobic zeby sam zaznaczyl mobka jeśli go wykryje 
EndIf

ToolTip($target)
Sleep(100)
WEnd

 

jest może jakiś sposób na odczytywanie battle listy zauważyłem ze mobki maja wartość 64 tylko muszę najechać na listę żeby to zobaczyć.

i tu problem jak ja odczytac??

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...