Thanks for the link to your API. I've had a look, and I think you've done a great job with it. It helped a lot with understanding the packet structures.My api has most packets (mostly) worked out. You can find the client and server packets here: TibiaAPI/TibiaAPI/Network at master · jo3bingham/TibiaAPI (https://github.com/jo3bingham/TibiaAPI/tree/master/TibiaAPI/Network)
You’ll find the FullMap packet in the Server directory, and you’ll find the code to parse an area (ReadArea) in NetworkMessage.cs.
I’m not aware of a written description of packet structures, so you may have to look at code - like my api or TFS - to get the information you’re looking for.
If needed, I could write up a quick description of the FullMap packet if the code doesn’t fully make sense.
If you’re parsing an OTBM map, I would suggest using the items.otb file associated with that map. items.otb is similar to the Tibia.dat file but with more information.Thanks for the clarification. So, if I understand correctly, I need to parse the OTBM map in Tibia.dat to find information related to walkability on the "ground-tile." Is that accurate?
One option is, if you have access to the OTBM and OTB files then you could parse the map from the OTBM and create a dictionary where the key is a position and the value is whether or not that position is walkable (based on the objects on that tile and whether or not they are walkable from the data in the OTB files). The biggest downside to this approach is that the game world is dynamic, so you can't be sure a tile will always be walkable because an item that blocks walking, or a creature, could make its way on that tile.Maybe I should have pointing this out in my first post, but I'm trying to figure out the walkable tiles around the player (or the full map). I've got to do this by parsing packets or the game's .dat files. You seem to know your stuff, so what do you think? Should I read the items.otb and map it against the positions in the full map packet? What's the simplest approach? Any advice would be awesome. Thanks!
My api I linked to before works on real Tibia, with some caveats; it only works on non-BattlEye protected servers on Windows (Zuna and Zunera), but it works on every server on Linux and macOS (BattlEye isn’t as sophisticated on those OSes as it is on Windows). Feel free to read the README on my api repro and some of the wiki how-to’s to get a better idea of how it works. I’m assuming you’re using a proxy to get the packets? My api is just a proxy. I’ve never had an account/character banned/deleted from using it, but I also only really used it to update packets.Thanks a lot for your detailed reply. So, I ended up with this method where I grab the titles from the packets and then look up the corresponding IDs in that .dat file. It was a real struggle but finally, I got it working... Now, I have a super lightweight client that can log in to the game, move around, and runefarm. Maybe I'll hook it up to a webserver so that it can be accessed from anywhere through a browser.
It would be nice to make this work on real Tibia, but I guess BattleEye can detect custom clients, right?
Yes, your API is a goldmine – it helped a lot. Does real Tibia use the same encryption as OT?My api I linked to before works on real Tibia, with some caveats; it only works on non-BattlEye protected servers on Windows (Zuna and Zunera), but it works on every server on Linux and macOS (BattlEye isn’t as sophisticated on those OSes as it is on Windows). Feel free to read the README on my api repro and some of the wiki how-to’s to get a better idea of how it works. I’m assuming you’re using a proxy to get the packets? My api is just a proxy. I’ve never had an account/character banned/deleted from using it, but I also only really used it to update packets.
Edit: Ah, nvm, it seems you’ve built a custom client?
Yes. As far as I’m aware, OT engines haven’t changed their encryption; meaning an OT that supports the Tibia11 client would have the same encryption as RL Tibia.Yes, your API is a goldmine – it helped a lot. Does real Tibia use the same encryption as OT?
I would assume so, yes. If I remember correctly, the ClientCheck packet is responsible for this (though I could be mistaken). It should be fine on Zuna and Zunera, and possibly any server if you’re on Linux or macOS, but I wouldn’t risk it on an account you care about.Yes, I'll build a custom client. So if I run it on real Tibia, it will not have any BattleEye running. But I guess they use server-side BattleEye as well, which can detect this?