Вопрос Как работают анимбрейкеры?

Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
Я понимаю, что через ffi, но не понимаю, как это работает последовательно. Часто в сурсах анимбрейкеров видел всякие строки с парами чисел и букв, вообще хз зачем. И еще всякие имена длл в коде. Добрые люди, ОБЪЯСНИТЕ ПОЖАЛУЙСТА КАК ОНИ РАБОТАЮТ
 
Privatny p100 DT Airlag Break LC Teleport Exploit
Участник
Статус
Оффлайн
Регистрация
27 Янв 2021
Сообщения
983
Реакции[?]
155
Поинты[?]
78K
Я понимаю, что через ffi, но не понимаю, как это работает последовательно. Часто в сурсах анимбрейкеров видел всякие строки с парами чисел и букв, вообще хз зачем. И еще всякие имена длл в коде. Добрые люди, ОБЪЯСНИТЕ ПОЖАЛУЙСТА КАК ОНИ РАБОТАЮТ
Можно и напрямую через пропы сделать. (localplayer.m_flPoseParameter и погнал)
1692304652847.png
10104 это и есть поспараметер
1692304727967.png
А перед ним типа энтити адрес. И складывая этот адрес с пропом ты получаешь проп конкретного энтити (вроде бы этот так работает, не уверен). А потом ты его меняешь. Через ффи это делают потому что пошёл миф типа якобы анимбрикер через пропы ломает резик (он не может ломать резик если ты свои анимки меняешь лол) и так $$$ премиумнее $$$ и ещё какие то другие причины. Советую не парится и сделать через пропы.
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
Можно и напрямую через пропы сделать. (localplayer.m_flPoseParameter и погнал)
Посмотреть вложение 256330
10104 это и есть поспараметер
Посмотреть вложение 256331
А перед ним типа энтити адрес. И складывая этот адрес с пропом ты получаешь проп конкретного энтити (вроде бы этот так работает, не уверен). А потом ты его меняешь. Через ффи это делают потому что пошёл миф типа якобы анимбрикер через пропы ломает резик (он не может ломать резик если ты свои анимки меняешь лол) и так $$$ премиумнее $$$ и ещё какие то другие причины. Советую не парится и сделать через пропы.
От души, брат, но где искать параметры для брейка?
Можно и напрямую через пропы сделать. (localplayer.m_flPoseParameter и погнал)
Посмотреть вложение 256330
10104 это и есть поспараметер
Посмотреть вложение 256331
А перед ним типа энтити адрес. И складывая этот адрес с пропом ты получаешь проп конкретного энтити (вроде бы этот так работает, не уверен). А потом ты его меняешь. Через ффи это делают потому что пошёл миф типа якобы анимбрикер через пропы ломает резик (он не может ломать резик если ты свои анимки меняешь лол) и так $$$ премиумнее $$$ и ещё какие то другие причины. Советую не парится и сделать через пропы.
И еще, что делает ffi.cast? В документации абсолютно ничего не понял, а изучать си чето не хочется
 
Последнее редактирование:
Privatny p100 DT Airlag Break LC Teleport Exploit
Участник
Статус
Оффлайн
Регистрация
27 Янв 2021
Сообщения
983
Реакции[?]
155
Поинты[?]
78K
От души, брат, но где искать параметры для брейка?
m_flPoseParameter[0 - 23], так и тут вместо [0] пишешь любое число от 0 до 23. И каждый этот параметр за что то отвечает. Точно не скажу за что ибо не знаю, возможно где-то в интернете получится найти за что отвечают они.
UPD. Чё то нашёл:
0 -> strafe_yaw (-180.000000, 180.000000)
1 -> stand (0.000000, 1.000000)
2 -> lean_yaw (-180.000000, 180.000000)
3 -> speed (0.000000, 1.000000)
4 -> ladder_yaw (-180.000000, 180.000000)
5 -> ladder_speed (0.000000, 1.000000)
6 -> jump_fall (0.000000, 1.000000)
7 -> move_yaw (-180.000000, 180.000000)
8 -> move_blend_crouch (0.000000, 1.000000)
9 -> move_blend_walk (0.000000, 1.000000)
10 -> move_blend_run (0.000000, 1.000000)
11 -> body_yaw (-60.000000, 60.000000)
12 -> body_pitch (-90.000000, 90.000000)
13 -> aim_blend_stand_idle (0.000000, 1.000000)
14 -> aim_blend_stand_walk (0.000000, 1.000000)
15 -> aim_blend_stand_run (0.000000, 1.000000)
16 -> aim_blend_crouch_idle (0.000000, 1.000000)
17 -> aim_blend_crouch_walk (0.000000, 1.000000)
18 -> death_yaw (-180.000000, 180.000000)
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
Скрытое содержимое
Cпасибо огромное!
m_flPoseParameter[0 - 23], так и тут вместо [0] пишешь любое число от 0 до 23. И каждый этот параметр за что то отвечает. Точно не скажу за что ибо не знаю, возможно где-то в интернете получится найти за что отвечают они.
UPD. Чё то нашёл:
0 -> strafe_yaw (-180.000000, 180.000000)
1 -> stand (0.000000, 1.000000)
2 -> lean_yaw (-180.000000, 180.000000)
3 -> speed (0.000000, 1.000000)
4 -> ladder_yaw (-180.000000, 180.000000)
5 -> ladder_speed (0.000000, 1.000000)
6 -> jump_fall (0.000000, 1.000000)
7 -> move_yaw (-180.000000, 180.000000)
8 -> move_blend_crouch (0.000000, 1.000000)
9 -> move_blend_walk (0.000000, 1.000000)
10 -> move_blend_run (0.000000, 1.000000)
11 -> body_yaw (-60.000000, 60.000000)
12 -> body_pitch (-90.000000, 90.000000)
13 -> aim_blend_stand_idle (0.000000, 1.000000)
14 -> aim_blend_stand_walk (0.000000, 1.000000)
15 -> aim_blend_stand_run (0.000000, 1.000000)
16 -> aim_blend_crouch_idle (0.000000, 1.000000)
17 -> aim_blend_crouch_walk (0.000000, 1.000000)
18 -> death_yaw (-180.000000, 180.000000)
Спасибо, полезно
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
Можно и напрямую через пропы сделать. (localplayer.m_flPoseParameter и погнал)
Посмотреть вложение 256330
10104 это и есть поспараметер
Посмотреть вложение 256331
А перед ним типа энтити адрес. И складывая этот адрес с пропом ты получаешь проп конкретного энтити (вроде бы этот так работает, не уверен). А потом ты его меняешь. Через ффи это делают потому что пошёл миф типа якобы анимбрикер через пропы ломает резик (он не может ломать резик если ты свои анимки меняешь лол) и так $$$ премиумнее $$$ и ещё какие то другие причины. Советую не парится и сделать через пропы.
Пишу ffi.cast('float*', ffi.cast('uintpr_t',EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0 в prediction коллбеке в спирте и у меня вылетает игра, а если пишу EntityList.GetPlayer(EntityList.GetLocalPlayer()):SetProp('m_flPoseParameter ', 0, 7), то значение меняется, а визуальных изменений нет
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
Можно и напрямую через пропы сделать. (localplayer.m_flPoseParameter и погнал)
Посмотреть вложение 256330
10104 это и есть поспараметер
Посмотреть вложение 256331
А перед ним типа энтити адрес. И складывая этот адрес с пропом ты получаешь проп конкретного энтити (вроде бы этот так работает, не уверен). А потом ты его меняешь. Через ффи это делают потому что пошёл миф типа якобы анимбрикер через пропы ломает резик (он не может ломать резик если ты свои анимки меняешь лол) и так $$$ премиумнее $$$ и ещё какие то другие причины. Советую не парится и сделать через пропы.
И как получить этот thisptr?
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Пишу ffi.cast('float*', ffi.cast('uintpr_t',EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0 в prediction коллбеке в спирте и у меня вылетает игра, а если пишу EntityList.GetPlayer(EntityList.GetLocalPlayer()):SetProp('m_flPoseParameter ', 0, 7), то значение меняется, а визуальных изменений нет
ну для начала - uintptr_t...
во вторых - возможно функции чита вызываются ПОСЛЕ твоей говнины, чтоб вы потом в поддержку не писали "фу чит паста сломан предикшын резик" после того как они в позпараметр уинпр засунули
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
ну для начала - uintptr_t...
во вторых - возможно функции чита вызываются ПОСЛЕ твоей говнины, чтоб вы потом в поддержку не писали "фу чит паста сломан предикшын резик" после того как они в позпараметр уинпр засунули
Я так и не понял что делать и почему ничего визуально не меняется с пропами
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Я так и не понял что делать и какого хуя ничего визуально не меняется с пропами
ffi - интерфейс для работы с си. если ты не знаешь си, то тебе не имеет смысла работать с ffi.

если при пидорашивании модельки через проп ничего не происходит - не произойдёт и через ффи.
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
ffi - интерфейс для работы с си. если ты не знаешь си, то тебе не имеет смысла работать с ffi.

если при пидорашивании модельки через проп ничего не происходит - не произойдёт и через ффи.
Проблема с пропом решаема хоть как-то?
 
Privatny p100 DT Airlag Break LC Teleport Exploit
Участник
Статус
Оффлайн
Регистрация
27 Янв 2021
Сообщения
983
Реакции[?]
155
Поинты[?]
78K
ffi.cast('float*', ffi.cast('uintpr_t',EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0
code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

ffi.cast('float*', ffi.cast('uintpr_t', get_entity_address(EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0
Я так и не понял что делать и какого хуя ничего визуально не меняется с пропами
Мб не то меняешь.


попробуй менять [6] = 1. У тебя должны быть статик ноги в воздухе.

P.S. Надеюсь ты в колбеке это меняешь?
 
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

ffi.cast('float*', ffi.cast('uintpr_t', get_entity_address(EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0
Мб не то меняешь.


попробуй менять [6] = 1. У тебя должны быть статик ноги в воздухе.

P.S. Надеюсь ты в колбеке это меняешь?
Написал код:
code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

local function setprops()
    if EntityList.GetLocalPlayer() ~= nil then
        ffi.cast('float*', ffi.cast('uintptr_t', get_entity_address(EntityList.GetLocalPlayer())) + 10104)[7] = 0
    end
end

Cheat.RegisterCallback('prediction', setprops)
Выдает ошибку:

[SPIRTHACK][Lua] Error in "ab": [string "ffi.cdef[[..."]:16: bad argument #2 to 'get_entity_address' (cannot convert 'void *' to 'int')
stack traceback:
[C]: in function 'get_entity_address'
[string "ffi.cdef[[..."]:16: in function <[string "ffi.cdef[[..."]:14>
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
18 Апр 2023
Сообщения
69
Реакции[?]
6
Поинты[?]
6K
code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

ffi.cast('float*', ffi.cast('uintpr_t', get_entity_address(EntityList.GetPlayer(EntityList.GetLocalPlayer())) + 10104)[7] = 0
Мб не то меняешь.


попробуй менять [6] = 1. У тебя должны быть статик ноги в воздухе.

P.S. Надеюсь ты в колбеке это меняешь?
Ошибку исправил:

code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

local function on_prediction()
    if EngineClient.GetLocalPlayer() ~= nil then
        ffi.cast('float*', ffi.cast('uintptr_t', get_entity_address(EngineClient.GetLocalPlayer())) + 10104)[6] = 1
    end
end

Cheat.RegisterCallback('prediction', on_prediction)
Код запускается, но ничего не меняется визуально
 
Privatny p100 DT Airlag Break LC Teleport Exploit
Участник
Статус
Оффлайн
Регистрация
27 Янв 2021
Сообщения
983
Реакции[?]
155
Поинты[?]
78K
Ошибку исправил:

code_language.lua:
ffi.cdef[[
typedef void*(__thiscall* get_client_entity_t)(void*, int);
]]

local function this_call(call_function, parameters)
    return function(...)
        return call_function(parameters, ...)
    end
end

local entity_list_003 = ffi.cast(ffi.typeof("uintptr_t**"), Utils.CreateInterface("client.dll", "VClientEntityList003"))
local get_entity_address = this_call(ffi.cast("get_client_entity_t", entity_list_003[0][3]), entity_list_003)

local function on_prediction()
    if EngineClient.GetLocalPlayer() ~= nil then
        ffi.cast('float*', ffi.cast('uintptr_t', get_entity_address(EngineClient.GetLocalPlayer())) + 10104)[6] = 1
    end
end

Cheat.RegisterCallback('prediction', on_prediction)
Код запускается, но ничего не меняется визуально
Хз, позырь как это реализуют в других брикерах.
 
Сверху Снизу