You’re able to define keyboard bindings in a new way, as originally detailed in the 2018 design document “Configuration & Input – Redesigned“. Here’s a sample snippet of a simple ‘hands up’ binding: These bindings will be editable by the user in the ‘key bindings’ option (only 1 binding per command yet, no secondary binding), …
Author Archives: admin
Optimizing resource downloads using a caching proxy
Server builds starting at pipeline ID 1679 added the ability to configure the fileServer field used for resource downloading using a set of commands: There’s currently no cache invalidation logic based on hashes (this’ll need yet another server update due to the file server not ignoring query strings + a client update), so make sure …
Continue reading “Optimizing resource downloads using a caching proxy”
OneSync: intercepting game events (such as explosions)
The latest version of the server (1543+) added support for parsing and preventing routing of game events. This currently only supports parsing CExplosionEvent, but this might be a fairly useful one to prevent routing of ‘excessive’ explosions, or explosions that are ‘too close’ to a player and not of the correct weapon type. Here’s an …
Continue reading “OneSync: intercepting game events (such as explosions)”
[ANCIENT INFO] Two new experimental OneSync variables
Update (2022): Note that this post is very old. Both settings are enabled by default with any server builds as of early 2020, for more variables you can check the docs. It should also be noted that the default settings will usually be correct as well. If you’re experiencing any issues, you may be hitting …
Continue reading “[ANCIENT INFO] Two new experimental OneSync variables”
Useful snippet: getting the top left of the minimap in screen coordinates
This could be useful if you want to align things to NUI or other screen-space draws, and works on pretty much any aspect ratio. The magic numbers here are the minimap position from common:/data/ui/frontend.xml, as seen below: This will likely also work for aligning to other positions, assuming you set the right sizes.
Improving script stack traces
In the past, the Citizen framework scripting runtime would print really messy stack traces such as.. this: This stack trace goes on for around 3-4 times the displayed length, and is generally.. a big mess. You can tell that some resource code is running, like @stest3/sv.lua:20, f.js:8 and @stest1/sv.lua, but everything else that is shown …
GET_ACTIVE_PLAYERS: the replacement for player loops
Just a quick hint: when writing new client-side scripts in Lua/JS (C# already has the Players list doing exactly this), you can loop through players by using the GET_ACTIVE_PLAYERS native. See below for an example of before/after: Before… After… This should be a bit more performant than 256 native invocations, even if no player slot …
Continue reading “GET_ACTIVE_PLAYERS: the replacement for player loops”
Adaptive Cards in deferrals
We’ll be writing some more documentation on this soon, but the latest server version (combined with the canary client at this time – no prod yet!) supports presenting Adaptive Cards to clients during deferrals. Here’s a quick code sample: —
Lua support for compile-time Jenkins hashes
In GTA/RAGE games, you’ll often encounter native functions either taking or returning a Jenkins one-at-a-time hash, like the ones returned by GET_HASH_KEY. Traditionally, code would have had to either hardcode hashes (like -1044093321), or use GET_HASH_KEY directly (like GetHashKey(“a_m_y_skater_01”)). This would have lead to either less readability and maintainability, or having to wait for a …
Continue reading “Lua support for compile-time Jenkins hashes”
Our work on supporting emoji in Scaleform GFx
In a recent commit to the canary branch, we’ve added support for embedding standard emoji in nearly all cases where text is rendered by Scaleform GFx. This post details a bit of the effort that went on behind this, and where future changes may be headed. Where does GTA use Scaleform GFx? You might already …
Continue reading “Our work on supporting emoji in Scaleform GFx”