Reklama
Strona 17 z 33 PierwszaPierwsza ... 7151617181927 ... OstatniaOstatnia
Pokazuje wyniki od 241 do 255 z 486

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

  1. #241
    Avatar Szczeepan
    Data rejestracji
    2005
    Położenie
    Wawa/TGK
    Wiek
    37
    Posty
    81
    Siła reputacji
    21

    Domyślny

    tak adresy mają "stałą odległość" jednak nie wszystkie, mozna je podzielic na grupy. i np.
    LoginServerBegin =$77FC48;
    krok = 70;
    LogInServ1=LoginServerBegin;
    LogInServ2=LoginServerBegin+krok;
    LogInServ3=LoginServerBegin+2*krok;
    LogInServ4=LoginServerBegin+3*krok;
    LogInServ5=LoginServerBegin+4*krok;
    LogInServ6=LoginServerBegin+5*krok;
    LogInServ7=LoginServerBegin+6*krok;
    LogInServ8=LoginServerBegin+7*krok;
    LogInServ9=LoginServerBegin+8*krok;
    LogInServ10=LoginServerBegin+9*krok;

    Player_ID = $62BD30;
    Player_Status = Player_ID - 120;
    Player_Fist_Perc = Player_Status + 4;
    Player_Club_Perc = Player_Status + 8;
    Player_Sword_Perc = Player_Status + 12;
    Player_Axe_Perc = Player_Status + 16;
    Player_Distance_Perc = Player_Status + 20;
    Player_Shielding_Perc = Player_Status + 24;
    Player_Fishing_Perc = Player_Status + 28;
    Player_Fist = Player_Status + 32;
    Player_Club = Player_Status + 36;
    Player_Sword = Player_Status + 40;
    Player_Axe = Player_Status + 44;
    Player_Distance = Player_Status + 48;
    Player_Shielding = Player_Status + 52;
    Player_Fishing = Player_Status + 56;
    Player_Cap = Player_Status + 72;
    Player_Stamina = Player_Status + 76;
    Player_Soul = Player_Status + 80;
    Player_Mana_Max = Player_Status + 84;
    Player_Mana = Player_Status + 88;
    Player_Magic_Perc = Player_Status + 92;
    Player_Level_Perc = Player_Status + 96;
    Player_Magic = Player_Status + 100;
    Player_Level = Player_Status + 104;
    Player_Experience = Player_Status + 108;
    Player_Health_Max = Player_Status + 112;
    Player_Health = Player_Status + 116;
    Player_GoTo_Z = Player_Status + 180;
    Player_GoTo_Y = Player_Status + 184;
    Player_GoTo_X = Player_Status + 188;

    ja mam tak pogrupowane i w nastepnej wersji Tibi znajduje 1 dowolny i uzalezniam reszte od znalezionego.

  2. #242
    Ludojad

    Domyślny

    Mam problem z funkcją say. Otóż nie chce działać. Bota robię pod tibie 7.6. Sądzę że złe są adresy (PacketBuffer) , lecz tego nie umiem sprawdzić. Bardzo proszę o pomoc.

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

    Domyślny

    Nie adresy, tylko kolnkretne bajty informacji do przesłania.
    I winą tego, że nie działa zapewne jest to, że używasz nie tego Paclet.dll, co trzeba. (ważnym jest aby był przystosowany własnie do wersji Tibii, której używasz)

    #edit, down:
    widać pakiet który wysyłasz, niefortunnie odpowiada pakietowi przenoszącemu informację o wylogowaniu postaci.
    Ostatnio zmieniony przez Ar'buz : 12-01-2009, 22:44

  4. Reklama
  5. #244
    Ludojad

    Domyślny

    Znalazłem już odpowiedni packet.dll dla Tibii 7.6. Dodam że był w bocie "mpa bot" dla tibii 7.6 więc uważam, że jest dobry. Natomiast teraz mam zupełnie inny problem. Po włączeniu funkcji trenującej mlvl postać się sama wylogowuje nawet kiedy mam battle. Może jednak zmieniły się te PacketBuffer i dlatego cały czas takie błędy wychodzą. Sam nie wiem, nie chce dyskutować na nieznane mi tematy :P.

  6. #245
    seth666

    Domyślny

    jak wyglada player id dla tibii 8,4?

    Player_ID = $62BD94;?? czy nie to ?

  7. #246
    Janek00

    Domyślny

    Zrobielm bota aby np. poszedl w górę, bot to zrobi ale przy tym wywala blad: "Access violation at address 00000001. Read of address 00000001"
    Co to może być? Myślę że to wina packet.dll
    Mam packet z 22 strony tego tematu od użytkownika paweł,
    ale coś mi w nim nie pasuje, za mały jakiś ;p
    jeśli dobrze mówię to proszę o rehost packet.dll 8.31

  8. Reklama
  9. #247
    krams

    Domyślny

    Ten sam problem mam, posiadam najnowsza bibliotekę dll pod Tibia 8.40
    i wykonuje dany ruch ale "Access violation at address 00000001. Read of address 00000001". Umie ktoś to rozwiązać?

  10. #248
    lanky

    Domyślny

    Witam. mam pytanie!, czy tą całą funkcję co napisał Yaboomaster można wykorzystać w innych grach ? czyli zamiast
    Kod :
    GetWindowThreadProcessID(FindWindow('TibiaClient', nil), @proc_ID);
    podpiąć się np. pod jakąś gre typu kurczak shooter
    Kod :
    GetWindowThreadProcessID(FindWindow('Kurczak', nil), @proc_ID);
    znaleść w Cheat Engine sobie jakiś adres przypuśćmy ilość amunicji w której można zmieniać Value, niech to będzie przypuśćmy 075b5050
    i co ?? wtedy wpisujemy sobie
    Kod :
    const 
    Ammo = $075b5050;
    i jak myślicie czy to zadziała ?
    Kod :
    const 
    label1.Caption:=inttostr(ReadMeminteger(Ammo));
    bo mi jakoś to nie wychodzi tak jak by wogóle uchwytu nie odczytywał.

  11. #249
    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:
    Oczywiscie, że zadziała.

    Sprawdź czy pobira uchwyt okna (czy jest większy od zera). Uchwyt jest typem integer, więc możesz go spobie podejrzeć.

    Jeśli znalazłeś wartość Cheat Enginem - będzie działało.

    #down:
    Uchwyt łapie siępo nazwie okna, albo po jego klasie. A ty ani jednego ani drugiego nie wybrałeś, tylko nazwę pliku uruchieniowego.
    Dwa: jak chcesz sprawdzić czy już złapałeś uchwyt - wyświetl go sobie na formie. Jak bierzesz sięza pisanie botów, poznaj chociaż trochę język, w którym piszesz.
    Najprościej: showmessage(strtoint(FindWindow('TibiaClient', nil)));
    Ostatnio zmieniony przez Ar'buz : 03-02-2009, 22:30

  12. Reklama
  13. #250
    lanky

    Domyślny

    no właśnie jak mam sprawdzić czy mi ten uchwyt pobiera? ja po prostu sprawdziłem w menadżerze w procesach , że dana gra nazywa się kurczak.exe i wpisałem ją do kodu :). możesz mi jakiś kod przytoczyć aby to jakoś sprawdzić ?

    Jak bym się dobrze znał to bym się nie pytał a co do twojego kodu
    Kod :
    showmessage(strtoint(FindWindow('TibiaClient', nil)));
    to wywala: error Incompatible types: 'String' and 'HWND'

    więc jak mówisz ,ze uchwyt łapie się po nazwie okna to jak zminimalizuje grę to jest napisane kurczak
    czyli chyba dobrze napisałem to w funkcji,to juz sam teraz nie wiem prosiłbym o małą lekcję ,może myślę w złym kierunku
    Ostatnio zmieniony przez lanky : 03-02-2009, 23:29

  14. #251
    fets

    Domyślny pominac packet.dll

    Siemka, nie rozumiem co w sobie ma ta biblioteka packet.dll, jak ją ominąć, nie chce ściągać żadnych packet... ponieważ mogą być brudne ;p (do nowszych versji)
    Co napisać żeby cokolwiek wysłac z bota do gry np żeby zrobił krok w prawo nie używając przy tym biblioteki packet.dll


    narazie napisałem coś takiego:
    procedure TForm1.Button5Click(Sender: TObject);
    var
    PacketBuffer: array [0..200] of byte;
    ProcessID: Cardinal;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcessID);
    PacketBuffer[0] := $01;
    PacketBuffer[1] := $00;
    PacketBuffer[2] := $66;
    SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
    end;

    Ale postac nic nie robi, pakiety nie przychodza...
    < SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);> do tego potrzebna jest chyba procedura, jak ją napisać i cokolwiek zrobić żeby pominąć te packet.dll???

  15. #252
    Avatar Gniew_Mroku
    Data rejestracji
    2005
    Posty
    92
    Siła reputacji
    21

    Domyślny

    Cytuj fets napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Siemka, nie rozumiem co w sobie ma ta biblioteka packet.dll, jak ją ominąć, nie chce ściągać żadnych packet... ponieważ mogą być brudne ;p (do nowszych versji)
    Co napisać żeby cokolwiek wysłac z bota do gry np żeby zrobił krok w prawo nie używając przy tym biblioteki packet.dll


    narazie napisałem coś takiego:
    procedure TForm1.Button5Click(Sender: TObject);
    var
    PacketBuffer: array [0..200] of byte;
    ProcessID: Cardinal;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcessID);
    PacketBuffer[0] := $01;
    PacketBuffer[1] := $00;
    PacketBuffer[2] := $66;
    SendPacket(ProcessID, #PacketBuffer, TRUE, FALSE);
    end;

    Ale postac nic nie robi, pakiety nie przychodza...
    < SendPacket(ProcessID, #PacketBuffer, TRUE, FALSE);> do tego potrzebna jest chyba procedura, jak ją napisać i cokolwiek zrobić żeby pominąć te packet.dll???
    packet.dll stał się popularny z prostego powodu. Ktoś zrobił coś co nie jest trywialne i dał to w postaci umożliwiającej korzystanie z tego. Jest to cały zestaw, który umożliwia wysyłanie pakietów przez połączenie z tibią z zewnętrznej aplikacji. Natomiast jeśli się nie mylę packet.dll został wydany wraz ze źródłem - możesz więc spróbować je odnaleźć( zacznij od tpforums ).
    Ostatnio zmieniony przez Gniew_Mroku : 04-02-2009, 23:50

  16. Reklama
  17. #253
    fets

    Domyślny

    Aha, a jest jakaś comenda czy coś w tym stylu żeby udało się wysłać z bota do gry bez pomocy packet.dll żeby zrobił ten 1 mały kroczek ;p?? Czy musi być ten plik... bo raczej nie dowiemy się jak go napisać :P

  18. #254
    lanky

    Domyślny

    a co jesli adresy się zmieniają po ponownym uruchomieniu gry? napisalem pewien chat na pewną grę, wyciągnołem z niej adresy programem CE, wszystko ładnie działa ale okazuje się ze adresy się zmieniają po restarcie gry. macie jakieś pomysły ?

  19. #255
    Avatar Gniew_Mroku
    Data rejestracji
    2005
    Posty
    92
    Siła reputacji
    21

    Domyślny

    Cytuj fets napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Aha, a jest jakaś comenda czy coś w tym stylu żeby udało się wysłać z bota do gry bez pomocy packet.dll żeby zrobił ten 1 mały kroczek ;p?? Czy musi być ten plik... bo raczej nie dowiemy się jak go napisać :P
    Poszukałem i znalazłem źródło packet.dll dla tibii 8.22. Ale złe wieści: jest w asemblerze, wieć próby zrozumienia tego zwykle zakończą się niepowodzeniem. :P
    http://www.tpforums.org/forum/showthread.php?t=16

    @down: skompilować.

    Cytuj lanky napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    a co jesli adresy się zmieniają po ponownym uruchomieniu gry? napisalem pewien chat na pewną grę, wyciągnołem z niej adresy programem CE, wszystko ładnie działa ale okazuje się ze adresy się zmieniają po restarcie gry. macie jakieś pomysły ?
    To znaczy, że są to struktury dynamiczne. A zatem gdzieś w innym miejscu w pamięci musi być wskaźnik na początek tej struktury. Odkrycie gdzie zwykle wymaga spędzenia pewnej ilości czasu na próbach i zgadywaniach, ewentualnie na analizie działania programu w debuggerze.
    Jest to trudna umiejętność i polecam udać się na forum zajmujące się tą dziedziną.
    Ostatnio zmieniony przez Gniew_Mroku : 07-02-2009, 18:21

  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
  •