Reklama
Strona 27 z 33 PierwszaPierwsza ... 172526272829 ... OstatniaOstatnia
Pokazuje wyniki od 391 do 405 z 486

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

  1. #391
    Avatar karmazyn
    Data rejestracji
    2010
    Posty
    244
    Siła reputacji
    16

    Domyślny

    W jaki sposób napisać exp counter? Nie chcę gotowca, tylko podpowiedź.

  2. #392
    Avatar Ziemek
    Data rejestracji
    2005
    Położenie
    NSC
    Wiek
    31
    Posty
    368
    Siła reputacji
    20

    Domyślny

    /\ Tak jak chciałeś, ogólne założenia.
    Możesz sobie zrobić 2 buttony start i stop.

    Po naciśnięciu start do zmiennej poczatkowy_exp zapisujesz aktualną ilość zdobytego doświadczenia przez gracza. Po naciśnięciu stop pobierasz aktualny exp (np.: do zmiennej aktualny_exp) i wyświetlasz (w labelu czy tam gdzie chcesz) wartość (aktualny_exp - poczatkowy_exp).

    To taki najprostszy przykład, możesz też zrobić coś podobnego za pomocą timeru, który będzie aktualizował dane.

    To tak w skrócie, myślę, że załapiesz o co chodzi :).

  3. #393
    wlazelko

    Domyślny Jak zrobic udogodnienia do bota.

    Czy mógłby mi ktoś pomóc zabrałem się za pisanie bota pod tibię 8.61
    ale to co napisał yaboo nie bardzo pomogło.chciałbym dodać do mojego bota pare udogodnień np rune maker,light,spell caster,zmiane outfitów??Moje gg:10180836
    zrobiłem narazie tyle:
    unit Wlazelko;

    interface

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

    type
    TForm1 = class(TForm)
    StaticText1: TStaticText;
    Label1: TLabel;
    Button1: TButton;
    StaticText2: TStaticText;
    Label2: TLabel;
    Label3: TLabel;
    StaticText4: TStaticText;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    const
    //adresy wartosci postaci
    Player_ClubPerc = $634BCC - 100;
    Player_SwordPerc = $634BCC - 96;
    Player_AxePerc = $634BCC - 92;
    Player_DistnacePerc = $634BCC - 88;
    Player_ShieldingPerc = $634BCC - 84;
    Player_FishingPerc = $634BCC - 80;
    Player_FistPerc = $634BCC - 104;
    //koniec procenty
    Player_Fist = $634BCC - 76;
    Player_Club = $634BCC - 72;
    Player_Sword = $634BCC - 68;
    Player_Axe = $634BCC - 68;
    Player_Distance = $634BCC - 60;
    Player_Shielding = $634BCC - 56;
    Player_Fishing = $634BCC - 52;
    //koniec skile
    Player_Cap = $634BCC - 36;
    Player_Stamina = $634BCC - 32;
    Player_Soul = $634BCC - 28;
    //koniec eq
    Player_ManaMax = $634BCC - 24;
    Player_Mana = $634BCC - 20;
    //koniec mana
    Player_MagicLevelPerc = $634BCC - 16;
    Player_LevelPerc = $634BCC - 12;
    Player_MagicLevel = $634BCC - 8;
    Player_Level = $634BCC - 4;
    //koniec poziomy
    Player_Experience = $634BCC;
    Player_HpMax = $634BCC + 4;
    Player_Hp = $634BCC + 8;
    Player_ID = $634BCC + 12;
    //koniec - adresy wartosci postaci
    BATTLELIST_START = $634C38 + 4;
    BATTLELIST_END = $634C38 + 4 + ($A8 * 250);
    StepCreatures = $A8;
    MaxCreatures = 250;
    //koniec battlelist
    DistanceId = 0;
    DistanceType = 3;
    DistanceName = 4;
    DistanceX = 36;
    DistanceY = 40;
    DistanceZ = 44;
    DistanceScreenOffsetHoriz = 48;
    DistanceScreenOffsetVert = 52;
    DistanceIsWalking = 76;
    DistanceWalkSpeed = 140;
    DistanceDirection = 80;
    DistanceIsVisible = 144;
    DistanceBlackSquare = 132;
    DistanceLight = 120;
    DistanceLightColor = 124;
    DistanceHPBar = 136;
    DistanceSkull = 148;
    DistanceParty = 152;
    DistanceWarIcon = 160;
    DistanceIsBlocking = 164;
    DistanceOutfit = 96;
    DistanceColorHead = 100;
    DistanceColorBody = 104;
    DistanceColorLegs = 108;
    DistanceColorFeet = 112;
    DistanceAddon = 116;
    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
    //battlelist czytanie
    function pozycja:integer;
    var
    i,id_battle,id:integer;
    begin
    id:=readmeminteger($634BCC + 12);
    for i:=1 to 149 do
    Begin
    id_battle:=Readmeminteger($634C38 + 4 + (i*160)-4);
    if id_battle=ID then
    Begin
    Result :=i;
    exit;
    end;
    end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Timer1.Enabled:=true;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    label1.Caption:=inttostr(ReadMeminteger($634BCC - 4));
    label2.Caption:=inttostr(ReadMeminteger($634BCC - 8));
    label3.Caption:=inttostr(ReadMeminteger($634BCC - 20));
    end;
    procedure MemWriteInteger(Address: Integer; buf: Integer; Length: DWORD);
    var ProcID, THandle: Integer;
    e: DWORD;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcID);
    THandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
    WriteProcessMemory(THandle, Ptr(Address), @buf, Length, e);
    CloseHandle(THandle);
    end;



    procedure MemWriteString(Address: Integer; buf: String; Length: DWORD);
    var ProcID: Integer;
    THandle: hWnd;
    e: DWORD;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcID);
    THandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
    WriteProcessMemory(THandle, Pointer(Address), PChar(buf), Length, e);
    CloseHandle(THandle);
    end;
    procedure SendPacket(ProcessID: Cardinal; Packet: Pointer; Encrypt: Boolean; SafeArray: Boolean); stdcall; external 'packet.dll';
    end.
    Ostatnio zmieniony przez wlazelko : 01-09-2010, 17:23 Powód: dodanie nr gg

  4. Reklama
  5. #394

    Data rejestracji
    2006
    Posty
    46
    Siła reputacji
    0

    Domyślny

    A jak napisać bota do innego klienta niż orginalny klient Tibi, chodzi mi o własnego klienta OTS.

  6. #395
    Avatar .:Twist:.
    Data rejestracji
    2006
    Wiek
    32
    Posty
    101
    Siła reputacji
    19

    Domyślny

    cheat engine - szukasz zmiennych i podstawiasz do programu. ot co

  7. #396

    Data rejestracji
    2006
    Posty
    46
    Siła reputacji
    0

    Domyślny

    Cytuj .:Twist:. napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    cheat engine - szukasz zmiennych i podstawiasz do programu. ot co
    Ale jeżeli ten klient nie nazywa się 'Tibia client' tylko nie ma żadnej nazwy (okno jest bez żadnej nazwy) to jakoś muszę po procesach zrobić makro?

  8. Reklama
  9. #397
    Avatar .:Twist:.
    Data rejestracji
    2006
    Wiek
    32
    Posty
    101
    Siła reputacji
    19

    Domyślny

    to jest taki program window-title-changer

  10. #398
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    33
    Posty
    267
    Siła reputacji
    16

    Domyślny

    Cytuj wlazelko napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Czy mógłby mi ktoś pomóc zabrałem się za pisanie bota pod tibię 8.61
    ale to co napisał yaboo nie bardzo pomogło.chciałbym dodać do mojego bota pare udogodnień np rune maker,light,spell caster,zmiane outfitów??Moje gg:10180836
    zrobiłem narazie tyle:

    ...syf...
    czyli co ktoś ma za ciebie wszystko napisać? haha
    up zwykły hex editor styknie jak by poszukał to by się dowiedział jak można zmienić ClassName. Można też znaleść po tym jak figuruje w procesach np tibia ma tibia.exe
    PIŻMAG

  11. #399
    Avatar Rzulf
    Data rejestracji
    2009
    Posty
    481
    Siła reputacji
    16

    Domyślny

    Moglby mi ktos podac adresy do odczytania pozycji gracza z tibi 8.61? Znalazlem pare, ale okazaly sie bledne, poniewaz albo wychodzily 7-9 cyfrowe liczby albo poprostu 0.
    Mam tez problem z odczytaniem nicku postaci poniewaz kiedy jestem sam na ekranie jest wszystko ok, ale kiedy na battle list pojawia sie ktos to bot wyswietla jego nick. Wydaje mi sie, ze odczytywanie nicku pod 8.61 poprostu sie zmienilo i nigdzie nie moge tego znalesc

  12. Reklama
  13. #400
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    33
    Posty
    267
    Siła reputacji
    16

    Domyślny

    p_Z = $644260;
    p_x = p_Z+8;
    p_y = p_Z+4;
    PIŻMAG

  14. #401

    Data rejestracji
    2008
    Położenie
    Police
    Posty
    17
    Siła reputacji
    0

    Domyślny

    Ołkej. A jest coś w stylu 'FreeProxy', żeby odczytywało pakiety z tibii 8.54? Bo Freeproxy jest do 8.4
    .

  15. #402
    Avatar Rzulf
    Data rejestracji
    2009
    Posty
    481
    Siła reputacji
    16

    Domyślny

    Adresy dzialaja, ale nie wiem czy poprawnie. Wysokosc napewno tak, ale gdy sprawdzam pos w carlin to wychodzi ok 32k tak powinno byc czy trzeba cos zmienic? I co z odczytaniem nicku?

  16. Reklama
  17. #403
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    33
    Posty
    267
    Siła reputacji
    16

    Domyślny

    Mi działają poprawnie
    A z nickiem
    Zrób pętle od zera do bl_max -1
    w pętli odczytaj z nr indeksu id stworka jak będzie równy twojemu id to w rezultacie daj name
    PIŻMAG

  18. #404
    Avatar Rzulf
    Data rejestracji
    2009
    Posty
    481
    Siła reputacji
    16

    Domyślny

    Kod :
    for i:=0 to BattleList_MaxCreatures-1 do
    Begin
    if BattleList.StepCreatures=Player_Id then
    ??
    end;
    Chodzi o cos takiego?
    Nie wiem jak zrobic cos w miejscu "??"
    Ostatnio zmieniony przez Rzulf : 14-09-2010, 16:04

  19. #405
    Avatar LGTK
    Data rejestracji
    2009
    Położenie
    Podlaskie, Białystok
    Wiek
    33
    Posty
    267
    Siła reputacji
    16

    Domyślny

    Kod :
     for Current := 0 to BL_Max do
      begin
        if ( ReadMemInt(BattleList_Start+(Current*BL_Size)+BL_Dist_ID) = Player_id ) then
        begin
       result:=ReadMemStr(BattleList_Start+(Current*BL_Size)+BL_Dist_Name);
    end;
    PIŻMAG

  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
  •