Hello,
i have an issue with FindSlotbySpellId it just returns -1. I tried different parameters but nothing changes.
Maybe some of you can help me out here.
Code:
static inline int64_t GetFindSpellById(int32_t spellid) {
return reinterpret_cast<int64_t(__fastcall*)(int32_t, int32_t, char)>(base + 0x2D96B00)(spellid, 0, 0);
}
Code:
__int64 __fastcall FindSlotbySpellid(__int64 a1, int a2, char a3)
{
unsigned int v4; // edx
__int64 v5; // r8
__int64 v6; // r10
__int64 v7; // rcx
int v8; // eax
unsigned int v10; // edx
__int64 v11; // r10
__int64 v12; // rcx
if ( a2 )
{
if ( a3 )
{
v4 = *(_DWORD *)(a1 + 104);
v5 = 0i64;
if ( v4 )
{
v6 = *(_QWORD *)(a1 + 112);
while ( 1 )
{
v7 = *(_QWORD *)(v6 + 8 * v5);
v8 = *(_DWORD *)(v7 + 8);
if ( a2 == v8 && *(_DWORD *)(v7 + 4) == 1 )
break;
if ( *(_DWORD *)(v7 + 4) == 3 && (v8 & 0x3F000000) == 0x1000000 && (v8 & 0xFFFFFF) == a2 )
break;
v5 = (unsigned int)(v5 + 1);
if ( (unsigned int)v5 >= v4 )
return 0xFFFFFFFFi64;
}
return (unsigned int)v5;
}
}
else
{
v10 = *(_DWORD *)(a1 + 72);
v5 = 0i64;
if ( v10 )
{
v11 = *(_QWORD *)(a1 + 80);
while ( 1 )
{
v12 = *(_QWORD *)(v11 + 8 * v5);
if ( a2 == *(_DWORD *)(v12 + 8) && *(_DWORD *)(v12 + 4) == 1 && (*(_BYTE *)(v12 + 24) & 4) == 0 )
break;
v5 = (unsigned int)(v5 + 1);
if ( (unsigned int)v5 >= v10 )
return 0xFFFFFFFFi64;
}
return (unsigned int)v5;
}
}
}
return 0xFFFFFFFFi64;
}