Вопрос Record system

Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
 
шатап книга
Забаненный
Статус
Оффлайн
Регистрация
7 Мар 2020
Сообщения
485
Реакции[?]
119
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
Пожалуйста, авторизуйтесь для просмотра ссылки.
/
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
 
std::X$$V::Z::_Func_impl_no_alloc
Пользователь
Статус
Оффлайн
Регистрация
30 Мар 2019
Сообщения
389
Реакции[?]
103
Поинты[?]
1K
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
Если ты о мувмент рекордере, то вот тебе статейка
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
шатап книга
Забаненный
Статус
Оффлайн
Регистрация
7 Мар 2020
Сообщения
485
Реакции[?]
119
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
Здрасте всем про кодерам форума,где есть нормальная рекорд система без говна и костылей? Пытался написать сам,работает но очень хуёво
Я может чего-то не понимаю, но они же ничем не отличаются, при frame_net_update_end закидываешь, если кол-во рекордов > 32, последний выкидываешь
А если ты имел в виду какую информацию нужно в рекорд вносить:
C++:
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 = {};
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Я может чего-то не понимаю, но они же ничем не отличаются, при frame_net_update_end закидываешь, если кол-во рекордов > 32, последний выкидываешь
А если ты имел в виду какую информацию нужно в рекорд вносить:
C++:
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 бектрек).
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
спасибки, не подскажешь как лучше её собирать? Посмотрел в супермаси как оно сделано,ничего не понял(такое ощущение там p100 бектрек).
C++:
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();
    }

}
Я случайно вырезал строчку апдейта анимаций и сетапа костей, думаю догадаешься куда её вставить
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
C++:
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");
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нефор
Забаненный
Статус
Оффлайн
Регистрация
9 Ноя 2018
Сообщения
1,042
Реакции[?]
663
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
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;
        }

}
чё блять, нахуя ты делаешь по факту две одинаковые проверки то.......
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
чё блять, нахуя ты делаешь по факту две одинаковые проверки то.......
так я же умный), а если серьёзно, симтайм если равен олд, значит нам не нужно обновлять, а если олд > текущего, то это значит что противник брикает лц, и нету смысла его анимировать
Не подскажешь,я правильно получаю дак амаунт?
N_ADD_VARIABLE(float, GetDuckAmount,"CBasePlayer->m_flDuckAmount");
да
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
29 Авг 2021
Сообщения
11
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
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
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,970
Реакции[?]
958
Поинты[?]
19K
что делает сим тайм потому что вы похоже не знаете
Что? Хорошо, скажу ещё раз, я проверяю на то что противник НЕ нуждается в обновлении(симтайм = олд симтайм) и на то что он шифтит тикбазу(олд симтайм > симтайм)
 
Сверху Снизу