Skip to content

About

Trap Phone for FiveM: a keypad burner that runs a street business. Corner sales, drop-offs, plugs, turf, ten handset colours with their own props, and two-way texts with sd-phone.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

sd-trapphone

sd-trapphone banner: the ten handset colours in a row

Browser demo

Open the live demo

The handset runs here with sample data. Pick a colour, start serving from Hustle and answer the texts that come in. Nothing to install.

fivem.samueldev.shop/trapphone


sd-trapphone is a keypad burner phone for FiveM that runs a street business. Players serve corners, take drop-off orders, haggle by text, meet plugs and pay off crews, all from an early-2000s candybar handset with a colour screen, a d-pad and a full keypad. It comes in ten colours, each its own item with its own model in the hand, and it texts sd-phone both ways.

Stars Discord

Framework Inventory Works with

Download · Docs · Live demo · Store · Discord

Works together: sd-phone · sd-trapphone · sd-tablet · sd-computers


Support Me

If you're enjoying sd-trapphone and want to support my work, consider picking up a script from Samuel's Development. Every purchase helps me keep building and improving free resources like this one.

Screenshots

The handset screens are captured from the page with sample data. Click an image for the full 1920×1080 version.

Corner sales: the message list, an offer in a conversation, and the Hustle screen

Contacts, a shot caller, ordering from a plug, and the Turf screen

The main menu, Status, the Worm game and ringtones

The ten props, faces and backs

Three of the props in game


Tip

Running sd-phone? The two text each other. A burner's text lands in the smartphone's Messages under the burner's number, and a reply there comes back to the burner. Nothing to set up, and sd-phone is not required.

Highlights

  • A real handset. Messages, Contacts, Hustle, Turf, Status, a Worm game, ringtones and wallpapers, driven by a d-pad, two soft keys and a keypad. Mouse, keyboard and on-screen keys all work, and players can still walk and drive with it out.
  • Corner sales. Start serving and customers text an offer while they walk over, or pull up in a car at a spot you mark. Accept, name your own price, or turn them down.
  • Pitching and drop-offs. Walk up to anyone and offer, or take orders while driving and deliver to doors across the map.
  • A name on the street. XP and levels per product are kept on the phone itself, so a stolen phone is a stolen business. Customers remember you, and good ones become named regulars.
  • People. Plugs, a supplier, an informant, a launderer, a fixer and each crew's shot caller reach out as your name grows.
  • Turf. Every area has money, a product it craves and often a crew. Sell on their block without paying and they come and ask. Kill enough of them and they riot.
  • Back rooms. A money wash and a black market that open once you know the right person.
  • Bagging up. Battery-powered scales break bricks and ounces into smaller bags.
  • Heat. Snitches and witnesses bring the police through your dispatch resource.

Colours

Each colour is its own item. The item decides the faceplate on screen and the model in the hand.

Item Item
trap_phone_graphite trap_phone_bubblegum
trap_phone_chrome trap_phone_lime
trap_phone_pearl trap_phone_cherry
trap_phone_bling trap_phone_grape
trap_phone_ice trap_phone_tangerine

Compatibility

Layer Supported
Frameworks QBCore, QBox, ESX (auto-detected)
Inventories ox_inventory, qb-inventory, qs-inventory, tgiann-inventory and others through the bridge (auto-detected)
Target ox_target, qb-target, qtarget
Dispatch linden_outlawalert, cd_dispatch, fd_dispatch, ps-dispatch, qs-dispatch, core_dispatch, origen_police, codem-dispatch, tk_dispatch
Phone sd-phone, optional: two-way texts
Languages English, Simplified Chinese (Locale in configs/config.lua). Customer texts and names are set in configs/

Per-phone progress needs an inventory that can store item metadata. On one that cannot, progress is kept per character instead.

Installation

Download sd-trapphone.zip from the latest release and unzip it into your resources folder: it is the resource with its handset page already built, ready to drop in.

Important

Download the sd-trapphone.zip asset, not Source code (zip) or the green Code button. Those are the source, without the built handset: the phone would open to nothing until you build it yourself.

It needs ox_lib and oxmysql. Start them and your framework first:

ensure ox_lib
ensure oxmysql
ensure sd-trapphone

The database tables create themselves. Then:

  1. Add the items from items.md to your inventory: the ten phones, scales, batteries, baggies and the product sizes. The icons are in images/.
  2. Go through configs/. Prices, XP, stock and locations are in configs/server/, which never reaches a client.

Admins get /trapadmin (ace command.trapphone) to hand out phones, set XP, force a contact to reach out, set crew standing and reset a phone.

Documentation

The full guide is at docs.samueldev.shop/resources/trapphone: installation, every config file, and the client and server exports with examples.

For developers

How the parts fit together, the page protocol and every payload shape are in docs/design.md.

Building the handset

The repository is the source: the built page (web/build) is not committed, and each release builds it into its zip. To run a clone, or to change the page, build it with Node.js (LTS):

cd web
npm ci
npm run dev         # the handset in a browser, with sample data
npm run build       # what the game serves (web/build)
npm run build:demo  # the website's demo (web/build-demo): the handset alone, with a pretended street

A source zip unpacks to sd-trapphone-main: rename the folder to sd-trapphone, the name its exports are called by.

Rebuilding the props

stream/ holds one model per colour (sd_trapphone_<colour>, about 4,700 triangles, texture embedded). They are built from the handset page itself, so the prop matches what is on screen:

  1. Capture #prop=<colour> and #propback=<colour> from the page (see tools/make_textures.py).
  2. python tools/make_textures.py composes the textures and the inventory icons.
  3. blender --python tools/build_prop.py -- report.json builds and exports every colour. Needs Blender 5.x with the Sollumz extension.

Tests

lua tests/run.lua runs the offline checks for pricing, levels, zones, selling, drop-offs and dispatch under stock Lua 5.4.

Licence

GPL-3.0. The bundled typefaces are listed in THIRD_PARTY_NOTICES.md.

About

Trap Phone for FiveM: a keypad burner that runs a street business. Corner sales, drop-offs, plugs, turf, ten handset colours with their own props, and two-way texts with sd-phone.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages