Blood Castle Level -> Reset
Server:
int CBloodCastle::GetUserAbleLevel(LPOBJ lpObj) // OK
if(lpObj->Class == CLASS_MG || lpObj->Class == CLASS_DL || lpObj->Class == CLASS_RF)
{
if(lpObj->ChangeUp < 2)
{
if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 0 && lpObj->Reset <= 40)
{
level = 0;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 41 && lpObj->Reset <= 80)
{
level = 1;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 81 && lpObj->Reset <= 120)
{
level = 2;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 121 && lpObj->Reset <= 160)
{
level = 3;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 161 && lpObj->Reset <= 200)
{
level = 4;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 201 && lpObj->Reset <= 250)
{
level = 5;
}
else if(lpObj->Level >= 10 && lpObj->Level <= 400 && lpObj->Reset >= 251 && lpObj->Reset <= 500)
{
level = 6;
}
}
else
{
level = 7;
}
}
else
{
if(lpObj->ChangeUp < 2)
{
if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 0 && lpObj->Reset <= 40)
{
level = 0;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 41 && lpObj->Reset <= 80)
{
level = 1;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 81 && lpObj->Reset <= 120)
{
level = 2;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 121 && lpObj->Reset <= 160)
{
level = 3;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 161 && lpObj->Reset <= 200)
{
level = 4;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 201 && lpObj->Reset <= 250)
{
level = 5;
}
else if (lpObj->Level >= 15 && lpObj->Level <= 400 && lpObj->Reset >= 251 && lpObj->Reset <= 500)
{
level = 6;
}
}
else
{
level = 7;
}
}
Main:
SetCompleteHook(0xE9, 0x615E5F, &CFixes::teste); //Click
SetCompleteHook(0xE9, 0x626CDC, &CFixes::teste2); //Room available
void __declspec(naked) CFixes::teste()
{
static DWORD jmp1 = 0x615E7F;
static DWORD jmp2 = 0x615E86;
__asm
{
MOV EDX, DWORD PTR DS : [0x76C1D90]
MOV ECX, DWORD PTR DS : [EDI * 8 + 0x6EA604]
XOR EAX, EAX
MOV AX, WORD PTR DS : [ViewReset]
CMP EAX, ECX
JG SHORT salto1
CMP EAX, DWORD PTR DS : [EDI * 8 + 0x6EA600]
JGE SHORT salto2
salto1 :
JMP DWORD PTR DS : [jmp1]
salto2 :
JMP DWORD PTR DS : [jmp2]
}
}
void __declspec(naked) CFixes::teste2()
{
static DWORD jmp1 = 0x00626CFF;
static DWORD jmp2 = 0x00626D06;
__asm
{
MOV EDX, DWORD PTR DS : [0x76C1D90]
MOV ECX, DWORD PTR SS : [EBP-24h]
XOR EAX, EAX
MOV AX, WORD PTR DS : [ViewReset] //MOV AX, WORD PTR DS : [EDX + 0x0E]
MOV EDX, DWORD PTR DS : [ECX * 8 + 0x6EA604]
CMP EAX, EDX
JG SHORT salto1
CMP EAX, DWORD PTR DS : [ECX * 8 + 0x6EA600]
JGE SHORT salto2
salto1 :
JMP DWORD PTR DS : [jmp1]
salto2 :
JMP DWORD PTR DS : [jmp2]
}
}

(RR ao lado do PING no topo da imagem)