Garry's Mod Wiki

Revision Difference

GM:OnLuaError#562569

<function name="OnLuaError" parent="GM" type="hook"> <description> Called when a Lua error occurs. Doesn't run for <page>Global.ErrorNoHalt</page> or <page>Global.Error</page>. <note>On the <page text="server realm">States</page>, this hook will only account for server-side errors, not client-side ones.</note> </description> <realm>Shared and Menu</realm> <file line="">lua/menu/errors.lua</file> <args> <arg name="error" type="string">The error that occurred.</arg> <arg name="realm" type="string">Where the Lua error took place, "client", or "server"</arg> <!-- needs "menu" possibly, not tested --> <arg name="stack" type="table">The Lua error stack trace</arg> <arg name="name" type="string">Title of the addon that is creating the Lua errors.</arg> <arg name="id" type="number">Steam Workshop ID of the addon creating Lua errors, if it is an addon.</arg> <arg name="id" type="string">Steam Workshop ID of the addon creating Lua errors, if it is an addon.</arg> </args> </function> <example> <description>Replicate [lua_error_url](https://wiki.facepunch.com/gmod/Lua_Error_Logging)'s functionality using the hook, while adding new values to the payload.</description> <code> -- -- Called on logic errors such as nil functions being called or nil being used -- to index a table. -- hook.Add( "OnLuaError", "mock_lua_error_url", function( error, realm, stack, name, addon_id ) -- -- Send a POST request to the given URL with -- information relating to the error that could be useful for logging. -- http.Post( "https://example.com/report_lua_error.php", { error = error, stack = util.TableToJSON(stack, false), realm = realm, addon = addon_id or 0, gamemode = engine.ActiveGamemode(), gmv = VERSIONSTR, os = jit.os, -- -- New data extending upon lua_error_url for demonstrative purposes, -- not that these are very useful. -- addon_name = name, time = os.time(), player_count = player.GetCount() } ) end ) </code> </example>