Hooks

Updated for version 3.38

This page assumes you already have some knowledge in lua and payday 2 lua structure. The functions like almost everywhere are class functions so you'd call them like Hooks:QuickClass(...)

Hooks

Already an existing class in BLT. BeardLib adds a few useful functions to it. https://payday-2-blt-docs.readthedocs.io/en/latest/lua/hooks/

Functions

Function
Description

RemovePostHookWithObject(Table object, String id)

Removes a post hook with the id id. Added since BLT didn't have such function. object is of course, the class you want to add hooks to

RemovePreHookWithObject(object, id)

Removes a pre hook with the id id

QuickClass(hooks_name)

Returns a class that has functions for quicker hooking. hook_name is the name that will prefix to each hook you add. The functions are: Post(object, func_name, hook_func), Pre(object, func_name, hook_func), RemovePost(object, func_name), and RemovePre(object, func_name). object is the class you want to add hooks to, func_name is the function name you want to hook to, and hook_func is the function that should run in post or pre hook

LazyClass(object, hooks_name)

Like QuickClass but lazier! This one takes an object with hooks_name. object is the class you want to add hooks to. Because of that, the functions don't have a class parameter so: Post(func_name, hook_func), Pre(func_name, hook_func), RemovePost(func_name), and RemovePre(func_name). There's an additional function to set the class which is SetClass(object)

Anonymous functions

Functions that don't have a class and are called like func().

Useful functions for dealing with functions/hooks.

Function
Description

ClassClbk(Table clss, String func, a, b, c, ...)

A replacement for the function callback. It's faster (in most cases) and doesn't require writing self twice (Cases where you'd want to modify self you'd probably be more interested in using SimpleClbk). clss is the table/class of the function you want to have a callback of, func is the name of the function and a, b, c, ... are the arguments for the callback (unlike callback, this accepts infinite number of arguments) the arguments will be before the arguments when the callback will be called

SimpleClbk(Funciton f, a, b, c, ...)

Like ClassClbk but f is a direct function instead. So you can have anonymous functions as callbacks (without doing the old callback(nil, _G, "func") bullshit). It's even faster than ClassClbk is. The rest of the arguments are the same as in ClassClbk

SafeClbk(...)

Same as SimpleClbk but runs the call through a pcall. This is slower so don't use it blindly!

SafeClassClbk(...)

Same as ClassClbk but runs the call through a pcall. This is even slower.

Example

ClassClbk

local clbk = ClasClbk(self, "MyCallback", 1,2,3)
local clbk2 = ClassClbk(OtherClass, "CallMe", "hey")

SimpleClbk

local clbk = SimpleClbk(clbkFunc, 1,2)
local clbk2 = SimpleClbk(SomeClass.Func, self, 3)

Last updated