Начинающий
- Статус
- Оффлайн
- Регистрация
- 24 Сен 2022
- Сообщения
- 11
- Реакции
- 1
Здравствуйте, я тупой школьник, который захотел научиться делать читы для доты по гайдам @Liberalist . У меня возникла проблема с получением EntityList, так как за последние 5 лет в доте изменились функции, используемые в гайде, а конкретно функция ent_find:
Как я понял (с помощью chatGPT), теперь вместо получения первой и последующих сущностей через CGameEntitySystem::NextEnt, для получения первой сущности используется одна функция (sub_182C063D0), а для следующих - другая (sub_182C0B0E0). Но вся проблема заключается вот в этом говне - sub_182BFB710(v32, &v33, 0);. Я не понимаю, что это за хуйня и что в нее надо передавать, а без нее нельзя будет получить ни первую, ни, соответственно, последующие сущности
. Может быть появились новые способы получения энтити листа? На UnknownCheats говорят, что первую сущность можно получить через CGameEntitySystem + 0x210, только я не знаю, как получить адрес CGameEntitySystem. Раньше как я понял это делали так:
auto GameResourceServiceClient =
((uintptr_t(*)(const char*, void*))GetProcAddress(GetModuleHandleA("engine2.dll"),
"CreateInterface"))("GameResourceServiceClientV001", nullptr);
CGameEntitySystem* gameEntitySystem = *(CGameEntitySystem**)((uintptr_t)GameResourceServiceClient + 0x58);
но теперь этот метод не работает.
ent_find:
__int64 __fastcall sub_1804EE1F0(__int64 a1, __int64 a2)
{
int v4; // edi
int v5; // eax
int v6; // ebx
__int64 v7; // rdi
const char *v8; // rdx
__int64 i; // rbx
__int64 v10; // rax
const char *v11; // r13
__int64 v12; // rbp
const char *v13; // r12
int v14; // r14d
const char *v15; // rcx
const char *v16; // rax
int v17; // eax
const char *v18; // rcx
__int64 v19; // rax
bool v20; // bl
const char *v21; // rsi
const char *v22; // rax
bool v23; // di
const char *v24; // rax
bool v25; // cl
bool v26; // al
bool v27; // cl
bool v28; // al
__int64 v29; // rcx
void *v30; // r8
void *v31; // rdx
_BYTE v32[24]; // [rsp+20h] [rbp-58h] BYREF
_UNKNOWN **v33; // [rsp+38h] [rbp-40h] BYREF
int v34; // [rsp+88h] [rbp+10h]
unsigned int v35; // [rsp+90h] [rbp+18h] BYREF
__int64 v36; // [rsp+98h] [rbp+20h]
if ( *(int *)(a2 + 1080) < 2 )
return Msg("Format: ent_find substring [substring...] [-exclude_substring...] \n");
v4 = 0;
v34 = 0;
Msg("Searching for entities with class/target name containing substrings: ");
v5 = *(_DWORD *)(a2 + 1080);
v6 = 1;
if ( v5 > 1 )
{
v7 = 1;
do
{
if ( v7 < 0 || v6 >= v5 )
v8 = (const char *)&unk_1831462FA;
else
v8 = *(const char **)(*(_QWORD *)(a2 + 1088) + 8 * v7);
Msg("\"%s\"", v8);
if ( v6 != *(_DWORD *)(a2 + 1080) - 1 )
Msg(", ");
v5 = *(_DWORD *)(a2 + 1080);
++v6;
++v7;
}
while ( v6 < v5 );
v4 = 0;
}
Msg("\n");
sub_182BFB710(v32, &v33, 0);
v33 = &off_183160F88;
v36 = sub_182C063D0(v32);
for ( i = v36; v36; i = v36 )
{
v10 = *(_QWORD *)(i + 16);
v11 = (const char *)&unk_1831462FA;
v12 = 1;
v13 = (const char *)&unk_1831462FA;
v14 = 1;
v15 = *(const char **)(v10 + 32);
v16 = *(const char **)(v10 + 24);
if ( v15 )
v11 = v15;
if ( v16 )
v13 = v16;
v17 = *(_DWORD *)(a2 + 1080);
if ( v17 <= 1 )
{
LABEL_48:
v34 = ++v4;
sub_182C207E0(i, &v35);
v29 = *(_QWORD *)(i + 16);
v30 = &unk_1831462FA;
v31 = &unk_1831462FA;
if ( *(_QWORD *)(v29 + 24) )
v30 = *(void **)(v29 + 24);
if ( *(_QWORD *)(v29 + 32) )
v31 = *(void **)(v29 + 32);
Msg(" '%s' : '%s' (entindex %d) \n", v31, v30, v35);
}
else
{
while ( 1 )
{
if ( v12 < 0 || v14 >= v17 )
v18 = (const char *)&unk_1831462FA;
else
v18 = *(const char **)(*(_QWORD *)(a2 + 1088) + 8 * v12);
v19 = -1;
do
++v19;
while ( v18[v19] );
v20 = (int)v19 > 0 && *v18 == 45;
v21 = v18 + 1;
if ( !v20 )
v21 = v18;
if ( v11 && *v11 )
{
v22 = V_stristr_fast(v11, v21);
if ( v20 )
v23 = v22 == 0;
else
v23 = v22 != 0;
}
else
{
v23 = 0;
}
if ( v13 && *v13 )
{
v24 = V_stristr_fast(v13, v21);
if ( v20 )
v25 = v24 == 0;
else
v25 = v24 != 0;
}
else
{
v25 = 0;
}
v26 = v25;
v27 = v23 && v25;
v28 = v23 || v26;
if ( !v20 )
v27 = v28;
if ( !v27 )
break;
v17 = *(_DWORD *)(a2 + 1080);
++v14;
++v12;
if ( v14 >= v17 )
{
i = v36;
v4 = v34;
goto LABEL_48;
}
}
v4 = v34;
}
v36 = sub_182C0B0E0(v32);
}
return Msg("Found %d matches.\n", v4);
}

auto GameResourceServiceClient =
((uintptr_t(*)(const char*, void*))GetProcAddress(GetModuleHandleA("engine2.dll"),
"CreateInterface"))("GameResourceServiceClientV001", nullptr);
CGameEntitySystem* gameEntitySystem = *(CGameEntitySystem**)((uintptr_t)GameResourceServiceClient + 0x58);
но теперь этот метод не работает.
Последнее редактирование: