Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/iano/public_html/tpforums-vb5/forum/includes/class_core.php on line 5842

PHP Warning: Use of undefined constant MYSQL_NUM - assumed 'MYSQL_NUM' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_BOTH - assumed 'MYSQL_BOTH' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 588

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 612

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6
How to get object information from Tibia's memory - Page 2
Page 2 of 5 FirstFirst 1234 ... LastLast
Results 11 to 20 of 49

Thread: How to get object information from Tibia's memory

  1. #11

    How to get object information from Tibia's memory

    Well the distance between each entry is 0x4C, so it's like this:
    starting_address + 0x4C * (ItemId - 100) + offset*4, where offset is the number of integers from the beginning until the variable you want, for example, flags
    starting_addres + 0x4C * (ItemId - 100) + 9*4.

    EDIT: I updated the struct.

  2. #12
    Administrator
    Join Date
    Mar 2007
    Location
    Melbourne, Australia
    Posts
    1,274

    How to get object information from Tibia's memory

    Geez, I'm gone for a day and you guys have all this done!
    I'm proud of you lol

    @Cameri
    Damn good work dude! How did you manage to find this?

  3. #13

    How to get object information from Tibia's memory

    well its strange x_X when i checked the value with cheat engine for 5D18F6 the value was 8E30000... the same as cameris...

    EDIT:
    when i do
    Code:
    var
    addr : integer;
    begin
    addr := memreadint(tibiadat_startptr) + $20;
    edit1.Text := inttostr(memreadint(addr + $4C * (3504 - 100) + 9*4));
    end;
    then i get value 4533208 strange isnt it?

  4. #14
    Programmer
    Join Date
    Mar 2007
    Posts
    770

    How to get object information from Tibia's memory

    That pointer isnt a pointer, its a static memory value that equals the address where your datfile is stored :\

    I tried searching for that stuff we spoke about yesterday with Cheat Engine, it only gave me the same addresses as tsearch. i'll tty later

  5. #15
    Senior Member
    Join Date
    Mar 2007
    Posts
    218

    How to get object information from Tibia's memory

    omg omg omg i'm gonna try it on my mega ultra hiper project

    Quote Originally Posted by yaboomaster
    any example how to read this info from item in player hand? Just where to start
    you must get the itemID of the item in your hand and then get the info for this ID

    i love ya cameri :icon10:

  6. #16

    How to get object information from Tibia's memory

    That address, 0X08E30000, plus +0x20, is where it all starts...
    If you are using ollydbg, and you are expecting to see the objects information, without clicking the Run button, you won't see shit. That's cause the application hasn't even started, so it has not read Tibia.dat. You must wait until it does.

  7. #17

    How to get object information from Tibia's memory

    Quote Originally Posted by Xyllo
    well its strange x_X when i checked the value with cheat engine for 5D18F6 the value was 8E30000... the same as cameris...

    EDIT:
    when i do
    Code:
    var
    addr : integer;
    begin
    addr := memreadint(tibiadat_startptr) + $20;
    edit1.Text := inttostr(memreadint(addr + $4C * (3504 - 100) + 9*4));
    end;
    then i get value 4533208 strange isnt it?
    That's not strange... that's right. do you see that 9 in your formula? you are trying to read the flags, and the flags, to understand them, you must see them in binary.
    What you got there in binary is:
    4533208 = 0b10001010010101111011000

    EDIT: Um, you guys are right, the address I gave you is NOT a pointer. It's static and it always points to 08E30000, the problem is, that in 08E30000 does not always Tibia save the information we want. For example, i now found it in 08FD0000, using Cheat Engine. I included a pic so you guys could check it out...

  8. #18

    How to get object information from Tibia's memory

    AHH!! why you no told thats binary lol :P now i understand

  9. #19

    How to get object information from Tibia's memory

    And no, the address isn't static... it's a memory region, and it's allocated randomly, but its usually at the same place for me...

    The size of the memory region is: 0x8B000.

    Here's how the memory section looks like (in the picture) in olly:
    It's the selected one if you can't see clearly.

  10. #20

    How to get object information from Tibia's memory

    So... after 2 days... I figured out how to get the starting address... and here's how:

    Code:
    				const unsigned int MaxItems = 7441; //from 100 to 7540, there are 7441 items
    				const unsigned int structSize = sizeof(TibiaObj); // size of the structure, right now its 0x4C
    				const unsigned int* HeapHandlePointer = (const unsigned int*)0x772500; //pointer to the heap handle handle
    
    				PROCESS_HEAP_ENTRY phe;
    				phe.lpData = NULL;
    				unsigned int HeapEntryStartAddress=0;
    				while (HeapWalk((HANDLE)*HeapHandlePointer, &phe)) {
    					if ((unsigned int)phe.cbData == MaxItems*structSize) {
    						HeapEntryStartAddress = (unsigned int)phe.lpData;
    						break;
    					}
    				}
    HeapEntryStartAddress is the starting address we've wanted. :P ENJOY

    EDIT: Btw, there are 7441 objects in tibia.dat, not 7951, those other ones they are monsters, effects and distance effects. 7441 objects yes, but they start at 100 and end at 7540. So 7540-100+1=7441. You can find that 7541 in the Tibia.dat, offset 0x4.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •