# RedStudio - red-taxi
`red-taxinpc` is an NPC taxi carriage job script for RedM/VORP.
## Main Features
- Dispatcher NPC + prompt interaction + NUI join/resign menu
- Taxi shift session per player with server-side state tracking
- Taxi carriage spawn at configured point (with spawn area validation)
- Ride loop: enter carriage -> receive route -> pickup passenger -> deliver to destination
- Route assignment with configurable pickup mode:
- `random`
- `nearest`
- `first_random_then_nearest`
- Distance-based fare calculation with configurable `base`, `perMeter`, `min`, and `max`
- Server-side security checks for start distance, destination validation, and minimum ride time
- Automatic follow-up rides while player remains on duty
- Configurable locale texts, blips, markers, NPC/carriage models, and ride points in `config.lua`
## Dependencies
- `vorp_core`
## Installation
1. Place folder in:
- `resources/[redstudio]/red-taxinpc`
2. Ensure dependency order in `server.cfg`:
```cfg
ensure vorp_core
ensure red-taxinpc
```
3. Restart resource/server:
```cfg
restart red-taxinpc
```
## Configuration
All settings are in `config.lua`.
Main blocks:
- `Config.Dispatcher`: dispatcher NPC position/model/prompt settings
- `Config.Carriage`: carriage model and spawn settings
- `Config.Passenger`: passenger models and boarding/dropoff timings
- `Config.Job`: pickup points, destinations, pickup mode, fare formula
- `Config.Blips`: dispatcher/objective blips and labels
- `Config.Markers`: objective marker style and draw distance
- `Config.Security`: server validation distances + minimum ride time
- `Config.Locale`: prompt labels, UI text, and notifications
## Ride Flow
1. Talk to dispatcher and start taxi shift.
2. Taxi carriage is spawned at `Config.Carriage.spawn`.
3. Enter the carriage as driver to request a ride.
4. Drive to assigned pickup point and passenger boards.
5. Drive passenger to destination marker.
6. Server validates completion and pays money reward.
7. If still on duty, a new ride can be assigned automatically.
## Notes
- Money payout is handled server-side through VORP character currency (`money` / currency id `0`).
- No database setup is required.
- If carriage is lost or player dies, active shift is canceled.
- Resource includes an HTML/CSS/JS NUI panel in `ui/`.