For my external radar i totally reversed the fullmap radar, so im sharing it because
it might be usefull for some of you.
Code:
CRadarVecs * GetRadarInfo(CRadarHud * radarhud, CRadarSize radarSize)
{
float v15, v19;
CRadarVecs * radarvecs;
float v14 = radarhud->w / radarhud->h;
float v25 = *(float *)(0x8FF100 + (DWORD)487708) / *(float *)(0x8FF100 + (DWORD)487712);
float v22 = radarSize.VecA + radarhud->x;
float v23 = radarSize.Vecb + radarhud->y;
float v13 = v25;
float v12 = v14;
if ( v14 >= v25 )
{
float v27 = (v13 / v12) * radarhud->w;
float v17 = (radarhud->w * 0.5) + v22;
radarvecs->w = v17 - (0.5 * v27);
radarvecs->h = v23;
radarvecs->x = v27;
v15 = radarhud->h;
}
else
{
float v16 = (radarhud->h * 0.5) + v23;
float v26 = (v12 / v13) * radarhud->h;
radarvecs->w = v22;
radarvecs->h = v16 - (0.5 * v26);
radarvecs->x = radarhud->w;
v15 = v26;
}
radarvecs->y = v15;
float v28 = *(float *)(*(DWORD*)(0x8F16D0) + 0xC);
float v18 = radarvecs->x * 0.25;
if ( v28 <= v18 )
{
v19 = v28;
}
else
{
v19 = v18;
}
float v20 = 0.25 * radarvecs->y;
if ( v20 < v19 )
{
v19 = v20;
}
radarvecs->w = radarvecs->w + v19;
radarvecs->h = radarvecs->h + v19;
float v21 = v19 + v19;
radarvecs->x = radarvecs->x - v21;
radarvecs->y = radarvecs->y - v21;
return radarvecs;
}
Code:
float * GetRadarPos(CRadarVecs * radarvecs, Vec3 vTarget)
{
Vec3 vOrigin;
float pos[2];
vOrigin[0] = vTarget[0] - *(float *)(0x8FF100 + (DWORD)487700);
vOrigin[1] = vTarget[1] - *(float *)(0x8FF100 + (DWORD)487704);
float v18 = (*(float *)(0x8FF100 + (DWORD)487692) * vOrigin[0]) - (*(float *)(0x8FF100 + (DWORD)487688) * vOrigin[1]);
float v19 = (vOrigin[1] * -*(float *)(0x8FF100 + (DWORD)487692)) - (vOrigin[0] * *(float *)(0x8FF100 + (DWORD)487688));
float v20 = (v18 / *(float *)(0x8FF100 + (DWORD)487708)) - 0.5;
float v21 = (v19 / *(float *)(0x8FF100 + (DWORD)487712)) - 0.5;
pos[0] = radarvecs->x * v20;
pos[1] = radarvecs->y * v21;
return pos;
}
Code:
void ShowRadarPos(CRadarHud * radarhud, CRadarSize radarSize, Vec3 vTarget, int Shader)
{
float * fPos;
CRadarVecs * radarvecs = GetRadarInfo(radarhud, radarSize);
fPos = GetRadarPos(radarvecs, vTarget);
float v20 = radarhud->x + (radarhud->w * 0.5f) + fPos[0];
float v10 = radarhud->y + (radarhud->h * 0.5f) + fPos[1];
DrawPic(v20, v10, 20, 20, cWhite, Shader);
}
example code on how to use it
Code:
DrawStretchPic(radarhud.x, radarhud.y, radarhud.w, radarhud.h, 0.0f, 0.0f, 1.0f, 1.0f, cWhite, *(DWORD*)0x976210);
for(int i=0; i<1024; i++)
{
CEntity * pEnt = GetEntityByIndex(i);
if(!(pEnt->isAlive & 1))
continue;
if(pEnt->eType == ET_MISSILE)
{
char * szShader = GetWeaponShader(pEnt->WeaponNum);
if(szShader)
ShowRadarPos(&radarhud, radarsize, pEnt->vOrigin, RegisterShader(szShader, 7));
}
}