# SolvedESP Problem with WorldToScreen function Fleep

Status
Not open for further replies.

#### MrKerras

##### Newbie
Full Member
Hi, I have a problem with the function WorldToScreen:
C++:
``````typedef struct
{
float flMatrix [4][4];
}WorldToScreenMatrix_t;

bool WorldToScreen(float * from, float * to)
{
float w = 0.0f;

to[0] = MyPlayer.WorldToScreenMatrix.flMatrix[0][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[0][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[0][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[0][3];
to[1] = MyPlayer.WorldToScreenMatrix.flMatrix[1][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[1][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[1][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[1][3];
w = MyPlayer.WorldToScreenMatrix.flMatrix[3][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[3][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[3][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[3][3];``````
Because I do not know what comprises a multidimensional array of float.
Could someone write me what each float?
C++:
``````flMatrix[0][0] = ?
flMatrix[0][1] = ?
flMatrix[0][2] = ?
flMatrix[0][3] = ?

flMatrix[1][0] = ?
flMatrix[1][1] = ?
flMatrix[1][2] = ?
flMatrix[1][3] = ?

flMatrix[3][0] = ?
flMatrix[3][1] = ?
flMatrix[3][2] = ?
flMatrix[3][3] = ?``````
I have the data:
Player(X,Y,Z)
Enemy(X,Y,Z)
AngleRotation(X,Y,Z): (X= min -89.00, max 89.00), (Y= min -179.96, max 179.96), (Z= 0.0)
Screen(W,H)

Maybe you know how to use OllyDbg to find the functions where the data is located,
because I would be able to do not only ESP Hack for CS: S and CS: GO,
but also to other games, and do not always fit the data will be.

Thank you and I hope for your help.

#### Rake

I would now add features aimbot, and as you wrote already done, but as the opponent is standing sideways or squats it's not going to work.

I need to know all three cords of X, Y, Z.
You need to use the bone matrix if you want this to work.

Use this world to screen:

Bones:

#### rN'

##### Jr.Hacker
Meme Tier VIP
Could someone write me what each float?
No because they are going to change all the Time.

C++:
``````WorldToScreenMatrix_t pMatrix;
pMatrix = Memory::Read< WorltToScreenMatrix_t >( Memory::g_pModule->GetModule( "client" ) + OFFSET_VIEWMATRIX );``````

Last edited:

#### MrKerras

##### Newbie
Full Member
I know I do not mean values​​, only one, position, rotation, etc. ?

I'll tell in simple.
Data obtained from "WorldToScreenMatrix" are not correct, the point is that it does not fit, so I want to know is what type of data
or flMatrix [0] [0] is the Enemy Position X or Y or Z, or X or Y PlayerPos or Z, or X or Y Angle
What contain the data, what they mean.

Last edited:

#### MrKerras

##### Newbie
Full Member
Or give me the address for WorldToScreenMatrix in Counter-Strike Global Offensive, then see for yourself what that answer, as to what fits.

#### Heisa

##### Jr.Coder
Full Member
Nobleman
ViewMatrix = 0xA37B84

#### MrKerras

##### Newbie
Full Member
client.dll+0xA37B84 ?

Because in "engine.dll+0xA37B84" are all zeros.

I checked on client.dll and running but it is not yet ok
when I'm dating at the bottom or in the middle of it works, but when I look at the sky that surround your opponent falls down.

Last edited:

#### MrKerras

##### Newbie
Full Member
Sorry to refresh this topic, but needs help.
I do not work for me properly function:
C++:
``````bool WorldToScreen(float * from, float * to, TWorldToScreenMatrix WorldToScreenMatrix, RECT m_Rect)
{
float w = 0.0f;

to[0] = WorldToScreenMatrix.flMatrix[0][0] * from[0] + WorldToScreenMatrix.flMatrix[0][1] * from[1] + WorldToScreenMatrix.flMatrix[0][2] * from[2] + WorldToScreenMatrix.flMatrix[0][3];
to[1] = WorldToScreenMatrix.flMatrix[1][0] * from[0] + WorldToScreenMatrix.flMatrix[1][1] * from[1] + WorldToScreenMatrix.flMatrix[1][2] * from[2] + WorldToScreenMatrix.flMatrix[1][3];
w = WorldToScreenMatrix.flMatrix[3][0] * from[0] + WorldToScreenMatrix.flMatrix[3][1] * from[1] + WorldToScreenMatrix.flMatrix[3][2] * from[2] + WorldToScreenMatrix.flMatrix[3][3];

if(w < 0.01f)
return false;

float invw = 1.0f / w;
to[0] *= invw;
to[1] *= invw;

int width = (int)(m_Rect.right - m_Rect.left);
int height = (int)(m_Rect.bottom - m_Rect.top);

float x = width/2;
float y = height/2;

x += 0.5 * to[0] * width + 0.5;
y -= 0.5 * to[1] * height + 0.5;

to[0] = x;
to[1] = y;

return true;
}``````
In the pictures below is presented the problem of underreporting of the "Y" when you look up.

I'm sorry too for my english, but I'm counting on your help.

#### Nether

##### The Angel Of Verdun
Meme Tier VIP
Dank Tier Donator
Sorry to refresh this topic, but needs help.
I do not work for me properly function:
C++:
``````bool WorldToScreen(float * from, float * to, TWorldToScreenMatrix WorldToScreenMatrix, RECT m_Rect)
{
float w = 0.0f;

to[0] = WorldToScreenMatrix.flMatrix[0][0] * from[0] + WorldToScreenMatrix.flMatrix[0][1] * from[1] + WorldToScreenMatrix.flMatrix[0][2] * from[2] + WorldToScreenMatrix.flMatrix[0][3];
to[1] = WorldToScreenMatrix.flMatrix[1][0] * from[0] + WorldToScreenMatrix.flMatrix[1][1] * from[1] + WorldToScreenMatrix.flMatrix[1][2] * from[2] + WorldToScreenMatrix.flMatrix[1][3];
w = WorldToScreenMatrix.flMatrix[3][0] * from[0] + WorldToScreenMatrix.flMatrix[3][1] * from[1] + WorldToScreenMatrix.flMatrix[3][2] * from[2] + WorldToScreenMatrix.flMatrix[3][3];

if(w < 0.01f)
return false;

float invw = 1.0f / w;
to[0] *= invw;
to[1] *= invw;

int width = (int)(m_Rect.right - m_Rect.left);
int height = (int)(m_Rect.bottom - m_Rect.top);

float x = width/2;
float y = height/2;

x += 0.5 * to[0] * width + 0.5;
y -= 0.5 * to[1] * height + 0.5;

to[0] = x;
to[1] = y;

return true;
}``````
In the pictures below is presented the problem of underreporting of the "Y" when you look up.

View attachment 2624
View attachment 2625

I'm sorry too for my english, but I'm counting on your help.
that is how the equation works, it would take a lot more maths and coding to have it as perfect as you want as you are still modifying the view matrix, same as when you look down a scope.

FYI, its also just a 3x4 matrix not 4x4

#### MrKerras

##### Newbie
Full Member
Thank you, need to check yet, can I find a solution.
Check me if the address is correct and whether the data fit ViewMatrix.

Here is a screen of CheatEngine for ViewMatrix address.

#### MrKerras

##### Newbie
Full Member
He was back and update Things have changed almost everything, including ViewMatrix.
I found 500 static addresses when looking like Fleep.
I do not know which one is the right address, you can write to me like you are searching for him?

#### rN'

##### Jr.Hacker
Meme Tier VIP
Up2Date - 13.06.2014(00:46)
C++:
``client.dll+A36B04``

#### MrKerras

##### Newbie
Full Member
Thank you very much, but tell me how do you know that this is just the address?

#### MrKerras

##### Newbie
Full Member
I know, I just ViewMatrix is before heading player.
Still have not found a solution to the problem of underreporting position Y.
If anyone found a solution to let it write here, I find that if I write here too the solution of the problem

#### rN'

##### Jr.Hacker
Meme Tier VIP
1. add the address manual in CheatEngine and look at the Value.
2. Go to Counter-Strike: Global Offensive back and type in console setang 90 90
3. Go back to CheatEngine and look for the Value
4. Go back to Counter-Strike: Global Offensive and type in console setang 40 40
5. ...

Now you know the different values from different angle positions.
1. Go to Counter-Strike: Global Offensive and type in console setang 90 90
2. Go to CheatEngine and search for XXXXXX as float rounded extreme
3. Go back to Counter-Strike: Global Offensive and type in console setang 40 40
4. Go back to CheatEngine and search for XXXXXX next
5. Repeat this until you have less ~6 static addresses
6. Now look for the right one in client.dll
7. profit

#### MrKerras

##### Newbie
Full Member
Thank you, you are my mentor
I remain 23 addresses static and you can not lose more that were 6

To the right just yet with this function to cope was to have great :/

This is my first cheat ESP, so I'm still green in these matters

Maybe you know how easy to find as there are players in the game?

Last edited:

#### rN'

##### Jr.Hacker
Meme Tier VIP
Thank you, you are my mentor
I remain 23 addresses static and you can not lose more that were 6

To the right just yet with this function to cope was to have great :/

This is my first cheat ESP, so I'm still green in these matters

Maybe you know how easy to find as there are players in the game?
Very easy.
C++:
``````for( int i = 0; i < CGlobalVars()->maxClients; i++ )
{
DWORD dwEntity;
ReadProcessMemory( hProcess, reinterpret_cast< LPCVOID >( ( dwClient + OFFSET_ENTITYLIST + i * 0x10 ) - 0x10 ), &dwEntity, 4, 0 );
}``````

#### MrKerras

##### Newbie
Full Member
Sorry, I wrote wrong, I meant to check if the player exists because bowls showed me the border and in the middle there was no one: D
Neither Health or if he was alive did not help, because as a player came out of the game these values ​​did not change.
Now, instead, I found something like a timer with offset 0x38 of the player.
When a player comes out this value stops changing.

It is a pity that this function calculates 2D from 3D positions does not work well.
Because I'd like to write another such light Aimbot and using the ESP.
And just to make the program read from the process that VAC is not stuck.
Injest does not want to.

Last edited:

#### MrKerras

##### Newbie
Full Member
I found the acting functions WorldToScreen
C++:
``````bool WorldToScreen(float * from, float * to, TWorldToScreenMatrix WorldToScreenMatrix, int ScreenWidth, int ScreenHeight)
{
float w = WorldToScreenMatrix.flMatrix[3][0] * from[0] + WorldToScreenMatrix.flMatrix[3][1] * from[1] + WorldToScreenMatrix.flMatrix[3][2] * from[2] + WorldToScreenMatrix.flMatrix[3][3];
to[2] = 0;
if (w > 0.01)
{
float inverseWidth = 1 / w;
to[0] = (ScreenWidth / 2) + (0.5 * ((WorldToScreenMatrix.flMatrix[0][0] * from[0] + WorldToScreenMatrix.flMatrix[0][1] * from[1] + WorldToScreenMatrix.flMatrix[0][2] * from[2] + WorldToScreenMatrix.flMatrix[0][3]) * inverseWidth) * ScreenWidth + 0.5);
to[1]= (ScreenHeight / 2) - (0.5 * ((WorldToScreenMatrix.flMatrix[1][0] * from[0] + WorldToScreenMatrix.flMatrix[1][1] * from[1] + WorldToScreenMatrix.flMatrix[1][2] * from[2] + WorldToScreenMatrix.flMatrix[1][3]) * inverseWidth) * ScreenHeight + 0.5);
return true;
}
return false;
}``````
Anyone know where is the position of the head of opponents?

Last edited:

#### TastyHorror

##### Coder
Dank Tier Donator
Nobleman
Use the bone matrix to get the "head" of a player...or just go a kind of guess once you get the x,y of enemy coords? dont..be..lazy.

#### MrKerras

##### Newbie
Full Member
Where is the matrix of bone?

Status
Not open for further replies.
Attention! Before you post:

99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

• Fill out the form correctly
• Tell us the game name & coding language