Code:
class Minimap { public: PAD(0xC); // 0x00 MinimapArea* firstArea; // 0x0C }; // 0x10 class MinimapArea { public: INT areaId; // 0x00 INT sceneId; // 0x04 INT worldId; // 0x08 INT snoId; // 0x0C POINT posStart; // 0x10 POINT posEnd; // 0x18 PAD(0x4); // 0x20 DWORD* revealMap; // 0x24 UINT sizeX; // 0x28 UINT sizeY; // 0x2C PAD(0xC); // 0x30 MinimapArea* next; // 0x3C }; // 0x40
Code:
VOID RevealArea(MinimapArea* area) { if(area == NULL) return; DWORD* revealMap = area->revealMap; if(revealMap == NULL) return; __asm { push edi; mov edi, area; push revealMap; call D3_RevealArea; add esp, 0x4; pop edi; } }
Minimap* - xyyyyxxx?xxxxxxxxxx \xA1\x00\x00\x00\x00\x85\xC0\x74\x00\x33\xC9\x39\x 48\x58\x0F\x94\xC1\x89\x48
D3_RevealArea - xxxxxxxxxxxxx \x55\x8B\xEC\x83\xEC\x0C\x8B\x47\x2C\x8B\x4F\x28\x 56
Example code, has to be called within a hook for TLS.
Code:
VOID RevealMap() { MinimapArea* area = D3_Minimap->firstArea; if(area == NULL) return; for(; area; area = area->next) { if(area->revealMap == NULL) continue; UINT mapSize = area->sizeX * area->sizeY; for(UINT i = 0; i < mapSize; i++) area->revealMap[i] |= 0x7000FFFF; // changes to non-local player explored // can be set to fully explored RevealArea(area); } }
NOTE: ALL CREDS GO TO RHIN.
dont know if this has been posted before, just sharing
