I use olly a lot more than IDA, since olly, for me is the easiest way to read functions etc. etc. =) Btw do you have any idea how'd you do the teleport thing? Like click to teleport.
mov eax, 0x7000000; TEST eax,eax JZ errorLabel;
HMODULE hmod = GetModuleHandle((LPCSTR)"game.bin");
if(hmod == 0)
return false;
MEMORY_BASIC_INFORMATION info;
// Start at PE32 header
SIZE_T len = VirtualQuery(hmod, &info, sizeof(info));
BYTE* processBase = (BYTE*)info.AllocationBase;
BYTE* address = processBase;
SIZE_T size = 0;
for (;;)
{
len = VirtualQuery(address, &info, sizeof(info));
if (info.AllocationBase != processBase)
break;
address = (BYTE*)info.BaseAddress + info.RegionSize;
size += info.RegionSize;
}
DWORD address; address = *(DWORD*)(0x00C22194); if (!address) return -1; address = *(DWORD*)(address + 0x2fc); if (!address) return -1; address = *(DWORD*)(address + pukNum * 0x4); if (!address) return -1; address = *(DWORD*)(address + 0x32c); return address;
__asm mov ecx, 0x10 ((int(WINAPI*)(void*)0x0400000))((void*)&MyObj); this call in asm shows like mov ecx, 0x10 lea ecx, [EBP+0xX] // Stores the address of MyObj to ECX push ECX call 0x0400000
lea ecx, [EBP+0xX] // Stores the address of MyObj to ECX push ECX mov ecx, 0x10 call 0x0400000
void Form1::timer1_tick(etcetc){
if (chHeal->Checked){
if (PlayerData->CurrentHP <= PlayerData->MaxHP * .8)
{
SendSkill(7);
Sleep(700); // CHANGE IT TO CAST TIME IN GUI
SendSkill(8);
Sleep(3000); // CHANGE IT TO CAST TIME IN GUI
}
}
if (chBot->Checked){
if (CurrentTargetHealth <= 0){
if (Post_Attack){
SendSkill(18);
Post_Attack = false;
Pre_Attack = true;
}
if (CS_SelectMonTimer + 1000 < GetTickCount())
SelectMonster();
if (!CurrentTargetHealth)
CS_SelectMonTimer = GetTickCount();
else
CS_WalkToTimer = GetTickCount();
}
else if (CurrentTargetHealth > 0){
if (EnemyDistance > 25 && CS_WalkToTimer + 1000 < GetTickCount()){
if (Check_EnemyDistance == EnemyDistance)
WalkToMonster(EnemyAxis->X, EnemyAxis->Y);
else if (Check_EnemyDistance != EnemyDistance)
Check_EnemyDistance = EnemyDistance;
CS_WalkToTimer = GetTickCount();
}
else if (CS_MainTimer + 1000 < GetTickCount() && EnemyDistance <= 25){
if (Pre_Attack){
SendSkill(17);
Pre_Attack = false;
Post_Attack = true;
}
int Skills[] = { 1, 2, 3, 4, 5, 6, 9, 10, 11, 12 };
int iRand = Skills[rand() % 10];
if (SendSkill(iRand))
CS_MainTimer = GetTickCount();
CS_WalkToTimer = GetTickCount();
CS_SelectMonTimer = GetTickCount();
}
}
}
if (chRet->Checked){
float DestX = (Convert::ToDouble(inpX->Text));
float DestY = (Convert::ToDouble(inpY->Text));
float LimitRadius = (Convert::ToDouble(inpRad->Text));
DestinationDistance = GetLineDistance(DestX, DestY, PlayerAxis->X, PlayerAxis->Y);
if (DestinationDistance > LimitRadius){
if (CurrentTargetHealth <= 0 && GetTickCount() > ReturnTimer + 3000){
if (Check_DestinationDistance == DestinationDistance)
WalkToPath(DestX, DestY);
else if (Check_DestinationDistance != DestinationDistance)
Check_DestinationDistance = DestinationDistance;
ReturnTimer = GetTickCount();
}
}
}
}