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 85

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 85
Tibia 11 linux - Java
Results 1 to 2 of 2

Thread: Tibia 11 linux - Java

  1. #1
    Super Moderator klusbert's Avatar
    Join Date
    Dec 2007
    Posts
    1,201

    Tibia 11 linux - Java

    Hello there has been a long time since I posted here. I am not even sure anyone is still online these days.
    I wanted to share a mini tutorial with you how to work with Tibia on Linux.

    Tools needed:
    1. Cheat engine server (https://www.cheatengine.org/downloads.php)
    2. Virtualbox, virtualmanager or vmwareplayer( I prefer virtual manager) with a working windows installation
    3. On the windows VM install cheatengine.

    Alternatively, you can install cheatengine using wine, but you still need cheat engine server to interact with the client.

    If you have not heard of WinApps I recommend you to cheat it out, then you can run windows apps "natively" on Linux with a backend VM.

    Let's find an address we start easy by finding player experience.

    I will not use any pointers can or anything, the method I use seems to work quite well.

    https://imgur.com/Vklj1h1
    These steps should be very easy for anyone to follow.

    Next right click on that address and click "Find out what writes to this address"
    Then kill a monster to gain some experience you we see some result in my case I got this.
    https://imgur.com/edFmdrS

    Next, add the address value of the RDI in my case it is 084091C8 to the address list.

    We have now an address at 84091C8 that holds the value 26812944 but this "key" is unique so if we find that key in memory we can easily find the player experience address. (keep in mind that these keys changes on client updates)

    Please verify this by searching for a new value in cheat engine and enter the value 26812944.
    https://imgur.com/Lq3jHZ3

    So with this logic we can implement a memory scanner in our favorite language(i have two versions one in java and one in c

    https://gitlab.klusbert.xyz/klusbert...p-memory-linux
    https://gitlab.klusbert.xyz/klusbert/java-memory

    The java version seems a bit faster and is more updated including lighthack using battlelist.
    The battle list reader is however not perfect, I had some trouble navigating through the tree structure but it seems to work so I will leave it for now.

    Code:
     @Override
        public void scan(MemoryScanner _memoryScanner, Map<AddressIdentifier, Long> addresses) {
            List<Long> result = _memoryScanner.scanInt(26812944, true);
            if (result.size() != 1) {
                System.out.println("Error finding player Experience address");
            }
    
            long baseAddress = result.get(0);
            addresses.put(AddressIdentifier.PLAYER_EXPERIENCE, baseAddress + 0x28);
        }
    Here is a sample of code that should help you understand how I find these addresses in memory.

    The reason why I left the C# project is that I can't find any easy way to create a UI with c# in Linux. Monodevelop crashes for me without any error code and programmatically create UI is not my cup of tea.
    Any tips is appreciated
    I thought of going with Python since I used it in a deep learning course but Python gives me rashes.

    I tried to create a model that was able to identify creatures from the screen, if you want you can check that project here. https://colab.research.google.com/dr...YBOX5S-JoKvrFZ
    Last edited by klusbert; 07-20-2021 at 10:28 AM.
    How to find battlelist address --> http://tpforums.org/forum/thread-8146.html
    Updating addresses --> http://tpforums.org/forum/thread-8625.html
    DataReader --> http://tpforums.org/forum/thread-10387.html

  2. #2
    Super Moderator klusbert's Avatar
    Join Date
    Dec 2007
    Posts
    1,201
    You will of course need to have root access to be able to read/write memory, I just run my intellij with sudo. I had some problem with latest 2021 version so I use 2020 instead.
    How to find battlelist address --> http://tpforums.org/forum/thread-8146.html
    Updating addresses --> http://tpforums.org/forum/thread-8625.html
    DataReader --> http://tpforums.org/forum/thread-10387.html

Posting Permissions

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