I'm guessing you're comparing this to the client's battle window? Keep in mind that the client's battle window only displays creatures that are visible to you, while the battlelist in memory stores all creatures you encounter (until it gets full, then it removes older, unnecessary entries). And yes, they are listed in memory in the same order they're listed in the battle window, by checking the IsVisible offset while looping the memory structure will give you the creatures that you're looking for.
Now my second question, are you wanting this information because you're working on sending mouseclicks to the battle window in order to attack creatures? If so, then you should stop. Why? Because this would require having the battle window open and stretched out enough to accommodate the target being shown in the list. This would reduce space needed for containers, and, in the end, just be completely frustrating. You would be better off interacting with creatures on-screen via the game window. Which is actually a lot easier to perform than you might think, and a lot easier than interacting with the battle window. The client holds all the information you need to make this work, and all you need is the game windows top/left positions and it's width and height. Let me show you with an example...
Let's say the game windows values needed are like so:
Left = 100
Top = 100
Height = 500
Width = 700
The game window can be seen as a grid of 15 horizontal tiles and 11 vertical tiles with yourself in the middle:
HorizontalTiles = 15
VerticalTiles = 11
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOXOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
OOOOOOOOOOOOOOO
Knowing this we can get our player position because we know it'll always be at 8x,6y on the tiles. And we can use this to find the screen position of our player like so:
Code:
private point GetPlayerPosition()
{
double TileSize = Width / HorizontalTiles; //this is the size of each tile, in this case 46.66-
double xCoordinate = (TileSize * 8) - (TileSize / 2) + Left; //we have to subtract half of a tile to get the middle of our tile, then add the left of the game window to get the x position on the client
double yCoordiante = (TileSize * 6) - (TileSize / 2) + Top; //read above, but we need to add the top here for y position.
return new point(xCoordinate, yCoordinate);
}
Using the creatures position in battlelist compared to your own you can easily find where the creature is on screen. I won't show you how because I don't want to make it too easy on you. :P