Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Record system

  • Автор темы Автор темы francyz
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
864
Реакции
125
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
Пожалуйста, авторизуйтесь для просмотра ссылки.
/
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
 
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
Если ты о мувмент рекордере, то вот тебе статейка
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво

Я может чего-то не понимаю, но они же ничем не отличаются, при frame_net_update_end закидываешь, если кол-во рекордов > 32, последний выкидываешь
А если ты имел в виду какую информацию нужно в рекорд вносить:
C++:
Expand Collapse Copy
c_base_player* player;
vec3_t velocity, origin, absorigin, eyeangles, absangles, mins, maxs;
float sim_time, lower_yaw, duck_amount, resolved_yaw;
int choked_time, rotate_side, flags, adjust_tick;
bool shooting, jump, resolved;

std::array<std::array<animlayer_t, 13>, 4> animation_layers = {};
std::array<std::array<float, 24>, 4> pose_parameters = {};
std::array<std::array<matrix_t, 256>, 4> matrices = {};
 
Последнее редактирование:
Я может чего-то не понимаю, но они же ничем не отличаются, при frame_net_update_end закидываешь, если кол-во рекордов > 32, последний выкидываешь
А если ты имел в виду какую информацию нужно в рекорд вносить:
C++:
Expand Collapse Copy
c_base_player* player;
vec3_t velocity, origin, absorigin, eyeangles, absangles, mins, maxs;
float sim_time, lower_yaw, duck_amount, resolved_yaw;
int choked_time, rotate_side, flags, adjust_tick;
bool shooting, jump, resolved;

std::array<std::array<animlayer_t, 13>, 4> animation_layers = {};
std::array<std::array<float, 24>, 4> pose_parameters = {};
std::array<std::array<matrix_t, 256>, 4> matrices = {};
спасибки, не подскажешь как лучше её собирать? Посмотрел в супермаси как оно сделано,ничего не понял(такое ощущение там p100 бектрек).
 
спасибки, не подскажешь как лучше её собирать? Посмотрел в супермаси как оно сделано,ничего не понял(такое ощущение там p100 бектрек).
C++:
Expand Collapse Copy
void c_animationsystem::frame_stage(int stage) {

    if (stage != frame_net_update_end)
        return;

    for (int index = 0; index < 64; index++) {

        c_base_player* player = c_base_player::get_player_by_index(index);
        if (!player || !player->is_player() || !player->is_alive() || player == g_local || player->m_iTeamNum() == g_local->m_iTeamNum())
            continue;
       

        if (player->m_flOldSimulationTime() >= player->m_flSimulationTime()) {
            if (player->m_flOldSimulationTime() > player->m_flSimulationTime())
                p_player_records[index].clear();
            continue;
        }

        bool with_prev_record = false;
        if (p_player_records[index].size() > 1)
            with_prev_record = true; // чел да ты крутой, существуешь больше одного тика, даже успел оставить себя в истории этого сервера, похвала и поклон xDD

        c_lagrecord record = c_lagrecord(player);

        if (with_prev_record) {
            // ref for game: https://github.com/perilouswithadollarsign/cstrike15_src/blob/f82112a2388b841d72cb62ca48ab1846dfcc11c8/game/server/player_lagcompensation.cpp#L385-L389
            // track lost, diff to much high, player breaking lag compensation, we cant record him
            if ((record.origin - get_oldest_record(index).origin).length_2d() > 4096.f) {
                p_player_records[index].clear();
            }
        }

        p_player_records[index].emplace_back(record);
        while (p_player_records[index].size() > 32)
            p_player_records[index].pop_front();
    }

}

Я случайно вырезал строчку апдейта анимаций и сетапа костей, думаю догадаешься куда её вставить
 
Последнее редактирование:
C++:
Expand Collapse Copy
void c_animationsystem::frame_stage(int stage) {

    if (stage != frame_net_update_end)
        return;

    for (int index = 0; index < 64; index++) {

        c_base_player* player = c_base_player::get_player_by_index(index);
        if (!player || !player->is_player() || !player->is_alive() || player == g_local || player->m_iTeamNum() == g_local->m_iTeamNum())
            continue;
      

        if (player->m_flOldSimulationTime() >= player->m_flSimulationTime()) {
            if (player->m_flOldSimulationTime() > player->m_flSimulationTime())
                p_player_records[index].clear();
            continue;
        }

        bool with_prev_record = false;
        if (p_player_records[index].size() > 1)
            with_prev_record = true; // чел да ты крутой, существуешь больше одного тика, даже успел оставить себя в истории этого сервера, похвала и поклон xDD

        c_lagrecord record = c_lagrecord(player);

        if (with_prev_record) {
            // ref for game: https://github.com/perilouswithadollarsign/cstrike15_src/blob/f82112a2388b841d72cb62ca48ab1846dfcc11c8/game/server/player_lagcompensation.cpp#L385-L389
            // track lost, diff to much high, player breaking lag compensation, we cant record him
            if ((record.origin - get_oldest_record(index).origin).length_2d() > 4096.f) {
                p_player_records[index].clear();
            }
        }

        p_player_records[index].emplace_back(record);
        while (p_player_records[index].size() > 32)
            p_player_records[index].pop_front();
    }

}

Я случайно вырезал строчку апдейта анимаций и сетапа костей, думаю догадаешься куда её вставить
Не подскажешь,я правильно получаю дак амаунт?
N_ADD_VARIABLE(float, GetDuckAmount,"CBasePlayer->m_flDuckAmount");
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
void c_animationsystem::frame_stage(int stage) {


        if (player->m_flOldSimulationTime() >= player->m_flSimulationTime()) {
            if (player->m_flOldSimulationTime() > player->m_flSimulationTime())
                p_player_records[index].clear();
            continue;
        }

}
чё блять, нахуя ты делаешь по факту две одинаковые проверки то.......
 
чё блять, нахуя ты делаешь по факту две одинаковые проверки то.......
так я же умный), а если серьёзно, симтайм если равен олд, значит нам не нужно обновлять, а если олд > текущего, то это значит что противник брикает лц, и нету смысла его анимировать
Не подскажешь,я правильно получаю дак амаунт?
N_ADD_VARIABLE(float, GetDuckAmount,"CBasePlayer->m_flDuckAmount");
да
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
void c_lagcomp::frame_stage_notify( int i_stage ) {
    if ( i_stage != net_frame_update_end )
        return;
  
    // Создаем цикл для этой хуеты
    for ( int index = 1; index <= interfaces::global_vars->max_client_ent; index++ ) {
        c_cs_player* entity = interfaces::ent_list->get_player_by_index( index );
        if ( !entity->has_valid( ) )
            continue;
      
        // Проверяем на пустоту рекордов или когда сервер прислал новые данные
        if ( player_records[ index ].empty( ) || ( entity->sim_time( ) != entity->old_sim_time( ) ) ) {
            // Тут наша хуета.
            // Проверяем брикает ли человек лаг компенсацию..
            if ( !player_records[ index ].empty( ) && ( entity->get_origin( ) - player_records[ i ].front( ).origin ).lengthsqr( ) > 4096.f ) {
                // Очищаем рекорды
                player_records[ index ].clear( );
                continue;
            }
          
            // Проверяем шифтит ли тикбазу..
            if ( !player_records[ index ].empty( ) && entity->old_sim_time( ) > entity->sim_time( ) ) {
                // Очищаем рекорды
                player_records[ index ].clear( );
                continue;
            }
          
            // Создаем рекорд
            player_records[ index ].emplace_back( c_lag_records( ) );
          
            // Апдейтим анимации
            update_entity_animations( entity );
        }
      
        // Сохраняем данные 0______0
        // upd: sharklaser - limit 32.
        while ( player_records[ index ].size( ) > 31 )
            player_records[ index ].pop_front( );
    }
}

void c_lagcomp::update_entity_animations( c_cs_player* entity ) {
  
}

надеюсь больше вопросов не будет
@francyz
так я же умный), а если серьёзно, симтайм если равен олд, значит нам не нужно обновлять, а если олд > текущего, то это значит что противник брикает лц, и нету смысла его анимировать

да
ахах ладно чувак
но советую вам прочитать что делает сим тайм потому что вы похоже не знаете 0____0
 
Последнее редактирование:
что делает сим тайм потому что вы похоже не знаете
Что? Хорошо, скажу ещё раз, я проверяю на то что противник НЕ нуждается в обновлении(симтайм = олд симтайм) и на то что он шифтит тикбазу(олд симтайм > симтайм)
 
Назад
Сверху Снизу