For developers looking to harness the methodmap syntax for an object-oriented API for interacting with game entities, check out
these helpers includes.
Example of usage:
PHP Code:
stock void GiveObjectHat( CBaseObject objectEnt, const char hatModel[ PLATFORM_MAX_PATH ] )
{
CBaseEntity hatProp = Entity_CreateByName( "prop_dynamic_override" );
if ( hatProp.IsValid )
{
hatProp.SetModel( hatModel );
hatProp.Spawn();
hatProp.AcceptInput( "DisableCollision" );
hatProp.AcceptInput( "DisableShadow" );
ParentHat( hatProp, objectEnt );
}
}
stock void ParentHat( CBaseEntity hatProp, CBaseObject objectEnt )
{
char hatModel[ PLATFORM_MAX_PATH ];
hatProp.GetModel( hatModel, sizeof( hatModel ) );
float modelScale = 1.0;
float modelOffset = 0.0;
if ( !Config_GetHatByModel( hatModel, modelOffset, modelScale ) )
{
LogError( "Unable to find hat config for hat: %s", hatModel );
return;
}
hatProp.Skin = objectEnt.Builder.Team - 2;
hatProp.ModelScale = modelScale;
char attachmentName[ 128 ];
GetAttachmentName( objectEnt, attachmentName, sizeof( attachmentName ) );
hatProp.SetParent( objectEnt );
hatProp.SetParentAttachment( attachmentName );
float vecPos[ 3 ]; float angRot[ 3 ];
hatProp.GetLocalOrigin( vecPos );
hatProp.GetLocalAngles( angRot );
// apply z offset
vecPos[ 2 ] += modelOffset;
// apply position/angle fixes based on object type
OffsetAttachmentPosition( objectEnt, vecPos, angRot );
hatProp.Teleport( vecPos, angRot, NULL_VECTOR );
}
__________________