Вопрос Аним ресольвер не работает

Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
Ресольвер по леерам не работает.
Дельты right и zero равны, а на выходе сайд 0. Стенд ресольвер тоже выдает сайд 0.

resolver:
void resolver::resolve_via_layers(player_t* player, adjust_data* record, adjust_data* previous_record)
{
    if (record && previous_record)
    {
        record->resolver_type = MODE_NONE;

        if ((record->flags & FL_ONGROUND) && (previous_record->flags & FL_ONGROUND))
        {
            if (record->speed <= 0.1)
            {
                if (record->layers[3].m_flWeight == 0.0 && record->layers[3].m_flCycle == 0.0) // леер 3 цикл почти всегда равен 0.97
                {
                    record->resolver_type = MODE_ANIMATION;
                    record->resolver_side = (2 * (math::angle_difference(record->angles.y, record->rotation_data.server) <= 0.0) - 1) > 0 ? RESOLVER_POSITIVE : RESOLVER_NEGATIVE;
                }
            }
            else if (!(record->layers[12].m_flWeight * 1000.0)
                && int(record->layers[6].m_flWeight * 1000.0) == int(previous_record->layers[6].m_flWeight * 1000.0))
            {
                float zero = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[0][6].m_flPlaybackRate);
                float left = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[1][6].m_flPlaybackRate);
                float right = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[2][6].m_flPlaybackRate);

                if (zero < left || right <= left || (left * 1000.0)) //
                {
                    if (zero >= right && left > right && !(right * 1000.0)) // эта проверка фейлит
                    {
                        record->resolver_side = RESOLVER_POSITIVE;
                        record->resolver_type = MODE_ANIMATION;
                    }
                }
                else
                {
                    record->resolver_side = RESOLVER_NEGATIVE;
                    record->resolver_type = MODE_ANIMATION;
                }
            }
        }
    }
}
layers setup:
original_player_data* player_data = new original_player_data;

std::memcpy(record->layers, player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(record->poses, &player->m_flPoseParameter(), sizeof(float) * 24);

player_data->update(e);

set_angles(player, record, previous_record, -1);
record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 1);
record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);
set_angles(player, record, previous_record, 1);

bool is_negative_left_side = math::normalize_yaw(player->get_animation_state()->m_flGoalFeetYaw - record->angles.y) < 0.0;

if (is_negative_left_side)
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);
set_angles(player, record, previous_record, -1);

if (is_negative_left_side)
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 0);
record->rotation_data.server = player->get_animation_state()->m_flGoalFeetYaw;

std::memcpy(record->resolver_layers[0], player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);

record->origin = player->m_vecOrigin();

resolver::get().resolve_via_layers(player, record, previous_record);

switch (record->side)
{
case RESOLVER_ORIGINAL:
    set_angles(player, record, previous_record, 0);
    break;
case RESOLVER_POSITIVE:
    set_angles(player, record, previous_record, 1);
    break;
case RESOLVER_NEGATIVE:
    set_angles(player, record, previous_record, -1);
    break;
}

record->right_direction = record->angles.y - 90.0;
record->left_direction = record->angles.y + 90.0;

std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);
std::memcpy(&player->m_flPoseParameter(), record->poses, sizeof(float) * 24);

update_animations(player);
 
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2023
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Действительно ахуенный вопрос. Сиди над откладкой до полу смерти. Хватит засорять своими высерами разделы
 
Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
Действительно ахуенный вопрос. Сиди над откладкой до полу смерти. Хватит засорять своими высерами разделы
right и zero дельты равны хотя они должны быть разные
все остальное выглядит хорошо
 
Начинающий
Статус
Оффлайн
Регистрация
5 Июн 2021
Сообщения
100
Реакции[?]
6
Поинты[?]
1K
right and zero deltas are equal although they should be different
everything else looks good
Код:
bool is_negative_left_side = math::normalize_yaw(player->get_animation_state()->m_flGoalFeetYaw - record->angles.y) < 0.0;

if (is_negative_left_side)
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
That is shitty part you need to settup matrices no matter left or right side.
 
Начинающий
Статус
Оффлайн
Регистрация
17 Июл 2022
Сообщения
51
Реакции[?]
4
Поинты[?]
1K
Ресольвер по леерам не работает.
Дельты right и zero равны, а на выходе сайд 0. Стенд ресольвер тоже выдает сайд 0.

resolver:
void resolver::resolve_via_layers(player_t* player, adjust_data* record, adjust_data* previous_record)
{
    if (record && previous_record)
    {
        record->resolver_type = MODE_NONE;

        if ((record->flags & FL_ONGROUND) && (previous_record->flags & FL_ONGROUND))
        {
            if (record->speed <= 0.1)
            {
                if (record->layers[3].m_flWeight == 0.0 && record->layers[3].m_flCycle == 0.0) // леер 3 цикл почти всегда равен 0.97
                {
                    record->resolver_type = MODE_ANIMATION;
                    record->resolver_side = (2 * (math::angle_difference(record->angles.y, record->rotation_data.server) <= 0.0) - 1) > 0 ? RESOLVER_POSITIVE : RESOLVER_NEGATIVE;
                }
            }
            else if (!(record->layers[12].m_flWeight * 1000.0)
                && int(record->layers[6].m_flWeight * 1000.0) == int(previous_record->layers[6].m_flWeight * 1000.0))
            {
                float zero = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[0][6].m_flPlaybackRate);
                float left = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[1][6].m_flPlaybackRate);
                float right = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[2][6].m_flPlaybackRate);

                if (zero < left || right <= left || (left * 1000.0)) //
                {
                    if (zero >= right && left > right && !(right * 1000.0)) // эта проверка фейлит
                    {
                        record->resolver_side = RESOLVER_POSITIVE;
                        record->resolver_type = MODE_ANIMATION;
                    }
                }
                else
                {
                    record->resolver_side = RESOLVER_NEGATIVE;
                    record->resolver_type = MODE_ANIMATION;
                }
            }
        }
    }
}
layers setup:
original_player_data* player_data = new original_player_data;

std::memcpy(record->layers, player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(record->poses, &player->m_flPoseParameter(), sizeof(float) * 24);

player_data->update(e);

set_angles(player, record, previous_record, -1);
record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 1);
record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);
set_angles(player, record, previous_record, 1);

bool is_negative_left_side = math::normalize_yaw(player->get_animation_state()->m_flGoalFeetYaw - record->angles.y) < 0.0;

if (is_negative_left_side)
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);
set_angles(player, record, previous_record, -1);

if (is_negative_left_side)
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 0);
record->rotation_data.server = player->get_animation_state()->m_flGoalFeetYaw;

std::memcpy(record->resolver_layers[0], player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);

record->origin = player->m_vecOrigin();

resolver::get().resolve_via_layers(player, record, previous_record);

switch (record->side)
{
case RESOLVER_ORIGINAL:
    set_angles(player, record, previous_record, 0);
    break;
case RESOLVER_POSITIVE:
    set_angles(player, record, previous_record, 1);
    break;
case RESOLVER_NEGATIVE:
    set_angles(player, record, previous_record, -1);
    break;
}

record->right_direction = record->angles.y - 90.0;
record->left_direction = record->angles.y + 90.0;

std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);
std::memcpy(&player->m_flPoseParameter(), record->poses, sizeof(float) * 24);

update_animations(player);
remove this too:
!(record->layers[12].m_flWeight * 1000.0)
 
Забаненный
Статус
Оффлайн
Регистрация
1 Фев 2023
Сообщения
7
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ресольвер по леерам не работает.
Дельты right и zero равны, а на выходе сайд 0. Стенд ресольвер тоже выдает сайд 0.

resolver:
void resolver::resolve_via_layers(player_t* player, adjust_data* record, adjust_data* previous_record)
{
    if (record && previous_record)
    {
        record->resolver_type = MODE_NONE;

        if ((record->flags & FL_ONGROUND) && (previous_record->flags & FL_ONGROUND))
        {
            if (record->speed <= 0.1)
            {
                if (record->layers[3].m_flWeight == 0.0 && record->layers[3].m_flCycle == 0.0) // леер 3 цикл почти всегда равен 0.97
                {
                    record->resolver_type = MODE_ANIMATION;
                    record->resolver_side = (2 * (math::angle_difference(record->angles.y, record->rotation_data.server) <= 0.0) - 1) > 0 ? RESOLVER_POSITIVE : RESOLVER_NEGATIVE;
                }
            }
            else if (!(record->layers[12].m_flWeight * 1000.0)
                && int(record->layers[6].m_flWeight * 1000.0) == int(previous_record->layers[6].m_flWeight * 1000.0))
            {
                float zero = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[0][6].m_flPlaybackRate);
                float left = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[1][6].m_flPlaybackRate);
                float right = abs(record->layers[6].m_flPlaybackRate - record->resolver_layers[2][6].m_flPlaybackRate);

                if (zero < left || right <= left || (left * 1000.0)) //
                {
                    if (zero >= right && left > right && !(right * 1000.0)) // эта проверка фейлит
                    {
                        record->resolver_side = RESOLVER_POSITIVE;
                        record->resolver_type = MODE_ANIMATION;
                    }
                }
                else
                {
                    record->resolver_side = RESOLVER_NEGATIVE;
                    record->resolver_type = MODE_ANIMATION;
                }
            }
        }
    }
}
layers setup:
original_player_data* player_data = new original_player_data;

std::memcpy(record->layers, player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(record->poses, &player->m_flPoseParameter(), sizeof(float) * 24);

player_data->update(e);

set_angles(player, record, previous_record, -1);
record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 1);
record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);

update_network_layers(player, player_data);
set_angles(player, record, previous_record, 1);

bool is_negative_left_side = math::normalize_yaw(player->get_animation_state()->m_flGoalFeetYaw - record->angles.y) < 0.0;

if (is_negative_left_side)
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);
set_angles(player, record, previous_record, -1);

if (is_negative_left_side)
{
    record->rotation_data.positive = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[1], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}
else
{
    record->rotation_data.negative = player->get_animation_state()->m_flGoalFeetYaw;
    std::memcpy(record->resolver_layers[2], player->get_animlayers(), sizeof(AnimationLayer) * 13);
}

update_network_layers(player, player_data);

set_angles(player, record, previous_record, 0);
record->rotation_data.server = player->get_animation_state()->m_flGoalFeetYaw;

std::memcpy(record->resolver_layers[0], player->get_animlayers(), sizeof(AnimationLayer) * 13);
std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);

record->origin = player->m_vecOrigin();

resolver::get().resolve_via_layers(player, record, previous_record);

switch (record->side)
{
case RESOLVER_ORIGINAL:
    set_angles(player, record, previous_record, 0);
    break;
case RESOLVER_POSITIVE:
    set_angles(player, record, previous_record, 1);
    break;
case RESOLVER_NEGATIVE:
    set_angles(player, record, previous_record, -1);
    break;
}

record->right_direction = record->angles.y - 90.0;
record->left_direction = record->angles.y + 90.0;

std::memcpy(player->get_animlayers(), record->layers, sizeof(AnimationLayer) * 13);
std::memcpy(&player->m_flPoseParameter(), record->poses, sizeof(float) * 24);

update_animations(player);
брадда, хватит пастить отв2 с айдиби от нолика, этот чит устарел еще в 2020 году
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
вроде абачуп писал об этом чи непомню кто, у него спроси
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
а нахуя ты только одну матрицу сетапишь, тебе разве не нужно -/+/0 строить? я мб не разбираюсь в нанотехнологиях конечно, но они у тебя так всегда нулевыми будут...
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
так стоп у тебя это даже не матрица ты туда флоат значение записываешь это во первых, во вторых ты не обновляешь анимацию после "сетапа"(которого у тебя нету, в который ты флот записал), тебе нужно полностью сэмулировать матрицу на +- maxdesync, обновить анимации на серве, потом гетнуть оттуда лееры, потом установить следущую тд тп как ты делал
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
так стоп у тебя это даже не матрица ты туда флоат значение записываешь это во первых, во вторых ты не обновляешь анимацию после "сетапа"(которого у тебя нету, в который ты флот записал), тебе нужно полностью сэмулировать матрицу на +- maxdesync, обновить анимации на серве, потом гетнуть оттуда лееры, потом установить следущую тд тп как ты делал
Матрицы я сетапил, анимации обновляются в set_angles.
а нахуя ты только одну матрицу сетапишь, тебе разве не нужно -/+/0 строить? я мб не разбираюсь в нанотехнологиях конечно, но они у тебя так всегда нулевыми будут...
Матрицы я строю, плейбекрейт дельты у меня не нулевые. Дельты right и zero равны, мне это нужно пофиксить.
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
698
Реакции[?]
542
Поинты[?]
155K
запомните дети как делать аним ресольвер.........
1. сетапаете матрицы (-60, 60, 0) без нахуй никаких условий, у вас должны быть все матрицы во всех тиках аима
2. рисуете это матрицы, самое просто это скелетов нарисовать указывая разные матрицы
3. если скелеты нормально получились то можно сразу не отходя от кассы сделать чек на интерсекцию и у вас получаться адекватные сейфпоинты, только последите за ебучими скелетами если у вас фейлятся матрицы а такое будет часто ибо вы хуярите обновления игровой информации и прочую хуйню перемешанную с клиентсайдом серверсайдом вообще не в тех тиках, то сейфпоинты будут кривыми.
4. крч у вас вышли сейфпоинты это уже блять успех, я ласт раз когда играл хвх даже ресольвер не делал, мне сейфпоинтов хватало чтобы убивать в башку лошков с п2с
5. делаете ебучий чек на 6 леер и выводите информацию в консоль или игровой рендер вообще похуй, и смотрите разницу на матрицах, составляете банальную формулу сравнения
6. сохраняете полученную информацию и спокойно фиксите мувы, но это идеально работает только на мувах, на стендах рекомендую 3-6 тиков и дальше выключать анимресик.

p.s если у вас пащенный анимфикс то вам ничем не помочь
 
Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
запомните дети как делать аним ресольвер.........
1. сетапаете матрицы (-60, 60, 0) без нахуй никаких условий, у вас должны быть все матрицы во всех тиках аима
2. рисуете это матрицы, самое просто это скелетов нарисовать указывая разные матрицы
3. если скелеты нормально получились то можно сразу не отходя от кассы сделать чек на интерсекцию и у вас получаться адекватные сейфпоинты, только последите за ебучими скелетами если у вас фейлятся матрицы а такое будет часто ибо вы хуярите обновления игровой информации и прочую хуйню перемешанную с клиентсайдом серверсайдом вообще не в тех тиках, то сейфпоинты будут кривыми.
4. крч у вас вышли сейфпоинты это уже блять успех, я ласт раз когда играл хвх даже ресольвер не делал, мне сейфпоинтов хватало чтобы убивать в башку лошков с п2с
5. делаете ебучий чек на 6 леер и выводите информацию в консоль или игровой рендер вообще похуй, и смотрите разницу на матрицах, составляете банальную формулу сравнения
6. сохраняете полученную информацию и спокойно фиксите мувы, но это идеально работает только на мувах, на стендах рекомендую 3-6 тиков и дальше выключать анимресик.

p.s если у вас пащенный анимфикс то вам ничем не помочь
с матрицами все хорошо
2023-02-23_11-43-10.png
дельты right и zero одинаковые
1677142289405.png
 
Начинающий
Статус
Оффлайн
Регистрация
1 Ноя 2022
Сообщения
40
Реакции[?]
8
Поинты[?]
0
запомните дети как делать аним ресольвер.........
1. сетапаете матрицы (-60, 60, 0) без нахуй никаких условий, у вас должны быть все матрицы во всех тиках аима
2. рисуете это матрицы, самое просто это скелетов нарисовать указывая разные матрицы
3. если скелеты нормально получились то можно сразу не отходя от кассы сделать чек на интерсекцию и у вас получаться адекватные сейфпоинты, только последите за ебучими скелетами если у вас фейлятся матрицы а такое будет часто ибо вы хуярите обновления игровой информации и прочую хуйню перемешанную с клиентсайдом серверсайдом вообще не в тех тиках, то сейфпоинты будут кривыми.
4. крч у вас вышли сейфпоинты это уже блять успех, я ласт раз когда играл хвх даже ресольвер не делал, мне сейфпоинтов хватало чтобы убивать в башку лошков с п2с
5. делаете ебучий чек на 6 леер и выводите информацию в консоль или игровой рендер вообще похуй, и смотрите разницу на матрицах, составляете банальную формулу сравнения
6. сохраняете полученную информацию и спокойно фиксите мувы, но это идеально работает только на мувах, на стендах рекомендую 3-6 тиков и дальше выключать анимресик.

p.s если у вас пащенный анимфикс то вам ничем не помочь
И еще не забываем анимировать каждый чокнутый тик. Это и есть весь секрет "ВАНТАП" ресольвера.
Действительно ахуенный вопрос. Сиди над откладкой до полу смерти. Хватит засорять своими высерами разделы
Человек выкладывает темы в нужный раздел. Какие могут быть к нему вопросы?
с матрицами все хорошо
Посмотреть вложение 239590
дельты right и zero одинаковые
Посмотреть вложение 239591
Ты не совсем делаешь правильный рестор, твои "матрицы" будут возвращать одни и те же значения.
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
возможно Avenger1337 прав, что ты не правильно сетаешь/ресетаешь, стоп а зач у тя чек на 12 леер если он 0 всегда должен быть?(сетап костей, отключение свея)
 
i hate p2cs
Участник
Статус
Оффлайн
Регистрация
18 Окт 2022
Сообщения
617
Реакции[?]
218
Поинты[?]
147K
запомните дети как делать аним ресольвер.........
1. сетапаете матрицы (-60, 60, 0) без нахуй никаких условий, у вас должны быть все матрицы во всех тиках аима
2. рисуете это матрицы, самое просто это скелетов нарисовать указывая разные матрицы
3. если скелеты нормально получились то можно сразу не отходя от кассы сделать чек на интерсекцию и у вас получаться адекватные сейфпоинты, только последите за ебучими скелетами если у вас фейлятся матрицы а такое будет часто ибо вы хуярите обновления игровой информации и прочую хуйню перемешанную с клиентсайдом серверсайдом вообще не в тех тиках, то сейфпоинты будут кривыми.
4. крч у вас вышли сейфпоинты это уже блять успех, я ласт раз когда играл хвх даже ресольвер не делал, мне сейфпоинтов хватало чтобы убивать в башку лошков с п2с
5. делаете ебучий чек на 6 леер и выводите информацию в консоль или игровой рендер вообще похуй, и смотрите разницу на матрицах, составляете банальную формулу сравнения
6. сохраняете полученную информацию и спокойно фиксите мувы, но это идеально работает только на мувах, на стендах рекомендую 3-6 тиков и дальше выключать анимресик.

p.s если у вас пащенный анимфикс то вам ничем не помочь
Ты забыл про backtrack, не имея всего этого но имея backtrack на тот тик где игрок открыл свой sendpacket т.к свои углы можно хсить тоже норм хД
В oversee сделано про то что ты написал, жаль не можем потестить(
 
Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
И еще не забываем анимировать каждый чокнутый тик. Это и есть весь секрет "ВАНТАП" ресольвера.

Человек выкладывает темы в нужный раздел. Какие могут быть к нему вопросы?

Ты не совсем делаешь правильный рестор, твои "матрицы" будут возвращать одни и те же значения.
да вроде все хорошо
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
мои глаза

ты че ебанулся какой oversee АХАХХАХАХ
сендпакет бектрек омфг долбаеб
да успокойтесь на праздник человек не в себе нормальная ситуация
в чем проблема была
 
Пользователь
Статус
Оффлайн
Регистрация
8 Янв 2020
Сообщения
187
Реакции[?]
138
Поинты[?]
20K
Сверху Снизу