textdraw preview model

juki

Участник
Автор темы
45
6
где и как оно вообще работает? я конечно может плохо искал, но ничего найти так и не смог
 

juki

Участник
Автор темы
45
6
нашёл функцию, предположителньо рендерит какого либо педа
Код:
int __stdcall remindit_ped(char model_idx, char a2, int a3, float a4)
{
  _DWORD *v4; // ecx
  CPed *v5; // ebx
  _DWORD *v6; // ebp
  int v7; // esi
  int v8; // edi
  CPed *v9; // eax
  int v10; // esi
  struct sampapi::CVector v12[6]; // [esp-38h] [ebp-A8h] BYREF
  float v13; // [esp+18h] [ebp-58h]
  int v14; // [esp+1Ch] [ebp-54h]
  int v15; // [esp+20h] [ebp-50h]
  struct sampapi::CMatrix v16; // [esp+24h] [ebp-4Ch] BYREF
  int v17; // [esp+6Ch] [ebp-4h]

  v5 = 0;
  v6 = v4;
  v7 = sub_100B16D0(256, 256, 0, 1285);
  v14 = v7;
  v8 = sub_100B1720(v7);
  LODWORD(v12[3].y) = 813;
  v15 = v8;
  v9 = operator new(*&v12[3].y);
  v13 = *&v9;
  v17 = 0;
  if ( v9 )
  {
    memset(&v12[4], 0, sizeof(struct sampapi::CVector));
    v5 = CPed::CPed(v9, 208, 0, v12[4], 0.0);
  }
  v17 = -1;
  if ( !v7 || !v8 || !v5 )
    return 0;
  v13 = 50.049999;
  if ( model_idx == 162 )
    v13 = 50.149998;
  v12[5].x = v13;
  v12[4].z = a4 * -2.25;
  v12[4].y = 0.0;
  CEntity::Teleport(v5, *&v12[4].y);
  CPed::SetModelIndex(v5, model_idx);
  CEntity::SetCollisionProcessed(v5, 0);
  CEntity::SetCollisionFlag(v5, 0);
  memset(&v16, 0, sizeof(v16));
  CEntity::GetMatrix(v5, &v16);
  v10 = a3;
  if ( *a3 != 0.0 )
    sub_100B5790(&v16, 0, *a3);
  if ( *(v10 + 4) != 0.0 )
    sub_100B5790(&v16, 1, *(v10 + 4));
  if ( *(v10 + 8) != 0.0 )
    sub_100B5790(&v16, 2, *(v10 + 8));
  qmemcpy(v12, &v16, 0x40u);
  sub_1009FD00(
    v5,
    SLOBYTE(v12[0].x),
    SLODWORD(v12[0].y),
    SLODWORD(v12[0].z),
    SLODWORD(v12[1].x),
    SLODWORD(v12[1].y),
    SLODWORD(v12[1].z),
    SLODWORD(v12[2].x),
    SLODWORD(v12[2].y),
    SLODWORD(v12[2].z),
    SLODWORD(v12[3].x),
    SLODWORD(v12[3].y),
    SLODWORD(v12[3].z),
    SLODWORD(v12[4].x),
    SLODWORD(v12[4].y),
    SLODWORD(v12[4].z),
    SLODWORD(v12[5].x));
  sub_100B19B0(*v6, v14, v6[5]);
  sub_100B1C40(*v6);
  sub_100B18F0(*v6, &a2, 3);
  sub_100B1920(*v6);
  sub_100B1BC0(v6[2]);
  sub_100C3E20(6, 1);
  sub_100C3E20(8, 1);
  sub_100C3E20(7, 2);
  sub_100C3E20(14, 0);
  (v5->Add)(v5);
  sub_100AE530(v5, 1120403456, 1);
  sub_1009FB20(v5);
  sub_100B1950(*v6);
  sub_100B1C00(v6[2]);
  (v5->Remove)(v5);
  (v5->~CPed)(v5, 1);
  if ( !sub_100B4700(model_idx) )
    CGame::ReleaseModel(g_Game, model_idx, 0);
  return v15;
}
написал простой код, но модель как рендерилась так и рендерится, да и месседжбокс не появляется
C++:
#include "include.hpp"

int(__stdcall* typo)(char, char, int, float);

int __stdcall some_function(char model_idx, char a2, int a3, float a4) {
    MessageBoxA(0, std::to_string(model_idx).c_str(), "mq", 1);
    return 0;
}

int __stdcall DllMain(HINSTANCE instance, unsigned int reason, void* reserved) {
    if (reason == DLL_PROCESS_ATTACH) {
        while (!GetModuleHandleA("samp.dll")) {
            Sleep(100);
        }
        MH_Initialize();
        MH_CreateHook((void*)(GetModuleHandleA("samp.dll") + 0x6C140), &some_function, (void**)&typo);
        MH_EnableHook((void*)(GetModuleHandleA("samp.dll") + 0x6C140));
    }

    return 1;
}

лан не то нашёл