From vRP / vRPex — easiest map
Tunnel/Proxy → explicit Atlas server events and facades.

What changes
| vRP / vRPex habit | Atlas way |
|---|---|
vRP.getUserId / identity tables | Atlas.Players.Get / Atlas.Characters.Get |
| Proxy money give/tryPayment | Atlas.Money.Add / Remove on server |
| Inventory modules / chests digs | Atlas.Inventory.* only |
| Tunnel client→server free-for-all | Named resource:server:* events + validate source |
| Permission groups in vRP | ACE + Atlas.Permissions.Has |
| Client-side “pay then give” | Server removes money then grants item (refund on fail) |
Easiest path
- Stop Tunnel/Proxy for economy mutations.
- One server event per action.
- Atlas facades for money/items/jobs.
- Rate-limit spammy client triggers.
- Staff via ACE groups in
permissions.cfg.
Mini rewrite
vRP-ish (concept)
lua
-- client asks proxy to pay + give (dangerous pattern)
vRP.tryPayment({user_id, 50})
vRP.giveInventoryItem({user_id, 'water', 1})Atlas
lua
RegisterNetEvent('shop:server:buyWater', function()
local src = source
if not Atlas.Money.Remove(src, 'cash', 50) then return end
local r = Atlas.Inventory.Add(src, 'water', 1)
if not r.ok then Atlas.Money.Add(src, 'cash', 50) end
end)
Why this feels different
vRP loved hidden proxies. Atlas loves readable contracts. Your future you will thank you.
Continue: Events & Callbacks · Ecosystem
Atlas