Garry's Mod Wiki

Revision Difference

hook.Call#524593

<function name="Call" parent="hook" type="libraryfunc"> <description> Calls all hooks associated with the given event until one returns something other than nil, and then returns that data. In almost all cases, you should use <page>hook.Run</page> instead - it calls hook.Call internally but supplies the gamemode table by itself, making your code neater. </description> <realm>Shared and Menu</realm> <file line="62-L125">lua/includes/modules/hook.lua</file> <args> <arg name="eventName" type="string">The event to call hooks for</arg> <arg name="gamemodeTable" type="table">If the gamemode is specified, the gamemode hook within will be called, otherwise not</arg> <arg name="args" type="vararg">The arguments to be passed to the hooks</arg> </args> <rets> <ret name="" type="vararg">Return data from called hooks. Limited to 6 return values</ret> </rets> </function> <example> <description>Runs function DoSomething, which eventually calls the event "DoneDoingSomething", triggering the hooked function DoSomethingElse.</description> <code> function DoSomething() --Does something hook.Call("DoneDoingSomething") end function DoSomethingElse() --Does something else, once the hook DoneDoingSomething is called. print("Done!") end hook.Add( "DoneDoingSomething", "Does something else", DoSomethingElse ) DoSomething() </code> <output>Done!</output> </example> <example> <description>You can also make custom functions controllable via hooks.</description> <code> function MakeCheese() local shouldMakeCheese = hook.Call("MakeCheezPleez") if shouldMakeCheese then print("yay") else print("nay") end end function MakeCheeseOrNot() if #player.GetAll() &gt;= 1 then if #player.GetAll() >= 1 then return true else return false end end hook.Add( "MakeCheezPleez", "Does something else", MakeCheeseOrNot ) MakeCheese() </code> <output>If there is players in the server, we print "yay". If there isn't, we print "nay"</output> </example> <example> <description>Calls the event "DoneDoingSomething" with args</description> <code> hook.Add("DoneDoingSomething", "Does something else", function(a, b) print(a) print(b) end) hook.Call("DoneDoingSomething", nil, "Hello", "Hey") </code> <output> Hello Hey </output> </example>