Начинающий
ты матрицы местами попуталMatrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen);
Matrix44 projection = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40);
Последнее редактирование:
ты матрицы местами попуталMatrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen);
Matrix44 projection = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40);
Брат ну если ты знаешь скажи как нужно сделать, у меня ведь проблема
Matrix44 projection = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen);
Matrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40);
Код:bool project_to_screen(int* v, const Vector3& in, Vector3& out) const { Matrix44 identity; identity.SetIdentity(); Matrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen); Matrix44 projection = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40); if (__mathVector3Project(&out, &in, v, &projection, &view, &identity)) { out.x = out.x * 100.0f / (float)v[2]; out.y = out.y * 100.0f / (float)v[3]; return true; } return false; } bool WorldToScreen(const Vector3& in, Vector3& out) const { int v[4] = { 0, 0, globals.Width, globals.Height }; project_to_screen(v, in, out); if (out.z < 0.0f || out.z > 1.0f) return false; out.x = out.x * ((float)v[2] / 100.0f); out.y = out.y * ((float)v[3] / 100.0f); return true; }
bool cGame::WorldToScreen(const Vec3& in, Vec3& out)
{
auto p_Render = SSystemGlobalEnvironment::Singleton()->GetIRenderer();
int32 v[4] = { 0, 0, GetWidth(), GetHeight() };
if(!p_Render->ProjectToScreen(v, in, out))return 0;
out.x *= GetWidth() * 0.01f;
out.y *= GetHeight() * 0.01f;
out.z *= 1.0f;
return((out.z < 1.0f) && (out.x > 0) && (out.x < (float)GetWidth()) && (out.y > 0) &&
(out.y < (float)GetHeight()));
}
bool ProjectToScreen(int32* vp, Vec3 ptx,Vec3 &sx)
{
Vec3 vOut;
Matrix44 mIdent;
mIdent.SetIdentity();
Matrix44 View = TGetValue<Matrix44>(_IRenderer::dwBaseProjection);
Matrix44 Projection = TGetValue<Matrix44>(_IRenderer::dwBaseMatrix);
Vec3 result = mathVec3Project_Rebuild(vOut, ptx, vp, Projection, View, mIdent);
if (!result.IsEmpty())
{
sx.x = vOut.x * 100.0f / (f32)vp[2];
sx.y = vOut.y * 100.0f / (f32)vp[3];
sx.z = vOut.z;
return true;
}
return false;
}
static DWORD64 dwBaseProjection = 0x142405818;
static DWORD64 dwBaseMatrix = dwBaseProjection + 0x40;
int cGame::GetWidth()
{
auto& io = ImGui::GetIO();
return io.DisplaySize.x;
}
int cGame::GetHeight()
{
auto& io = ImGui::GetIO();
return io.DisplaySize.y;
}
template<class cData> cData TGetValue(int64 dwOffset)
{
return Read<cData>(dwOffset);
}
как я их перепутал если до обновы работало?Код:Matrix44 projection = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen); Matrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40);
дай пожалуйста определение f32 и mathVec3Project_RebuildC++:bool cGame::WorldToScreen(const Vec3& in, Vec3& out) { auto p_Render = SSystemGlobalEnvironment::Singleton()->GetIRenderer(); int32 v[4] = { 0, 0, GetWidth(), GetHeight() }; if(!p_Render->ProjectToScreen(v, in, out))return 0; out.x *= GetWidth() * 0.01f; out.y *= GetHeight() * 0.01f; out.z *= 1.0f; return((out.z < 1.0f) && (out.x > 0) && (out.x < (float)GetWidth()) && (out.y > 0) && (out.y < (float)GetHeight())); }
C++:bool ProjectToScreen(int32* vp, Vec3 ptx,Vec3 &sx) { Vec3 vOut; Matrix44 mIdent; mIdent.SetIdentity(); Matrix44 View = TGetValue<Matrix44>(_IRenderer::dwBaseProjection); Matrix44 Projection = TGetValue<Matrix44>(_IRenderer::dwBaseMatrix); Vec3 result = mathVec3Project_Rebuild(vOut, ptx, vp, Projection, View, mIdent); if (!result.IsEmpty()) { sx.x = vOut.x * 100.0f / (f32)vp[2]; sx.y = vOut.y * 100.0f / (f32)vp[3]; sx.z = vOut.z; return true; } return false; }
C++:static DWORD64 dwBaseProjection = 0x142405818; static DWORD64 dwBaseMatrix = dwBaseProjection + 0x40;
C++:int cGame::GetWidth() { auto& io = ImGui::GetIO(); return io.DisplaySize.x; } int cGame::GetHeight() { auto& io = ImGui::GetIO(); return io.DisplaySize.y; }
C++:template<class cData> cData TGetValue(int64 dwOffset) { return Read<cData>(dwOffset); }
как я их перепутал если до обновы работало?
дай пожалуйста определение f32 и mathVec3Project_Rebuild
typedef float f32;
typedef double f64;
typedef signed char int8;
typedef signed short int16;
typedef signed int int32;
typedef signed __int64 int64;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned __int32 uint32;
typedef unsigned int uint;
typedef unsigned long ulong32;
typedef unsigned long long ulong64;
typedef unsigned __int64 uint64;
typedef unsigned __int64 uintptr;
typedef unsigned int EntityId;
mathVec3Project_Rebuild еще дай пожалуйста, у меня Vector3 а у тебя floatC++:typedef float f32; typedef double f64; typedef signed char int8; typedef signed short int16; typedef signed int int32; typedef signed __int64 int64; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned __int32 uint32; typedef unsigned int uint; typedef unsigned long ulong32; typedef unsigned long long ulong64; typedef unsigned __int64 uint64; typedef unsigned __int64 uintptr; typedef unsigned int EntityId;
Перепиши под то, что я предоставил.mathVec3Project_Rebuild еще дай пожалуйста, у меня Vector3 а у тебя float
вроде разобралсяПерепиши под то, что я предоставил.
Показываю что я сделал:не удивительно, эти мелкие пастерки ни на что не способные овощи
bool WorldToScreen(Vector3 in, Vector4* out) const
{
Vector3 vOut = ZERO;
Matrix44 mIdent = IDENTITY;
int viewport[4] =
{
0,
0,
globals.Width,
globals.Height
};
Matrix44 proj = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen + 0x40);
Matrix44 view = driver.Read<Matrix44>(IOGameAddress::pProjectToScreen);
out->w = __mathVector3Project(&vOut, &in, viewport, &proj, &view, &mIdent);
out->x = vOut.x;
out->y = vOut.y;
out->z = vOut.z;
if (out->x < 0 || out->y < 0)
return false;
if (out->x > viewport[2] || out->y > viewport[3])
return false;
if (out->z < 0.0f || out->z > 1.0f)
return false;
if (out->w == 0.0f)
return false;
return true;
}
мой код полностью рабочий, по этому вырезку не заметно что там понапихано, а также есть замечание к width/height__mathVector3Project
высота и ширина взята с оверлеямой код полностью рабочий, по этому вырезку не заметно что там понапихано, а также есть замечание к width/height
тогда ставь мою версию 1 в 1высота и ширина взята с оверлея
ну так проекты то разные, 1 в 1 не получитсятогда ставь мою версию 1 в 1
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz