Создаем internal мультихак, на примере CryEngine3 SDK [Spam of animation]
В этой статье, мы с вами создадим функцию для отключения задержки анимации игрока. Это позволит вам выполнять так называемый "Спам Х", "Спам CTRL" и "Движения лягушки", т.е выполнять данные
- движение лечь - встать
- движение присесть - встать
- движение вправо-влево (стрейф)
- движение лежа - в правый бок / левый бок
- движение лежа - вперед / назад
действия без какой-либо задержки.
Добавим в наш код новые смещения
#define ICVAR_STANDTOCROUCHDELAY 0xD24 #define ICVAR_STANDTOPRONEDELAY 0xD28 #define ICVAR_CROUCHTOSTANDDELAY 0xD2C #define ICVAR_CROUCHTOPRONEDELAY 0xD30 #define ICVAR_PRONETOSTANDDELAY 0xD34 #define ICVAR_PRONETOCROUCHDELAY 0xD38
В итоге, мы имеем такой набор смещений
#define IGAMEFRAMEWORK_GETCLIENTACTOR 0x470 #define ICVAR_OFFS_IDLECHECK 0x168 #define ICVAR_OFFS_LOBBYAFK 0x7B0 #define ICVAR_OFFS_INGAMEAFK 0x5D0 #define ICVAR_OFFS_ENABLEKICK 0x498 #define ICVAR_OFFS_PVEKICK 0x49C #define ICVAR_OFFS_ADVERTISING 0x90 #define ICVAR_OFFS_PERSONAL_OFFER 0xB4 #define ICVAR_OFFS_CHATENABLED 0xB20 #define ICVAR_OFFS_LOBBYCHATDELAY 0xB28 #define ICVAR_OFFS_INGAMECHATDELAY 0xB30 #define ICVAR_OFFS_GAMETYPE 0x600 #define ICVAR_STANDTOCROUCHDELAY 0xD24 #define ICVAR_STANDTOPRONEDELAY 0xD28 #define ICVAR_CROUCHTOSTANDDELAY 0xD2C #define ICVAR_CROUCHTOPRONEDELAY 0xD30 #define ICVAR_PRONETOSTANDDELAY 0xD34 #define ICVAR_PRONETOCROUCHDELAY 0xD38
Добавим в перечисление CvarOffsets новые значения
E_STANDTOCROUCHDELAY = ICVAR_STANDTOCROUCHDELAY, E_STANDTOPRONEDELAY = ICVAR_STANDTOPRONEDELAY, E_CROUCHTOSTANDDELAY = ICVAR_CROUCHTOSTANDDELAY, E_CROUCHTOPRONEDELAY = ICVAR_CROUCHTOPRONEDELAY, E_PRONETOSTANDDELAY = ICVAR_PRONETOSTANDDELAY, E_PRONETOCROUCHDELAY = ICVAR_PRONETOCROUCHDELAY,
Теперь наше перечисление со смещениями, выглядит так
enum eCvarOffsets : DWORD64 { E_IDLECHECK = ICVAR_OFFS_IDLECHECK, E_LOBBYAFK = ICVAR_OFFS_LOBBYAFK, E_INGAMEAFK = ICVAR_OFFS_INGAMEAFK, E_ENABLEKICK = ICVAR_OFFS_ENABLEKICK, E_PVEKICK = ICVAR_OFFS_PVEKICK, E_ADVERTISING_OFF = ICVAR_OFFS_ADVERTISING, E_PERSONAL_OFFER = ICVAR_OFFS_PERSONAL_OFFER, E_CHATENABLED = ICVAR_OFFS_CHATENABLED, E_LOBBYCHATDELAY = ICVAR_OFFS_LOBBYCHATDELAY, E_INGAMECHATDELAY = ICVAR_OFFS_INGAMECHATDELAY, E_GAMETYPE = ICVAR_OFFS_GAMETYPE, E_STANDTOCROUCHDELAY = ICVAR_STANDTOCROUCHDELAY, E_STANDTOPRONEDELAY = ICVAR_STANDTOPRONEDELAY, E_CROUCHTOSTANDDELAY = ICVAR_CROUCHTOSTANDDELAY, E_CROUCHTOPRONEDELAY = ICVAR_CROUCHTOPRONEDELAY, E_PRONETOSTANDDELAY = ICVAR_PRONETOSTANDDELAY, E_PRONETOCROUCHDELAY = ICVAR_PRONETOCROUCHDELAY, };
Пишем функцию, для отключения задержки анимации игрока
void SpamXandCtlr() { IGameFramework* pGameFramework = IGameFramework::Base(); if (!pGameFramework) return; ICvar* pCvar = ICvar::Base(); if (!pCvar) return; IActor* pActor = nullptr; if (pGameFramework->GetClientActor(&pActor)) { pCvar->SetValue(eCvarOffsets::E_STANDTOCROUCHDELAY, FALSE); pCvar->SetValue(eCvarOffsets::E_STANDTOPRONEDELAY, FALSE); pCvar->SetValue(eCvarOffsets::E_CROUCHTOSTANDDELAY, FALSE); pCvar->SetValue(eCvarOffsets::E_CROUCHTOPRONEDELAY, FALSE); pCvar->SetValue(eCvarOffsets::E_PRONETOSTANDDELAY, FALSE); pCvar->SetValue(eCvarOffsets::E_PRONETOCROUCHDELAY, FALSE); } }
Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
-
1
-
2
0 Комментариев
Рекомендуемые комментарии
Комментариев нет