# Table of Contents - [Susano Documentation | susano doc](#susano-documentation-susano-doc) - [Extra Natives | susano doc](#extra-natives-susano-doc) - [CreateSpoofedVehicle | susano doc](#createspoofedvehicle-susano-doc) - [CreateSpoofedPed | susano doc](#createspoofedped-susano-doc) - [GetAllVehiclesModel | susano doc](#getallvehiclesmodel-susano-doc) - [RequestRagdoll | susano doc](#requestragdoll-susano-doc) - [LockCameraPos | susano doc](#lockcamerapos-susano-doc) - [IsPlayerInvisible | susano doc](#isplayerinvisible-susano-doc) - [SpoofPed | susano doc](#spoofped-susano-doc) - [SetCameraPos | susano doc](#setcamerapos-susano-doc) - [GetCameraAngles | susano doc](#getcameraangles-susano-doc) - [Input Functions | susano doc](#input-functions-susano-doc) - [Http Request | susano doc](#http-request-susano-doc) - [Events | susano doc](#events-susano-doc) - [ClearOnTriggerServerEvent | susano doc](#clearontriggerserverevent-susano-doc) - [Resource Injection | susano doc](#resource-injection-susano-doc) - [HttpGet | susano doc](#httpget-susano-doc) - [Native Hook | susano doc](#native-hook-susano-doc) - [GetAsyncKeyState | susano doc](#getasynckeystate-susano-doc) - [GetAllEvent | susano doc](#getallevent-susano-doc) - [OnTriggerServerEvent | susano doc](#ontriggerserverevent-susano-doc) - [FindEvent | susano doc](#findevent-susano-doc) - [HttpPost | susano doc](#httppost-susano-doc) - [DrawRect | susano doc](#drawrect-susano-doc) - [DrawLine | susano doc](#drawline-susano-doc) - [UnhookAllNatives | susano doc](#unhookallnatives-susano-doc) - [HasNativeHookInitializationFailed | susano doc](#hasnativehookinitializationfailed-susano-doc) - [Drawing Functions | susano doc](#drawing-functions-susano-doc) - [GetCursorPos | susano doc](#getcursorpos-susano-doc) - [EnableOverlay | susano doc](#enableoverlay-susano-doc) - [DrawRectFilled | susano doc](#drawrectfilled-susano-doc) - [SubmitFrame | susano doc](#submitframe-susano-doc) - [ResetAllFrames | susano doc](#resetallframes-susano-doc) - [CopyToClipboard | susano doc](#copytoclipboard-susano-doc) - [StartResource | susano doc](#startresource-susano-doc) - [UnhookNative | susano doc](#unhooknative-susano-doc) - [ResetFrame | susano doc](#resetframe-susano-doc) - [LoadFontFromBuffer | susano doc](#loadfontfrombuffer-susano-doc) - [Misc | susano doc](#misc-susano-doc) - [HookNative | susano doc](#hooknative-susano-doc) - [DrawRectGradient | susano doc](#drawrectgradient-susano-doc) - [StopResource | susano doc](#stopresource-susano-doc) - [PushFont | susano doc](#pushfont-susano-doc) - [GetClipboardText | susano doc](#getclipboardtext-susano-doc) - [LoadTextureFromBuffer | susano doc](#loadtexturefrombuffer-susano-doc) - [BeginFrame | susano doc](#beginframe-susano-doc) - [DrawText | susano doc](#drawtext-susano-doc) - [InjectResource | susano doc](#injectresource-susano-doc) - [WorldToScreen | susano doc](#worldtoscreen-susano-doc) - [DrawImage | susano doc](#drawimage-susano-doc) - [LoadFont | susano doc](#loadfont-susano-doc) - [ReleaseTexture | susano doc](#releasetexture-susano-doc) - [LoadTexture | susano doc](#loadtexture-susano-doc) - [GetTextWidth | susano doc](#gettextwidth-susano-doc) - [DrawCircle | susano doc](#drawcircle-susano-doc) - [PopFont | susano doc](#popfont-susano-doc) --- # Susano Documentation | susano doc ### [](https://docs.susano.re/#welcome-to-the-susano-documentation) Welcome to the Susano documentation. This documentation provides comprehensive information about all available functions in the Susano API along with every fixes of potential issues you may encounter on your first usage. #### [](https://docs.susano.re/#tip) TIP The drawing functions render on a custom overlay, not in-game, making them perfect to bypass recording softwares like OBS and its other variant. [NextExtra Natives](https://docs.susano.re/api-reference/extra-natives) Last updated 3 months ago --- # Extra Natives | susano doc [CreateSpoofedVehicle](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle) [CreateSpoofedPed](https://docs.susano.re/api-reference/extra-natives/createspoofedped) [RequestRagdoll](https://docs.susano.re/api-reference/extra-natives/requestragdoll) [GetAllVehiclesModel](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel) [IsPlayerInvisible](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible) [SpoofPed](https://docs.susano.re/api-reference/extra-natives/spoofped) [LockCameraPos](https://docs.susano.re/api-reference/extra-natives/lockcamerapos) [SetCameraPos](https://docs.susano.re/api-reference/extra-natives/setcamerapos) [GetCameraAngles](https://docs.susano.re/api-reference/extra-natives/getcameraangles) [PreviousSusano Documentation](https://docs.susano.re/) [NextCreateSpoofedVehicle](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle) --- # CreateSpoofedVehicle | susano doc [](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#syntax) Syntax ---------------------------------------------------------------------------------------------- Copy Susano.CreateSpoofedVehicle(modelHash, x, y, z, heading, isNetwork, bScriptHostVeh, p7) -> vehicle [](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#parameters) Parameters ------------------------------------------------------------------------------------------------------ `modelHash` (`int`): Vehicle model hash. `x, y, z` (`number`): World position. `heading` (`number`): Yaw in degrees. `isNetwork` (`boolean`): Create as networked entity. `bScriptHostVeh` (`boolean`): Try to set script host for the vehicle. `p7` (`boolean`): Engine-specific flag (pass `false` unless required). [](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#return-s) Return(s) --------------------------------------------------------------------------------------------------- `vehicle` (`int`): Entity handle. `0` on failure. [](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#example-s) Example(s) ----------------------------------------------------------------------------------------------------- Copy Citizen.CreateThread(function() local hash = GetHashKey("adder") RequestModel(hash) while not HasModelLoaded(hash) do Citizen.Wait(0) end local veh = Susano.CreateSpoofedVehicle(hash, 215.0, -920.0, 30.0, 90.0, true, true, false) if veh ~= 0 then print("Vehicle created:", veh) else print("Create failed") end end) [PreviousExtra Natives](https://docs.susano.re/api-reference/extra-natives) [NextCreateSpoofedPed](https://docs.susano.re/api-reference/extra-natives/createspoofedped) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#return-s) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle#example-s) --- # CreateSpoofedPed | susano doc [](https://docs.susano.re/api-reference/extra-natives/createspoofedped#syntax) Syntax ------------------------------------------------------------------------------------------ Copy Susano.CreateSpoofedPed(pedType, modelHash, x, y, z, heading, isNetwork, bScriptHostPed) -> ped [](https://docs.susano.re/api-reference/extra-natives/createspoofedped#parameters) Parameters -------------------------------------------------------------------------------------------------- `pedType` (`int`): Ped type ID. `modelHash` (`int`): Ped model hash. `x, y, z` (`number`): World coordinates. `heading` (`number`): Yaw in degrees. `isNetwork` (`boolean`): Create as a networked entity. `bScriptHostPed` (`boolean`): Try to set script host for the ped. [](https://docs.susano.re/api-reference/extra-natives/createspoofedped#return-s) Return(s) ----------------------------------------------------------------------------------------------- `ped` (`int`): Entity handle. `0` on failure. [](https://docs.susano.re/api-reference/extra-natives/createspoofedped#example-s) Example(s) ------------------------------------------------------------------------------------------------- Copy Citizen.CreateThread(function() local mdl = GetHashKey("s_m_m_armoured_01") RequestModel(mdl) while not HasModelLoaded(mdl) do Citizen.Wait(0) end local ped = Susano.CreateSpoofedPed(26, mdl, 215.0, -920.0, 30.0, 90.0, true, true) if ped ~= 0 then print("Ped created:", ped) else print("Create failed") end SetModelAsNoLongerNeeded(mdl) end) [PreviousCreateSpoofedVehicle](https://docs.susano.re/api-reference/extra-natives/createspoofedvehicle) [NextRequestRagdoll](https://docs.susano.re/api-reference/extra-natives/requestragdoll) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/createspoofedped#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/createspoofedped#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/createspoofedped#return-s) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/createspoofedped#example-s) --- # GetAllVehiclesModel | susano doc [](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#syntax) Syntax --------------------------------------------------------------------------------------------- Copy Susano.GetAllVehiclesModel() -> { {hash = , name = }, ... } [](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#parameters) Parameters ----------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#return-s) Return(s) -------------------------------------------------------------------------------------------------- `models` (`table`): Sequential array. Each element: * `hash` (`integer`): Model hash (`uint32_t`). * `name` (`string`): Internal display name. [](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#example-s) Example(s) ---------------------------------------------------------------------------------------------------- Copy for i, v in ipairs(Susano.GetAllVehiclesModel()) do print(string.format("0x%08X %s", v.hash, v.name)) end [PreviousRequestRagdoll](https://docs.susano.re/api-reference/extra-natives/requestragdoll) [NextIsPlayerInvisible](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#return-s) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel#example-s) --- # RequestRagdoll | susano doc [](https://docs.susano.re/api-reference/extra-natives/requestragdoll#syntax) Syntax ---------------------------------------------------------------------------------------- Copy Susano.RequestRagdoll(targetGuid) -> void [](https://docs.susano.re/api-reference/extra-natives/requestragdoll#parameters) Parameters ------------------------------------------------------------------------------------------------ `targetGuid` (`int`): Engine GUID or entity identifier of the target. [](https://docs.susano.re/api-reference/extra-natives/requestragdoll#return-s) Return(s) --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/extra-natives/requestragdoll#example-s) Example(s) ----------------------------------------------------------------------------------------------- Copy -- Ragdoll the player ped for demo local me = PlayerPedId() local guid = GetEntityGuid(me) Susano.RequestRagdoll(guid) [PreviousCreateSpoofedPed](https://docs.susano.re/api-reference/extra-natives/createspoofedped) [NextGetAllVehiclesModel](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/requestragdoll#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/requestragdoll#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/requestragdoll#return-s) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/requestragdoll#example-s) --- # LockCameraPos | susano doc [](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#syntax) Syntax --------------------------------------------------------------------------------------- Copy Susano.LockCameraPos(state) -> void [](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#parameters) Parameters ----------------------------------------------------------------------------------------------- `state` (boolean): Self explainatory [](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#return-s) Return(s) -------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#behavior) Behavior ------------------------------------------------------------------------------------------- Call with `(true)` to lock the gameplay camera position. Call with `(false)` to unlock it. [](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#example-s) Example(s) ---------------------------------------------------------------------------------------------- Copy -- Change gameplay cam position Susano.LockCameraPos(true) local currentPos = GetEntityCoords(PlayerPedId(), true) Susano.SetCameraPos(currentPos.x + 15.0, currentPos.y, currentPos.z + 15.0) [PreviousSpoofPed](https://docs.susano.re/api-reference/extra-natives/spoofped) [NextSetCameraPos](https://docs.susano.re/api-reference/extra-natives/setcamerapos) Last updated 1 month ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#return-s) * [Behavior](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#behavior) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/lockcamerapos#example-s) --- # IsPlayerInvisible | susano doc [](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#syntax) Syntax ------------------------------------------------------------------------------------------- Copy Susano.IsPlayerInvisible(playerId) -> invisible [](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#parameters) Parameters --------------------------------------------------------------------------------------------------- `playerId` (`int`): Target player identifier. [](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#return-s) Return(s) ------------------------------------------------------------------------------------------------ `invisible` (`boolean`): `true` if the player is invisible, `false` otherwise. [](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#example-s) Example(s) -------------------------------------------------------------------------------------------------- Copy local me = PlayerId() if Susano.IsPlayerInvisible(me) then print("You are invisible") else print("You are visible") end [PreviousGetAllVehiclesModel](https://docs.susano.re/api-reference/extra-natives/getallvehiclesmodel) [NextSpoofPed](https://docs.susano.re/api-reference/extra-natives/spoofped) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#return-s) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible#example-s) --- # SpoofPed | susano doc [](https://docs.susano.re/api-reference/extra-natives/spoofped#syntax) Syntax ---------------------------------------------------------------------------------- Copy Susano.SpoofPed(pedHash, spoofServer) -> boolean [](https://docs.susano.re/api-reference/extra-natives/spoofped#parameters) Parameters ------------------------------------------------------------------------------------------ `pedHash` (`number`|uint32): Target ped model hash. `spoofServer` (`boolean`): * `true`: enable server spoof and queue ped change to `pedHash`. * `false`: disable server spoof. No model change queued. [](https://docs.susano.re/api-reference/extra-natives/spoofped#return-s) Return(s) --------------------------------------------------------------------------------------- `boolean`: `true` on success. Throws Lua error on failure. [](https://docs.susano.re/api-reference/extra-natives/spoofped#behavior) Behavior -------------------------------------------------------------------------------------- Call with `(hash, true)` to switch ped and mark spoof as server-driven. The spoof persists across ticks until you disable it. Call with `(_, false)` to turn spoof off. Does not modify the current model. [](https://docs.susano.re/api-reference/extra-natives/spoofped#example-s) Example(s) ----------------------------------------------------------------------------------------- [PreviousIsPlayerInvisible](https://docs.susano.re/api-reference/extra-natives/isplayerinvisible) [NextLockCameraPos](https://docs.susano.re/api-reference/extra-natives/lockcamerapos) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/spoofped#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/spoofped#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/spoofped#return-s) * [Behavior](https://docs.susano.re/api-reference/extra-natives/spoofped#behavior) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/spoofped#example-s) Copy -- Enable spoof as MP_M_Freemode local ok = Susano.SpoofPed(0x705E61F2, true) -- Later: disable server spoof, keep current ped as-is local ok2 = Susano.SpoofPed(0, false) --- # SetCameraPos | susano doc [](https://docs.susano.re/api-reference/extra-natives/setcamerapos#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.SetCameraPos(x, y, z) -> void [](https://docs.susano.re/api-reference/extra-natives/setcamerapos#parameters) Parameters ---------------------------------------------------------------------------------------------- `x` (number): Self explainatory `y` (number): Self explainatory `z` (number): Self explainatory [](https://docs.susano.re/api-reference/extra-natives/setcamerapos#return-s) Return(s) ------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/extra-natives/setcamerapos#behavior) Behavior ------------------------------------------------------------------------------------------ Self explainatory [](https://docs.susano.re/api-reference/extra-natives/setcamerapos#example-s) Example(s) --------------------------------------------------------------------------------------------- Copy -- Change gameplay cam position Susano.LockCameraPos(true) local currentPos = GetEntityCoords(PlayerPedId(), true) Susano.SetCameraPos(currentPos.x + 15.0, currentPos.y, currentPos.z + 15.0) [PreviousLockCameraPos](https://docs.susano.re/api-reference/extra-natives/lockcamerapos) [NextGetCameraAngles](https://docs.susano.re/api-reference/extra-natives/getcameraangles) Last updated 1 month ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/setcamerapos#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/setcamerapos#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/setcamerapos#return-s) * [Behavior](https://docs.susano.re/api-reference/extra-natives/setcamerapos#behavior) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/setcamerapos#example-s) --- # GetCameraAngles | susano doc [](https://docs.susano.re/api-reference/extra-natives/getcameraangles#syntax) Syntax ----------------------------------------------------------------------------------------- Copy Susano.GetCameraAngles() -> x, y, z [](https://docs.susano.re/api-reference/extra-natives/getcameraangles#parameters) Parameters ------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/extra-natives/getcameraangles#return-s) Return(s) ---------------------------------------------------------------------------------------------- `x` (number): Self explainatory `y` (number): Self explainatory `z` (number): Self explainatory [](https://docs.susano.re/api-reference/extra-natives/getcameraangles#behavior) Behavior --------------------------------------------------------------------------------------------- Self explainatory [](https://docs.susano.re/api-reference/extra-natives/getcameraangles#example-s) Example(s) ------------------------------------------------------------------------------------------------ Copy -- Change gameplay cam position local x, y, z = Susano.GetCameraAngles() [PreviousSetCameraPos](https://docs.susano.re/api-reference/extra-natives/setcamerapos) [NextDrawing Functions](https://docs.susano.re/api-reference/drawing-functions) Last updated 1 month ago * [Syntax](https://docs.susano.re/api-reference/extra-natives/getcameraangles#syntax) * [Parameters](https://docs.susano.re/api-reference/extra-natives/getcameraangles#parameters) * [Return(s)](https://docs.susano.re/api-reference/extra-natives/getcameraangles#return-s) * [Behavior](https://docs.susano.re/api-reference/extra-natives/getcameraangles#behavior) * [Example(s)](https://docs.susano.re/api-reference/extra-natives/getcameraangles#example-s) --- # Input Functions | susano doc [GetAsyncKeyState](https://docs.susano.re/api-reference/input-functions/getasynckeystate) [PreviousDrawImage](https://docs.susano.re/api-reference/drawing-functions/drawimage) [NextGetAsyncKeyState](https://docs.susano.re/api-reference/input-functions/getasynckeystate) --- # Http Request | susano doc [HttpGet](https://docs.susano.re/api-reference/http-request/httpget) [HttpPost](https://docs.susano.re/api-reference/http-request/httppost) [PreviousClearOnTriggerServerEvent](https://docs.susano.re/api-reference/events/clearontriggerserverevent) [NextHttpGet](https://docs.susano.re/api-reference/http-request/httpget) --- # Events | susano doc [GetAllEvent](https://docs.susano.re/api-reference/events/getallevent) [FindEvent](https://docs.susano.re/api-reference/events/findevent) [OnTriggerServerEvent](https://docs.susano.re/api-reference/events/ontriggerserverevent) [ClearOnTriggerServerEvent](https://docs.susano.re/api-reference/events/clearontriggerserverevent) [PreviousGetAsyncKeyState](https://docs.susano.re/api-reference/input-functions/getasynckeystate) [NextGetAllEvent](https://docs.susano.re/api-reference/events/getallevent) --- # ClearOnTriggerServerEvent | susano doc [](https://docs.susano.re/api-reference/events/clearontriggerserverevent#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.ClearOnTriggerServerEvent() [](https://docs.susano.re/api-reference/events/clearontriggerserverevent#parameters) Parameters ---------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/events/clearontriggerserverevent#return-s) Return(s) ------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/events/clearontriggerserverevent#behavior) Behavior ------------------------------------------------------------------------------------------------ Removes the previously set callback. Events pass through unchanged. [](https://docs.susano.re/api-reference/events/clearontriggerserverevent#example-s) Example(s) --------------------------------------------------------------------------------------------------- Copy Susano.ClearOnTriggerServerEvent() [PreviousOnTriggerServerEvent](https://docs.susano.re/api-reference/events/ontriggerserverevent) [NextHttp Request](https://docs.susano.re/api-reference/http-request) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/events/clearontriggerserverevent#syntax) * [Parameters](https://docs.susano.re/api-reference/events/clearontriggerserverevent#parameters) * [Return(s)](https://docs.susano.re/api-reference/events/clearontriggerserverevent#return-s) * [Behavior](https://docs.susano.re/api-reference/events/clearontriggerserverevent#behavior) * [Example(s)](https://docs.susano.re/api-reference/events/clearontriggerserverevent#example-s) --- # Resource Injection | susano doc [InjectResource](https://docs.susano.re/api-reference/resource-injection/injectresource) [StopResource](https://docs.susano.re/api-reference/resource-injection/stopresource) [StartResource](https://docs.susano.re/api-reference/resource-injection/startresource) [PreviousHasNativeHookInitializationFailed](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed) [NextInjectResource](https://docs.susano.re/api-reference/resource-injection/injectresource) --- # HttpGet | susano doc [](https://docs.susano.re/api-reference/http-request/httpget#syntax) Syntax -------------------------------------------------------------------------------- Copy Susano.HttpGet(string) -> number, string [](https://docs.susano.re/api-reference/http-request/httpget#parameters) Parameters ---------------------------------------------------------------------------------------- `url` (string): Absolute URL. [](https://docs.susano.re/api-reference/http-request/httpget#return-s) Return(s) ------------------------------------------------------------------------------------- `status` (number): HTTP status code (e.g., 200). `body` (string): Response body. On error: `nil, err` (string). [](https://docs.susano.re/api-reference/http-request/httpget#behavior) Behavior ------------------------------------------------------------------------------------ Blocking call. Runs on the calling thread. Follows redirects. Accepts gzip/deflate. TLS verification enabled. No custom headers or timeout in this variant. Body may be binary; use `#body` for length. [](https://docs.susano.re/api-reference/http-request/httpget#example-s) Example(s) --------------------------------------------------------------------------------------- [PreviousHttp Request](https://docs.susano.re/api-reference/http-request) [NextHttpPost](https://docs.susano.re/api-reference/http-request/httppost) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/http-request/httpget#syntax) * [Parameters](https://docs.susano.re/api-reference/http-request/httpget#parameters) * [Return(s)](https://docs.susano.re/api-reference/http-request/httpget#return-s) * [Behavior](https://docs.susano.re/api-reference/http-request/httpget#behavior) * [Example(s)](https://docs.susano.re/api-reference/http-request/httpget#example-s) Copy local st, body = Susano.HttpGet("https://httpbin.org/get") if not st then print("GET failed:", body) else print("GET", st, #body) end --- # Native Hook | susano doc [HookNative](https://docs.susano.re/api-reference/native-hook/hooknative) [UnhookNative](https://docs.susano.re/api-reference/native-hook/unhooknative) [UnhookAllNatives](https://docs.susano.re/api-reference/native-hook/unhookallnatives) [HasNativeHookInitializationFailed](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed) [PreviousHttpPost](https://docs.susano.re/api-reference/http-request/httppost) [NextHookNative](https://docs.susano.re/api-reference/native-hook/hooknative) --- # GetAsyncKeyState | susano doc [](https://docs.susano.re/api-reference/input-functions/getasynckeystate#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.GetAsyncKeyState(vk) -> down, pressed [](https://docs.susano.re/api-reference/input-functions/getasynckeystate#parameters) Parameters ---------------------------------------------------------------------------------------------------- `vk` (`integer`): [Windows virtual-key code](https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) (e.g. `0x41` = `A`, `0xA0` = `VK_LSHIFT`). [](https://docs.susano.re/api-reference/input-functions/getasynckeystate#return-s) Return(s) ------------------------------------------------------------------------------------------------- `down` (`boolean`): `true` if the key is currently held. `pressed` (`boolean`): `true` if the key transitioned from up → down since the last OS query. [](https://docs.susano.re/api-reference/input-functions/getasynckeystate#example-s) Example(s) --------------------------------------------------------------------------------------------------- Copy -- A key (0x41) local down, pressed = Susano.GetAsyncKeyState(0x41) if pressed then print("A pressed") end if down then print("A held") end [PreviousInput Functions](https://docs.susano.re/api-reference/input-functions) [NextEvents](https://docs.susano.re/api-reference/events) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/input-functions/getasynckeystate#syntax) * [Parameters](https://docs.susano.re/api-reference/input-functions/getasynckeystate#parameters) * [Return(s)](https://docs.susano.re/api-reference/input-functions/getasynckeystate#return-s) * [Example(s)](https://docs.susano.re/api-reference/input-functions/getasynckeystate#example-s) --- # GetAllEvent | susano doc [](https://docs.susano.re/api-reference/events/getallevent#syntax) Syntax ------------------------------------------------------------------------------ Copy Susano.GetAllEvent() -> { { resource = "", event = "" }, ... } [](https://docs.susano.re/api-reference/events/getallevent#parameters) Parameters -------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/events/getallevent#return-s) Return(s) ----------------------------------------------------------------------------------- `events` (array of tables): Each entry `{ resource = string, event = string }`. [](https://docs.susano.re/api-reference/events/getallevent#behavior) Behavior ---------------------------------------------------------------------------------- Order matches the internal capture order. Entries are not deduplicated. Strings are returned as-is (case preserved). [](https://docs.susano.re/api-reference/events/getallevent#example-s) Example(s) ------------------------------------------------------------------------------------- [PreviousEvents](https://docs.susano.re/api-reference/events) [NextFindEvent](https://docs.susano.re/api-reference/events/findevent) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/events/getallevent#syntax) * [Parameters](https://docs.susano.re/api-reference/events/getallevent#parameters) * [Return(s)](https://docs.susano.re/api-reference/events/getallevent#return-s) * [Behavior](https://docs.susano.re/api-reference/events/getallevent#behavior) * [Example(s)](https://docs.susano.re/api-reference/events/getallevent#example-s) Copy local all = Susano.GetAllEvent() for i, ev in ipairs(all) do print(("[%03d] %s :: %s"):format(i, ev.resource, ev.event)) end print("total:", #all) --- # OnTriggerServerEvent | susano doc [](https://docs.susano.re/api-reference/events/ontriggerserverevent#syntax) Syntax --------------------------------------------------------------------------------------- Copy Susano.OnTriggerServerEvent(function(name, payload) -> newName, newPayload | false | nil end) [](https://docs.susano.re/api-reference/events/ontriggerserverevent#parameters) Parameters ----------------------------------------------------------------------------------------------- `function(name, payload)`: * `name` (string): event name. * `payload` (string): raw msgpack bytes. [](https://docs.susano.re/api-reference/events/ontriggerserverevent#return-s) Return(s) -------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/events/ontriggerserverevent#behavior) Behavior ------------------------------------------------------------------------------------------- If the callback returns `false` or `nil`: no change. [](https://docs.susano.re/api-reference/events/ontriggerserverevent#example-s) Example(s) ---------------------------------------------------------------------------------------------- [PreviousFindEvent](https://docs.susano.re/api-reference/events/findevent) [NextClearOnTriggerServerEvent](https://docs.susano.re/api-reference/events/clearontriggerserverevent) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/events/ontriggerserverevent#syntax) * [Parameters](https://docs.susano.re/api-reference/events/ontriggerserverevent#parameters) * [Return(s)](https://docs.susano.re/api-reference/events/ontriggerserverevent#return-s) * [Behavior](https://docs.susano.re/api-reference/events/ontriggerserverevent#behavior) * [Example(s)](https://docs.susano.re/api-reference/events/ontriggerserverevent#example-s) Copy -- replace first arg of a specific event Susano.OnTriggerServerEvent(function(name, payload) if name ~= "Gamemode:testEvent" then return name, payload end local unpackedArgs = msgpack.unpack(payload) if type(unpackedArgs) ~= "table" then return end unpackedArgs[1] = "hooked from lua" return name, cmsgpack.pack(unpackedArgs) -- may be shorter/longer; both supported end) -- rename without changing size (in-place) Susano.OnTriggerServerEvent(function(name, payload) if name == "old:event" then -- must keep same byte length to stay in-place; return "old:Event", payload end end) --- # FindEvent | susano doc [](https://docs.susano.re/api-reference/events/findevent#syntax) Syntax ---------------------------------------------------------------------------- Copy Susano.FindEvent(needle[, exact]) -> { { resource = "", event = "" }, ... } [](https://docs.susano.re/api-reference/events/findevent#parameters) Parameters ------------------------------------------------------------------------------------ `needle` (string): Text to match against the event name. `exact` (boolean, optional): `true` for exact match, `false` for substring. Default: `false`. [](https://docs.susano.re/api-reference/events/findevent#return-s) Return(s) --------------------------------------------------------------------------------- `results` (array of tables): Matches as `{ resource = string, event = string }`. [](https://docs.susano.re/api-reference/events/findevent#behavior) Behavior -------------------------------------------------------------------------------- Substring search is **case-sensitive**. Exact match compares full strings, case-sensitive. Scans all known events; complexity O(n). No deduplication; multiple identical events may appear from different resources. [](https://docs.susano.re/api-reference/events/findevent#example-s) Example(s) ----------------------------------------------------------------------------------- [PreviousGetAllEvent](https://docs.susano.re/api-reference/events/getallevent) [NextOnTriggerServerEvent](https://docs.susano.re/api-reference/events/ontriggerserverevent) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/events/findevent#syntax) * [Parameters](https://docs.susano.re/api-reference/events/findevent#parameters) * [Return(s)](https://docs.susano.re/api-reference/events/findevent#return-s) * [Behavior](https://docs.susano.re/api-reference/events/findevent#behavior) * [Example(s)](https://docs.susano.re/api-reference/events/findevent#example-s) Copy -- substring search for _, ev in ipairs(Susano.FindEvent("esx_")) do print(ev.resource, ev.event) end -- exact match local hits = Susano.FindEvent("esx_policejob:handcuff", true) if #hits == 0 then print("no exact match") else for _, ev in ipairs(hits) do print("match:", ev.resource, ev.event) end end --- # HttpPost | susano doc [](https://docs.susano.re/api-reference/http-request/httppost#syntax) Syntax --------------------------------------------------------------------------------- Copy Susano.HttpPost(string, string) -> number, string [](https://docs.susano.re/api-reference/http-request/httppost#parameters) Parameters ----------------------------------------------------------------------------------------- `url` (string): Absolute URL. `data` (string): Request payload (raw bytes or text). [](https://docs.susano.re/api-reference/http-request/httppost#return-s) Return(s) -------------------------------------------------------------------------------------- `status` (number): HTTP status code. `body` (string): Response body. On error: `nil, err` (string). [](https://docs.susano.re/api-reference/http-request/httppost#behavior) Behavior ------------------------------------------------------------------------------------- Blocking call. Runs on the calling thread. Sends `data` as-is. No automatic Content-Type. Follows redirects. Accepts gzip/deflate. TLS verification enabled. No custom headers or timeout in this variant. [](https://docs.susano.re/api-reference/http-request/httppost#example-s) Example(s) ---------------------------------------------------------------------------------------- [PreviousHttpGet](https://docs.susano.re/api-reference/http-request/httpget) [NextNative Hook](https://docs.susano.re/api-reference/native-hook) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/http-request/httppost#syntax) * [Parameters](https://docs.susano.re/api-reference/http-request/httppost#parameters) * [Return(s)](https://docs.susano.re/api-reference/http-request/httppost#return-s) * [Behavior](https://docs.susano.re/api-reference/http-request/httppost#behavior) * [Example(s)](https://docs.susano.re/api-reference/http-request/httppost#example-s) Copy local payload = '{"x":1}' local st, body = Susano.HttpPost("https://httpbin.org/post", payload) if not st then print("POST failed:", body) else print("POST", st, #body) end --- # DrawRect | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawrect#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.DrawRect(x, y, w, h, r, g, b[, a], thickness) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawrect#parameters) Parameters ---------------------------------------------------------------------------------------------- `x, y` (number): Top-left corner in pixels. `w, h` (number): Width and height in pixels. `r, g, b` (number): Color in \[0..1\]. `a` (number, optional): Alpha in \[0..1\]. Default: `1.0`. `thickness` (number): Border thickness in pixels. [](https://docs.susano.re/api-reference/drawing-functions/drawrect#return-s) Return(s) ------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawrect#behavior) Behavior ------------------------------------------------------------------------------------------ Appends a rectangle outline to the build buffer. Visible after `Susano.SubmitFrame()`. Persists until next submit. [](https://docs.susano.re/api-reference/drawing-functions/drawrect#example-s) Example(s) --------------------------------------------------------------------------------------------- [PreviousDrawLine](https://docs.susano.re/api-reference/drawing-functions/drawline) [NextDrawRectFilled](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawrect#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawrect#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawrect#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawrect#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawrect#example-s) Copy Susano.BeginFrame() Susano.DrawRect(320,100, 120,80, 0,1,0, 1, 1.5) Susano.SubmitFrame() --- # DrawLine | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawline#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.DrawLine(x1, y1, x2, y2, r, g, b[, a], thickness) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawline#parameters) Parameters ---------------------------------------------------------------------------------------------- `x1, y1` (number): Start position in pixels. `x2, y2` (number): End position in pixels. `r, g, b` (number): Color components in \[0..1\]. `a` (number, optional): Alpha in \[0..1\]. Default: `1.0`. `thickness` (number): Line thickness in pixels. [](https://docs.susano.re/api-reference/drawing-functions/drawline#return-s) Return(s) ------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawline#behavior) Behavior ------------------------------------------------------------------------------------------ Appends a line command to the build buffer. Not rendered until Susano.`SubmitFrame()` is called. The submitted frame persists on screen until the next `Susano.SubmitFrame()`. [](https://docs.susano.re/api-reference/drawing-functions/drawline#example-s) Example(s) --------------------------------------------------------------------------------------------- [PreviousResetAllFrames](https://docs.susano.re/api-reference/drawing-functions/resetallframes) [NextDrawRect](https://docs.susano.re/api-reference/drawing-functions/drawrect) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawline#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawline#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawline#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawline#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawline#example-s) Copy Susano.BeginFrame() Susano.DrawLine(100,100, 300,200, 1,0,0, 1, 2) Susano.SubmitFrame() --- # UnhookAllNatives | susano doc [](https://docs.susano.re/api-reference/native-hook/unhookallnatives#syntax) Syntax ---------------------------------------------------------------------------------------- Copy Susano.UnhookAllNatives() -> void [](https://docs.susano.re/api-reference/native-hook/unhookallnatives#parameters) Parameters ------------------------------------------------------------------------------------------------ None [](https://docs.susano.re/api-reference/native-hook/unhookallnatives#return-s) Return(s) --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/native-hook/unhookallnatives#behavior) Behavior -------------------------------------------------------------------------------------------- Removes all active hooks. [](https://docs.susano.re/api-reference/native-hook/unhookallnatives#example-s) Example(s) ----------------------------------------------------------------------------------------------- Copy -- Remove all hooks at once Susano.UnhookAllNatives() [PreviousUnhookNative](https://docs.susano.re/api-reference/native-hook/unhooknative) [NextHasNativeHookInitializationFailed](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/native-hook/unhookallnatives#syntax) * [Parameters](https://docs.susano.re/api-reference/native-hook/unhookallnatives#parameters) * [Return(s)](https://docs.susano.re/api-reference/native-hook/unhookallnatives#return-s) * [Behavior](https://docs.susano.re/api-reference/native-hook/unhookallnatives#behavior) * [Example(s)](https://docs.susano.re/api-reference/native-hook/unhookallnatives#example-s) --- # HasNativeHookInitializationFailed | susano doc [](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#syntax) Syntax --------------------------------------------------------------------------------------------------------- Copy Susano.HasNativeHookInitializationFailed() -> boolean [](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#parameters) Parameters ----------------------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#return-s) Return(s) -------------------------------------------------------------------------------------------------------------- `failed` (boolean): * `false` → hooks are initialized and usable. * `true` → initialization failed; `SusanoHookNative` will not work. [](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#behavior) Behavior ------------------------------------------------------------------------------------------------------------- Read-only status set during startup of the hook bridge. [](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#example-s) Example(s) ---------------------------------------------------------------------------------------------------------------- Copy if Susano.HasNativeHookInitializationFailed() then print("[Susano] Native hooks unavailable; skipping registrations") else SusanoHookNative(0x6D0DE6A7B5DA71F8, function(player_id) return false, "susano" end) end [PreviousUnhookAllNatives](https://docs.susano.re/api-reference/native-hook/unhookallnatives) [NextResource Injection](https://docs.susano.re/api-reference/resource-injection) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#syntax) * [Parameters](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#parameters) * [Return(s)](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#return-s) * [Behavior](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#behavior) * [Example(s)](https://docs.susano.re/api-reference/native-hook/hasnativehookinitializationfailed#example-s) --- # Drawing Functions | susano doc [BeginFrame](https://docs.susano.re/api-reference/drawing-functions/beginframe) [SubmitFrame](https://docs.susano.re/api-reference/drawing-functions/submitframe) [ResetFrame](https://docs.susano.re/api-reference/drawing-functions/resetframe) [ResetAllFrames](https://docs.susano.re/api-reference/drawing-functions/resetallframes) [DrawLine](https://docs.susano.re/api-reference/drawing-functions/drawline) [DrawRect](https://docs.susano.re/api-reference/drawing-functions/drawrect) [DrawRectFilled](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled) [DrawRectGradient](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient) [DrawCircle](https://docs.susano.re/api-reference/drawing-functions/drawcircle) [DrawText](https://docs.susano.re/api-reference/drawing-functions/drawtext) [GetTextWidth](https://docs.susano.re/api-reference/drawing-functions/gettextwidth) [WorldToScreen](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen) [LoadFont](https://docs.susano.re/api-reference/drawing-functions/loadfont) [LoadFontFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer) [PushFont](https://docs.susano.re/api-reference/drawing-functions/pushfont) [PopFont](https://docs.susano.re/api-reference/drawing-functions/popfont) [LoadTexture](https://docs.susano.re/api-reference/drawing-functions/loadtexture) [LoadTextureFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer) [ReleaseTexture](https://docs.susano.re/api-reference/drawing-functions/releasetexture) [DrawImage](https://docs.susano.re/api-reference/drawing-functions/drawimage) [PreviousGetCameraAngles](https://docs.susano.re/api-reference/extra-natives/getcameraangles) [NextBeginFrame](https://docs.susano.re/api-reference/drawing-functions/beginframe) --- # GetCursorPos | susano doc [](https://docs.susano.re/api-reference/misc/getcursorpos#syntax) Syntax ----------------------------------------------------------------------------- Copy Susano.GetCursorPos() -> Vector2 [](https://docs.susano.re/api-reference/misc/getcursorpos#parameters) Parameters ------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/misc/getcursorpos#return-s) Return(s) ---------------------------------------------------------------------------------- `cursorPos` (`Vector2`): 1. `x` (float): Cursor X position relative to the monitor dimensions. 2. `y` (float): Cursor Y position relative to the monitor dimensions. [](https://docs.susano.re/api-reference/misc/getcursorpos#behavior) Behavior --------------------------------------------------------------------------------- Returns the actual cursor position used internally by Susano’s overlay system, not the NUI cursor (which is spoofed by Susano safety measures), allowing precise interaction with ImGui-based elements and accurate mouse tracking within the overlay. [](https://docs.susano.re/api-reference/misc/getcursorpos#example-s) Example(s) ------------------------------------------------------------------------------------ [PreviousEnableOverlay](https://docs.susano.re/api-reference/misc/enableoverlay) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/misc/getcursorpos#syntax) * [Parameters](https://docs.susano.re/api-reference/misc/getcursorpos#parameters) * [Return(s)](https://docs.susano.re/api-reference/misc/getcursorpos#return-s) * [Behavior](https://docs.susano.re/api-reference/misc/getcursorpos#behavior) * [Example(s)](https://docs.susano.re/api-reference/misc/getcursorpos#example-s) Copy local cursorPos = Susano.GetCursorPos() --- # EnableOverlay | susano doc [](https://docs.susano.re/api-reference/misc/enableoverlay#syntax) Syntax ------------------------------------------------------------------------------ Copy Susano.EnableOverlay(bool) -> void [](https://docs.susano.re/api-reference/misc/enableoverlay#parameters) Parameters -------------------------------------------------------------------------------------- `state` (boolean): Whether or not you enable overlay [](https://docs.susano.re/api-reference/misc/enableoverlay#return-s) Return(s) ----------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/misc/enableoverlay#behavior) Behavior ---------------------------------------------------------------------------------- Temporarily blocks in-game input while allowing Susano’s own overlay to handle mouse interactions and draw its cursor. Commonly used when rendering the main menu or other interactive UI elements. [](https://docs.susano.re/api-reference/misc/enableoverlay#example-s) Example(s) ------------------------------------------------------------------------------------- Copy Susano.EnableOverlay(true) [PreviousGetClipboardText](https://docs.susano.re/api-reference/misc/getclipboardtext) [NextGetCursorPos](https://docs.susano.re/api-reference/misc/getcursorpos) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/misc/enableoverlay#syntax) * [Parameters](https://docs.susano.re/api-reference/misc/enableoverlay#parameters) * [Return(s)](https://docs.susano.re/api-reference/misc/enableoverlay#return-s) * [Behavior](https://docs.susano.re/api-reference/misc/enableoverlay#behavior) * [Example(s)](https://docs.susano.re/api-reference/misc/enableoverlay#example-s) --- # DrawRectFilled | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.DrawRectFilled(x, y, w, h, r, g, b[, a], rounding) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#parameters) Parameters ---------------------------------------------------------------------------------------------------- `x, y` (number): Top-left corner in pixels. `w, h` (number): Width and height in pixels. `r, g, b` (number): Color in \[0..1\]. `a` (number, optional): Alpha in \[0..1\]. Default: `1.0` `rounding` (number): Rounding, 0 for no rounding [](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#return-s) Return(s) ------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#behavior) Behavior ------------------------------------------------------------------------------------------------ Appends a filled rectangle outline to the build buffer. Visible after `Susano.SubmitFrame()`. Persists until next submit. [](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#example-s) Example(s) --------------------------------------------------------------------------------------------------- [PreviousDrawRect](https://docs.susano.re/api-reference/drawing-functions/drawrect) [NextDrawRectGradient](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled#example-s) Copy Susano.BeginFrame() Susano.DrawRectFilled(460,100, 120,80, 0,0,1, 0.6, 0.0) Susano.SubmitFrame() --- # SubmitFrame | susano doc [](https://docs.susano.re/api-reference/drawing-functions/submitframe#syntax) Syntax ----------------------------------------------------------------------------------------- Copy Susano.SubmitFrame() -> void [](https://docs.susano.re/api-reference/drawing-functions/submitframe#parameters) Parameters ------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/submitframe#return-s) Return(s) ---------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/submitframe#behavior) Behavior --------------------------------------------------------------------------------------------- Flags the current build buffer as ready. Next Overlay swaps to this buffer and starts displaying it. Stays visible on the Overlay until the next `Susano.SubmitFrame()`. Does not clear the displayed frame; it replaces it on swap. Non-blocking. [](https://docs.susano.re/api-reference/drawing-functions/submitframe#example-s) Example(s) ------------------------------------------------------------------------------------------------ [PreviousBeginFrame](https://docs.susano.re/api-reference/drawing-functions/beginframe) [NextResetFrame](https://docs.susano.re/api-reference/drawing-functions/resetframe) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/submitframe#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/submitframe#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/submitframe#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/submitframe#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/submitframe#example-s) Copy -- One-shot overlay: persists until another Submit Susano.BeginFrame() Susano.DrawLine(100,100, 300,200, 1,0,0,1, 2) Susano.DrawText(110,90, "Overlay", 18, 1,1,1,1) Susano.SubmitFrame() Copy -- Per-frame update Citizen.CreateThread(function() while true do local t = GetGameTimer() / 1000.0 Susano.BeginFrame() Susano.DrawText(20, 20, ("t=%.2f"):format(t), 18, 1,1,1,1) Susano.SubmitFrame() Citizen.Wait(0) end end) --- # ResetAllFrames | susano doc [](https://docs.susano.re/api-reference/drawing-functions/resetallframes#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.ResetAllFrames() -> void [](https://docs.susano.re/api-reference/drawing-functions/resetallframes#parameters) Parameters ---------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/resetallframes#return-s) Return(s) ------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/resetallframes#behavior) Behavior ------------------------------------------------------------------------------------------------ Drops all queued and displayed draws from all Lua threads. Cancels all pending submits. Next Present renders nothing until new frames are submitted. [](https://docs.susano.re/api-reference/drawing-functions/resetallframes#example-s) Example(s) --------------------------------------------------------------------------------------------------- [PreviousResetFrame](https://docs.susano.re/api-reference/drawing-functions/resetframe) [NextDrawLine](https://docs.susano.re/api-reference/drawing-functions/drawline) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/resetallframes#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/resetallframes#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/resetallframes#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/resetallframes#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/resetallframes#example-s) Copy -- global wipe Susano.ResetAllFrames() --- # CopyToClipboard | susano doc [](https://docs.susano.re/api-reference/misc/copytoclipboard#syntax) Syntax -------------------------------------------------------------------------------- Copy Susano.CopyToClipboard(string) -> boolean, string [](https://docs.susano.re/api-reference/misc/copytoclipboard#parameters) Parameters ---------------------------------------------------------------------------------------- `text` (string): Bytes to copy. NUL-terminated internally. [](https://docs.susano.re/api-reference/misc/copytoclipboard#return-s) Return(s) ------------------------------------------------------------------------------------- `ok` (boolean): `true` on success. On error: `nil, err` (string). [](https://docs.susano.re/api-reference/misc/copytoclipboard#behavior) Behavior ------------------------------------------------------------------------------------ Uses `OpenClipboard` → `EmptyClipboard` → `SetClipboardData(CF_TEXT)`. On success the OS owns the memory handle. ANSI only. Non-ASCII may be mangled. Use a Unicode variant if you need UTF-8/UTF-16. Fails if the clipboard is busy. [](https://docs.susano.re/api-reference/misc/copytoclipboard#example-s) Example(s) --------------------------------------------------------------------------------------- [PreviousMisc](https://docs.susano.re/api-reference/misc) [NextGetClipboardText](https://docs.susano.re/api-reference/misc/getclipboardtext) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/misc/copytoclipboard#syntax) * [Parameters](https://docs.susano.re/api-reference/misc/copytoclipboard#parameters) * [Return(s)](https://docs.susano.re/api-reference/misc/copytoclipboard#return-s) * [Behavior](https://docs.susano.re/api-reference/misc/copytoclipboard#behavior) * [Example(s)](https://docs.susano.re/api-reference/misc/copytoclipboard#example-s) Copy local ok, err = Susano.CopyToClipboard("Test 123") if not ok then print("clipboard error:", err) end --- # StartResource | susano doc [](https://docs.susano.re/api-reference/resource-injection/startresource#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.StartResource(resourceName) -> bool [](https://docs.susano.re/api-reference/resource-injection/startresource#parameters) Parameters ---------------------------------------------------------------------------------------------------- `resourceName` (string): Target resource identifier. [](https://docs.susano.re/api-reference/resource-injection/startresource#return-s) Return(s) ------------------------------------------------------------------------------------------------- `state` (boolean): Whether or not the resource has been successfully re-started. [](https://docs.susano.re/api-reference/resource-injection/startresource#behavior) Behavior ------------------------------------------------------------------------------------------------ Re-start the requested resource with the susano resource stopper mechanism. Do NOT use this on resource that has not been stopped. [](https://docs.susano.re/api-reference/resource-injection/startresource#example-s) Example(s) --------------------------------------------------------------------------------------------------- Copy Susano.StartResource("anticheat") [PreviousStopResource](https://docs.susano.re/api-reference/resource-injection/stopresource) [NextMisc](https://docs.susano.re/api-reference/misc) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/resource-injection/startresource#syntax) * [Parameters](https://docs.susano.re/api-reference/resource-injection/startresource#parameters) * [Return(s)](https://docs.susano.re/api-reference/resource-injection/startresource#return-s) * [Behavior](https://docs.susano.re/api-reference/resource-injection/startresource#behavior) * [Example(s)](https://docs.susano.re/api-reference/resource-injection/startresource#example-s) --- # UnhookNative | susano doc [](https://docs.susano.re/api-reference/native-hook/unhooknative#syntax) Syntax ------------------------------------------------------------------------------------ Copy Susano.UnhookNative(hash) -> void [](https://docs.susano.re/api-reference/native-hook/unhooknative#parameters) Parameters -------------------------------------------------------------------------------------------- `hash` (`integer`): 64-bit identifier of the native to unhook. [](https://docs.susano.re/api-reference/native-hook/unhooknative#return-s) Return(s) ----------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/native-hook/unhooknative#behavior) Behavior ---------------------------------------------------------------------------------------- If no hook exists for the provided hash, the function does nothing. If a hook exists, it is removed from the susano hook system and the Lua reference is released. [](https://docs.susano.re/api-reference/native-hook/unhooknative#example-s) Example(s) ------------------------------------------------------------------------------------------- Copy Susano.UnhookNative(0x34CFC4C2A38E83E3) [PreviousHookNative](https://docs.susano.re/api-reference/native-hook/hooknative) [NextUnhookAllNatives](https://docs.susano.re/api-reference/native-hook/unhookallnatives) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/native-hook/unhooknative#syntax) * [Parameters](https://docs.susano.re/api-reference/native-hook/unhooknative#parameters) * [Return(s)](https://docs.susano.re/api-reference/native-hook/unhooknative#return-s) * [Behavior](https://docs.susano.re/api-reference/native-hook/unhooknative#behavior) * [Example(s)](https://docs.susano.re/api-reference/native-hook/unhooknative#example-s) --- # ResetFrame | susano doc [](https://docs.susano.re/api-reference/drawing-functions/resetframe#syntax) Syntax ---------------------------------------------------------------------------------------- Copy Susano.ResetFrame() -> void [](https://docs.susano.re/api-reference/drawing-functions/resetframe#parameters) Parameters ------------------------------------------------------------------------------------------------ None [](https://docs.susano.re/api-reference/drawing-functions/resetframe#return-s) Return(s) --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/resetframe#behavior) Behavior -------------------------------------------------------------------------------------------- Removes this coroutine’s current build buffer **and** the last submitted render buffer. Cancels any pending `SubmitFrame()` for this coroutine. Effect is immediate on next `Overlay` rendering (nothing from this coroutine will render). Other coroutines’ drawings are unaffected. [](https://docs.susano.re/api-reference/drawing-functions/resetframe#example-s) Example(s) ----------------------------------------------------------------------------------------------- [PreviousSubmitFrame](https://docs.susano.re/api-reference/drawing-functions/submitframe) [NextResetAllFrames](https://docs.susano.re/api-reference/drawing-functions/resetallframes) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/resetframe#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/resetframe#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/resetframe#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/resetframe#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/resetframe#example-s) Copy -- emergency wipe of your overlay Susano.ResetFrame() -- rebuild a fresh frame after clearing Susano.BeginFrame() Susano.DrawText(40, 40, "reloaded", 18, 1,1,1,1) Susano.SubmitFrame() --- # LoadFontFromBuffer | susano doc [](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#syntax) Syntax ------------------------------------------------------------------------------------------------ Copy Susano.LoadFontFromBuffer(data, size_px) -> number [](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#parameters) Parameters -------------------------------------------------------------------------------------------------------- `data` (string): Raw font bytes (TTF/OTF). `size_px` (number): Native pixel size to bake into the atlas. [](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#return-s) Return(s) ----------------------------------------------------------------------------------------------------- `fontId` (number): Handle for `Susano.PushFont`. On error: `nil, err` (string). [](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#behavior) Behavior ---------------------------------------------------------------------------------------------------- Adds the font to the renderer atlas; the atlas owns the copied bytes. Loading a font does not change the active font. Use `Susano.PushFont(fontId)` to use it. In `Susano.DrawText`, pass `0` for `size` to render at this font’s native `size_px`; non-zero scales at draw time. If loaded at runtime, it becomes usable after the atlas is uploaded by the renderer (typically next frame). [](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#example-s) Example(s) ------------------------------------------------------------------------------------------------------- [PreviousLoadFont](https://docs.susano.re/api-reference/drawing-functions/loadfont) [NextPushFont](https://docs.susano.re/api-reference/drawing-functions/pushfont) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer#example-s) Copy local bytes = "" -- font buffer local id, err = Susano.LoadFontFromBuffer(bytes, 20) assert(id, err) Susano.PushFont(id) Susano.BeginFrame() Susano.DrawText(1200, 100, "Consolas @ native", 0, 1,1,1,1) -- 0 => native 20px Susano.SubmitFrame() Susano.PopFont() --- # Misc | susano doc [CopyToClipboard](https://docs.susano.re/api-reference/misc/copytoclipboard) [GetClipboardText](https://docs.susano.re/api-reference/misc/getclipboardtext) [EnableOverlay](https://docs.susano.re/api-reference/misc/enableoverlay) [GetCursorPos](https://docs.susano.re/api-reference/misc/getcursorpos) [PreviousStartResource](https://docs.susano.re/api-reference/resource-injection/startresource) [NextCopyToClipboard](https://docs.susano.re/api-reference/misc/copytoclipboard) --- # HookNative | susano doc [](https://docs.susano.re/api-reference/native-hook/hooknative#syntax) Syntax ---------------------------------------------------------------------------------- Copy Susano.HookNative(native_hash, hook_function) [](https://docs.susano.re/api-reference/native-hook/hooknative#parameters) Parameters ------------------------------------------------------------------------------------------ `native_hash` (number) - The hash of the native function to hook `hook_function` (function) - Your callback function that handles the interception [](https://docs.susano.re/api-reference/native-hook/hooknative#return-s) Return(s) --------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/native-hook/hooknative#hook-function) Hook Function ------------------------------------------------------------------------------------------------ Your hook function receives the same arguments as the original native and must return specific values to control behavior. #### [](https://docs.susano.re/api-reference/native-hook/hooknative#return-format) Return Format Copy return call_original, return_value1, return_value2, ... `call_original` (boolean) * `true` - Execute the original native function * `false` - Block the native and use your custom return values `return_value1, return_value2, ...` (any) * Custom values to return when blocking the native * Must match the expected return types of the original native Natives args modification is not possible, yet. The only supported types for custom return values are: Bool, Number, String, Tables Vector3 are not supported YET [](https://docs.susano.re/api-reference/native-hook/hooknative#example-s) Example(s) ----------------------------------------------------------------------------------------- [PreviousNative Hook](https://docs.susano.re/api-reference/native-hook) [NextUnhookNative](https://docs.susano.re/api-reference/native-hook/unhooknative) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/native-hook/hooknative#syntax) * [Parameters](https://docs.susano.re/api-reference/native-hook/hooknative#parameters) * [Return(s)](https://docs.susano.re/api-reference/native-hook/hooknative#return-s) * [Hook Function](https://docs.susano.re/api-reference/native-hook/hooknative#hook-function) * [Example(s)](https://docs.susano.re/api-reference/native-hook/hooknative#example-s) Copy -- Always return "Admin" instead of actual player name Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id) return false, "Admin" end) Copy -- Only block for specific players Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id) if player_id == 1337 then return false, "BlockedPlayer" else return true -- Allow original function end end) Copy -- Some natives return multiple values Susano.HookNative(0x34CFC4C2A38E83E3, function(camTo, camFrom, duration) if duration > 5000 then return false, "TooLong", 0, false end return true end) Copy -- Log native calls without modifying behavior Susano.HookNative(0x6D0DE6A7B5DA71F8, function(player_id) print(string.format("GetPlayerName called for player: %d", player_id)) return true -- Allow original execution end) --- # DrawRectGradient | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#syntax) Syntax ---------------------------------------------------------------------------------------------- Copy Susano.DrawRectGradient(x, y, w, h, r1, g1, b1[, a1], r2, g2, b2[, a2], r3, g3, b3[, a3], r4, g4, b4[, a4], rounding ) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#parameters) Parameters ------------------------------------------------------------------------------------------------------ `x, y` (number): Top-left corner in pixels. `w, h` (number): Width and height in pixels. `r1, g1, b1` (number): Color in \[0..1\]. `r2, g2, b2` (number): Color in \[0..1\]. `r3, g3, b3` (number): Color in \[0..1\]. `r4, g4, b4` (number): Color in \[0..1\]. `a1, a2, a3, a4` (number, optional): Alpha in \[0..1\]. Default: `1.0` `rounding` (number): Rounding, 0 for no rounding [](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#return-s) Return(s) --------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#behavior) Behavior -------------------------------------------------------------------------------------------------- Appends a filled rectangle outline with gradient to the build buffer. Visible after `Susano.SubmitFrame()`. Persists until next submit. [](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#example-s) Example(s) ----------------------------------------------------------------------------------------------------- [PreviousDrawRectFilled](https://docs.susano.re/api-reference/drawing-functions/drawrectfilled) [NextDrawCircle](https://docs.susano.re/api-reference/drawing-functions/drawcircle) Last updated 1 month ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient#example-s) Copy Citizen.CreateThread(function() while true do Wait(0) local t = GetGameTimer() / 2800.0 local tl_r = math.abs(math.sin(t * 1.0)) local tl_g = math.abs(math.sin(t * 0.7)) local tl_b = math.abs(math.sin(t * 1.3)) local tr_r = math.abs(math.sin(t * 1.6)) local tr_g = math.abs(math.sin(t * 0.9)) local tr_b = math.abs(math.sin(t * 1.1)) local br_r = math.abs(math.sin(t * 2.0)) local br_g = math.abs(math.sin(t * 1.4)) local br_b = math.abs(math.sin(t * 0.8)) local bl_r = math.abs(math.sin(t * 0.5)) local bl_g = math.abs(math.sin(t * 1.8)) local bl_b = math.abs(math.sin(t * 1.2)) Susano.BeginFrame() Susano.DrawRectGradient(300.0, 300.0, 240.0, 240.0, tl_r, tl_g, tl_b, 1.0, tr_r, tr_g, tr_b, 1.0, br_r, br_g, br_b, 1.0, bl_r, bl_g, bl_b, 1.0, 18.0) Susano.SubmitFrame() end end) --- # StopResource | susano doc [](https://docs.susano.re/api-reference/resource-injection/stopresource#syntax) Syntax ------------------------------------------------------------------------------------------- Copy Susano.StopResource(resourceName) -> bool [](https://docs.susano.re/api-reference/resource-injection/stopresource#parameters) Parameters --------------------------------------------------------------------------------------------------- `resourceName` (string): Target resource identifier. [](https://docs.susano.re/api-reference/resource-injection/stopresource#return-s) Return(s) ------------------------------------------------------------------------------------------------ `state` (boolean): Whether or not the resource has been successfully stopped [](https://docs.susano.re/api-reference/resource-injection/stopresource#behavior) Behavior ----------------------------------------------------------------------------------------------- Stop the requested resource with the susano resource stopper mechanism. [](https://docs.susano.re/api-reference/resource-injection/stopresource#example-s) Example(s) -------------------------------------------------------------------------------------------------- Copy Susano.StopResource("anticheat") [PreviousInjectResource](https://docs.susano.re/api-reference/resource-injection/injectresource) [NextStartResource](https://docs.susano.re/api-reference/resource-injection/startresource) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/resource-injection/stopresource#syntax) * [Parameters](https://docs.susano.re/api-reference/resource-injection/stopresource#parameters) * [Return(s)](https://docs.susano.re/api-reference/resource-injection/stopresource#return-s) * [Behavior](https://docs.susano.re/api-reference/resource-injection/stopresource#behavior) * [Example(s)](https://docs.susano.re/api-reference/resource-injection/stopresource#example-s) --- # PushFont | susano doc [](https://docs.susano.re/api-reference/drawing-functions/pushfont#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.PushFont(fontId) -> void [](https://docs.susano.re/api-reference/drawing-functions/pushfont#parameters) Parameters ---------------------------------------------------------------------------------------------- `fontId` (number): Result of `Susano.LoadFont`. [](https://docs.susano.re/api-reference/drawing-functions/pushfont#return-s) Return(s) ------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/pushfont#behavior) Behavior ------------------------------------------------------------------------------------------ Pushes `fontId` on a per-coroutine font stack. Affects subsequent `Susano.DrawText` and `Susano.GetTextWidth`. Use `size_px = 0` in `DrawText` to render at this font’s native size. [](https://docs.susano.re/api-reference/drawing-functions/pushfont#example-s) Example(s) --------------------------------------------------------------------------------------------- [PreviousLoadFontFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer) [NextPopFont](https://docs.susano.re/api-reference/drawing-functions/popfont) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/pushfont#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/pushfont#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/pushfont#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/pushfont#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/pushfont#example-s) Copy local id = Susano.LoadFont("C:/Windows/Fonts/RAVIE.TTF", 30) Susano.PushFont(id) Susano.DrawText(100, 100, "RAVIE @ native", 0, 1,1,1,1) Susano.PopFont() --- # GetClipboardText | susano doc [](https://docs.susano.re/api-reference/misc/getclipboardtext#syntax) Syntax --------------------------------------------------------------------------------- Copy Susano.GetClipboardText() -> string [](https://docs.susano.re/api-reference/misc/getclipboardtext#parameters) Parameters ----------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/misc/getclipboardtext#return-s) Return(s) -------------------------------------------------------------------------------------- `data` (string): clipboard content [](https://docs.susano.re/api-reference/misc/getclipboardtext#behavior) Behavior ------------------------------------------------------------------------------------- Self explainatory. [](https://docs.susano.re/api-reference/misc/getclipboardtext#example-s) Example(s) ---------------------------------------------------------------------------------------- Copy local data = Susano.GetClipboardText() print(data) [PreviousCopyToClipboard](https://docs.susano.re/api-reference/misc/copytoclipboard) [NextEnableOverlay](https://docs.susano.re/api-reference/misc/enableoverlay) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/misc/getclipboardtext#syntax) * [Parameters](https://docs.susano.re/api-reference/misc/getclipboardtext#parameters) * [Return(s)](https://docs.susano.re/api-reference/misc/getclipboardtext#return-s) * [Behavior](https://docs.susano.re/api-reference/misc/getclipboardtext#behavior) * [Example(s)](https://docs.susano.re/api-reference/misc/getclipboardtext#example-s) --- # LoadTextureFromBuffer | susano doc [](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#syntax) Syntax --------------------------------------------------------------------------------------------------- Copy Susano.LoadTextureFromBuffer(data) -> number, number, number [](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#parameters) Parameters ----------------------------------------------------------------------------------------------------------- `data` (string): Image bytes (PNG/JPG/BMP/GIF\*/TGA). [](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#return-s) Return(s) -------------------------------------------------------------------------------------------------------- `texId` (number): Texture handle. `w` (number): Width in pixels. `h` (number): Height in pixels. [](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#behavior) Behavior ------------------------------------------------------------------------------------------------------- Same formats and rules as `LoadTexture`. Useful for in-memory or downloaded assets. [](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#example-s) Example(s) ---------------------------------------------------------------------------------------------------------- [PreviousLoadTexture](https://docs.susano.re/api-reference/drawing-functions/loadtexture) [NextReleaseTexture](https://docs.susano.re/api-reference/drawing-functions/releasetexture) Last updated 2 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer#example-s) Copy local imageBytes = "" -- your image bytes local id, w, h = Susano.LoadTextureFromBuffer(imageBytes) --- # BeginFrame | susano doc [](https://docs.susano.re/api-reference/drawing-functions/beginframe#syntax) Syntax ---------------------------------------------------------------------------------------- Copy Susano.BeginFrame() -> void [](https://docs.susano.re/api-reference/drawing-functions/beginframe#parameters) Parameters ------------------------------------------------------------------------------------------------ None [](https://docs.susano.re/api-reference/drawing-functions/beginframe#return-s) Return(s) --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/beginframe#behavior) Behavior -------------------------------------------------------------------------------------------- Clears the build buffer only. Leaves the currently displayed frame untouched. Subsequent `Draw*` calls append to the new build buffer. Calling it again within the same tick re-clears the build buffer. Does not trigger rendering or a swap by itself. [](https://docs.susano.re/api-reference/drawing-functions/beginframe#example-s) Example(s) ----------------------------------------------------------------------------------------------- [PreviousDrawing Functions](https://docs.susano.re/api-reference/drawing-functions) [NextSubmitFrame](https://docs.susano.re/api-reference/drawing-functions/submitframe) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/beginframe#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/beginframe#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/beginframe#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/beginframe#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/beginframe#example-s) Copy -- Example 1: one-time overlay (persists until you submit a new frame) Susano.BeginFrame() Susano.DrawLine(100,100, 300,200, 1,0,0,1, 2) Susano.DrawRect(320,100, 120,80, 0,1,0,1, 1.5) Susano.DrawRectFilled(460,100, 120,80, 0,0,1,0.6) Susano.DrawCircle(620,140, 40, false, 1,1,0,1, 2, 48) Susano.DrawText(100,260, "Overlay", 20, 1,1,1,1) Susano.SubmitFrame() Copy -- Example 2: animated overlay (updates every frame) Citizen.CreateThread(function() while true do local t = GetGameTimer() / 1000.0 local x = 100 + math.floor(math.sin(t) * 50) Susano.BeginFrame() Susano.DrawLine(100,100, 300,200, 1,0,0,1, 2) Susano.DrawRectFilled(x, 80, 120, 30, 0,0,0,0.5) Susano.DrawText(x + 8, 88, ("x=%d"):format(x), 16, 1,1,1,1) Susano.SubmitFrame() Citizen.Wait(0) end end) --- # DrawText | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawtext#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.DrawText(x, y, text, size_px, r, g, b[, a]) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawtext#parameters) Parameters ---------------------------------------------------------------------------------------------- `x, y` (number): Baseline position in pixels. `text` (string): UTF-8 text. `size_px` (number): Font size in pixels. Use default if `0` or omitted per implementation. `r, g, b` (number): Color in \[0..1\]. `a` (number, optional): Alpha in \[0..1\]. Default: `1.0`. [](https://docs.susano.re/api-reference/drawing-functions/drawtext#return-s) Return(s) ------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawtext#behavior) Behavior ------------------------------------------------------------------------------------------ Appends a text to the build buffer. Visible after `Susano.SubmitFrame()`. Persists until next submit. [](https://docs.susano.re/api-reference/drawing-functions/drawtext#example-s) Example(s) --------------------------------------------------------------------------------------------- [PreviousDrawCircle](https://docs.susano.re/api-reference/drawing-functions/drawcircle) [NextGetTextWidth](https://docs.susano.re/api-reference/drawing-functions/gettextwidth) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawtext#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawtext#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawtext#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawtext#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawtext#example-s) Copy Susano.BeginFrame() Susano.DrawText(100,260, "Overlay", 20, 1,1,1, 1)) Susano.SubmitFrame() --- # InjectResource | susano doc [](https://docs.susano.re/api-reference/resource-injection/injectresource#syntax) Syntax --------------------------------------------------------------------------------------------- Copy Susano.InjectResource(resourceName, luaCode [, injectionType]) -> void [](https://docs.susano.re/api-reference/resource-injection/injectresource#parameters) Parameters ----------------------------------------------------------------------------------------------------- `resourceName` (string): Target resource identifier. Use "any" to inject in the first available resource. `luaCode` (string): Lua source to execute inside that resource. `injectionType` (Susano.InjectionType, optional): Injection type: * `Susano.InjectionType.NEW_THREAD`: inject inside a new thread * `Susano.InjectionType.NO_THREAD`: inject in the first available thread (do NOT call Wait/ Citizen.Wait unless you create a thread) * `Susano.InjectionType.WHOOK_THREAD`: undocumented on purpose. * `Susano.InjectionType.WHOOK_NOTHREAD`: undocumented on purpose. [](https://docs.susano.re/api-reference/resource-injection/injectresource#return-s) Return(s) -------------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/resource-injection/injectresource#behavior) Behavior ------------------------------------------------------------------------------------------------- Requires exactly two string arguments; otherwise raises a Lua error. Code runs in the target resource’s environment, not Susano’s sandbox. Susano API is unavailable inside injected code (not isolated). Do not call `Susano.*` there. Use the resource’s own globals and natives. Namespaces and upvalues differ from Susano. [](https://docs.susano.re/api-reference/resource-injection/injectresource#example-s) Example(s) ---------------------------------------------------------------------------------------------------- [PreviousResource Injection](https://docs.susano.re/api-reference/resource-injection) [NextStopResource](https://docs.susano.re/api-reference/resource-injection/stopresource) Last updated 1 month ago * [Syntax](https://docs.susano.re/api-reference/resource-injection/injectresource#syntax) * [Parameters](https://docs.susano.re/api-reference/resource-injection/injectresource#parameters) * [Return(s)](https://docs.susano.re/api-reference/resource-injection/injectresource#return-s) * [Behavior](https://docs.susano.re/api-reference/resource-injection/injectresource#behavior) * [Example(s)](https://docs.susano.re/api-reference/resource-injection/injectresource#example-s) Copy -- inject a simple logger into resource "gamemode" Susano.InjectResource("gamemode", [[\ print("[inject] gamemode init hook installed")\ -- Susano.* calls will NOT work here\ ]]) -- inject code that overrides a function in the target resource Susano.InjectResource("ui_resource", [[\ local old = _G.ShowNotification\ _G.ShowNotification = function(msg)\ return old("[INJECTED] "..tostring(msg))\ end\ ]]) -- inject into the first available resource Susano.InjectResource("any", [[\ print("[inject] any init hook installed")\ -- Susano.* calls will NOT work here\ ]]) --- # WorldToScreen | susano doc [](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#syntax) Syntax ------------------------------------------------------------------------------------------- Copy Susano.WorldToScreen(x, y, z) -> boolean, number, number [](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#parameters) Parameters --------------------------------------------------------------------------------------------------- `x` (number): World X. `y` (number): World Y. `z` (number): World Z. [](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#return-s) Return(s) ------------------------------------------------------------------------------------------------ `ok` (boolean): `true` if the point projects in front of the camera, else `false`. `sx` (number): Screen X in pixels. `sy` (number): Screen Y in pixels. [](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#behavior) Behavior ----------------------------------------------------------------------------------------------- Returns `ok=false` when the point is behind the camera or projection invalid. Does not clamp; `sx, sy` can be outside the visible bounds when off-screen. Coordinates are suitable for `Susano.Draw*` functions. [](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#example-s) Example(s) -------------------------------------------------------------------------------------------------- [PreviousGetTextWidth](https://docs.susano.re/api-reference/drawing-functions/gettextwidth) [NextLoadFont](https://docs.susano.re/api-reference/drawing-functions/loadfont) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen#example-s) Copy local ok, sx, sy = Susano.WorldToScreen(250.0, -1040.0, 29.0) if ok then Susano.DrawCircle(sx, sy, 4, true, 1, 0, 0, 1) end --- # DrawImage | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawimage#syntax) Syntax --------------------------------------------------------------------------------------- Copy Susano.DrawImage(texId, x, y, w, h [, r,g,b,a [, rounding [, u0,v0,u1,v1]]]) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawimage#parameters) Parameters ----------------------------------------------------------------------------------------------- `texId` (number): Texture handle. `x, y` (number): Top-left in screen pixels. `w, h` (number): Size in pixels. `r, g, b, a` (number, optional): Tint color. Default `1,1,1,1`. `rounding` (number, optional): Corner radius in px. Default `0`. `u0, v0, u1, v1` (number, optional): UV rectangle. Default `0,0,1,1`. [](https://docs.susano.re/api-reference/drawing-functions/drawimage#return-s) Return(s) -------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawimage#behavior) Behavior ------------------------------------------------------------------------------------------- Draws via ImGui `AddImage` (or `AddImageRounded` when `rounding>0`). Uses the exact pixels of `w x h`; no aspect correction. UVs allow cropping or atlas regions. Fails if `texId` is invalid or released. [](https://docs.susano.re/api-reference/drawing-functions/drawimage#example-s) Example(s) ---------------------------------------------------------------------------------------------- [PreviousReleaseTexture](https://docs.susano.re/api-reference/drawing-functions/releasetexture) [NextInput Functions](https://docs.susano.re/api-reference/input-functions) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawimage#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawimage#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawimage#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawimage#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawimage#example-s) Copy -- basic local id,w,h = Susano.LoadTexture("logo.png") Susano.BeginFrame() Susano.DrawImage(id, 40, 40, w, h) -- tinted, rounded, scaled Susano.DrawImage(id, 40, 40+h+12, 128, 128, 1,1,1,1, 10) -- crop left half via UVs Susano.DrawImage(id, 200, 40, 128, 128, 1,1,1,1, 0, 0,0,0.5,1) Susano.SubmitFrame() --- # LoadFont | susano doc [](https://docs.susano.re/api-reference/drawing-functions/loadfont#syntax) Syntax -------------------------------------------------------------------------------------- Copy Susano.LoadFont(path, size_px) -> number [](https://docs.susano.re/api-reference/drawing-functions/loadfont#parameters) Parameters ---------------------------------------------------------------------------------------------- `path` (string): Absolute or relative path to a TTF/OTF file. `size_px` (number): Native pixel size for this font. [](https://docs.susano.re/api-reference/drawing-functions/loadfont#return-s) Return(s) ------------------------------------------------------------------------------------------- `fontId` (number): Handle to use with `Susano.PushFont`. On error: `nil, err` (string). [](https://docs.susano.re/api-reference/drawing-functions/loadfont#behavior) Behavior ------------------------------------------------------------------------------------------ Registers the font in the Susano renderer atlas. Must be called once for each font. The returned `fontId` is valid for the current session. Does not change the active font by itself. [](https://docs.susano.re/api-reference/drawing-functions/loadfont#example-s) Example(s) --------------------------------------------------------------------------------------------- [PreviousWorldToScreen](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen) [NextLoadFontFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadfontfrombuffer) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/loadfont#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/loadfont#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/loadfont#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/loadfont#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/loadfont#example-s) Copy local ok, sx, sy = Susano.WorldToScreen(250.0, -1040.0, 29.0) local id, err = Susano.LoadFont("C:/Windows/Fonts/Consola.ttf", 18) if not id then print(err) end --- # ReleaseTexture | susano doc [](https://docs.susano.re/api-reference/drawing-functions/releasetexture#syntax) Syntax -------------------------------------------------------------------------------------------- Copy Susano.ReleaseTexture(texId) -> boolean [](https://docs.susano.re/api-reference/drawing-functions/releasetexture#parameters) Parameters ---------------------------------------------------------------------------------------------------- `texId` (number): Handle from a load call. [](https://docs.susano.re/api-reference/drawing-functions/releasetexture#return-s) Return(s) ------------------------------------------------------------------------------------------------- `ok` (boolean): `true` if released, `false` if id not found. [](https://docs.susano.re/api-reference/drawing-functions/releasetexture#behavior) Behavior ------------------------------------------------------------------------------------------------ Releases the underlying DX11 SRV. `texId` becomes invalid. [](https://docs.susano.re/api-reference/drawing-functions/releasetexture#example-s) Example(s) --------------------------------------------------------------------------------------------------- Copy local imageBytes = "" local id, w, h = Susano.LoadTextureFromBuffer("logo.png") local ok = Susano.ReleaseTexture(id) [PreviousLoadTextureFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer) [NextDrawImage](https://docs.susano.re/api-reference/drawing-functions/drawimage) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/releasetexture#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/releasetexture#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/releasetexture#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/releasetexture#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/releasetexture#example-s) --- # LoadTexture | susano doc [](https://docs.susano.re/api-reference/drawing-functions/loadtexture#syntax) Syntax ----------------------------------------------------------------------------------------- Copy Susano.LoadTexture(path) -> number, number, number [](https://docs.susano.re/api-reference/drawing-functions/loadtexture#parameters) Parameters ------------------------------------------------------------------------------------------------- `path` (string): File path (PNG, JPG/JPEG, BMP, GIF\*, TGA). [](https://docs.susano.re/api-reference/drawing-functions/loadtexture#return-s) Return(s) ---------------------------------------------------------------------------------------------- `texId` (number): Texture handle. `w` (number): Width in pixels. `h` (number): Height in pixels. [](https://docs.susano.re/api-reference/drawing-functions/loadtexture#behavior) Behavior --------------------------------------------------------------------------------------------- Decodes via `stb_image` to RGBA8, uploads to a Shader Resource View. GIF\*: only the first frame is loaded (no animation). Keep `texId` until you call `Susano.ReleaseTexture`. [](https://docs.susano.re/api-reference/drawing-functions/loadtexture#example-s) Example(s) ------------------------------------------------------------------------------------------------ [PreviousPopFont](https://docs.susano.re/api-reference/drawing-functions/popfont) [NextLoadTextureFromBuffer](https://docs.susano.re/api-reference/drawing-functions/loadtexturefrombuffer) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/loadtexture#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/loadtexture#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/loadtexture#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/loadtexture#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/loadtexture#example-s) Copy local id, w, h = Susano.LoadTexture("logo.png") --- # GetTextWidth | susano doc [](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#syntax) Syntax ------------------------------------------------------------------------------------------ Copy Susano.GetTextWidth(text, size_px) -> number [](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#parameters) Parameters -------------------------------------------------------------------------------------------------- `text` (string): UTF-8 text to measure. `size_px` (number): Font size in pixels. If `0`, uses default font size. [](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#return-s) Return(s) ----------------------------------------------------------------------------------------------- `number`: Width in pixels. `0` if no result was available within the internal timeout. [](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#behavior) Behavior ---------------------------------------------------------------------------------------------- Enqueues a measurement request and waits briefly for the Overlay thread to compute width. Non-drawing operation; does not affect the build buffer. Result depends on the active Overlay font. [](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#example-s) Example(s) ------------------------------------------------------------------------------------------------- [PreviousDrawText](https://docs.susano.re/api-reference/drawing-functions/drawtext) [NextWorldToScreen](https://docs.susano.re/api-reference/drawing-functions/worldtoscreen) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/gettextwidth#example-s) Copy local w = Susano.GetTextWidth("hello overlay", 18) Susano.BeginFrame() Susano.DrawRect(100, 240, w + 10, 24, 1,1,1, 1, 1) Susano.DrawText(105, 260, "hello overlay", 18, 1,1,1, 1) Susano.SubmitFrame() --- # DrawCircle | susano doc [](https://docs.susano.re/api-reference/drawing-functions/drawcircle#syntax) Syntax ---------------------------------------------------------------------------------------- Copy Susano.DrawCircle(x, y, radius, filled, r, g, b[, a], thickness[, segments]) -> void [](https://docs.susano.re/api-reference/drawing-functions/drawcircle#parameters) Parameters ------------------------------------------------------------------------------------------------ `x, y` (number): Center position in pixels. `radius` (number): Radius in pixels. `filled` (boolean): `true` for filled, `false` for outline. `r, g, b` (number): Color in \[0..1\]. `a` (number, optional): Alpha in \[0..1\]. Default: `1.0`. `thickness` (number): Outline thickness in pixels. Used when `filled=false`. Default: `1.0`. `segments` (integer, optional): Approximation segments. Default: `32`. [](https://docs.susano.re/api-reference/drawing-functions/drawcircle#return-s) Return(s) --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/drawcircle#behavior) Behavior -------------------------------------------------------------------------------------------- Appends a circle to the build buffer. Visible after `Susano.SubmitFrame()`. Persists until next submit. [](https://docs.susano.re/api-reference/drawing-functions/drawcircle#example-s) Example(s) ----------------------------------------------------------------------------------------------- [PreviousDrawRectGradient](https://docs.susano.re/api-reference/drawing-functions/drawrectgradient) [NextDrawText](https://docs.susano.re/api-reference/drawing-functions/drawtext) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/drawcircle#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/drawcircle#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/drawcircle#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/drawcircle#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/drawcircle#example-s) Copy Susano.BeginFrame() Susano.DrawCircle(620,140, 40, false, 1,1,0, 1, 2, 48) Susano.SubmitFrame() --- # PopFont | susano doc [](https://docs.susano.re/api-reference/drawing-functions/popfont#syntax) Syntax ------------------------------------------------------------------------------------- Copy Susano.PopFont() -> boolean [](https://docs.susano.re/api-reference/drawing-functions/popfont#parameters) Parameters --------------------------------------------------------------------------------------------- None [](https://docs.susano.re/api-reference/drawing-functions/popfont#return-s) Return(s) ------------------------------------------------------------------------------------------ `popped` (boolean): `true` if a font was popped, `false` if the stack was empty. [](https://docs.susano.re/api-reference/drawing-functions/popfont#behavior) Behavior ----------------------------------------------------------------------------------------- Pops one entry from the per-coroutine font stack. No effect if the stack is already empty. [](https://docs.susano.re/api-reference/drawing-functions/popfont#example-s) Example(s) -------------------------------------------------------------------------------------------- Copy Susano.PushFont(id) -- draw... local ok = Susano.PopFont() [PreviousPushFont](https://docs.susano.re/api-reference/drawing-functions/pushfont) [NextLoadTexture](https://docs.susano.re/api-reference/drawing-functions/loadtexture) Last updated 3 months ago * [Syntax](https://docs.susano.re/api-reference/drawing-functions/popfont#syntax) * [Parameters](https://docs.susano.re/api-reference/drawing-functions/popfont#parameters) * [Return(s)](https://docs.susano.re/api-reference/drawing-functions/popfont#return-s) * [Behavior](https://docs.susano.re/api-reference/drawing-functions/popfont#behavior) * [Example(s)](https://docs.susano.re/api-reference/drawing-functions/popfont#example-s) ---