ug-multicharacter treats every request as untrusted, and checks it at three levels: the page bridge in Lua, the ug-core callback, and the server rule.
What is checked
Every callback has a schema and a rate limit through ug-core. One request at a time per player: a second one while the first waits on the database is refused. The page bridge also refuses more than 30 page events per second.
Privacy and isolation
- The page gets names, birth dates, last played dates, street names and death states. Never character ids, raw data or coordinates.
- While choosing, each player is alone in a private routing bucket, so nobody sees another player’s scene or ped. With ug-core’s sessions module, it is a session of its own.
What it never does
- Load a character before the player arrived.
- Trust a coordinate, a character id or a spawn choice from the page.
- Revive a downed or dead character by sending it somewhere else.
- Tell a kicked player which check failed.