Запуск MDT

alchy

Знаменитый
VIP
Сообщения
18
Розыгрыши
0
Репутация
42
Реакции
7
Баллы
1 235
Сижу, пью, всё забыл.
Напомните позязя, как MDT запускается?
 

Если не ошибаюсь, каждые 20 минут.
 
cmd_begin name=mrrun required_builder_level=1 cmd_end
cmd_begin name=mrend required_builder_level=1 cmd_end
C++:
bool __usercall bool_CMonRaceDB::ChangeRaceStatus@<al>(double a1@<xmm0>, int a2@<edx>, __int64 a3@<rcx>)
{
  __int64 v5; // r14
  __int64 v6; // r8
  __int64 v7; // rcx
  unsigned __int64 v9; // rdi
  unsigned __int64 v10; // r12
  double v11; // xmm6_8
  double v12; // xmm7_8
  double v13; // xmm8_8
  unsigned __int64 v14; // rdi
  unsigned __int64 v15; // r12
  double v16; // xmm6_8
  double v17; // xmm7_8
  double v18; // xmm8_8
  unsigned __int64 v19; // rdi
  unsigned __int64 v20; // r12
  double v21; // xmm6_8
  double v22; // xmm7_8
  double v23; // xmm8_8
  unsigned __int64 v24; // rdi
  unsigned __int64 v25; // r12
  double v26; // xmm6_8
  double v27; // xmm7_8
  double v28; // xmm8_8
  __int64 v29; // rax
  __int64 v30; // [rsp+30h] [rbp-C8h]
  __int64 v31; // [rsp+38h] [rbp-C0h]
  __int64 v32; // [rsp+40h] [rbp-B8h]
  __int64 v33; // [rsp+48h] [rbp-B0h]
  __int64 v34; // [rsp+50h] [rbp-A8h]
  __int64 v35; // [rsp+58h] [rbp-A0h]
  __int64 v36; // [rsp+60h] [rbp-98h]
  double v37; // [rsp+78h] [rbp-80h] BYREF
  double v38; // [rsp+80h] [rbp-78h]
  double v39; // [rsp+88h] [rbp-70h]

  if ( (dword_7D524C4 & 1) == 0 )
  {
    dword_7D524C4 |= 1u;
    dword_7D524C0 = L2SERVER_SHARED_GUARD(L"bool CMonRaceDB::ChangeRaceStatus( MONRACESTATUS st)");
  }
  v5 = (unsigned int)TlsIndex;
  v6 = *(int *)(*(_QWORD *)(__readgsqword(0x58u) + 8i64 * (unsigned int)TlsIndex) + 311640i64);
  v7 = (int)g_CallStackIndex[v6 + 0x100000];
  g_CallStackIndex[v6 + 0x100000] = v7 + 1;
  g_CallStackName[v6][v7] = L"bool CMonRaceDB::ChangeRaceStatus( MONRACESTATUS st)";
  switch ( a2 )
  {
    case 1:
      *(_DWORD *)(a3 + 1760) = 1;
      break;
    case 2:
      if ( *(_DWORD *)(a3 + 1760) != 1 )
      {
        --g_CallStackIndex[v6 + 0x100000];
        return 0;
      }
      *(_DWORD *)(a3 + 1760) = 2;
      break;
    case 3:
      *(_DWORD *)(a3 + 1760) = 3;
      *(_DWORD *)(a3 + 10908) = 0;
      *(_DWORD *)(a3 + 10912) = 0;
      *(_DWORD *)(a3 + 10916) = 0;
      bool_CMonRaceDB::BroadCastRace((_DWORD *)a3, 0);
      v9 = *(_QWORD *)(a3 + 2520);
      if ( v9 > *(_QWORD *)(a3 + 2528) )
        DecodePointer(0i64);
      while ( 1 )
      {
        v10 = *(_QWORD *)(a3 + 2528);
        if ( *(_QWORD *)(a3 + 2520) > v10 )
          DecodePointer(0i64);
        if ( v9 == v10 )
          break;
        if ( v9 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v11 = *(double *)v9;
        v12 = *(double *)(v9 + 8);
        v13 = *(double *)(v9 + 16);
        if ( v9 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v37 = v11;
        v38 = v12;
        v39 = v13;
        LODWORD(v34) = *(_DWORD *)(a3 + 10920);
        LODWORD(v33) = 1;
        LODWORD(v32) = 1;
        LODWORD(v31) = 816;
        LODWORD(v30) = 100;
        void_BroadcastToNeighborDist_FVector_vPos__int_nRadius__const_char__format______(qword_E427AA8, 0, 0x80000u, &v37, *(_DWORD *)(v9 + 24), "cdddd", v30, v31, v32, v33, v34);
        if ( v9 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v9 += 32i64;
      }
      break;
    case 4:
      if ( *(_DWORD *)(a3 + 1760) != 3 )
      {
        --g_CallStackIndex[v6 + 0x100000];
        return 0;
      }
      *(_DWORD *)(a3 + 1760) = 4;
      *(_DWORD *)(a3 + 10908) = 0;
      *(_DWORD *)(a3 + 10912) = 0;
      *(_DWORD *)(a3 + 10916) = 0;
      bool_CMonRaceDB::RequestEndBuyTicket__(a3);
      v14 = *(_QWORD *)(a3 + 2520);
      if ( v14 > *(_QWORD *)(a3 + 2528) )
        DecodePointer(0i64);
      while ( 1 )
      {
        v15 = *(_QWORD *)(a3 + 2528);
        if ( *(_QWORD *)(a3 + 2520) > v15 )
          DecodePointer(0i64);
        if ( v14 == v15 )
          break;
        if ( v14 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v16 = *(double *)v14;
        v17 = *(double *)(v14 + 8);
        v18 = *(double *)(v14 + 16);
        if ( v14 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v37 = v16;
        v38 = v17;
        v39 = v18;
        LODWORD(v34) = *(_DWORD *)(a3 + 10920);
        LODWORD(v33) = 1;
        LODWORD(v32) = 1;
        LODWORD(v31) = 819;
        LODWORD(v30) = 100;
        void_BroadcastToNeighborDist_FVector_vPos__int_nRadius__const_char__format______(qword_E427AA8, 0, 0x80000u, &v37, *(_DWORD *)(v14 + 24), "cdddd", v30, v31, v32, v33, v34);
        if ( v14 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v14 += 32i64;
      }
      break;
    case 5:
      *(_DWORD *)(a3 + 1760) = 5;
      *(_DWORD *)(a3 + 1804) = GetTickCount();
      v19 = *(_QWORD *)(a3 + 2520);
      if ( v19 > *(_QWORD *)(a3 + 2528) )
        DecodePointer(0i64);
      while ( 1 )
      {
        v20 = *(_QWORD *)(a3 + 2528);
        if ( *(_QWORD *)(a3 + 2520) > v20 )
          DecodePointer(0i64);
        if ( v19 == v20 )
          break;
        if ( v19 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v21 = *(double *)v19;
        v22 = *(double *)(v19 + 8);
        v23 = *(double *)(v19 + 16);
        if ( v19 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v37 = v21;
        v38 = v22;
        v39 = v23;
        LODWORD(v31) = 824;
        LODWORD(v30) = 100;
        void_BroadcastToNeighborDist_FVector_vPos__int_nRadius__const_char__format______(qword_E427AA8, 0, 0x80000u, &v37, *(_DWORD *)(v19 + 24), "cdd", v30, v31, 0i64);
        if ( v19 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v19 += 32i64;
      }
      void_CMonRaceDB::BroadCastMusic__(a3);
      void_CMonRaceDB::BroadCastSound__(a3);
      bool_CMonRaceDB::RunRace__(a1, a3);
      bool_CMonRaceDB::BroadCastRace((_DWORD *)a3, 0);
      break;
    case 6:
      *(_DWORD *)(a3 + 1760) = 6;
      bool_CMonRaceDB::BroadCastRace((_DWORD *)a3, 0);
      break;
    case 7:
      *(_DWORD *)(a3 + 1760) = 7;
      v24 = *(_QWORD *)(a3 + 2520);
      if ( v24 > *(_QWORD *)(a3 + 2528) )
        DecodePointer(0i64);
      while ( 1 )
      {
        v25 = *(_QWORD *)(a3 + 2528);
        if ( *(_QWORD *)(a3 + 2520) > v25 )
          DecodePointer(0i64);
        if ( v24 == v25 )
          break;
        if ( v24 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v26 = *(double *)v24;
        v27 = *(double *)(v24 + 8);
        v28 = *(double *)(v24 + 16);
        if ( v24 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v37 = v26;
        v38 = v27;
        v39 = v28;
        LODWORD(v36) = *(_DWORD *)(a3 + 1768) + 1;
        LODWORD(v35) = 1;
        LODWORD(v34) = *(_DWORD *)(a3 + 1764) + 1;
        LODWORD(v33) = 1;
        LODWORD(v32) = 2;
        LODWORD(v31) = 826;
        LODWORD(v30) = 100;
        void_BroadcastToNeighborDist_FVector_vPos__int_nRadius__const_char__format______(qword_E427AA8, 0, 0x80000u, &v37, *(_DWORD *)(v24 + 24), "cdddddd", v30, v31, v32, v33, v34, v35, v36);
        if ( v24 >= *(_QWORD *)(a3 + 2528) )
          DecodePointer(0i64);
        v24 += 32i64;
      }
      bool_CMonRaceDB::RequestEndRace__(a3);
      break;
    case 8:
      *(_DWORD *)(a3 + 1760) = 8;
      if ( *(int *)(a3 + 10920) > 0 )
        bool_CMonRaceDB::EndRace__(a3);
      break;
  }
  v29 = *(int *)(*(_QWORD *)(__readgsqword(0x58u) + 8 * v5) + 311640i64);
  --g_CallStackIndex[v29 + 0x100000];
  return 1;
}
естественно функция ловит кейсы, это значит что передается аргумент от 1 до 8.
 
Назад
Сверху Снизу