Reklama
Strona 24 z 33 PierwszaPierwsza ... 142223242526 ... OstatniaOstatnia
Pokazuje wyniki od 346 do 360 z 486

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

  1. #346
    Maskot

    Domyślny

    A sprawdz

    Kod PHP:
    MemWriteInteger(battlelist_start+pozycja*Distance_Between_Chars+distance_lightcolor,250,3);
    MemWriteInteger(battlelist_start+pozycja*Distance_Between_Chars+distance_light,15,2);
    A jak nie zadziala to sprawdz

    Kod PHP:
    //Battlelist - czytanie
    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*164)); //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;
    //Battlelist - czytanie
    Ostatnio zmieniony przez Maskot : 04-02-2010, 15:29

  2. #347

    Data rejestracji
    2010
    Posty
    12
    Siła reputacji
    0

    Domyślny

    @up Dzięki za to,ale jak wpisałem to zmieniło mi na 2 addony przy outficie ;p czyli zamiast światla ci wyszedł addon changer.Ale dzięki ;p

    Albo mam źle zapisane światło.. 0.0 ale sam mi je tak podałeś parę postów up ;p
    Ostatnio zmieniony przez NedO : 04-02-2010, 16:08

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

    Domyślny

    użyj mojego unitu lh powinien działać tz wpisujesz Light(15,250) czy jakoś tak
    PIŻMAG

  4. Reklama
  5. #349

    Data rejestracji
    2010
    Posty
    12
    Siła reputacji
    0

    Domyślny

    @up

    O co ci chodzi, wogle cie nie ogarniam.. Wyjasnij bardziej szczegolwo

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

    Domyślny

    Cytuj NedO napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    @up

    O co ci chodzi, wogle cie nie ogarniam.. Wyjasnij bardziej szczegolwo
    Jeśli nie wiesz co napisał ten użytkownik wyżej, to szczegółowsze tłumaczenie brzmi mniej więcej tak:
    "Naucz się Delphi".

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

    Domyślny

    Po prostu chłopak nie myśli albo nie czyta wszystkiego :)
    PIŻMAG

  8. Reklama
  9. #352
    Avatar Qjaw1
    Data rejestracji
    2009
    Posty
    69
    Siła reputacji
    17

    Domyślny 7.4

    @LGTK Do czego jest ten skrypt? Runemaker?

    Btw. Czy mógłby ktoś podać adresy do klienta Tibii 7.4? Dzieki z góry ;]

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

    Domyślny

    To jest unit! gdzie masz najpotrzebniejsze funkcje i procedury do tibii od hooka, lh, dll inject, levelspy, do znajdowania itemu w bp szukania gracza na liście przesuwania itemów mówienia write/read string byte bytes integer itp
    PIŻMAG

  11. #354

    Data rejestracji
    2009
    Położenie
    Giżycko
    Posty
    258
    Siła reputacji
    17

    Domyślny

    Mam małe pytanie, otóż staram się nie spisywać całego kodu, tylko sam go pisać, a ten artykuł ma być tylko drobną pomocą więc:

    Kod :
    function ReadMemoryString(Address : Integer) : String;
    var
    IDProc, IDProcess : Cardinal;
    Bufor : Array[1..255] of byte;
    Number : LongWord;
    I : Byte;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient',nil), @IDProc);
    IDProcess := OpenProcess(Process_all_access, false, IDProc);
    Result := ''; 
    ReadProcessMemory(IDProcess, Ptr(Address), @Bufor[1], 255, Number);
    for I := 1 to 255 do
    begin
    if (Bufor[1] = 0) or (Bufor[1] = $0F) then  
    break;
    Result := Result + CHR(Bufor[i]);
    end;
    end;
    Na czerwono zaznaczyłem części kodu, które mnie interesują. Co oznacza $0F, że jeżeli on zostanie wyciągnięty to następuje wyjście z pętli? Jeszcze interesuje mnie zaznaczony 1 fragment kodu, po co opróżniać rezultat, skoro on jeszcze jest "pusty"?

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

    Domyślny

    Cytuj Kambel napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Mam małe pytanie, otóż staram się nie spisywać całego kodu, tylko sam go pisać, a ten artykuł ma być tylko drobną pomocą więc:

    Kod :
    function ReadMemoryString(Address : Integer) : String;
    var
    IDProc, IDProcess : Cardinal;
    Bufor : Array[1..255] of byte;
    Number : LongWord;
    I : Byte;
    begin
    GetWindowThreadProcessId(FindWindow('TibiaClient',nil), @IDProc);
    IDProcess := OpenProcess(Process_all_access, false, IDProc);
    Result := ''; 
    ReadProcessMemory(IDProcess, Ptr(Address), @Bufor[1], 255, Number);
    for I := 1 to 255 do
    begin
    if (Bufor[1] = 0) or (Bufor[1] = $0F) then  
    break;
    Result := Result + CHR(Bufor[i]);
    end;
    end;
    Na czerwono zaznaczyłem części kodu, które mnie interesują. Co oznacza $0F, że jeżeli on zostanie wyciągnięty to następuje wyjście z pętli? Jeszcze interesuje mnie zaznaczony 1 fragment kodu, po co opróżniać rezultat, skoro on jeszcze jest "pusty"?
    Nie wiem po co jest to "0F", chociaż fakt - takiego znaku nie zobaczysz normalnie na ekranie.
    Swoją drogą rezultat nie jest pusty. Delphi nie zeruje zmiennych, jeśli nie są one globalne.

    Ja natomiast zamieniłbym powyższy fragment kodu na:

    Kod :
    function ReadMemoryString(Address : Integer) : String;
    var
      IDProc, IDProcess : Cardinal;
      Bufor : Array[1..255] of byte;
      Number : LongWord;
    begin
      GetWindowThreadProcessId(FindWindow('TibiaClient',nil), @IDProc);
      IDProcess := OpenProcess(Process_all_access, false, IDProc);
      ReadProcessMemory(IDProcess, Ptr(Address), @Bufor[1], 255, Number);
      result:=pchar(@bufor);
    end;

  14. #356

    Data rejestracji
    2009
    Położenie
    Giżycko
    Posty
    258
    Siła reputacji
    17

    Domyślny

    Dzięki za odpowiedź, mam jeszcze jedno pytanie, otóż:
    Jak moge "wymusić" pojawienie się tego białego komunikatu, tylko że z własną treścią. Bo tibia wyswietla takie komunikaty np. You are Full, Sorry Not Possible. Zmiana treści jest prosta, tylko problem tkwi w kontrolowanym wyświetleniu napisu.

    #edit1

    mam jeszcze pytanie, czy trenowanie many "od-do" będzie wykrywalne przez ten cały system? Może niezbyt precyzyjnie się wyraziłem, ale tu jest kod:
    Kod :
    var
      Mniejsza : integer;
      Wieksza : integer;
      Wynik : integer;
    begin
      Wieksza := StrToInt(Edit6.Text);
      Mniejsza := StrToInt(Edit5.Text);
      Wynik := wieksza - mniejsza;
      Randomize;
      if Player_Mana >= Random(Wynik) + Mniejsza then
      Say(Edit4.Text);
    end;
    Ostatnio zmieniony przez Kambel : 13-02-2010, 14:34

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

    Domyślny

    Po coś dałem ten unit było chociaż sprawdzić co tam jest
    a jest tam coś takiego
    Kod :
    Procedure WhiteText(Text:String);
    begin
      WriteMemStr(Status_Text,Text);
      WriteMemByte(Status_Time,50);
    end;
    To chodzi bardziej o pakiety a nie to czy dokładnie co x wysyłasz pakiet

    @Edit
    te up a nie lepiej
    Kod :
    var
     mana: integer;
    begin
    mana:= np. 100?
      if Player_Mana >= mana then
      Say(Edit4.Text);
    end;
    Ostatnio zmieniony przez LGTK : 14-02-2010, 14:11
    PIŻMAG

  16. Reklama
  17. #358

    Data rejestracji
    2009
    Położenie
    Giżycko
    Posty
    258
    Siła reputacji
    17

    Domyślny

    Cytuj LGTK napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Po coś dałem ten unit było chociaż sprawdzić co tam jest
    a jest tam coś takiego
    Kod :
    Procedure WhiteText(Text:String);
    begin
      WriteMemStr(Status_Text,Text);
      WriteMemByte(Status_Time,50);
    end;
    To chodzi bardziej o pakiety a nie to czy dokładnie co x wysyłasz pakiet

    @Edit
    te up a nie lepiej
    Kod :
    var
     mana: integer;
    begin
    mana:= np. 100?
      if Player_Mana >= mana then
      Say(Edit4.Text);
    end;
    No chyba jest różnica między Twoim kodem a moim, no nie?
    Mój kod jest jak najbardziej prawidłowy : )

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

    Domyślny

    ja nie rozumiem poco odejmujesz te dwie wartości
    PIŻMAG

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

    Domyślny

    Kambel:
    Cały czas nie wiadomo na jakiej zasadzie działa system wykrywania botów. Dlatego nawet jeśli uzyskasz jakąś odpowiedź nie traktuj jej jako pewnej.

    I jeszcze wnioski na temat Twojego kodu:

    Randomize jest procedurą, którą wystarczy wywołać raz. W tym miejscu wygląda dziwnie.

    Dla Twojej własnej wygody polecam zrobić sobie funkcję losującą liczbę z danego przedziału. Unikniesz dodawania i odejmowania w miejscach gdzie nie powinno tego być.

    I ostatnia rada, choć nie koniecznie trafna - nie znam całego kodu. Natomiast wygląda na to, że jest to jakaś procedura, która wywołuje się co jakiś czas (zgaduję, że timer albo po otrzymaniu pakietu z ilością many). Zauważ, że przy każdym wywołaniu po raz kolejny losujesz nową ilość many potrzebnej by rzucić zaklęcie - tym samym zwiększasz prawdopodobieństwo, że zostanie rzucone wcześniej. Random(Wynik) powinieneś zapisywać w momencie rzucenia zaklęcia (nie zapomnij zainicjować przy uruchomieniu programu) faktycznie działało tak jak to prawdopodobnie planowałeś.

  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
  •