Garry's Mod Wiki

Revision Difference

Entity:SetWeaponModel#514474

<function name="SetWeaponModel" parent="Entity" type="classfunc">⤶ <description>⤶ Sets the model and associated weapon to this viewmodel entity.⤶ ⤶ This is used internally when the player switches weapon.⤶ ⤶ <note>View models are not drawn without a weapons associated to them.</note>⤶ <warning>This will silently fail if the entity is not a viewmodel.</warning>⤶ </description>⤶ <realm>Shared</realm>⤶ <args>⤶ <arg name="viewModel" type="string">The model string to give to this viewmodel.&#xA;Example: &quot;models/weapons/c_smg1.mdl&quot;</arg>⤶ <arg name="weapon" type="Weapon" default="NULL">The weapon entity to associate this viewmodel to.</arg>⤶ </args>⤶ </function>⤶ ⤶ <example>⤶ <description>Sets the model of the second viewmodel to the smg and associates it with the player's current weapon.</description>⤶ <code>Entity( 1 ):GetViewModel( 1 ):SetWeaponModel( "models/weapons/c_smg1.mdl", Entity( 1 ):GetActiveWeapon() )</code>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>Initializes the extra viewmodel in Deploy and hides it again on Holster, also plays the attack animation on left and right click.</description>⤶ <code>⤶ SWEP.ViewModel = "models/weapons/v_pistol.mdl"⤶ SWEP.UseHands = false⤶ SWEP.ViewModelFlip = false --the default viewmodel won't be flipped⤶ SWEP.ViewModelFlip1 = true --the second viewmodel will⤶ ⤶ ⤶ function SWEP:Deploy()⤶ --get the second viewmodel⤶ local viewmodel1 = self.Owner:GetViewModel( 1 )⤶ if ( IsValid( viewmodel1 ) ) then⤶ --associate its weapon to us⤶ viewmodel1:SetWeaponModel( self.ViewModel , self )⤶ end⤶ ⤶ self:SendViewModelAnim( ACT_VM_DEPLOY , 1 )⤶ ⤶ return true⤶ end⤶ ⤶ function SWEP:Holster()⤶ local viewmodel1 = self.Owner:GetViewModel( 1 )⤶ if ( IsValid( viewmodel1 ) ) then⤶ --set its weapon to nil, this way the viewmodel won't show up again⤶ viewmodel1:SetWeaponModel( self.ViewModel , nil )⤶ end⤶ ⤶ return true⤶ end⤶ ⤶ --since self:SendWeaponAnim always sends the animation to the first viewmodel, we need this as a replacement⤶ function SWEP:SendViewModelAnim( act , index , rate )⤶ ⤶ if ( not game.SinglePlayer() and not IsFirstTimePredicted() ) then⤶ return⤶ end⤶ ⤶ local vm = self.Owner:GetViewModel( index )⤶ ⤶ if ( not IsValid( vm ) ) then⤶ return⤶ end⤶ ⤶ local seq = vm:SelectWeightedSequence( act )⤶ ⤶ if ( seq == -1 ) then⤶ return⤶ end⤶ ⤶ vm:SendViewModelMatchingSequence( seq )⤶ vm:SetPlaybackRate( rate or 1 )⤶ end⤶ ⤶ function SWEP:PrimaryAttack()⤶ ⤶ self:SendViewModelAnim( ACT_VM_PRIMARYATTACK , 0 )--target the first viewmodel⤶ self:SetNextPrimaryFire( CurTime() + 0.25 )⤶ ⤶ end⤶ ⤶ function SWEP:SecondaryAttack()⤶ ⤶ self:SendViewModelAnim( ACT_VM_PRIMARYATTACK , 1 )--target the second⤶ self:SetNextSecondaryFire( CurTime() + 0.25 )⤶ ⤶ end⤶ </code>⤶ <output></output>⤶ ⤶ </example>