Called when the weapon entity is created.
This is sometimes not called clientside. You can work around this by setting a variable in Initialize and check if it exists in WEAPON:Think. See the example below.
This is not called serverside after a quicksave.
Sets the weapon hold type to SWEP.HoldType.
function SWEP:Initialize() self:SetHoldType( self.HoldType ) end
Fixes the function not being called clientside.
function SWEP:Initialize() self.m_bInitialized = true -- Other code end function SWEP:Think() if (not self.m_bInitialized) then self:Initialize() end -- Other code end