Garry's Mod Wiki

Revision Difference

ENTITY:SpawnFunction#514470

<function name="SpawnFunction" parent="ENTITY" type="hook">⤶ <ishook>yes</ishook>⤶ <description>⤶ This is the spawn function. It's called when a player spawns the entity from the spawnmenu.⤶ ⤶ If you want to make your SENT spawnable you need this function to properly create the entity.⤶ ⤶ <warning>Unlike other ENTITY functions, the "self" parameter of this function is not an entity but rather the table used to generate the SENT. This table is equivalent to <page>scripted_ents.GetStored</page>("ent_name").</warning>⤶ </description>⤶ <realm>Server</realm>⤶ <predicted>No</predicted>⤶ <args>⤶ <arg name="ply" type="Player">The player that is spawning this SENT</arg>⤶ <arg name="tr" type="table">A &lt;page&gt;TraceResult&lt;/page&gt; from player eyes to their aim position</arg>⤶ <arg name="ClassName" type="string">The classname of your entity</arg>⤶ </args>⤶ </function>⤶ ⤶ <example>⤶ <description>This is how it is defined in sent_ball</description>⤶ <code>⤶ function ENT:SpawnFunction( ply, tr, ClassName )⤶ ⤶ if ( !tr.Hit ) then return end⤶ ⤶ local SpawnPos = tr.HitPos + tr.HitNormal * 16⤶ ⤶ local ent = ents.Create( ClassName )⤶ ent:SetPos( SpawnPos )⤶ ent:SetBallSize( math.random( 16, 48 ) )⤶ ent:Spawn()⤶ ent:Activate()⤶ ⤶ return ent⤶ ⤶ end⤶ </code>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>This is how base_edit spawns (also rotates the entity to face the player, remove * 10 if it spawns in the air)</description>⤶ <code>⤶ function ENT:SpawnFunction( ply, tr, ClassName )⤶ ⤶ if ( !tr.Hit ) then return end⤶ ⤶ local SpawnPos = tr.HitPos + tr.HitNormal * 10⤶ local SpawnAng = ply:EyeAngles()⤶ SpawnAng.p = 0⤶ SpawnAng.y = SpawnAng.y + 180⤶ ⤶ local ent = ents.Create( ClassName )⤶ ent:SetPos( SpawnPos )⤶ ent:SetAngles( SpawnAng )⤶ ent:Spawn()⤶ ent:Activate()⤶ ⤶ return ent⤶ ⤶ end⤶ </code>⤶ ⤶ </example>