Need help? Join our Discord for support and updates

Postman

v1.0.0JobESXQBQBOX
On this page

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_lib
  • es_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
          }
        }
    },
}
Last updated 7/12/2026Browse all docs →