LUA скрипт [any] grenade prediction

  • Автор темы Автор темы spring
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2021
Сообщения
13
Реакции
0
делаю свой гренейд предикшион, получилось так, что если трейс прилетает в игрока, он как-то фейлится и неправильно записывает позицию предикта, без игрока все идеально, подскажите добрые люди, как это пофиксить?

Код:
Expand Collapse Copy
for tick = 0, math.huge do
            if velocity:length() < 0.1 then
                break
            end

            local half_gravity = gravity * tickinterval * 0.5
            local move_step = vector(
                    velocity.x * tickinterval,
                    velocity.y * tickinterval,
                    (velocity.z - half_gravity) * tickinterval
            )
            velocity.z = velocity.z - gravity * tickinterval

            local next_pos = pos + move_step

            local trace = utils.trace_hull(
                    pos, next_pos, mins, maxs, m_owner, mask
            )

            local surface_elasticity = 1

            local ent = entity.get(trace.entindex)
            local is_player = ent ~= nil and ent:is_player()

            if is_player then
                surface_elasticity = 0.3
            end

            if ent ~= nil then
                if is_breakable(ent[0]) then
                    velocity = velocity * 0.4
                end
            end


            if trace.fraction < 1 then
                local normal = trace.plane.normal

                if is_molotov and max_slope_cos < normal.z then
                    pos:init(trace.end_pos:unpack())
                    return true, tick, false
                end

                velocity = velocity - normal * velocity:dot(normal) * 2
                if math.abs(velocity.x) < 0.1 then velocity.x = 0 end
                if math.abs(velocity.y) < 0.1 then velocity.y = 0 end
                if math.abs(velocity.z) < 0.1 then velocity.z = 0 end
                velocity = velocity * 0.45 * surface_elasticity

                local vel_sqr = velocity:lengthsqr()
                if normal.z > 0.7 and vel_sqr > 96000 then
                    local dot_val = velocity:normalized():dot(normal)
                    if dot_val > 0.5 then
                        velocity = velocity * (1.5 - dot_val)
                    end
                end

                if vel_sqr < 400 then
                    velocity = vector(0, 0, 0)
                end

                if velocity:lengthsqr() > 0 then
                    local end_pos = trace.end_pos
                    local push = velocity * ((1 - trace.fraction) * tickinterval)

                    trace = utils.trace_hull(end_pos, end_pos + push, mins, maxs, m_owner, 33570827)

                    if trace.start_solid or is_player then
                        local end_pos = trace.end_pos
                        tr = utils.trace_line(end_pos - push, end_pos + push, m_owner, 540683)
                    end
                end

                next_pos = trace.end_pos
            end

            
            pos = next_pos
        end


1755804377275.png
1755804395961.png
 
нейд релиз на нл делаешь?
 
Как минимум сделай проверку на антиаимы (при использовании десинка, у тебя микромувмент стоя 1.01 сидя 3.25), а ты проверяешь 0.1 велосити. Попробуй скипать ентити если он_плеер и не равен локал_плееру, но стоит учитывать что если ты наводишься на противника с гранатой, она должна пролетать сквозь него как это было на легаси во многих читах.
 
Последнее редактирование:
Как минимум сделай проверку на антиаимы (при использовании десинка, у тебя микромувмент стоя 1.01 сидя 3.25), а ты проверяешь 0.1 велосити. Попробуй скипать ентити если он_плеер и не равен локал_плееру, но стоит учитывать что если ты наводишься на противника с гранатой, она не должна пролетать сквозь него как это было на легаси во многих читах.
если я буду скипать энтити, предикт как раз и полетит сквозь противника, и дело не в микромувменте, без учёта столкновения с энтити предиктит траекторию у меня идеально, но я не могу понять как сделать правильный учёт столкновения от противника
нейд релиз на нл делаешь?
просто балуюсь, но зашел так далеко, что надо закончить
 
если я буду скипать энтити, предикт как раз и полетит сквозь противника, и дело не в микромувменте, без учёта столкновения с энтити предиктит траекторию у меня идеально, но я не могу понять как сделать правильный учёт столкновения от противника

просто балуюсь, но зашел так далеко, что надо закончить
Ну тогда с такими темпами тебе нужна более продвинутая работа с нейд предиктом... А значит делать своё выполнение fly_collision_resolution, нормальная калькуляция локального местоположения гренейд позишена с учетом всех ебаторий, и многое другое что и так есть в паблике помоему.
 
Последнее редактирование:
Ну тогда с такими темпами тебе нужна более продвинутая работа с нейд предиктом... А значит делать своё выполнение fly_collision_resolution, нормальная калькуляция локального местоположения гренейд позишена с учетом всех ебаторий, и многое другое что и так есть в паблике помоему.
мой код - это буквально весь предикт только без миллиона функций, но тут что-то неправильно, либо трейс как-то неправильно кидаю, либо что-то ещё, не ебу
 
Скрытое содержимое
я итак перепастил с unknowncheats и тд. дело немного не в этом, если по трейсу энтити, оно будет трейсить в любой позиции до окончания bbox'а энтити,
1755861567303.png
1755861576504.png
1755861588330.png
и еще одна проблема
 
я итак перепастил с unknowncheats и тд. дело немного не в этом, если по трейсу энтити, оно будет трейсить в любой позиции до окончания bbox'а энтити, Посмотреть вложение 313875Посмотреть вложение 313876Посмотреть вложение 313877и еще одна проблема
Помоему я тебе спунфиднул где было всё стабильно, если же все не так то отпиши мне в тг по контактам.
 
Назад
Сверху Снизу