-
Автор темы
- #1
Ну что же гайд как обновить софт.
Каждый "кодер" должен знать о такой штуке как поиск и замена если кто не знает как юзать вот вам ссылка на документацию
Кроче что вам нужно №1. Обновить FindMatrix. Думаю каждый знает где он расположен у меня он в EntityZaLoop.h.
Ну или в другом месте зависит от вас куда вы его там приткнули. Кроче заменяем код Сейчас версия GOM-0x17C1F18
И так справились думаю да Идем дальше.
№2. Залупень Пропало вх что же делать переходим в EntityZaLoop.h
И просто вам надо вставить этот код. Если у вас есть он тогда просто замените. Если же нету тогда вставляйте за ошибки не отвечаю. dwGameObjectManager
Если у кого то нет AlwaysDay или CustomTime вот просто добавьте. а там я думаю вы сами знаете как и че куда.
№3. Далее переходим к get_position.
Находится в game_sdk.h
Ну или еще где. опять же есть поиск.
Тоже берем заменяем код
№4.Ну и после всех манипуляций вы тупо обновляете все свои оффсеты и хуки.
Если что то не работает меня нет.
Каждый "кодер" должен знать о такой штуке как поиск и замена если кто не знает как юзать вот вам ссылка на документацию
Пожалуйста, авторизуйтесь для просмотра ссылки.
.Кроче что вам нужно №1. Обновить FindMatrix. Думаю каждый знает где он расположен у меня он в EntityZaLoop.h.
Ну или в другом месте зависит от вас куда вы его там приткнули. Кроче заменяем код Сейчас версия GOM-0x17C1F18
C++:
void FindMatrix() {
static DWORD64 dwGameObjectManager = 0;
if (!dwGameObjectManager)
dwGameObjectManager = safe_read(GetModBase(StrW(L"UnityPlayer.dll")) + 0x17C1F18, UINT64);
DWORD64 ObjMgr = safe_read(dwGameObjectManager, DWORD64);
if (!ObjMgr) return;
UINT64 end = safe_read(ObjMgr, UINT64);
for (UINT64 Obj = safe_read(ObjMgr + 0x8, UINT64); (Obj && (Obj != end)); Obj = safe_read(Obj + 0x8, UINT64))// 0x18
{
UINT64 GameObject = safe_read(Obj + 0x10, UINT64);
WORD Tag = safe_read(GameObject + 0x54, WORD);
if (Tag == 5)
{
UINT64 ObjClass = safe_read(GameObject + 0x30, UINT64);
UINT64 Entity = safe_read(ObjClass + 0x18, UINT64);
LocalPlayer.pViewMatrix = (Matrix4x4*)(Entity + 0xDC);// 0xDC 0x2E4
//printf(StrA("Found matrix!\n"));
mfound = true;
return;
}
}
}
№2. Залупень Пропало вх что же делать переходим в EntityZaLoop.h
И просто вам надо вставить этот код. Если у вас есть он тогда просто замените. Если же нету тогда вставляйте за ошибки не отвечаю. dwGameObjectManager
C++:
static DWORD64 dwGameObjectManager = 0;
if (!dwGameObjectManager)
dwGameObjectManager = safe_read(GetModBase(StrW(L"UnityPlayer.dll")) + oGameObjectManager, UINT64);
DWORD64 ObjMgr = safe_read(dwGameObjectManager, DWORD64); if (!ObjMgr) return;
for (DWORD64 Obj = safe_read(ObjMgr + 0x8, DWORD64); (Obj && (Obj != safe_read(ObjMgr, DWORD64))); Obj = safe_read(Obj + 0x8, DWORD64))
{
DWORD64 GameObject = safe_read(Obj + 0x10, DWORD64);
WORD Tag = safe_read(GameObject + 0x54, WORD);
if (Tag == 6 || Tag == 5 || Tag == 20011)
{
DWORD64 ObjClass = safe_read(GameObject + 0x30, DWORD64);
DWORD64 Entity = safe_read(ObjClass + 0x18, DWORD64);
//entity
if (Tag == 6)
{
//entity
if (safe_read(safe_read(GameObject + 0x60, DWORD64), DWORD64) != 0x616C506C61636F4C)
{
}
else {
}
}
//camera
else if (Tag == 5)
LocalPlayer.pViewMatrix = (Matrix4x4*)(Entity + 0xDC); //0x2E4
}
//goto next entity
NextEnt: continue;
}
C++:
//sky
/* else if (Tag == 20011 && Vars::Misc::AlwaysDay) {
DWORD64 Dome = safe_read(Entity + 0x28, DWORD64);
DWORD64 TodCycle = safe_read(Dome + 0x38, DWORD64);
safe_write(TodCycle + 0x10, 13.37f, float);
}
else if (Tag == 20011 && Vars::Misc::CustomTime) {
DWORD64 Dome = safe_read(Entity + 0x28, DWORD64);
DWORD64 TodCycle = safe_read(Dome + 0x38, DWORD64);
safe_write(TodCycle + 0x10, Vars::Misc::Time, float);
}*/
Находится в game_sdk.h
Ну или еще где. опять же есть поиск.
Тоже берем заменяем код
C++:
static Vector3 get_position(DWORD64 transform)
{
if (!transform) return Vector3{ 0.f, 0.f, 0.f };
struct Matrix34 { BYTE vec0[16]; BYTE vec1[16]; BYTE vec2[16]; };
const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };
int Index = *reinterpret_cast<PINT>(transform + 0x40);
auto pTransformData = safe_read(transform + 0x38, DWORD64);
DWORD64 transformData[2];
safe_memcpy(&transformData, reinterpret_cast<PVOID>(pTransformData + 0x18), 16);
std::size_t sizeMatricesBuf = 48 * Index + 48;
std::size_t sizeIndicesBuf = 4 * Index + 4;
int pIndicesBuf[100];
Matrix34 pMatricesBuf[1000];
safe_memcpy(pMatricesBuf, reinterpret_cast<PVOID>(transformData[0]), sizeMatricesBuf);
safe_memcpy(pIndicesBuf, reinterpret_cast<PVOID>(transformData[1]), sizeIndicesBuf);
__m128 result = *reinterpret_cast<__m128*>(reinterpret_cast<ULONGLONG>(pMatricesBuf) + 0x30 * Index);
int transformIndex = *reinterpret_cast<int*>(reinterpret_cast<ULONGLONG>(pIndicesBuf) + 0x4 * Index);
while (transformIndex >= 0)
{
Matrix34 matrix34 = *reinterpret_cast<Matrix34*>(reinterpret_cast<ULONGLONG>(pMatricesBuf) + 0x30 * transformIndex);
__m128 xxx = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0x00));
__m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0x55));
__m128 waxy = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0x8E));
__m128 blowzy = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0xDB));
__m128 zzz = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0xAA));
__m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(*reinterpret_cast<__m128i*>(&matrix34.vec1), 0x71));
__m128 tmp7 = _mm_mul_ps(*reinterpret_cast<__m128*>(&matrix34.vec2), result);
result = _mm_add_ps(
_mm_add_ps(
_mm_add_ps(
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(xxx, mulVec1), waxy),
_mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), blowzy)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(zzz, mulVec2), blowzy),
_mm_mul_ps(_mm_mul_ps(xxx, mulVec0), yxwy)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
_mm_add_ps(
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
_mm_mul_ps(_mm_mul_ps(zzz, mulVec1), waxy)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
tmp7)), *reinterpret_cast<__m128*>(&matrix34.vec0));
transformIndex = *reinterpret_cast<int*>(reinterpret_cast<ULONGLONG>(pIndicesBuf) + 0x4 * transformIndex);
}
return Vector3(result.m128_f32[0], result.m128_f32[1], result.m128_f32[2]);
}
Если что то не работает меня нет.