View Single Post
  #7  
Old 02-16-2014, 02:54 PM
Nydosa's Avatar
Nydosa
Sarnak
 
Join Date: Jan 2013
Posts: 61
Default

I tried to go down that route with brown skeletons. It's a hard-coded 'feature' in the client from Luclin-era, and it made it so all model 60 skeletons defaulted to texture 0 since there was only one (horrible) model of that skeleton.

When I was looking into this, Secrets gave me some of his re-written code to fix it. I believe this is how they do it on P99, although I'm not 100% sure on that. I'm sure others here would be interested in a working method to get them to appear.

-----
"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."
Reply With Quote