AddDebugHook: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 8: Line 8:
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool addDebugHook( string hookType, function callbackFunction )
bool addDebugHook( string hookType, function callbackFunction[, table nameList ] )
</syntaxhighlight>
</syntaxhighlight>


Line 18: Line 18:
** postFunction
** postFunction
*'''callbackFunction :''' The function to call
*'''callbackFunction :''' The function to call
===Optional Arguments===
*'''nameList:''' Table of strings for restricting which functions and events the hook will be triggered on


===Returns===
===Returns===
Line 66: Line 69:
addDebugHook( "preFunction", onPreFunction)
addDebugHook( "preFunction", onPreFunction)
</syntaxhighlight>
</syntaxhighlight>
This example adds a hook which will only be triggered for the named functions
<syntaxhighlight lang="lua">
addDebugHook( "preFunction", onPreFunction, {"setElementPosition","loadstring"} )
</syntaxhighlight>
==Changelog==
==Changelog==
{{ChangelogHeader}}
{{ChangelogHeader}}
{{ChangelogItem|1.3.5-9.06054|Added clientside}}
{{ChangelogItem|1.3.5-9.06054|Added clientside}}
{{ChangelogItem|1.3.5-9.06142|Added option to restrict to specified functions and events }}
==Requirements==
==Requirements==
{{Requirements|1.3.4-9.05939|1.3.5-9.06054}}
{{Requirements|1.3.4-9.05939|1.3.5-9.06054}}

Revision as of 22:06, 22 February 2014

This function allows tracing of MTA functions and events. It should only be used when debugging scripts as it may degrade script performance.

Debug hooks are not recursive, so functions and events triggered inside the hook callback will not be traced.

Syntax

bool addDebugHook( string hookType, function callbackFunction[, table nameList ] )

Required Arguments

  • hookType: The type of hook to add. This can be:
    • preEvent
    • postEvent
    • preFunction
    • postFunction
  • callbackFunction : The function to call

Optional Arguments

  • nameList: Table of strings for restricting which functions and events the hook will be triggered on

Returns

Returns true if the hook was successfully added, or false otherwise.

Callback parameters

pre/postEvent( resource sourceResource, string eventName, element eventSource, element eventClient, string luaFilename, int luaLineNumber, eventArguments )
pre/postFunction( resource sourceResource, string functionName, bool isAllowedByACL, string luaFilename, int luaLineNumber, functionArguments )

Example

This example will dump info about all triggered events:

function onPreEvent( sourceResource, eventName, eventSource, eventClient, luaFilename, luaLineNumber, ... )
    local args = { ... }
    local srctype = eventSource and getElementType(eventSource)
    local resname = sourceResource and getResourceName(sourceResource)
    local plrname = eventClient and getPlayerName(eventClient)
    outputDebugString( "preEvent"
        .. " " .. tostring(resname)
        .. " " .. tostring(eventName)
        .. " source:" .. tostring(srctype)
        .. " player:" .. tostring(plrname)
        .. " file:" .. tostring(luaFilename)
        .. "(" .. tostring(luaLineNumber) .. ")"
        .. " numArgs:" .. tostring(#args)
        .. " arg1:" .. tostring(args[1])
        )
end
addDebugHook( "preEvent", onPreEvent )

This example will dump info about all called MTA functions:

function onPreFunction( sourceResource, functionName, isAllowedByACL, luaFilename, luaLineNumber, ... )
    local args = { ... }
    local resname = sourceResource and getResourceName(sourceResource)
    outputDebugString( "preFunction"
        .. " " .. tostring(resname)
        .. " " .. tostring(functionName)
        .. " allowed:" .. tostring(isAllowedByACL)
        .. " file:" .. tostring(luaFilename)
        .. "(" .. tostring(luaLineNumber) .. ")"
        .. " numArgs:" .. tostring(#args)
        .. " arg1:" .. tostring(args[1])
        )
end
addDebugHook( "preFunction", onPreFunction)

This example adds a hook which will only be triggered for the named functions

addDebugHook( "preFunction", onPreFunction, {"setElementPosition","loadstring"} )

Changelog

Version Description
1.3.5-9.06054 Added clientside
1.3.5-9.06142 Added option to restrict to specified functions and events

Requirements

This template will be deleted.

See Also