Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define Padding(x) struct { unsigned char __padding##x[(x)]; };
- #define MaxEnts 100
- struct CUserLocal
- {
- Padding(0x5E5C); //char vector offset/char pid
- void* lpvPID;
- Padding(0x7EE8); //char x - vector offset/pid - 4
- int x; //0xDD48
- int y; //0xDD4C
- };
- struct CMob_LoopDistance
- {
- Padding(0x4);
- CMob_LoopDistance* i;
- Padding(0x10); //0x18
- CMob_Next_2* pCMob_Next_2;
- };
- struct CMob_Next_2
- {
- Padding(0x1D8); //mob 3 offset
- CMob_3* pCMob_3;
- };
- struct CMob_Next_1
- {
- Padding(0x4);
- CMob_LoopDistance* i;
- Padding(0x10); //0x18 - 4 - 4
- CMob_Next_2* pCMob_Next_2;
- };
- struct CMob_4
- {
- Padding(0x60); //mob x
- int x; //0x60
- int y; //0x64
- int inv_x; //0x68
- int inv_y; //0x6C
- };
- struct CMob_3
- {
- Padding(0x24); //mob 4 offset
- CMob_4* pCMob_4;
- };
- struct CMob_2
- {
- Padding(0x1D8); //mob 3 offset
- CMob_3* pCMob_3;
- };
- struct CMob_1
- {
- Padding(0x4);
- CMob_2* pCMob_2;
- Padding(0x7FFFFFE8);
- Padding(0x7FFFFFFF);
- CMob_Next_1* pCMobNext_1;
- };
- CUserLocal*(__cdecl* TSingleton_CUserLocal_GetInstance)() = NULL;
- CMobPool*(__cdecl* TSingleton_CMobPool_GetInstance)() = NULL;
- void(__fastcall* CUserLocal_IsTeleportSkillAvailable)(void* lpvEcx, void* lpvEdx, void* lpvPID, int x, int y) = NULL;
- namespace MapleStory
- {
- namespace Function
- {
- void Teleport(int x, int y)
- {
- void* PID = TSingleton_CUserLocal_GetInstance()->lpvPID;
- return CUserLocal_IsTeleportSkillAvailable(0, 0, PID, x, y);
- }
- void Do_Kami()
- {
- int MobCount = TSingleton_CMobPool_GetInstance()->iCount;
- int Mob_x[MaxEnts], Mob_y[MaxEnts], Mob_invx[MaxEnts], Mob_invy[MaxEnts];
- //TSingleton_CMobPool_GetInstance -> 0x28 [pMob_1_1]
- CMob_1* pMob_1_1 = reinterpret_cast<CMob_1*>(reinterpret_cast<PBYTE*>(TSingleton_CMobPool_GetInstance()->pCMob_1));
- //pMob_1_1 -> 0x4 -> 0x1D8 -> 0x24 [pMob_1_4]
- CMob_4* pMob_1_4 = reinterpret_cast<CMob_4*>(reinterpret_cast<PBYTE*>(pMob_1_1->pCMob_2->pCMob_3->pCMob_4));
- Mob_x[0] = pMob_1_4->x; // pMob_1_4 -> 0x60;
- Mob_y[0] = pMob_1_4->y; // pMob_1_4 -> 0x64;
- Mob_invx[0] = pMob_1_4->inv_x;
- Mob_invy[0] = pMob_1_4->inv_y;
- //pMob_1_1 -> -0x10 -> 0x18 -> 0x1D8 -> 0x24 [pMob_2_4]
- CMob_4* pMob_2_4 = reinterpret_cast<CMob_4*>(reinterpret_cast<PBYTE*>(pMob_1_1->pCMobNext_1->pCMob_Next_2->pCMob_3->pCMob_4));
- Mob_x[1] = pMob_2_4->x; // pMob_2_4 -> 0x60;
- Mob_y[1] = pMob_2_4->y; // pMob_1_4 -> 0x64;
- Mob_invx[1] = pMob_2_4->inv_x;
- Mob_invx[1] = pMob_2_4->inv_y;
- CMob_LoopDistance *MobList = reinterpret_cast<CMob_LoopDistance*>(reinterpret_cast<PBYTE*>(pMob_1_1->pCMobNext_1->i));
- CMob_4 *Mob;
- for (size_t i = 2; i <= MobCount; i++)
- {
- Mob = MobList->pCMob_Next_2->pCMob_3->pCMob_4;
- Mob_x[i] = Mob->x;
- Mob_y[i] = Mob->y;
- Mob_invx[i] = Mob->inv_x;
- Mob_invy[i] = Mob->inv_y;
- MobList = MobList->i;
- // if (Mob_invx[i] > 0 || Mob_invy[i] > 0)
- // continue;
- while (Mob_x[i] && Mob_y[i])
- {
- Teleport(Mob_x[i], Mob_y[i]);
- }
- }
- return;
- }
- }
- }
- void GetData()
- {
- *(void**)&TSingleton_CMobPool_GetInstance = reinterpret_cast<void*>(0x004C17D0); //
- *(void**)&TSingleton_CUserLocal_GetInstance = reinterpret_cast<void*>(0x004AEDB0); //
- *(void**)&CUserLocal_IsTeleportSkillAvailable = reinterpret_cast<void*>(0x01763BE0); //
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement