void CClientPedManager::RestreamPeds ( unsigned short usModel ) { // Store the affected vehicles CClientPed* pPed; std::vector < CClientPed* > ::const_iterator iter = IterBegin (); for ( ; iter != IterEnd (); iter++ ) { pPed = *iter; // Streamed in and same vehicle ID? if ( pPed->IsStreamedIn () && pPed->GetModel () == usModel ) { // Stream it out for a while until streamed decides to stream it // back in eventually pPed->StreamOutForABit (); // Hack fix for Players not unloading. if ( IS_PLAYER ( pPed ) ) { // Awesome hack skills + 1, change him to another model while we unload for the lulz // Translation: My hack level has increased to ninety eight and we need to wait a frame before reloading the model ID in question so that the custom model unloads properly. // To do this we set him to CJ (Impossible to mod to my knowledge) and then set him back in CPed::StreamedInPulse pPed->SetModel ( 0, true ); } } } }
void CElementRPCs::SetElementModel ( CClientEntity* pSource, NetBitStreamInterface& bitStream ) { unsigned short usModel; if ( bitStream.Read ( usModel ) ) { switch ( pSource->GetType () ) { case CCLIENTPED: case CCLIENTPLAYER: { CClientPed* pPed = static_cast < CClientPed * > ( pSource ); pPed->SetModel ( usModel ); break; } case CCLIENTVEHICLE: { uchar ucVariant = 255, ucVariant2 = 255; if ( bitStream.GetNumberOfUnreadBits () >= sizeof ( ucVariant ) + sizeof ( ucVariant2 ) ) { bitStream.Read ( ucVariant ); bitStream.Read ( ucVariant2 ); } CClientVehicle* pVehicle = static_cast < CClientVehicle * > ( pSource ); pVehicle->SetModelBlocking ( usModel, ucVariant, ucVariant2 ); break; } case CCLIENTOBJECT: case CCLIENTWEAPON: { CClientObject* pObject = static_cast < CClientObject * > ( pSource ); pObject->SetModel ( usModel ); break; } } } }
void CElementRPCs::SetElementModel ( NetBitStreamInterface& bitStream ) { ElementID ID; unsigned short usModel; if ( bitStream.Read ( ID ) && bitStream.Read ( usModel ) ) { CClientEntity * pEntity = CElementIDs::GetElement ( ID ); if ( pEntity ) { switch ( pEntity->GetType () ) { case CCLIENTPED: case CCLIENTPLAYER: { CClientPed* pPed = static_cast < CClientPed * > ( pEntity ); pPed->SetModel ( usModel ); break; } case CCLIENTVEHICLE: { CClientVehicle* pVehicle = static_cast < CClientVehicle * > ( pEntity ); pVehicle->SetModelBlocking ( usModel ); break; } case CCLIENTOBJECT: { CClientObject* pObject = static_cast < CClientObject * > ( pEntity ); pObject->SetModel ( usModel ); break; } } } } }