• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Исходник Актуальный парт предикшена с игры

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
2 Дек 2020
Сообщения
34
Реакции
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте.
Это актуальный парт предикшена сревершен с игры.
псевдо код -
C++:
Expand Collapse Copy
int __userpurge CPrediction::RunCommand@<eax>(_BYTE *ThisIPrediction@<ecx>, __int128 _XMM1@<xmm1>, _DWORD *pPlayer, _DWORD *pCmd, _DWORD *pMoveHelper)
{
  _BYTE *_IPrediction; // ebx
  int _gpGlobals; // eax
  float nTickBase; // xmm0_4
  float v8; // xmm1_4
  signed int cmd_weaponselect; // eax
  int v10; // ecx
  int v11; // eax
  int v12; // eax
  int v13; // ebx
  unsigned int m_hVehicle; // ecx
  int *v15; // eax
  int v16; // ebx
  int cmd_buttons; // edx
  int v18; // ecx
  int __gpGlobals; // eax
  int v20; // eax
  int result; // eax
  _BYTE *__IPrediction; // [esp+48h] [ebp-8h]
  int v23; // [esp+4Ch] [ebp-4h]

  _IPrediction = ThisIPrediction;
  __IPrediction = ThisIPrediction;

  pPlayer[3282] = pCmd;                        
  sub_102C1930((int)(pPlayer + 3238), (int)pCmd);
  if ( pCmd )
    PredictionRandomSeed = pCmd[0x10];        
  else
    PredictionRandomSeed = -1;
  _gpGlobals = gpGlobals;
  nTickBase = (float)(signed int)pPlayer[3344];
  PredictionPlayer = (int)pPlayer;

  v8 = *(float *)(gpGlobals + 32);
  *(float *)(gpGlobals + 16) = nTickBase * v8;
  if ( _IPrediction[10] )
    v8 = 0.0;
  *(float *)(_gpGlobals + 20) = v8;

  pCmd[0xC] |= pPlayer[3281];                  
  pCmd[0xC] &= ~pPlayer[3280];                

  (*(void (__thiscall **)(int *, _DWORD *))(g_pGameMovement + 12))(&g_pGameMovement, pPlayer);

  cmd_weaponselect = pCmd[0xE];                
  if ( cmd_weaponselect )
  {
    if ( cmd_weaponselect >= 0 && cmd_weaponselect < 0x2000 )
    {
      v10 = dword_14DBC5A4[4 * cmd_weaponselect];
      if ( v10 )
      {
        v11 = (*(int (**)(void))(*(_DWORD *)v10 + 28))();
        if ( v11 )
        {
          v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v11 + 668))(v11);
          v13 = v12;
          if ( v12 )
          {
            if ( (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 1128))(v12) == pCmd[0xF] )
              (*(void (__thiscall **)(_DWORD *, int))(*pPlayer + 1316))(pPlayer, v13);
          }
        }
      }
    }
  }

  m_hVehicle = pPlayer[3264];                  
  if ( m_hVehicle != -1
    && (v15 = &dword_14DBC5A4[4 * (unsigned __int16)m_hVehicle]) != 0
    && v15[1] == m_hVehicle >> 16
    && *v15 )
  {
    v16 = (*(int (**)(void))(*(_DWORD *)*v15 + 396))();
  }
  else
  {
    v16 = 0;
  }
  if ( *((_BYTE *)pCmd + 0x34) && (!v16 || (unsigned __int8)sub_101ABC60(pPlayer)) )
    pPlayer[3203] = *((unsigned __int8 *)pCmd + 0x34);

  cmd_buttons = pCmd[0xC];                    
  v18 = cmd_buttons ^ pPlayer[0xC82];          
  pPlayer[0xC7F] = pPlayer[0xC82];            
  pPlayer[0xC82] = cmd_buttons;              
  pPlayer[0xC80] = cmd_buttons & v18;          
  __gpGlobals = gpGlobals;
  pPlayer[0xC81] = v18 & ~cmd_buttons;        

  (*(void (__stdcall **)(_DWORD *, _DWORD, _DWORD))(*(_DWORD *)__IPrediction + 72))(
    pPlayer,
    COERCE_UNSIGNED_INT64(*(float *)(__gpGlobals + 20)),
    COERCE_UNSIGNED_INT64(*(float *)(__gpGlobals + 20)) >> 32);

  (*(void (__thiscall **)(_DWORD *, _DWORD *))(*pPlayer + 1492))(pPlayer, pCmd + 3);

  if ( sub_10315850(pPlayer, 0) )
    (*(void (__thiscall **)(_DWORD *))(*pPlayer + 1272))(pPlayer);
  v20 = pPlayer[63];                          

  if ( v20 != -1 && v20 > 0 && v20 <= pPlayer[3344] )
  {
    pPlayer[63] = -1;                          
    sub_101A7EB0(0);
    (*(void (__thiscall **)(_DWORD *))(*pPlayer + 556))(pPlayer);
  }

  (*(void (__stdcall **)(_DWORD *, _DWORD *, _DWORD *, void *))(*(_DWORD *)__IPrediction + 80))(
    pPlayer,
    pCmd,
    pMoveHelper,
    off_10D676A4);                            

  v23 = *(_DWORD *)(g_VProfCurrentProfile + 4108);
  if ( v23 )
    CVProfile::EnterScope(
      g_VProfCurrentProfile,
      "CPrediction::ProcessMovement",
      0,
      "CPrediction::ProcessMovement",
      0,
      4);
  if ( v16 )
    (*(void (__thiscall **)(int, _DWORD *, void *))(*(_DWORD *)v16 + 20))(v16, pPlayer, off_10D676A4);
  else
    (*(void (__thiscall **)(int *, _DWORD *, void *))(g_pGameMovement + 4))(&g_pGameMovement, pPlayer, off_10D676A4);
  if ( v23 )
    CVProfile::ExitScope(g_VProfCurrentProfile);

  (*(void (__thiscall **)(_BYTE *, _DWORD *, _DWORD *, void *))(*(_DWORD *)__IPrediction + 84))(
    __IPrediction,
    pPlayer,
    pCmd,
    off_10D676A4);

  (*(void (**)(void))(*pMoveHelper + 16))();
  (*(void (__thiscall **)(_DWORD *))(*pPlayer + 1276))(pPlayer);
  (*(void (__thiscall **)(int *, _DWORD *))(g_pGameMovement + 16))(&g_pGameMovement, pPlayer);

  pPlayer[3282] = 0;                      
  PredictionRandomSeed = -1;
  PredictionPlayer = 0;

  result = (*(int (__thiscall **)(int *))(g_pGameMovement + 8))(&g_pGameMovement);

  if ( !__IPrediction[10] )
  {
    result = gpGlobals;
    if ( *(float *)(gpGlobals + 20) > 0.0 )
      ++pPlayer[3344];
  }

  return result
}

отревершеный код -
C++:
Expand Collapse Copy
void c_engine_prediction::run_cmd( c_user_cmd* cmd, c_cs_player* player ) {
    if ( !player || !player->is_alive( ) )
        return;
   
    player->get_current_cmd( ) = cmd;
   
    if ( cmd )
        player_random_seed = cmd->m_random_seed;
    else
        player_random_seed = -1;
   
    globals = interfaces::global_vars;
    tick_base = player->get_tick_base( );
    player_prediction = ( int )player;
   
    globals->m_cur_time = TICKS_TO_TIME( tick_base );
    globals->m_frame_time = interfaces::preidction->m_engine_paused ? 0.f : globals->m_interval_per_tick;
   
    cmd->m_buttons |= player->buttons_forced( );
    cmd->m_buttons &= ~player->buttons_disabled( );
   
    interfaces::game_movement->start_track_prediction_errors( player );
   
    interfaces::move_helper->set_host( player );
   
    if ( cmd->m_weapon_select >= 0 && cmd->m_weapon_select < 0x2000 ) {
        auto weapon = reinterpret_cast< weapon_t* >( interfaces::entity_list->get_client_entity( cmd->m_weapon_select ) );
        if ( weapon ) {
            auto weapon_data = weapon->get_weapon_data();
             if ( weapon_data )
                player->select_item( weapon_data->m_sz_weapon_name, cmd->m_weapon_sub_type );
        }
    }
   
    if ( cmd->m_impulse && ( !vehicle || player->using_standard_weapons_in_vehicle( ) ) )
        player->get_impulse( ) = cmd->m_impulse;
   
    auto v18 = cmd->m_buttons ^ player->get_buttons( );
    player->get_last_buttons( ) = player->get_buttons( );
    player->get_buttons( ) = cmd->m_buttons;
    player->buttons_is_pressed( ) = cmd->m_buttons & v18;
    player->buttons_released( ) = v18 & ~cmd->m_buttons;
   
    interfaces::prediction->check_moving_on_ground( player, globals->m_frame_time );
   
    player->set_local_view_ang( cmd->m_view_ang );
   
    auto v20 = player->next_think_tick( );
    if ( v20 != -1 && v20 > 0 && v20 <= tick_base ) {
        v20 = -1;
        player->run_think( player, TICK_INTERVAL );
    }
   
    interfaces::prediction->setup_move( player, cmd, interfaces::move_helper, &move_data );
   
    interfaces::game_movement->process_movement( player, &move_data );
   
    interfaces::prediction()->finish_move( player, cmd, &move_data );
   
    interfaces::move_helper->process_impacts(  );
   
    run_post_think( player );
   
    interfaces::move_helper->set_host( nullptr );
   
    interfaces::game_movement->finish_track_prediction_errors( player );
   
    interfaces::game_movement->reset(  );
   
    player->get_current_cmd( ) = nullptr;
    player_random_seed = -1;
    player_prediction = 0;

    if ( !interfaces::prediction->m_engine_paused ) {
        if ( globals->m_frame_time > 0 )
            ++tick_base;
    }
}
 
Последнее редактирование:
SetHost вызывается в PhysicsSimulate, но никак не в RunCommand.
 
паблик уже тыщу лет, даже в ку0 тоже самое
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
неправильный реверс нет части с машиной
 
  • Печально
Реакции: sove
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это тебе кто такое напел?

уже вижу как ты на хвх на тачке с экзибитом гоняеш
Ну во-первых не напел, а даже если глянуть на слитый сурс (cstrike15_src github), то можно увидеть, что он вызывается в PhysicsSimulate,
во-вторых вот ревёрс PhysicsSimulate и RunCommand после недавнего обновления:
PhysicsSimulate:
1656761724958.png

Как видим SetHost(нашигрок) устанавливается на нашего игрока и после выполнения RunCommand устанавливается на null
В самом же RunCommand нет вызова SetHost...
Пожалуйста, авторизуйтесь для просмотра ссылки.
ok
Благодарю за помощь.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это тебе кто такое напел?
Ну во-первых не напел, а даже если глянуть на слитый сурс (cstrike15_src github), то можно увидеть, что он вызывается в PhysicsSimulate,
во-вторых вот ревёрс PhysicsSimulate и RunCommand после недавнего обновления:
PhysicsSimulate:
Посмотреть вложение 210342
Как видим SetHost(нашигрок) устанавливается на нашего игрока и после выполнения RunCommand устанавливается на null
В самом же RunCommand нет вызова SetHost...

Благодарю за помощь.
Если открыть сурс кс, то можно прийти к выводу об абсолютной бесполезности этой темы как и еще куче всех остальных говно тредов с реверсами
 
Если открыть сурс кс, то можно прийти к выводу об абсолютной бесполезности этой темы как и еще куче всех остальных говно тредов с реверсами
Невозможно не согласиться, но человеку же надо показать, что он чего-то стоит своим щитпостом)
 
Пожалуйста, авторизуйтесь для просмотра ссылки.
ok
Ну во-первых не напел, а даже если глянуть на слитый сурс (cstrike15_src github), то можно увидеть, что он вызывается в PhysicsSimulate,
во-вторых вот ревёрс PhysicsSimulate и RunCommand после недавнего обновления:
PhysicsSimulate:
Посмотреть вложение 210342
Как видим SetHost(нашигрок) устанавливается на нашего игрока и после выполнения RunCommand устанавливается на null
В самом же RunCommand нет вызова SetHost...

Благодарю за помощь.
так энивей разница нулевая, ведь хост который мы ставим используется уже внутри коллов мувхелпера в ранкомманде..
челики сидят бздят вронг реверс а сами то не понимают что и зачем...
 
Последнее редактирование:
так энивей разница нулевая, ведь хост который мы ставим используется уже внутри коллов мувхелпера в ранкомманде..
челики сидят бздят вронг реверс а сами то не понимают что и зачем...
ты кажется не понимаешь, что ты делаешь и о чем говоришь....
Вронг реверс?) Хоть один пруф?)
 
ты кажется не понимаешь, что ты делаешь и о чем говоришь....
Вронг реверс?) Хоть один пруф?)
а к чему тогда этот высер бро?
SetHost вызывается в PhysicsSimulate, но никак не в RunCommand.
показать что ты умеешь открывать иду? или то что обязательно все делать в соответствии с сурсом движка, напомню который, кстати, все как раз фиксят в темах подобных этой последние пару лет...

upd. старая добрая традиция югейма - ставить попкорн когда у тебя нет аргументов
 
Последнее редактирование:
Назад
Сверху Снизу