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

  • Odpowiedzi 98
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano
ERROR: refresh(): undefined function.

refresh()
~~~~~~~~^

http:\\www.mpcforum.pl\topic\290852-help-me-noobksi-bot-potrzebuje-pomocy-%3B\page__st__60.html - 1 error(s), 0 warning(s)

Ta sygnatura jest pusta.

Opublikowano

$sprache = ObjCreate("SAPI.SpVoice")

refresh("help me!")

Func refresh($text)

$sprache.Speak($text)

EndFunc

 

tak sprobuj

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

zbieram +

Opublikowano

Myślałem że wiesz jak się odczytuje poszczególne wartości na BL ;p

function pozycja:integer;
  var
  i,id_battle,id:integer;
begin
  id:=readmeminteger(Player_id); //odczytanie naszego id z adresu
  for i:=1 to 149 do  //przeszukanie wszystkich pozycji na battle list (minimalna 1 maxymanlna 149
  Begin
	id_battle:=Readmeminteger(Battlelist_start + (i*160)-4); //czytanie id z pozycji
	if id_battle=ID then //jezeli id z battle list zgadza sie z id z adresu
	Begin
  	Result :=i; //wtedy wynikiem funkcji jest nasza pozycja na battle
  	exit;
	end;
  end;
end;

Delphi -> Autoit by me:

Func Pos() ;// - odczytuje pozycję gracza na BL
$id = _MemoryRead($PLAYER_ID, $memarray) ;//sprawdzam id gracza z adresu statycznego
For $i = 1 To $BL_MAXCREATURES ;//petla przez cala BL
	$bId = _MemoryRead($BL_START + ($i * $BL_STEPCREATURES), $memarray) ;//sprawdzam id moba na danej pozycji na BL
	If ($bId == $id) Then ;//jesli to id rowna sie id gracza
		Return $i ;//zwracam pozycje gracza na liscie
		ExitLoop
	EndIf
Next
EndFunc

Func PosByName($name) ;// - odczytuje pozycję pierwszego moba o danym name na BL
For $i = 1 To $BL_MAXCREATURES ;//petla przez cala BL
	$bName = _MemoryRead($BL_START + ($i * $BL_STEPCREATURES) + 4, $memarray) ;//sprawdzam name moba  na danej pozycji na BL
	If ($bName == $name) Then ;//jesli name moba rowna sie name podanemu w funkcji
		Return $i ;//zwracam id moba na liscie
		ExitLoop
	EndIf
Next
EndFunc

 

Przykładowe użycie:

MsgBox(0, "Example", "Nick gracza: " & _MemoryRead($BL_START + (Pos() * $BL_STEPCREATURES) + 4))

 

Albo:

MsgBox(0, "Example", "ID pierwszego Rata na BL: " & _MemoryRead($BL_START + (PosByName("Rat") * $BL_STEPCREATURES)))

 

Musisz z TibiaApi skombinować adresy $BL_START, $BL_STEPCREATURES, $BL_MAXCREATURES, na samej górze zazwyczaj są.

 

P.S. Może nie działać odnajdywanie po nicku ani wyświetlanie nazwy gracza - jak nie działa (wywala jakieś znaczki albo nie znajduje) to napisz, dopiszę jeszcze jaka funkcja jest potrzebna do tego.

[TUT] Full Autoit V3 Tutorial

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

stop1.png

Opublikowano

#include <nomadmemory.au3>
#include <Array.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
Global $x, $y
Dim $y[251]
HotKeySet('{esc}', 'arry')
While 1
;~ 	$celownik = _MemoryRead($targ, $memarray)
;~ 	$target = _MemoryRead($targ - 5, $memarray)
;~ 	$x = _MemoryRead(0x63FDE8, $memarray)
$id = _MemoryRead(0x63D900+0x20, $memarray)
	ToolTip($id)
Sleep(100)
WEnd
Func arry()
$y[0] = _MemoryRead(0x63FDE8, $memarray)
For $i = 1 To 250
	$y[$i] = _MemoryRead(0x63FDE8 + (0xAC * $i), $memarray)

Next
_ArrayDisplay($y, "")
EndFunc   ;==>arry

odczytac odczytalem ale nie wiem jak robic czy cos czy cos mnie bije:P i jak bije to zaznacza

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

zbieram +

Opublikowano

#include <nomadmemory.au3>
$PID = ProcessExists("Tibia.exe")
$memarray = _MemoryOpen($PID)
$BL_START = 0x63FDE8
$BL_STEPCREATURES = 0xAC
$BL_MAXCREATURES = 1300
Func Pos() ;// - odczytuje pozycję gracza na BL
$id = _MemoryRead(0x63FD50 + 16, $memarray) ;//sprawdzam id gracza z adresu statycznego
For $i = 1 To $BL_MAXCREATURES ;//petla przez cala BL
	$bId = _MemoryRead($BL_START + ($i * $BL_STEPCREATURES), $memarray) ;//sprawdzam id moba na danej pozycji na BL
	If ($bId == $id) Then ;//jesli to id rowna sie id gracza
		Return $i ;//zwracam pozycje gracza na liscie

	EndIf
Next
EndFunc   ;==>Pos

Func PosByName($name) ;// - odczytuje pozycję pierwszego moba o danym name na BL
For $i = 1 To $BL_MAXCREATURES ;//petla przez cala BL
	$bName = _MemoryRead($BL_START + ($i * $BL_STEPCREATURES) + 4, $memarray) ;//sprawdzam name moba  na danej pozycji na BL
	If ($bName == $name) Then ;//jesli name moba rowna sie name podanemu w funkcji
		Return $i ;//zwracam id moba na liscie

	EndIf
Next
EndFunc   ;==>PosByName

MsgBox(0, "Example", "Nick gracza: " & _MemoryRead($BL_START + (Pos() * $BL_STEPCREATURES) + 4, $memarray))
MsgBox(0, "Example", "ID pierwszego Rata na BL: " & _MemoryRead($BL_START + (PosByName("Bug") * $BL_STEPCREATURES),$memarray))

 

nie pokazuje nazw tylko cyfry, no ale powiedzmy ze nie interesuje mnie imie, tylko skoro juz mam id tego co jest na BL to jak to zaznaczyc?

 

$exp = 0x63FD50;adres exp
$flag = $exp - 112;Player.Flags
$targ = $flag + 68;Player.RedSquare =Player.TargetId
$target = _MemoryRead($targ, $memarray);i wkoncu Player.TargetId
_MemoryWrite($target - 5, _MemoryRead($BL_START + (PosByName("Bug") * $BL_STEPCREATURES), $memarray), $memarray);Player.TargetBattlelistType

Tak sie chyba nie da;/

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

zbieram +

Opublikowano

Func MemReadString($address)
$res = ""
$temp = _MemoryRead($address, $memarray)
For $i = 0 To 255
	If ($temp[$i] == 0) or ($temp[$i] == 0x0F) Then
		ExitLoop
	EndIf
	$res &= $temp[$i]
Next
Return $res
EndFunc

Jakoś tak powinno się odczytywać tekst, ale nie mam jak tego przetestować.

 

Kurde zacząłem pisać tego posta o 16:30... i jakoś zapomniałem o nim.

[TUT] Full Autoit V3 Tutorial

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

stop1.png

Opublikowano

Func MemReadString($address)
$res = ""
$temp = _MemoryRead($address, $memarray)
For $i = 0 To 255
	If ($temp[$i] == 0) or ($temp[$i] == 0x0F) Then
		ExitLoop
	EndIf
	$res &= $temp[$i]
Next
Return $res
EndFunc

Jakoś tak powinno się odczytywać tekst, ale nie mam jak tego przetestować.

 

Kurde zacząłem pisać tego posta o 16:30... i jakoś zapomniałem o nim.

 

 

nie bardzo rozumiem $address=? jaki adres tu dać: expa, targetu czy?

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

zbieram +

Opublikowano

To jest funkcja do odczytywania tekstu z pamięci, nie jestem pewien czy działa bo dawno jej nie używałem, jak chcesz to mogę Ci kod z delphi w dll wcisnąć i dopisać UDF będziesz miał łatwiej.

Chyba tak zrobie, nie będzie problemów bo to co mam w delphi na pewno działa. Tylko nie bardzo mam kiedy...

 

Tą funkcję wrzucasz jak tamte i zmieniasz PosByName na:

Func PosByName($name) ;// - odczytuje pozycję pierwszego moba o danym name na BL
   	For $i = 1 To $BL_MAXCREATURES ;//petla przez cala BL
           	$bName = MemReadString($BL_START + ($i * $BL_STEPCREATURES) + 4) ;//sprawdzam name moba  na danej pozycji na BL
           	If ($bName == $name) Then ;//jesli name moba rowna sie name podanemu w funkcji
                   	Return $i ;//zwracam id moba na liscie
                   	ExitLoop
           	EndIf
   	Next
EndFunc

 

Zobacz czy tak działa.

[TUT] Full Autoit V3 Tutorial

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

stop1.png

Opublikowano

$bName = MemReadString($BL_START + ($i * $BL_STEPCREATURES) + 4) ;//sprawdzam name moba na danej pozycji na BL

co to za funkcjia z nomada coć? bo nie mam u mnie takiej nawet

 

 

zmieniłem to na _MemoryRead bo wywalało błąd i chyba to miało być no mam czas jeszcze dopracowuje chodzenie bo coś pokręciłem rano i zaczął się piepszyć w krokach;/

a własnie i ciągle pokazuje mi mi to samo id z BL nawet jak zabije mob tak ma byc?

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

zbieram +

Opublikowano

Kurwa no mój post 4x up tam ta funkcja jest... chodzi o to że stringów z pamięci się tak łatwo nie odczytuje. Mówie zrobie udf do Tibii to będzie szybciej i łatwiej ;p

[TUT] Full Autoit V3 Tutorial

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

stop1.png

  • 2 tygodnie później...
Opublikowano

Mam pytanie czym trzeba potraktować adres żeby zrobić z niego napis

chodzi o to ze odczytuje z pamieci id moba i nie wiem czy da się z tego wyczytać jego imię

 

wynik w tooltipie to np "1074400034" jest jakaś funkcja co przerobi to na napis?

#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


While 1
$target = _MemoryRead($targ, $memarray)
ToolTip($target)
Sleep(100)
wend

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

zbieram +

Opublikowano

Dokładnie o to mi chodziło.

 

Nie znam się na tym, więc pewnie Maciek powie coś więcej, ale podejrzewam, że coś w guście:

 

$targetCreatureId =_MemoryRead($targ, $memarray) ; jakiś integer
$BattleListMaxCreatures = 1300
$BattleListStepCreatures = 0xAC
$BattleListStartAdress = 0x63FDE8
$_BL_DistanceForID = 0
$_BL_DistanceForName = 16
$stringSzukanyName = ''; 
For $i = 0 to $BattleListMaxCreatures Step $BattleListStepCreatures
  If _MemoryRead($BattleListStartAdress + $i + $_BL_DistanceForID) = $targetCreatureId Then
     $stringSzukanyName = _MemoryRead($BattleListStartAdress + $i + $_BL_DistanceForName)
     ExitLoop
  EndIf
Next

 

Ale patrząc na te przykłady:

http://code.google.com/p/tibiaapi/wiki/CodeSamples

Już czas przerzucić się na VB / C#

Ta sygnatura jest pusta.

Opublikowano

1074400034

 

to to nie jest żaden string ani adres.

 

Pamiętaj że w pamięci nie ma czegoś takiego jak typy zmiennych.

To jest wymysł języków wysokiego pozimou.

 

 

Tam są po prostu bajty.

Które możesz interpretować jak chcesz.

Np string "aaa" to w pamięci 616161 decymalnie.

 

Równie dobrze możesz też to interpretować jako int czyli liczbe 616161.

 

 

Czemu to nie wygląda na string ? Bo stringi najczęsciej są w ASCII

 

A w tłumaczeniu na ascii to nic by sensownego z tego nie wyszło

 

 

 

Pamiętaj ze te twoje "1074400034" może być nawet instrukcją procesora.

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano
Pamiętaj że w pamięci nie ma czegoś takiego jak typy zmiennych.

To jest wymysł języków wysokiego pozimou.

Tam są po prostu bajty.

Które możesz interpretować jak chcesz.

 

Co racja, to racja...

 

Jak więc interpretować poniższe wypisy z TibiaApi:

 

           BattleList.Start = 0x63FDE8;
           BattleList.StepCreatures = 0xAC;
           BattleList.MaxCreatures = 1300;
           BattleList.End = BattleList.Start + (BattleList.StepCreatures * BattleList.MaxCreatures);

           Creature.DistanceId = 0;
           Creature.DistanceType = 3;
           Creature.DistanceName = 4;

 

??

 

- - - -

 

A co do tego 1074400034 -> to jest ID moba. Dopiero po tym ID można zdobyć jego nazwę.

Ta sygnatura jest pusta.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...