OldSchoolHack

Registrieren / Anmelden Deutsch

WorldToScreenMatrix

icon Thema: WorldToScreenMatrix

Anmeldungsdatum: Apr 2012

Beiträge: 18

Jo jetzt failt bei mir das w2s, folgende Funktionen benutze ich:
CPP Code:
  1.  
  2. bool WorldToScreen(float from[3], float *to, float m_vMatrix[16], int res[2])
  3. {
  4. int width = res[0];
  5. int height = res[1];
  6.  
  7. if(ScreenTransform(from, to, m_vMatrix) == false)
  8. {
  9. float x = width / 2;
  10. float y = height / 2;
  11. x += 0.5 * to[0] * height + 0.5;
  12. y -= 0.5 * to[1] * width + 0.5;
  13. to[0] = x;
  14. to[1] = y;
  15. return true;
  16. }
  17. return false;
  18. }
  19. bool ScreenTransform(float p[3], float *to, float worldToScreen[16])
  20. {
  21. float w;
  22. to[0] = worldToScreen[0] * p[0] + worldToScreen[1] * p[1] + worldToScreen[2] * p[2] + worldToScreen[3];
  23. to[1] = worldToScreen[4] * p[0] + worldToScreen[5] * p[1] + worldToScreen[6] * p[2] + worldToScreen[7];
  24. w = worldToScreen[12] * p[0] + worldToScreen[13] * p[1] + worldToScreen[14] * p[2] + worldToScreen[15];
  25. to[3] = 0.0f;
  26. if(w < 0.001f)
  27. return false;
  28. float invw = 1.0f / w;
  29. to[0] *= invw;
  30. to[1] *= invw;
  31. return true;
  32. }
  33.  

Dann lese ich halt die Spielerdaten aus und auch die Matrix:
CPP Code:
  1.  
  2. ReadProcessMemory(cP.hProcess, (LPCVOID)(cP.dwEngine+0x53A394), &ViewMatrix, 4, 0);
  3. ReadProcessMemory(cP.hProcess, (LPCVOID)(CRender+0x154), &w2sx, sizeof(vmatrix), 0); //vmatrix = typdef float vmatrix[16]
  4.  
Spielerdaten werden alle richtig ausgelesen, daran kann es nicht liegen.
Wenn ich dann die Posi des Spielers in die WorldToScreen Funktion einsetze, als ca so:
CPP Code:
  1. if(WorldToScreen(rPlayers[i].AbsOrigin, ScreenCord, x, resolution))
klappt es nicht, WorldToScreen returned immer false. Resolution ist dabei die Auflösung die ich vorher durch GetWindowRect von CSS auslese, diese ist auch richtig :/.