Anmeldungsdatum: Apr 2012
Beiträge: 18
|
Jo jetzt failt bei mir das w2s, folgende Funktionen benutze ich:
CPP Code: bool WorldToScreen(float from[3], float *to, float m_vMatrix[16], int res[2]) { int width = res[0]; int height = res[1]; if(ScreenTransform(from, to, m_vMatrix) == false) { float x = width / 2; float y = height / 2; x += 0.5 * to[0] * height + 0.5; y -= 0.5 * to[1] * width + 0.5; to[0] = x; to[1] = y; return true; } return false; } bool ScreenTransform(float p[3], float *to, float worldToScreen[16]) { float w; to[0] = worldToScreen[0] * p[0] + worldToScreen[1] * p[1] + worldToScreen[2] * p[2] + worldToScreen[3]; to[1] = worldToScreen[4] * p[0] + worldToScreen[5] * p[1] + worldToScreen[6] * p[2] + worldToScreen[7]; w = worldToScreen[12] * p[0] + worldToScreen[13] * p[1] + worldToScreen[14] * p[2] + worldToScreen[15]; to[3] = 0.0f; if(w < 0.001f) return false; float invw = 1.0f / w; to[0] *= invw; to[1] *= invw; return true; }
Dann lese ich halt die Spielerdaten aus und auch die Matrix:
CPP Code: ReadProcessMemory(cP.hProcess, (LPCVOID)(cP.dwEngine+0x53A394), &ViewMatrix, 4, 0); ReadProcessMemory(cP.hProcess, (LPCVOID)(CRender+0x154), &w2sx, sizeof(vmatrix), 0); //vmatrix = typdef float vmatrix[16]
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: 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 :/.
|