Перейти к содержанию

Помощь с WorldToScreen на warface


Гость Poligraf

Рекомендуемые сообщения

Привет всем,у меня проблема с вх на warface,решил узнать имена всех нужных мне обьектов но не тут то было.Игра сильно лагает при отрисовке, но не чего не рисуеться.

 

https://ibb.co/gSXGBBL << Ссылка на скриншот игры (Текст рисуеться в левом вверхнем углу)

 

 

Код класса IRenderer->WorldToScreen

Спойлер

bool ProjectToScreen(wts_info* info)
    {
        return VIRTUAL<bool(__thiscall*)(PVOID, wts_info*)>(this, 109)(this, info);   //ProjectToScreen-> xref [x] -> 872/8 = 109
    }

    DWORD64 GetHeight() //проверить
    { 
        return (DWORD64) * (DWORD64*)((DWORD64)this + 0x250B); // проверить и обновить смешение  r_width -> xref [x] - седьмая ссылка v14 = *((_DWORD *)v3 + 9482);
    }

    DWORD64 GetWidth() //проверить
    {
        return (DWORD64) * (DWORD64*)((DWORD64)this + 0x250A); // проверить и обновить смешение  r_height - > xref[x] - седьмая ссылка v13 = *((_DWORD *)v3 + 9483);
    }

    bool WorldToScreen(Vec3 vInput, Vec3& vOutput)
    {
        wts_info info;

        info.input.x = vInput.x;
        info.input.y = vInput.y;
        info.input.z = vInput.z;

        info.output.x = &vOutput.x;
        info.output.y = &vOutput.y;
        info.output.z = &vOutput.z;

        ProjectToScreen(&info);

        if (vOutput.z < 0.0f || vOutput.z > 1.0f)
            return false;

        vOutput.x *= (GetWidth() / 100.0f);
        vOutput.y *= (GetHeight() / 100.0f);

        return true;
    }

 

Я все это делаю в хуке EndScene ,вот и сама рисовка,Игру не крашит но и нечего не рисует, только лагает сильно

Спойлер

HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
    //if (GetAsyncKeyState(VK_F8) & 1)
    //{
    //    Box3D = !Box3D;
    //}
    if (XFont == NULL)
        D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"red", &XFont);

    IEntityIt* pIEntityIt = SSystemGlobalEnvironment::Singleton()->GetIEntitySystem()->GetEntityIterator();
    while (IEntity* pIEntity = pIEntityIt->Next())
    {
        Vec3 objPos = GetPlayerPos(pIEntity);
        Vec3 pos2d;
        if (SSystemGlobalEnvironment::Singleton()->GetIRenderer()->WorldToScreen(objPos, pos2d))
        {
            DrawMyText(pos2d.x, pos2d.y, Colorss::BLUE, pIEntity->GetName());
            DrawMyText(55, 55, Colorss::BLUE, "Tested"); //Вот это рисует
        }
    }

    function(pDevice);
    return oEndScene(pDevice);
}

 

 

Изменено пользователем Poligraf
Поправлено форматирование. Выдан пред.
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.