Postman
Postman
Overview
The Postman script introduces a new job role for players in your GTA V roleplay server, allowing them to take on the responsibilities of a postman. Players can engage in delivering items, enhancing the roleplay experience with a unique job that includes specific tasks and interactions. The script is designed to be user-friendly, integrating seamlessly with existing frameworks and providing a straightforward setup process.
Compatibility
Framework: ESX, QBCore, QBox, Standalone
Target: ox_target, qb-target, or qtarget (optional) — falls back to 3D text / TextUI if none are installed
Dependencies
Required Dependencies
- ox_lib
- es_extended
Optional Dependencies
- ox_target or qb-target or qtarget
- qb-core
Installation
1. Upload the resource
Place the resource folder inside your server's resources directory (rename it to drc_postman if needed).
2. Install dependencies
Make sure all of the following are installed and started before this script:
ox_libes_extended
3. Import database
This script uses a database. Run the following SQL on your server's database:
INSERT INTO `addon_account` (name, label, shared) VALUES
('society_postman', 'postman', 1)
;
INSERT INTO `addon_inventory` (name, label, shared) VALUES
('society_postman', 'postman', 1)
;
INSERT INTO `datastore` (name, label, shared) VALUES
('society_postman', 'postman', 1)
;
INSERT INTO `jobs` (name, label) VALUES
('postman', 'postman')
;
INSERT INTO `job_grades` (job_name, grade, name, label, salary, skin_male, skin_female) VALUES
('postman',0,'worker','Worker',120,'{}','{}')
;
4. Add to server.cfg
ensure ox_lib
ensure es_extended
ensure drc_postman
5. Configure the script
Open the config file and adjust the settings for your server. See the Config section below.
6. Restart and test
Restart your server (or start the resource) and test it in-game, e.g. with /testnewspaper.
Config
drc_postman/config.lua
Config = {}
Config.Locale = 'en'
Config.Framework = 'esx' --qbcore or esx
Config.Debug = false
Config.NewESX = true
Config.RequireJob = false -- if player must have job to use job !
Config.HaveToReturnVehicle = true
Config.Job = 'postman' -- Job that player need only if RequireJob = true
Config.MustCollectMail = 2 -- how many mailboxes player have to search to deliver
Config.MenuSystem = 'ox_lib' -- ox_lib or qb-menu
Config.Progress = 'ox_lib' -- progressbar qbcore or ox_lib
Config.InteractionType = 'target'
Config.FrameworkTarget = 'ox_target'
Config.TextUI = 'ox_lib'
Config.KeySystem = 'none' -- 'none' | 'qs' | 'wasabi' | 'fivecode' | 'qbcore'
Config.Blip = {
Pos = {133.0846, 96.6472, 82.5077},
Sprite = 478,
Display = 4,
Scale = 1.0,
Colour = 28,
ShortRange = true,
Name = "PostMan Job"
}
Config.JobBlips = {
NewsPaperJob = {
Sprite = 677,
Scale = 0.7,
Colour = 3,
Name = 'Customer'
}
}
Config.Models = { [`prop_postbox_01a`] = true }
Config.Station = {
StartJob = vec4(133.0846, 96.6472, 82.5077, 165.9935),
VehicleReturn = vec3(0.0, 0.0, 0.0)
}
Config.PackageMissions = {
VehModel = "boxville2",
SpawningLocation = {
vec4(116.5942, 99.3684, 80.9223, 253.9421),
vec4(116.5942, 99.3684, 80.9223, 253.9421),
vec4(116.5942, 99.3684, 80.9223, 253.9421),
vec4(116.5942, 99.3684, 80.9223, 253.9421)
},
Missions = {
{
CustomerLocation = vec4(144.0351, -113.3718, 62.6999, 72.9381),
Package = {
name = "Mr. Randal",
description = "Description for Mr. Randal's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-245.8687, 156.3511, 74.0553, 271.4615),
Package = {
name = "Mrs. Smith",
description = "Description for Mrs. Smith's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-264.1396, 92.0514, 68.2702, 277.5085),
Package = {
name = "Ms. Johnson",
description = "Description for Ms. Johnson's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-67.7084, 28.5968, 71.2096, 337.2853),
Package = {
name = "Mrs. Williams",
description = "Description for Mrs. Williams's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(349.3533, 173.3884, 102.0949, 212.1818),
Package = {
name = "Miss Thompson",
description = "Description for Miss Thompson's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(320.5, 200.1, 104.2, 180.0),
Package = {
name = "Mr. Martinez",
description = "Description for Mr. Martinez's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-160.7, 289.2, 93.3, 90.0),
Package = {
name = "Dr. Jenkins",
description = "Description for Dr. Jenkins's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-100.4, 140.9, 81.5, 260.0),
Package = {
name = "Prof. Rodriguez",
description = "Description for Prof. Rodriguez's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(25.7, 145.3, 74.2, 310.0),
Package = {
name = "Mr. Wilson",
description = "Description for Mr. Wilson's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(190.8, 100.1, 78.6, 190.0),
Package = {
name = "Mrs. Davis",
description = "Description for Mrs. Davis's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
},
{
CustomerLocation = vec4(-50.3, 75.2, 72.4, 225.0),
Package = {
name = "Mr. Taylor",
description = "Description for Mr. Taylor's package",
health = 100
},
Rewards = {
Salary = { min = 100, max = 500 }, --between 100 and 500
Experience = 1
}
}
},
}