Skip to content

πŸ”« Weapon Customization ​

VORPZoo Weapon Customization

πŸ›’ Buy on zoo-scripts.com

Lay your gun on the gunsmith counter and work on it: parts, metals, engravings and tints, chosen on a live top-down view of the real weapon and kept per serial number.

Features ​

  • The real counter experience. The player lays the weapon down with the game's own gunsmith animation and picks it back up the same way, over a live top-down view of the actual weapon.
  • 30 weapons catalogued. Pistols, revolvers, repeaters, rifles, shotguns, bows and the hunting knife: the set the game itself customizes, each with its own parts, poses and close-up angles.
  • Parts, metals, engravings and tints. Every piece is priced in an open prices file (765 rows). A piece can cost cash, gold, or both. The till charges only what the visit adds, and takes nothing unless the player can cover the whole order.
  • Saved per serial number. Every weapon keeps its own look, and it follows the gun through a stash, a trade or a drop. Storage is automatic, there is no SQL file to run.
  • The room watches the bench. Players nearby see the weapon on the counter and every part fitted to it, live, as the smith works.
  • Walk up and watch. A second prompt at a counter in use gives you the smith's own view of the bench. No menu, no prompt, and the camera does not move. Watching is not work, so the job lists do not gate it: anyone may stand and look.
  • One smith at a bench. A counter already in use turns the next player away instead of opening a second view over the same gun stand.
  • Job-gated shops. Each city lists the jobs allowed to use its counter, and job changes reach the player instantly. Config.CanUse replaces the whole gate with a rule of your own, checked on the server.
  • A counter can specialise. Give a shop a weapons list and it works on those and nothing else: a knife bench, a rifle bench, a bow bench.
  • A Discord log of every order. Who ordered and as which character, what was paid, the weapon and its serial, whether it is that gun's first time at the counter, and every part changed, old piece to new with its price.
  • Push to talk at the counter. Voice keeps working while the menu is open (Config.talkinmenu).
  • The order ring takes you there. Click a piece in the ring and the menu opens on that option's row.
  • The gunsmith's own sounds. Browsing left and right, the till on a purchase, gold being spent, a locked counter, an order the player cannot cover.
  • 5 languages. English, Arabic, French, Spanish, German. A missing line falls back to English, never to a blank label.
  • In-place setup tool. /setupshop lays a weapon on any counter you stand at, lets you frame it on screen, and hands you a ready-to-paste Config.Locations block.
  • Nothing runs when nothing is happening. No tick and no per-frame work once a gun wears its look. resmon reads 0.00 ms at rest.
  • A built-in version checker prints update notices in the server console.

Requirements ​

DependencyUsed for
vorp_corecharacter, money and job data
oxmysqlstorage

Installation ​

  1. Drop zoo_weaponcustomization into your resources.

  2. Add it to your server.cfg, after the dependencies:

    ini
    ensure vorp_core
    ensure oxmysql
    ensure zoo_weaponcustomization
  3. Start the server. The database table is created automatically, there is no SQL file to run.

  4. Set Config.inventory to match your inventory: see Notes for VORP servers.

Configuration ​

Everything below lives in config/config.lua. Prices are in config/prices.lua, one row per piece with cash and gold columns. Config, prices and every locale file are open to edit.

OptionDefaultWhat it does
Config.locale'en'menu language: en, ar, fr, es, de
Config.Debugfalseopens the /setupshop setup tool, and prints players' script errors in the server console
Config.promptkey0x760A9C6F (G)key that opens the counter
Config.prompttext'Show weapon'what the prompt reads
Config.promptrange3.0how close the prompt shows, in metres
Config.exitkey0x156F7119 (Backspace)key that closes the menu
Config.talkinmenutruepush to talk works while the menu is open
Config.showserialtrueshow the serial under the weapon name
Config.watcherstrueplayers nearby see the gun on the bench
Config.watcherrange25.0how far the bench can be seen, in metres
Config.watchercamtruelet anyone watch a counter in use
Config.watchkey0xCEFD9220 (E)key that starts watching
Config.watchtext'Watch'what the watch prompt reads
Config.blipspritegunsmith iconmap blip sprite
Config.bliplabel'Weapon Customization'map blip name; a shop can override it
Config.jobonlytrueonly the jobs each shop lists may work
Config.jobrank0lowest job grade served
Config.CanUsenot setyour own server-side rule for who may work
Config.Locations5 citiesthe shops: stand, counter, jobs, weapons

Discord log ​

Set in config/config.lua. An order that changes nothing is not posted.

OptionDefaultWhat it does
Config.Webhook.Enabledfalsepost every order to Discord
Config.Webhook.Url''the channel's webhook address
Config.Webhook.Name'Gunsmith'the name the messages are posted under
Config.Webhook.Color13938487the colour of the message's side bar

Adding a shop ​

Set Config.Debug = true, restart, stand where the smith should stand and type /setupshop with a weapon in hand. Frame the gun with the on-screen panel, press Copy, and paste the block into Config.Locations. Turn Config.Debug back off when you are done.

A shop entry takes an optional weapons list. With one, that counter works on those weapons only, on the client and on the server both.

lua
{ name    = 'Valentine',
  blip    = true,
  jobs    = { 'gunsmith' },
  stand   = { x = -277.05, y = 778.75, z = 119.50, h = 275.00 },
  counter = { x = -276.175, y = 778.730, z = 119.550 },
  weapons = { 'WEAPON_MELEE_KNIFE' },   -- leave out to take everything
},

And an optional rule of your own, in place of the job lists:

lua
Config.CanUse = function(source, shop)
    return exports['my_tribes']:IsInTribe(source, 'wapiti')
end

Notes for VORP servers ​

Set Config.inventory to match your inventory ​

Use 'v2' for the rewritten vorp_inventory-v2, and 'v1' for 4.5 and older. Its version line is in vorp_inventory/fxmanifest.lua. Set wrong, weapons come out of the satchel bare or a pair of one model shares a look. The console says which inventory it found at start, and warns in red when the setting does not match.

The inventory is not named in dependencies on purpose: it ships under two folder names and a dependency can only name one. Nothing here calls it directly.

vorp_weaponsv2 cannot run as it ships ​

It paints the weapon's saved parts on the ped on every equip, on top of what is fitted here, and its gunsmith counter stands where this one does. Two small edits fix both, and you should keep vorp_weaponsv2, because it is VORP's ammo system. See vorp_weaponsv2 next to Weapon Customization.

Coming from another weapons script ​

Your players can keep their existing customizations. See Switching from another weapons script.

Prices in gold ​

The gold price column charges the gold account. Every bundled price uses cash only.

Zoo Scripts. Commercial resources, redistribution or resale is not permitted.