Reklama
Strona 8 z 33 PierwszaPierwsza ... 67891018 ... OstatniaOstatnia
Pokazuje wyniki od 106 do 120 z 486

Temat: [Poradnik] Jak napisać własne macro do Tibii

  1. #106

    Data rejestracji
    2005
    Położenie
    Olsztyn
    Wiek
    31
    Posty
    36
    Siła reputacji
    0

    Domyślny

    Albo nie dodałeś adresów lub nie dodałeś funkcji Read

  2. #107
    Wizuto Fene

    Domyślny

    Moze ktos sprawdzic.. i powiedziec gdzie jest blad:

    unit BOT;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    const
    //adresy wartosci postaci
    layer_ClubPerc = $613B00;
    Player_SwordPerc = $613B04;
    Player_AxePerc = $613B08;
    Player_DistnacePerc = $613B0C;
    Player_ShieldingPerc = $613B10;
    Player_FishingPerc = $613B14;
    Player_Fist = $613B18;
    Player_Club = $613B1C;
    Player_Sword = $613B20;
    Player_Axe = $613B24;
    Player_Distance = $613B28;
    Player_Shielding = $613B2C;
    Player_Fishing = $613B30;
    Player_Cap = $613B40;
    Player_Stamina = $613B48;
    Player_Soul = $613B48;
    Player_ManaMax = $613B4C;
    Player_Mana = $613B50;
    Player_MagicLevelPerc = $613B54;
    Player_LevelPerc = $613B58;
    Player_MagicLevel = $613B5C;
    Player_Level = $613B60;
    Player_Experience = $613B64;
    Player_HpMax = $613B68;
    Player_Hp = $613B6C;
    Player_ID = $613B70;
    //koniec - adresy wartosci postaci
    implementation
    {$R *.dfm}
    // Funkcje czytające

    function ReadMemInteger(Address: Cardinal): Cardinal; //Read adress:value
    var
    ProcId: Cardinal;
    tProc: THandle;
    NBR: Cardinal;
    value:integer;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcId);
    tProc:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcId);
    ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR);
    CloseHandle(tProc);
    Result:=value;
    end;


    function MemReadString(Address: Integer): String;
    var
    NB : LongWord;
    Temp : ARRAY [1..255] OF Byte;
    I : Byte;
    IDProcess, proc_ID : Cardinal;
    begin
    GetWindowThreadProcessID(FindWindow('TibiaClient', nil), @proc_ID);
    IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
    Result := '';
    ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
    for I := 1 to 255 do
    begin
    if ((Temp[i] = 0) or (Temp[i] = $0F)) then
    Break;
    Result := Result + Chr(Temp[i]);
    end;
    end;
    // Koniec - Funkcje czytające

    end.

  3. #108
    atlasik

    Domyślny

    Witam

    Ja mam takie pytanko odnosnie tych pakietow, uruchomilem sobie programik do ich odczytywania, stanalem w miejscu gdzie nie bylo ruchu, nowych wiadomosci, potworkow itp itd ale mimo wszystko ilosc informacji w jedna i druga strone jest ogromna, da sie jakos rozsadnie to odfiltrowac? proba zatrzymania okienka z informacjami o tych pakietach jest zupelnie bez sensu, probowalem zrobic loga ale tez bez wiekszych sukcesow... jak sobie z tym radzicie?

    I jeszcze jedno, wszystkie te boty strasznie zra procka, czy mozna jakos to obejsc?

  4. Reklama
  5. #109
    krams

    Domyślny

    Mógł bym prosić o rehosta źródła i packet.dll na sendspace?
    Szczególnie proszę o packet.dll bo mam inny i przy wywoływaniu funkcji say sypie się :P


    //2 Jak używać cheat engine? Nie potrafię odczytywać nim za bardzo.
    Ostatnio zmieniony przez krams : 04-02-2008, 23:55

  6. #110

    Data rejestracji
    2005
    Położenie
    Olsztyn
    Wiek
    31
    Posty
    36
    Siła reputacji
    0

    Domyślny

    Sendspace
    Speedyshare
    Rapidshare

    O to proszony rehost packet.dll

  7. #111
    krams

    Domyślny

    Mam pytanie na przyszłość. Jak czytać z pamięci dane? Gdy zmieni się klient będę potrzebował tej informacji. Chodzi mi o sposób użycia cheat engine, jak w przyszłości z klienta gry wyciągnę położenie zmiennej np: skilla?

    Drugie pytanie. Jak zainicjować atak. Kombinowałem z pakietami.
    Trzy ataki na trolla o to pakiety wychodzące z klienta:

    05 00 A1 E0 2A 02 40
    05 00 A1 08 1F 02 40
    05 00 A1 85 58 03 40

    Więc pierwsze trzy parametry są wartością stałą, następne dwa się zmieniają w trzecim przypadku zmienia się i trzeci parametr. Więc wywnioskowałem że te 3 części pakietu są odpowiedzialne za dane potwora. Na początku myślałem że to może jego położenie lecz nie jest to możliwe ponieważ po dokonaniu ataku w innym miejscu tego samego trolla pakiet jest identyczny. Jest to chyba coś w rodzaju ID który każdy potwór ma. Poza tym litera+ liczba wskazują że jest to system szesnastkowy.

    I tu jest problem nie moge wysłać pełnego pakietu ponieważ nie potrafię wyciągnąć z battlelist czy w inny sposób ID/POZYCJI czy tego czegoś by dopełnić PAKIET.
    05 00 A1 X X X 40
    Jak to znaleźć?
    Nie znam potwora != prawie jak atak... :P
    //Nie analizowałem jeszcze danych pochodzących od serwera w czasie pojawienia się trolla, może z pakietów wychodzących wyciągnąć?
    Ostatnio zmieniony przez krams : 05-02-2008, 16:09

  8. Reklama
  9. #112
    konto usunięte

    Domyślny

    SKAD WZIASC TEN ADRESS!?

    #edit
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId); to mi sie jakos na czerwono swieci a czemu jasna cholera _._
    #down
    Dzienx, po troszku i to zrobie :p. Zagladaj Tu Ar`buz bede miec bankowo jeszcze pytanka xP[/QUOTE]

    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId);

    U mnie tak samo było wymień NIL na "Tibia" to w VB
    hTibia -> zmienna Long
    hTibia = FindWindow("TibiaClient", "Tibia")
    i usun nawiasy
    GetWindowThreadProcessId hTibia, proc_ID
    Ostatnio zmieniony przez scorpioo : 06-02-2008, 22:15

  10. #113
    Avatar Ar'buz
    Data rejestracji
    2007
    Położenie
    51*06N, 17*02E Ranga: Zasłóżony
    Posty
    245
    Siła reputacji
    19

    Domyślny

    @up:
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId);

    samo wyrażenie jest poprawne. Mam tylko pytanie, czy zamieniłeś "#" na "małpę"?

    @edit,down:
    Jakby się uprzeć, to cavebota można napisać na podstawie tego co już przekazał nam Yaboo. Jedyną rzeczą jaką trzeba by jeszcze zdobyć, to ID potwora, który aktualnie cię atakuje (tego chyba nie zawarł w poradniku).
    Ostatnio zmieniony przez Ar'buz : 08-02-2008, 10:34

  11. #114
    Avatar Bladyxxl
    Data rejestracji
    2006
    Położenie
    Lublin
    Wiek
    30
    Posty
    22
    Siła reputacji
    0

    Domyślny

    nareszcie jakis przydatny poradnik ;d
    wg mnie brakuje podstaw pisania cavebota, i dzialajacego linka do packet.dll(rehost plis)
    zaproszenia do lockerz - pisz, nie gryzę
    10:43 Kyva von'Celesta [12]: jak cie ktos pierdoli na rl
    10:43 Kyva von'Celesta [12]: ro piszczysz
    10:43 Kyva von'Celesta [12]: ?

  12. Reklama
  13. #115
    krams

    Domyślny

    Cytuj baro napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    O to proszony rehost packet.dll
    Rehost był. Poszukaj kilka postów wcześniej
    Ktoś pytał jak szukać adresów zmiennych. Ja już do tego doszyłem. Najlepszym sposobem są programy crackerskie typu Tsearch (ewentualnie Cheat Engine).
    Tsearch (similar to ArtMoney and the open source Cheat Engine) is a memory scanner/debugger utility developed by Corsica Productions. Tsearch’s primary function is to scan open processes for byte addresses; restricting searches to either "Exact Value", "Range" or "Unknown Values". The searches can be refined by using a "Search Next" (or sieve) option: this re-searches already found results to
    display results suiting a further refined criterion. Tsearch also features a hex editor and "auto hack" option, and is commonly used within the game hacking community to develop third-party game "trainers" and "hacks".

    Tsearch’s features can be enhanced when using the "Trainer Maker Toolkit" (TMK) – a highly developed form .exe maker which takes tsearch’s "poke" addresses and adapts them into a third-party program.


    sendspace.com/file/ctctzs
    Hasło: www_darkwarez_pl
    Patrzymy na hp swoje, szukamy w tych programach wartości (ilości hp) jeżeli wyszuka dużą ilość adresów idziemy na potwory by zmniejszyć ilość hp, wśród poprzednich wyszukanych wyników szukamy naszą nową ilość hp. TADA mamy adres do zmiennej ;)

  14. #116
    atlasik

    Domyślny

    A moze teraz cos o odczytywaniu co jest na poziomie nizej/wyzej ?

    Czy ten temat juz dawno podupadl? jesli sie pytac o cos konkretnego to od razu mozna sie spodziewac ze nie otrzyma sie odpowiedzi?
    Ostatnio zmieniony przez atlasik : 19-02-2008, 09:30

  15. #117
    ill

    Domyślny

    Cytuj krams napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    I tu jest problem nie moge wysłać pełnego pakietu ponieważ nie potrafię wyciągnąć z battlelist czy w inny sposób ID/POZYCJI czy tego czegoś by dopełnić PAKIET.
    05 00 A1 X X X 40
    Jak to znaleźć?
    wyciągnąć?
    Te wartości możesz wyciągnąć z battlelisty. Znajdują się one 4 bajty przed nazwą potwora. Cyferka (hex) 40 oznacza że jest to npc\monster.

    Cytuj Xevix17 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    GetWindowThreadProcessId(FindWindow('TibiaClient', nil) #ProcId);

    Ehm.. co ja tu żle robie? próbowałem zmieniać na małpe (#) itp ale nic to nie daje :/ Może ktoś mi pomóc?

    Pozdro
    GetWindowThreadProcessId jest funkcją w której podajemy 2 parametry. Muszą one być oddzielone przecinkiem. I "Małpa" zamiast # też musi być. Powinno to wyglądać tak:

    Kod :
    GetWindowThreadProcessId(FindWindow('TibiaClient',nil), "Małpa"ProcId);
    Cytuj Darksystem napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    chodzi mi o to aby bot nie wlaczyl sie gdy tibia nie jest wyłączona i pojawil sie komunikat "Run Tibia First"

    jezeli tibia bedzie wlaczona i zechcemy wlaczyc bota , bot uruchomi sie!
    Nacisnij 2 razy w puste miejsce na formularzu. Pojawi się miejsce na wpisanie kodu. Uzupełnij je tak:

    Kod :
    Procedure TForm1.FormCreate(Sender: TObject);
    begin
    if  FindWindow('TibiaClient',nil) = 0 then
    begin
    ShowMessage('Run Tibia First');
    Application.Terminate; 
    end;
    end;
    Zamiast ShowMessage można wstawić:
    Kod :
     MessageBox(Form1.Handle,'Run Tibia First','Error',MB_ICONERROR);
    Ostatnio zmieniony przez ill : 20-02-2008, 22:14

  16. Reklama
  17. #118
    Quider

    Domyślny

    Cytuj Wizuto Fene napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moze ktos sprawdzic.. i powiedziec gdzie jest blad:

    unit BOT;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    const
    //adresy wartosci postaci
    layer_ClubPerc = $613B00;
    Player_SwordPerc = $613B04;
    Player_AxePerc = $613B08;
    Player_DistnacePerc = $613B0C;
    Player_ShieldingPerc = $613B10;
    Player_FishingPerc = $613B14;
    Player_Fist = $613B18;
    Player_Club = $613B1C;
    Player_Sword = $613B20;
    Player_Axe = $613B24;
    Player_Distance = $613B28;
    Player_Shielding = $613B2C;
    Player_Fishing = $613B30;
    Player_Cap = $613B40;
    Player_Stamina = $613B48;
    Player_Soul = $613B48;
    Player_ManaMax = $613B4C;
    Player_Mana = $613B50;
    Player_MagicLevelPerc = $613B54;
    Player_LevelPerc = $613B58;
    Player_MagicLevel = $613B5C;
    Player_Level = $613B60;
    Player_Experience = $613B64;
    Player_HpMax = $613B68;
    Player_Hp = $613B6C;
    Player_ID = $613B70;
    //koniec - adresy wartosci postaci
    implementation
    {$R *.dfm}
    // Funkcje czytające

    function ReadMemInteger(Address: Cardinal): Cardinal; //Read adress:value
    var
    ProcId: Cardinal;
    tProc: THandle;
    NBR: Cardinal;
    value:integer;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId);
    tProc:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcId);
    ReadProcessMemory(tProc, Ptr(Address), #value, 4, NBR);
    CloseHandle(tProc);
    Result:=value;
    end;


    function MemReadString(Address: Integer): String;
    var
    NB : LongWord;
    Temp : ARRAY [1..255] OF Byte;
    I : Byte;
    IDProcess, proc_ID : Cardinal;
    begin
    GetWindowThreadProcessID(FindWindow('TibiaClient', nil), #proc_ID);
    IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
    Result := '';
    ReadProcessMemory(IDProcess, Ptr(Address), #Temp[1], 255, NB);
    for I := 1 to 255 do
    begin
    if ((Temp[i] = 0) or (Temp[i] = $0F)) then
    Break;
    Result := Result + Chr(Temp[i]);
    end;
    end;
    // Koniec - Funkcje czytające

    end.
    Var to znaczy wariable jak w VAR mozesz deklarowac stałe - constans ? kolego myslimy od czasu doczasu :)

  18. #119
    Avatar MeNi
    Data rejestracji
    2007
    Położenie
    我在波兰华沙
    Wiek
    32
    Posty
    134
    Siła reputacji
    18

    Domyślny

    Cytuj Quider napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Var to znaczy wariable jak w VAR mozesz deklarowac stałe - constans ? kolego myslimy od czasu doczasu :)
    Jak to czasen mawiają Espańols, "oi,jajajajajaj"...

    var
    Form1: TForm1;
    const
    //adresy wartosci postaci
    layer_ClubPerc = $613B00;
    Player_SwordPerc = $613B04;
    Player_AxePerc = $613B08;
    On nie zadeklarował stałych w Var, tylko w const =)

  19. #120

    Data rejestracji
    2006
    Położenie
    W domu
    Wiek
    29
    Posty
    22
    Siła reputacji
    0

    Domyślny

    Witam. Mam problem. Otóż chcę zrobić anti-afk i tak wygląda przykładowa procedura:

    procedure turndown;
    var
    PacketBuffer: array [0..200] of byte;
    ProcessID: Cardinal;

    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcessID);
    PacketBuffer[0] := $01;
    PacketBuffer[1] := $00;
    PacketBuffer[2] := $71;
    SendPacket(ProcessID, #PacketBuffer, TRUE, FALSE);
    sleep(500);
    end;
    I tu jest problem, że gdy chcę wykonać obrót, wyskakuje error z opcjami: Nie wysyłaj/wyślij raport o błędach i tibia się zamyka. To samo jest ze spell casterem. Any ideas?

  20. Reklama
Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Jak napisać powieść w 30 minut
    Przez konto usunięte w dziale Artyści
    Odpowiedzi: 1
    Ostatni post: 05-12-2012, 16:49
  2. [Inne] Jak napisać bota?
    Przez t3hp0wn w dziale Tibia
    Odpowiedzi: 1
    Ostatni post: 06-03-2011, 12:10
  3. Jak napisać temat, aby otrzymać jak najszybciej pomoc?
    Przez Killavus w dziale Strefa developerska
    Odpowiedzi: 0
    Ostatni post: 29-05-2010, 11:51
  4. [Poradnik] <Jak napisac scrypt do Blackd>
    Przez Lee of Honera w dziale Tibia
    Odpowiedzi: 5
    Ostatni post: 08-03-2009, 15:08

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •