Reppots
Dalayan Adventurer
Hello again,
I've been sitting on this for a while now, and not having the skill-set myself, it's simply gained dust. Here is the solution that P99 uses to get the old brown skeletons to show, as achieved by Secrets from EQEmu. If anyone is able to get this into a working solution, I'd love to see it. This would enable white, brown, and now many more colors of the old cackling skeletons to come back to life!
--------------
SOE hardcoded race 60 in the client to always be texture 0, the fix is removing that in the client.
I didn't actually have my work handy so I recreated it.
You can search for a constant variable of 60 in the exe and fill the instruction set that is in the 'signed int __thiscall EQPlayer::SwapNPCMaterials(int this)' function where it modifies the actor variable of texture with 0x90 (NOP). Filling 0x482762 -> 0x48276F in titanium with 0x90 (NOP) will achieve this effect.
You can binary patch it with a program such as 'OllyDBG' to achieve this effect, or use DLL injection and use this function to patch bytes into the application:
Quote:
void PatchBytes( void * lpAddress, const char * szBytes, int nLen )
{
// Needed by VirtualProtect.
DWORD dwBack = 0;
VirtualProtect( lpAddress, nLen, PAGE_READWRITE, &dwBack );
// Write Byte-After-Byte.
for( int i = 0; i < nLen; i++ )
*( BYTE * )( ( DWORD )lpAddress + i ) = szBytes[ i ];
// Restore old protection.
VirtualProtect( lpAddress, nLen, dwBack, &dwBack );
}
/*ex - 00482762 /PatchBytes((void*)0x00482762, "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\ x90", 13);
Skeletons fix */
Hope that helps a bit.
I've been sitting on this for a while now, and not having the skill-set myself, it's simply gained dust. Here is the solution that P99 uses to get the old brown skeletons to show, as achieved by Secrets from EQEmu. If anyone is able to get this into a working solution, I'd love to see it. This would enable white, brown, and now many more colors of the old cackling skeletons to come back to life!
--------------
SOE hardcoded race 60 in the client to always be texture 0, the fix is removing that in the client.
I didn't actually have my work handy so I recreated it.
You can search for a constant variable of 60 in the exe and fill the instruction set that is in the 'signed int __thiscall EQPlayer::SwapNPCMaterials(int this)' function where it modifies the actor variable of texture with 0x90 (NOP). Filling 0x482762 -> 0x48276F in titanium with 0x90 (NOP) will achieve this effect.
You can binary patch it with a program such as 'OllyDBG' to achieve this effect, or use DLL injection and use this function to patch bytes into the application:
Quote:
void PatchBytes( void * lpAddress, const char * szBytes, int nLen )
{
// Needed by VirtualProtect.
DWORD dwBack = 0;
VirtualProtect( lpAddress, nLen, PAGE_READWRITE, &dwBack );
// Write Byte-After-Byte.
for( int i = 0; i < nLen; i++ )
*( BYTE * )( ( DWORD )lpAddress + i ) = szBytes[ i ];
// Restore old protection.
VirtualProtect( lpAddress, nLen, dwBack, &dwBack );
}
/*ex - 00482762 /PatchBytes((void*)0x00482762, "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\ x90", 13);
Skeletons fix */
Hope that helps a bit.