<script>
	import Callout from '$lib/components/Callout.svelte';
</script>

dd-cards adds a print shop — a **fabric** — to your server. A player walks up to the ped, opens the
business centre, designs a card in a full canvas editor, and places an order. The order takes real
time to print. When it is done they are notified, come back, and collect a sealed box. Using the box
takes out one card; using a card shows it to them.

Everything is priced: materials the player already carries are consumed from their inventory,
anything they are short of is sold to them at a markup, and the fabric charges its own labour fee on
top.

## What ships

**A card designer.** Text, images, freehand drawing and six shapes (rectangle, circle, triangle,
line, diamond, star), with colour control, layer ordering (send to back / bring to front), undo,
redo and a full reset. Cards are named, and each player gets **five save slots** to keep designs in.

**A priced order flow.** Choose paper (standard or glossy), optionally add gold foil, set the
quantity, and see a live breakdown — setup fee, printing, which materials came from your own pockets
versus which the shop supplied, and the total. Pay by cash or bank.

**Rush processing.** Pay a surcharge on the labour to cut the wait.

**Real printing time.** Orders are not instant. The default is 20 minutes, or 5 with rush, and the
timer runs whether or not the player stays logged in.

**Notification when it is ready.** Delivered as a phone mail through LB Phone, npwd or qb-phone if
one is running, or as a plain on-screen notification if none is.

**Items you can carry and give away.** A finished order becomes a `business_card_box`. Using it
takes out a single `business_card`, which carries the design with it — so a player can hand their
card to someone else, and that person can look at it.

## Requirements at a glance

|                        | Supported                                          |
| ---------------------- | --------------------------------------------------- |
| Framework              | qbx_core (Qbox), qb-core (QBCore)                  |
| Inventory              | ox_inventory, qb-inventory                         |
| Required               | ox_lib, oxmysql                                    |
| Targeting _(optional)_ | ox_target, qb-target, or a built-in walk-up prompt |
| Menu _(optional)_      | ox_lib context menu, qb-menu                       |
| Phone _(optional)_     | lb-phone, npwd, qb-phone                           |

Framework and inventory are chosen independently — QBCore with ox_inventory is a common and fully
supported combination. See [Compatibility](/docs/dd-cards/compatibility) for the detail.

## Escrow and what stays editable

dd-cards is FiveM-escrow protected. The gameplay code under `modules/` is encrypted, but the
`fxmanifest.lua` declares these paths as `escrow_ignore`, so they remain **readable and editable**
after purchase:

```lua
escrow_ignore {
    'config/**/*',
    'bridge/**/*',
    'types.lua',
}
```

That means all three config files stay open, and so does every bridge — so you can point dd-cards at
a framework, inventory, target, menu or phone it does not ship support for by copying the closest
bridge file. See [Custom bridges](/docs/dd-cards/bridges), and
[Escrow & editing](/docs/general/escrow) for what escrow means more generally.

<Callout type="note">
Because `modules/` is encrypted, the [Exports](/docs/dd-cards/exports) page documents only the two exports the
shipped install instructions rely on. There is no published event API.
</Callout>

## Where to start

Work through [Installation](/docs/dd-cards/installation) first — dependencies, start order and the database — then
[Items & images](/docs/dd-cards/items) to register the six items in your inventory. After that the three
configuration pages cover every option that ships.
