Помогите с рендером Skeleton | CSGOSimple

off
Участник
Статус
Оффлайн
Регистрация
7 Сен 2017
Сообщения
696
Реакции[?]
163
Поинты[?]
0
Кароче спастил я с flexhack'a скелетоны, и тут ошибки рендера, на что их заменить? Я просто не до конца разобрался CSGOSimple.
void Visuals::Player::RenderSkeleton() {
Vector vHitboxSkeletonArray[18][2];
static matrix3x4_t boneMatrix[MAXSTUDIOBONES];

auto GetHitBoxSkeleton = [](int nHitBoxOne, int nHitBoxTwo, C_BasePlayer* pEntity, Vector* vOut, matrix3x4_t boneMatrix[MAXSTUDIOBONES])
{
auto GetHitboxPosition = [](C_BasePlayer* p, int hitbox, matrix3x4_t MatrixArray[MAXSTUDIOBONES]) {

if (hitbox >= HITBOX_MAX || hitbox < 0)
return Vector(0, 0, 0);

const model_t *model = p->GetModel();
if (!model)
return Vector(0, 0, 0);

studiohdr_t *studioHdr = g_MdlInfo->GetStudiomodel(model);
if (!studioHdr)
return Vector(0, 0, 0);


mstudiobbox_t *studioBox = studioHdr->GetHitboxSet(0)->GetHitbox(hitbox);
if (!studioBox)
return Vector(0, 0, 0);

Vector min, max;

Math::VectorTransform(studioBox->bbmin, MatrixArray[studioBox->bone], min);
Math::VectorTransform(studioBox->bbmax, MatrixArray[studioBox->bone], max);

Vector output = (min + max) * 0.5f;

return output;
};
vOut[0] = GetHitboxPosition(pEntity, nHitBoxOne, boneMatrix);
vOut[1] = GetHitboxPosition(pEntity, nHitBoxTwo, boneMatrix);
};
if (ctx.pl->SetupBones(boneMatrix, MAXSTUDIOBONES, BONE_USED_BY_HITBOX, 0.0f)) {
GetHitBoxSkeleton(HITBOX_NECK, HITBOX_UPPER_CHEST, ctx.pl, vHitboxSkeletonArray[2], boneMatrix);
GetHitBoxSkeleton(HITBOX_UPPER_CHEST, HITBOX_CHEST, ctx.pl, vHitboxSkeletonArray[3], boneMatrix);
GetHitBoxSkeleton(HITBOX_CHEST, HITBOX_LOWER_CHEST, ctx.pl, vHitboxSkeletonArray[4], boneMatrix);
GetHitBoxSkeleton(HITBOX_LOWER_CHEST, HITBOX_STOMACH, ctx.pl, vHitboxSkeletonArray[5], boneMatrix);
GetHitBoxSkeleton(HITBOX_STOMACH, HITBOX_LEFT_THIGH, ctx.pl, vHitboxSkeletonArray[6], boneMatrix);
GetHitBoxSkeleton(HITBOX_LEFT_THIGH, HITBOX_LEFT_CALF, ctx.pl, vHitboxSkeletonArray[7], boneMatrix);
GetHitBoxSkeleton(HITBOX_LEFT_CALF, HITBOX_LEFT_FOOT, ctx.pl, vHitboxSkeletonArray[8], boneMatrix);
GetHitBoxSkeleton(HITBOX_STOMACH, HITBOX_RIGHT_THIGH, ctx.pl, vHitboxSkeletonArray[9], boneMatrix);
GetHitBoxSkeleton(HITBOX_RIGHT_THIGH, HITBOX_RIGHT_CALF, ctx.pl, vHitboxSkeletonArray[10], boneMatrix);
GetHitBoxSkeleton(HITBOX_RIGHT_CALF, HITBOX_RIGHT_FOOT, ctx.pl, vHitboxSkeletonArray[11], boneMatrix);
GetHitBoxSkeleton(HITBOX_CHEST, HITBOX_LEFT_UPPER_ARM, ctx.pl, vHitboxSkeletonArray[12], boneMatrix);
GetHitBoxSkeleton(HITBOX_LEFT_UPPER_ARM, HITBOX_LEFT_FOREARM, ctx.pl, vHitboxSkeletonArray[13], boneMatrix);
GetHitBoxSkeleton(HITBOX_LEFT_FOREARM, HITBOX_LEFT_HAND, ctx.pl, vHitboxSkeletonArray[14], boneMatrix);
GetHitBoxSkeleton(HITBOX_CHEST, HITBOX_RIGHT_UPPER_ARM, ctx.pl, vHitboxSkeletonArray[15], boneMatrix);
GetHitBoxSkeleton(HITBOX_RIGHT_UPPER_ARM, HITBOX_RIGHT_FOREARM, ctx.pl, vHitboxSkeletonArray[16], boneMatrix);
GetHitBoxSkeleton(HITBOX_RIGHT_FOREARM, HITBOX_RIGHT_HAND, ctx.pl, vHitboxSkeletonArray[17], boneMatrix);
auto DrawHitBoxLine = [](Vector* vHitBoxArray, Color color)
{
//MUT("ESP::DrawHitBoxLine");
Vector vHitBoxOneScreen;
Vector vHitBoxTwoScreen;
if (!vHitBoxArray[0].IsValid() || !vHitBoxArray[1].IsValid()) {
return;
}
if (!g_DebugOverlay->ScreenPosition(vHitBoxArray[0], vHitBoxOneScreen) && !g_DebugOverlay->ScreenPosition(vHitBoxArray[1], vHitBoxTwoScreen))
{
Render::Get().draw_list_act->AddLine(Vector2D(vHitBoxOneScreen.x, vHitBoxOneScreen.y), Vector2D(vHitBoxTwoScreen.x, vHitBoxTwoScreen.y), color);
}
//END();
};
for (BYTE IndexArray = 0; IndexArray < 18; IndexArray++)
DrawHitBoxLine(vHitboxSkeletonArray[IndexArray], ctx.clr);
}
}
zaa].png
 
Начинающий
Статус
Оффлайн
Регистрация
19 Май 2017
Сообщения
18
Реакции[?]
1
Поинты[?]
0
если тебе нужен Skeleton esp то вот код который работает у меня
Код:
void skelet(CBaseEntity* Entity, Color color)
{
    studiohdr_t* pStudioModel = I::ModelInfo->GetStudioModel(Entity->GetModel());
    if (pStudioModel)
    {
        static matrix3x4_t pBoneToWorldOut[128];
        if (Entity->SetupBones(pBoneToWorldOut, 128, 256, I::Globals->curtime))
        {
            for (int i = 0; i < pStudioModel->numbones; i++)
            {
                mstudiobone_t* pBone = pStudioModel->pBone(i);
                if (!pBone || !(pBone->flags & 256) || pBone->parent == -1)
                    continue;

                Vector vBonePos1;
                if (!g_Utils->WorldToScreen(Vector(pBoneToWorldOut[i][0][3], pBoneToWorldOut[i][1][3], pBoneToWorldOut[i][2][3]), vBonePos1))
                    continue;

                Vector vBonePos2;
                if (!g_Utils->WorldToScreen(Vector(pBoneToWorldOut[pBone->parent][0][3], pBoneToWorldOut[pBone->parent][1][3], pBoneToWorldOut[pBone->parent][2][3]), vBonePos2))
                    continue;

                DrawLine((int)vBonePos1.x, (int)vBonePos1.y, (int)vBonePos2.x, (int)vBonePos2.y, color);
            }
        }
    }
}
Вызывается так:
Код:
skelet(Entity, Color::White());//Или любой другой цвет
 
off
Участник
Статус
Оффлайн
Регистрация
7 Сен 2017
Сообщения
696
Реакции[?]
163
Поинты[?]
0
если тебе нужен Skeleton esp то вот код который работает у меня
Код:
void skelet(CBaseEntity* Entity, Color color)
{
    studiohdr_t* pStudioModel = I::ModelInfo->GetStudioModel(Entity->GetModel());
    if (pStudioModel)
    {
        static matrix3x4_t pBoneToWorldOut[128];
        if (Entity->SetupBones(pBoneToWorldOut, 128, 256, I::Globals->curtime))
        {
            for (int i = 0; i < pStudioModel->numbones; i++)
            {
                mstudiobone_t* pBone = pStudioModel->pBone(i);
                if (!pBone || !(pBone->flags & 256) || pBone->parent == -1)
                    continue;

                Vector vBonePos1;
                if (!g_Utils->WorldToScreen(Vector(pBoneToWorldOut[i][0][3], pBoneToWorldOut[i][1][3], pBoneToWorldOut[i][2][3]), vBonePos1))
                    continue;

                Vector vBonePos2;
                if (!g_Utils->WorldToScreen(Vector(pBoneToWorldOut[pBone->parent][0][3], pBoneToWorldOut[pBone->parent][1][3], pBoneToWorldOut[pBone->parent][2][3]), vBonePos2))
                    continue;

                DrawLine((int)vBonePos1.x, (int)vBonePos1.y, (int)vBonePos2.x, (int)vBonePos2.y, color);
            }
        }
    }
}
Вызывается так:
Код:
skelet(Entity, Color::White());//Или любой другой цвет
Бля ща чекну
 
Сверху Снизу