Agency Docs
QBESXStandalone

Agency-Blackmarket V2 Configuración

Un mercado negro vivo para FiveM en QBCore, Qbox, ESX o totalmente standalone.

v2.0.0De pago6 Páginas

01Configuración

Instalación rápida · config.lua · Agency-Blackmarket V2

Descargar config.lua

--[[ ============================================================================ AGENCY BLACKMARKET V2 · CONFIG ---------------------------------------------------------------------------- Every option in this file does something. Prices, levels, dealers, drop points and police behaviour are all set here; wording is set in the locales/ folder or, for your own text that survives updates, in Config.Text at the bottom. Coordinates: stand where you want a dealer or a drop and read your position with any /coords tool, or use the admin page of /ablackmarket, which saves spots in game without touching this file. ============================================================================ ]] Config = {} -- ============================================================================= -- 1. GENERAL -- ============================================================================= Config.Locale = 'en' -- en de fr es pt it nl pl cs ro tr ru uk sv da fi hu hr el bg hi ja ko zh ar Config.Debug = false -- extra lines in the server console and F8 -- 'auto' finds QBCore, Qbox or ESX by itself and runs standalone when none of -- them is installed. Force one with 'qbcore', 'qbox', 'esx' or 'standalone'. Config.Framework = 'auto' -- 'auto' | 'ox' | 'qs' | 'framework' (qb-inventory, ps, lj, jpr and ESX) Config.Inventory = 'auto' Config.Currency = '$' -- written before every amount -- Admins: the ACE agency.blackmarket, group.admin, or one of these groups. Config.AdminGroups = { 'admin', 'god', 'superadmin' } -- Messages: Agency-Notify when it runs, otherwise the menu's own cards. -- Set to false to always use the menu's cards. Config.UseAgencyNotify = true -- ============================================================================= -- 2. MENU, INTERACTION AND COMMANDS -- ============================================================================= Config.Menu = { -- The one command of the resource. Opens your contacts anywhere: level, -- orders with waypoints, runs, messages, the Companion app and, for -- admins, the admin page. command = 'ablackmarket', key = '', -- default key for the command, '' = none (players can bind one in the GTA settings) item = nil, -- an item needed to open it anywhere, e.g. 'burnerphone'; nil = no item scale = 1.0, -- size of the menu, 0.8 to 1.3 } Config.Interaction = { key = 38, -- E, see docs.fivem.net/docs/game-references/controls keyLabel = 'E', -- what the prompt shows distance = 2.2, -- metres to a dealer or a drop -- 'auto' uses ox_target or qb-target when one runs, the prompt otherwise. -- 'ox_target' | 'qb-target' | false (always the prompt) target = 'auto', } -- ============================================================================= -- 3. MONEY -- ============================================================================= Config.Money = { -- How dirty money exists on this server: -- 'auto' ESX: the account below. Qbox: the item below. QBCore: the -- item below when ox_inventory knows it, marked bills otherwise. -- Standalone: the script keeps it (see Config.Standalone). -- 'markedbills' QBCore marked bills, one item carrying its worth -- 'item' a plain item where one piece is one dollar -- 'account' an account of the framework (ESX black_money) -- 'wallet' kept by this script dirty = 'auto', markedItem = 'markedbills', item = 'black_money', account = 'black_money', -- What the dealers take, in this order. The player picks in the basket -- when more than one is allowed. 'dirty' | 'cash' | 'bank' buyWith = { 'dirty', 'cash' }, -- Agency Pay from Agency Phone. When the phone runs on this server, the -- basket offers Agency Pay as well, for buying and for orders: the phone -- opens, the player confirms the payment there and the money comes from -- his bank account. Nothing to set up; enabled = false hides it. -- resource the name of the Agency Phone resource -- timeout seconds the player has to confirm on the phone agencyPay = { enabled = true, resource = 'agency-phone', timeout = 90 }, } -- ============================================================================= -- 4. REPUTATION -- ============================================================================= -- Five levels by default. `rep` is the reputation a level starts at; the -- rest are the perks of that level: -- buy % off every purchase -- sell % more for everything sold -- launder % the laundry keeps -- orders open orders at the same time Config.Reputation = { levels = { { name = 'Street Punk', rep = 0, buy = 0, sell = 0, launder = 25, orders = 1 }, { name = 'Small Timer', rep = 50, buy = 5, sell = 3, launder = 22, orders = 1 }, { name = 'Regular', rep = 150, buy = 10, sell = 6, launder = 20, orders = 2 }, { name = 'Trusted', rep = 300, buy = 15, sell = 9, launder = 17, orders = 2 }, { name = 'VIP', rep = 500, buy = 20, sell = 12, launder = 15, orders = 3 }, }, -- One point per `per` dollars, at least `min` per deal. gain = { buy = { per = 1000, min = 1 }, sell = { per = 1000, min = 1 }, launder = { per = 2500, min = 1 }, pickup = 2, -- extra points for collecting an order }, -- Points lost for walking out on a dealer. loss = { refuseSurcharge = { 3, 8 }, -- said no when the dealer wanted more refuseCut = { 5, 12 }, -- said no when the fence wanted a cut }, } -- ============================================================================= -- 5. DEALERS -- ============================================================================= -- Every dealer has his own places, his own stock and his own services: -- buy the market (items from Config.Items in his categories) -- orders orders for pickup at a drop point -- sell buys stolen goods (Config.Sell) -- launder washes dirty money (Config.Launder) -- jobs hands out courier runs (Config.Jobs) -- `rotate` minutes until he moves to another of his places, 0 = never. -- `hours` { from = 20, to = 6 } for night dealers, false = always there. -- `blip` mode 'always' (everyone), 'known' (players who dealt with him), -- 'never'. Sprites and colours: docs.fivem.net/docs/game-references/blips Config.Dealers = { { id = 'vince', label = 'Vince', role = 'Dealer', services = { buy = true, orders = true, jobs = true }, categories = { 'pistols', 'smgs', 'shotguns', 'rifles', 'melee', 'ammo', 'armor', 'tools' }, ped = { model = 's_m_y_dealer_01', scenario = 'WORLD_HUMAN_DRUG_DEALER' }, rotate = 120, hours = false, blip = { mode = 'always', sprite = 110, color = 1, scale = 0.8, label = 'Contact' }, places = { vector4(-1318.80, -906.91, 11.31, 200.0), vector4(-58.95, -1230.97, 28.84, 43.6), vector4(134.53, -1276.06, 29.32, 291.3), }, }, { id = 'marlow', label = 'Marlow', role = 'Fence', services = { sell = true, launder = true, jobs = true }, ped = { model = 'a_m_m_og_boss_01', scenario = 'WORLD_HUMAN_CLIPBOARD' }, -- The washing machine next to him. offset: metres to his right, in -- front, up. false = laundering happens right where he stands. laundry = { model = 'prop_washer_01', offset = vector3(1.8, 0.2, 0.0) }, rotate = 180, hours = false, blip = { mode = 'known', sprite = 500, color = 1, scale = 0.8, label = 'Fence' }, places = { vector4(-1143.72, -1547.31, 4.38, 35.4), vector4(-894.70, -1516.03, 5.02, 109.8), }, }, } -- Dealers show up for a player when he is this close, and vanish again past -- the second value. Their positions never reach players further away. Config.StreamDistance = { show = 120.0, hide = 160.0 } -- ============================================================================= -- 6. THE MARKET -- ============================================================================= Config.Categories = { { id = 'pistols', label = 'Pistols', icon = 'pistol' }, { id = 'smgs', label = 'SMGs', icon = 'smg' }, { id = 'shotguns', label = 'Shotguns', icon = 'shotgun' }, { id = 'rifles', label = 'Rifles', icon = 'rifle' }, { id = 'melee', label = 'Melee', icon = 'melee' }, { id = 'ammo', label = 'Ammunition', icon = 'ammo' }, { id = 'armor', label = 'Armor', icon = 'armor' }, { id = 'tools', label = 'Tools', icon = 'tools' }, } -- item the item name on QBCore and ESX (weapons: weapon_...) -- ox the name in ox_inventory when it differs (ammo, armour) -- price base price, the market moves it up and down (Config.Prices) -- level reputation level needed to buy it -- stock pieces per dealer, false = unlimited. Refills with Config.Stock. -- order true = can be ordered for pickup, 'only' = order only (never over the counter) -- ammo standalone only: the ammo type a piece gives, and how many rounds Config.Items = { -- Pistols { item = 'weapon_snspistol', label = 'SNS Pistol', category = 'pistols', price = 2400, level = 1, stock = 8, order = true }, { item = 'weapon_pistol', label = 'Pistol', category = 'pistols', price = 3000, level = 1, stock = 8, order = true }, { item = 'weapon_pistol50', label = 'Pistol .50', category = 'pistols', price = 4200, level = 2, stock = 5, order = true }, { item = 'weapon_revolver', label = 'Heavy Revolver', category = 'pistols', price = 5200, level = 3, stock = 3, order = true }, -- SMGs { item = 'weapon_microsmg', label = 'Micro SMG', category = 'smgs', price = 6500, level = 2, stock = 4, order = true }, { item = 'weapon_minismg', label = 'Mini SMG', category = 'smgs', price = 7200, level = 3, stock = 3, order = true }, { item = 'weapon_smg', label = 'SMG', category = 'smgs', price = 8500, level = 3, stock = 3, order = true }, -- Shotguns { item = 'weapon_sawnoffshotgun', label = 'Sawed-Off Shotgun', category = 'shotguns', price = 7800, level = 3, stock = 3, order = true }, { item = 'weapon_dbshotgun', label = 'Double Barrel Shotgun', category = 'shotguns', price = 8600, level = 3, stock = 2, order = true }, { item = 'weapon_pumpshotgun', label = 'Pump Shotgun', category = 'shotguns', price = 9800, level = 4, stock = 2, order = true }, -- Rifles { item = 'weapon_compactrifle', label = 'Compact Rifle', category = 'rifles', price = 11000, level = 4, stock = 2, order = true }, { item = 'weapon_assaultrifle', label = 'Assault Rifle', category = 'rifles', price = 13500, level = 4, stock = 2, order = 'only' }, { item = 'weapon_carbinerifle', label = 'Carbine Rifle', category = 'rifles', price = 15000, level = 5, stock = 1, order = 'only' }, -- Melee { item = 'weapon_bat', label = 'Baseball Bat', category = 'melee', price = 350, level = 1, stock = 10, order = true }, { item = 'weapon_crowbar', label = 'Crowbar', category = 'melee', price = 400, level = 1, stock = 8, order = true }, { item = 'weapon_knife', label = 'Knife', category = 'melee', price = 550, level = 1, stock = 10, order = true }, { item = 'weapon_switchblade', label = 'Switchblade', category = 'melee', price = 750, level = 1, stock = 8, order = true }, { item = 'weapon_knuckle', label = 'Brass Knuckles', category = 'melee', price = 650, level = 2, stock = 6, order = true }, { item = 'weapon_machete', label = 'Machete', category = 'melee', price = 950, level = 2, stock = 6, order = true }, -- Ammunition { item = 'pistol_ammo', ox = 'ammo-9', label = 'Pistol Ammo', category = 'ammo', price = 80, level = 1, stock = 60, order = true, ammo = { type = 'AMMO_PISTOL', rounds = 12 } }, { item = 'shotgun_ammo', ox = 'ammo-shotgun', label = 'Shotgun Ammo', category = 'ammo', price = 110, level = 2, stock = 30, order = true, ammo = { type = 'AMMO_SHOTGUN', rounds = 8 } }, { item = 'smg_ammo', ox = 'ammo-45', label = 'SMG Ammo', category = 'ammo', price = 120, level = 2, stock = 40, order = true, ammo = { type = 'AMMO_SMG', rounds = 20 } }, { item = 'rifle_ammo', ox = 'ammo-rifle', label = 'Rifle Ammo', category = 'ammo', price = 180, level = 3, stock = 30, order = true, ammo = { type = 'AMMO_RIFLE', rounds = 30 } }, -- Armor { item = 'armor', ox = 'armour', label = 'Body Armor', category = 'armor', price = 1200, level = 1, stock = 10, order = true, armour = 50 }, { item = 'heavyarmor', label = 'Heavy Armor', category = 'armor', price = 2400, level = 3, stock = 5, order = true, armour = 100 }, -- Tools { item = 'lockpick', label = 'Lockpick', category = 'tools', price = 180, level = 1, stock = 20, order = true }, { item = 'advancedlockpick', label = 'Advanced Lockpick', category = 'tools', price = 650, level = 2, stock = 10, order = true }, { item = 'electronickit', label = 'Electronic Kit', category = 'tools', price = 1800, level = 2, stock = 6, order = true }, { item = 'drill', label = 'Drill', category = 'tools', price = 2600, level = 3, stock = 4, order = true }, { item = 'thermite', label = 'Thermite', category = 'tools', price = 3900, level = 4, stock = 3, order = true }, { item = 'trojan_usb', label = 'Trojan USB', category = 'tools', price = 4800, level = 4, stock = 2, order = 'only' }, } -- Items your inventory does not know are left out on start, with one line in -- the server console naming them. Set false to keep them in the menu anyway. Config.HideUnknownItems = true -- Where the menu takes item pictures from. 'auto' reads them from the -- inventory that runs (ox, qs, qb, ps, lj, jpr). A URL of your own works too, -- e.g. 'https://cdn.example.com/items/' (the file name is added), and false -- shows the category icons instead. Config.Images = 'auto' -- ============================================================================= -- 7. PRICES, STOCK AND FLASH SALES -- ============================================================================= Config.Prices = { enabled = true, interval = 20, -- minutes between two price moves spread = 15, -- a price stays within this % around its base step = 6, -- a price moves at most this % per interval } Config.Stock = { enabled = true, refill = 30, -- minutes between two refills of an item amount = 2, -- pieces per refill, never above the item's stock } Config.FlashSale = { enabled = true, chance = 15, -- % per price move that a flash sale starts items = { 1, 3 }, -- how many items are on sale discount = { 15, 35 }, -- % off minutes = 15, -- Who hears about it in game: 'known' (players who dealt with the dealer -- before), 'all' or 'none'. The Companion app hears it either way. notify = 'known', } -- ============================================================================= -- 8. HAGGLING -- ============================================================================= -- Before paying, a player can haggle once: a needle sweeps a bar and he has to -- stop it in the gold zone. Hitting the middle gives the full discount. Config.Haggle = { enabled = true, discount = { 4, 15 }, -- % off on a hit, the middle of the zone gives the top zone = 16, -- width of the gold zone in % of the bar at level 1 zoneLevel = 2, -- the zone grows by this % per level above 1 period = 1.1, -- seconds for the needle to cross the bar once miss = 8, -- % added to this deal after a miss, 0 = the dealer just says no cooldown = 10, -- minutes before a player may haggle with the same dealer again } -- Now and then a dealer wants more before he hands anything over. Config.Surcharge = { enabled = true, chance = 12, -- % of purchases percent = { 10, 25 }, -- % on top -- Walking away: reputation loss (Config.Reputation.loss), a chance of a -- police alert and a chance the dealer leaves his spot. alert = 25, leave = 20, } -- ============================================================================= -- 9. SELLING TO THE FENCE -- ============================================================================= Config.Sell = { -- What the fence pays with: 'dirty' or 'cash'. With cash he keeps `cut` %. payout = 'dirty', cut = 15, -- Now and then the fence wants a cut to keep quiet after a sale. extortion = { chance = 12, percent = { 10, 20 }, alert = 30 }, items = { { item = 'rolex', label = 'Rolex Watch', price = { 700, 1200 }, level = 1 }, { item = 'goldchain', label = 'Gold Chain', price = { 350, 700 }, level = 1 }, { item = '10kgoldchain', label = '10k Gold Chain', price = { 900, 1500 }, level = 1 }, { item = 'diamond_ring', label = 'Diamond Ring', price = { 1100, 1900 }, level = 2 }, { item = 'goldbar', label = 'Gold Bar', price = { 2000, 3200 }, level = 2 }, { item = 'laptop', label = 'Laptop', price = { 600, 1100 }, level = 1 }, { item = 'tablet', label = 'Tablet', price = { 450, 900 }, level = 1 }, { item = 'security_card_01', label = 'Security Card A', price = { 500, 900 }, level = 2 }, { item = 'security_card_02', label = 'Security Card B', price = { 900, 1500 }, level = 3 }, { item = 'cryptostick', label = 'Crypto Stick', price = { 2000, 3500 }, level = 4 }, }, } -- ============================================================================= -- 10. LAUNDERING -- ============================================================================= Config.Launder = { min = 500, max = 50000, -- per wash cooldown = 5, -- minutes between two washes of one player -- How long the machine runs: base seconds plus seconds per 1,000, capped. time = { base = 8, per1000 = 0.5, max = 45 }, -- The fee comes from the player's level (Config.Reputation.levels.launder). alert = 20, -- % police alert chance -- Now and then the fence wants a cut first to keep quiet. cut = { chance = 12, percent = { 10, 20 } }, } -- ============================================================================= -- 11. ORDERS AND DROP POINTS -- ============================================================================= Config.Orders = { enabled = true, prep = { 5, 12 }, -- minutes until an order waits at its drop expire = 90, -- minutes a drop waits before the goods are gone refund = 50, -- % of an expired order that comes back as dealer credit maxPieces = 10, -- pieces per order alert = 30, -- % police alert chance while collecting pickupSeconds = 3, -- Ordering without standing at the dealer (menu anywhere and the app) is -- possible from this level on. false = only at the dealer. remoteLevel = 2, -- The bag or crate the goods lie in. prop = 'prop_cs_heist_bag_02', -- Drop points. Admins add more in game (/ablackmarket, admin page). With -- an empty list the places of all dealers serve as drops, never the one a -- dealer stands at. drops = { -- vector4(x, y, z, heading), }, } -- ============================================================================= -- 12. RUNS AND MESSAGES -- ============================================================================= -- Dealers with the `jobs` service hand out courier runs: pick something up -- at one place and hand it to a contact at another before the time runs out. -- Paid in dirty money plus reputation. A run can draw the police, and a run -- that is dropped or too late costs reputation. Config.Jobs = { enabled = true, offers = 3, -- open runs per dealer at a time refresh = 20, -- minutes until an open run nobody took is replaced cooldown = 5, -- minutes between two runs of one player pickupMinutes = 15, -- time to get to the pickup after taking a run minutes = { 8, 12 }, -- time from the pickup to the contact, more for long routes seconds = 3, -- picking up and handing over take this long fail = 6, -- reputation lost for a run that is dropped or too late alert = { pickup = 10, deliver = 15 }, -- % police alert chance, times the kind's alert contact = { model = 'g_m_y_famca_01', scenario = 'WORLD_HUMAN_SMOKING' }, blips = { pickup = { sprite = 478, color = 5 }, deliver = { sprite = 280, color = 2 }, }, -- What there is to move. level = reputation level needed, pay = dirty -- money, rep = reputation, alert = police chance multiplier, dealers = -- who hands it out (leave it out for every dealer with `jobs`). -- A prop the game does not know is replaced by the bag of the drops. kinds = { { id = 'package', label = 'Package', prop = 'prop_cs_package_01', level = 1, pay = { 1200, 2200 }, rep = { 4, 7 }, alert = 1.0 }, { id = 'cash', label = 'Money bag', prop = 'prop_money_bag_01', level = 2, pay = { 2500, 4000 }, rep = { 6, 10 }, alert = 1.3, dealers = { 'marlow' } }, { id = 'crate', label = 'Weapon crate', prop = 'prop_box_guncase_01a', level = 3, pay = { 4500, 7000 }, rep = { 9, 14 }, alert = 1.6, dealers = { 'vince' } }, }, -- Where runs start and end: vector4 points of your own. Empty = the drop -- points (Config.Orders.drops, the ones added in game, or the dealers' -- free places). points = {}, minDistance = 300.0, -- metres between pickup and contact, where the points allow it } -- The Messages page of /ablackmarket: what the dealers write. Orders waiting -- at a drop, runs, dealers who moved, flash sales and raids, each with a -- waypoint where it helps. Config.Messages = { enabled = true, keep = 30, -- messages kept per player welcome = true, -- new players get a first message from a dealer with his spot } -- ============================================================================= -- 13. POLICE -- ============================================================================= Config.Police = { jobs = { 'police', 'sheriff', 'bcso', 'sasp', 'state', 'lspd' }, onDutyOnly = true, minOnline = 0, -- dealers only trade with at least this many officers on duty blockCops = true, -- officers get nothing from a dealer nearby = 60.0, -- a dealer leaves when an officer comes this close away = 15, -- minutes he stays away before he turns up at another place -- % chance of an alert per action. alerts = { buy = 10, sell = 15, launder = 20, pickup = 30 }, -- runs: Config.Jobs.alert -- 'auto' finds ps-dispatch, cd_dispatch, qs-dispatch, rcore_dispatch, -- core_dispatch, tk_dispatch, lb-tablet or origen_police. 'default' sends -- a map blip and a message to the officers. 'custom' calls customAlert -- below. 'none' turns alerts off. dispatch = 'auto', -- The title comes from the language file; add title = 'Your text' to set your own. alert = { code = '10-66', blip = { sprite = 51, color = 1, scale = 1.0, seconds = 120 } }, -- customAlert = function(coords, data) end, -- data = { code, title, message, kind, source } } -- Standalone: players with the ACE in Config.Standalone.policeAce count as officers. -- ============================================================================= -- 14. ACCESS -- ============================================================================= Config.Access = { jobs = {}, -- only these jobs may trade, empty = everyone items = {}, -- items a player must carry to talk to a dealer, e.g. { 'burnerphone' } } -- ============================================================================= -- 15. STANDALONE -- ============================================================================= -- Without QBCore, Qbox or ESX: -- works: dealers, prices, stock, haggling, reputation, orders, runs, -- messages, the app. Weapons, ammo and armour go straight to the -- player. -- money: 'auto' uses Agency-Banking when it runs, otherwise the script's -- own wallet (cash and dirty money, admins can top it up with -- /ablackmarket). 'hooks' uses the functions below. -- fill in: other items (tools, stolen goods) need the item hooks below; -- without them those items are left out of the menus. Config.Standalone = { money = 'auto', -- 'auto' | 'banking' | 'wallet' | 'hooks' policeAce = 'agency.police', -- players with this ACE count as officers adminAce = 'agency.blackmarket', -- getMoney = function(src, account) return 0 end, -- account: 'cash' | 'bank' | 'dirty' -- addMoney = function(src, account, amount) return true end, -- removeMoney = function(src, account, amount) return true end, -- itemCount = function(src, item) return 0 end, -- addItem = function(src, item, amount) return true end, -- removeItem = function(src, item, amount) return true end, } -- ============================================================================= -- 16. STORAGE -- ============================================================================= -- Reputation, stock, orders and the app's devices are saved in the database -- (table agency_blackmarket, created by itself) when oxmysql runs, otherwise -- in the server's own key value store. Reputation from V1 -- (blackmarket_reputation) is taken over once, automatically. Config.Storage = 'auto' -- 'auto' | 'mysql' | 'kvp' -- ============================================================================= -- 17. COMPANION APP -- ============================================================================= -- The Agency Companion app (iOS and Android) shows the market, prices, stock -- and the player's level, orders for pickup, finds the dealers -- and tells about moved dealers, ready orders, flash sales and raids. Config.Companion = { enabled = true, relay = 'https://api.agencyg.de', qrSeconds = 300, -- how long a pairing code stays valid maxDevices = 3, -- phones per player locateLevel = 1, -- from this level on the app (and the menu) can set a waypoint to a dealer (1 = everyone) } -- ============================================================================= -- 18. LOGS -- ============================================================================= Config.Logs = { webhook = '', -- a Discord webhook URL, '' = off console = false, -- also print every deal in the server console (admin actions always are) events = { buy = true, sell = true, launder = true, orders = true, jobs = true, admin = true }, } -- ============================================================================= -- 19. YOUR OWN WORDING -- ============================================================================= -- Any key from locales/en.lua, set here, beats every language file and -- survives updates. Example: Config.Text = { prompt_talk = 'Talk to {name}' } Config.Text = {}

02Archivo SQL

Opcional: el recurso crea estas tablas por sí mismo al iniciarse. Importa este archivo solo si preparas la base de datos a mano:

-- Agency Blackmarket V2 -- The resource creates this table by itself when oxmysql runs. Run this file -- only if your database user may not create tables. CREATE TABLE IF NOT EXISTS `agency_blackmarket` ( `scope` VARCHAR(16) NOT NULL, `id` VARCHAR(96) NOT NULL, `data` LONGTEXT NOT NULL, `updated` INT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`scope`, `id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- V1 kept reputation in `blackmarket_reputation`. V2 takes it over once on its -- first start; the old table can be dropped afterwards: -- DROP TABLE IF EXISTS `blackmarket_reputation`;

+Conviene saber

Cada opción de config.lua hace algo, en 19 secciones que van de los dealers a tus propios textos. Los lugares de los dealers y los puntos de entrega también se pueden añadir en el juego desde la página Admin, sin tocar el archivo.

Dealers
Config.Dealers define cada dealer: sus servicios (buy, orders, sell, launder), sus categorías, el ped y su escenario, los minutos hasta que se traslada (rotate), el horario, el modo del blip (always, known o never) y sus lugares. El perista tiene una lavadora al lado, colocada con un desplazamiento.
Objetos, precios y stock
Cada entrada de Config.Items tiene un precio base, el nivel necesario, el stock por dealer y si se puede pedir (true, o 'only' para solo por pedido). Config.Prices fija cada cuánto y cuánto se mueven los precios, Config.Stock lo rápido que se repone el stock y Config.FlashSale cada cuánto empieza una oferta, para cuántos objetos y con qué descuento.
Regateo y recargos
Config.Haggle fija el descuento, el ancho de la zona dorada y cuánto crece por nivel, la velocidad de la aguja, el sobreprecio tras un fallo y la espera por dealer. Config.Surcharge fija cada cuánto un dealer quiere más, cuánto, y la probabilidad de una alerta a la policía o de que el dealer se vaya cuando un jugador se niega.
Pedidos y puntos de entrega
Config.Orders fija el tiempo de preparación, cuánto espera una entrega, la parte que vuelve como crédito, las piezas por pedido, la probabilidad de alerta, el nivel para pedir desde cualquier parte y el modelo de la bolsa. Los puntos de entrega van en drops; con la lista vacía, los lugares de todos los dealers sirven de entrega, nunca aquel donde está un dealer.
Policía
Config.Police enumera los trabajos de policía, si solo cuentan los agentes de servicio, cuántos deben estar conectados, si los policías no reciben nada de un dealer, la distancia que hace irse a un dealer y por cuánto tiempo, la probabilidad de alerta por acción y el sistema de dispatch.
Standalone
Config.Standalone.money elige Agency-Banking, la cartera propia del script o tus propios hooks para el dinero. Los hooks de objetos conectan cualquier inventario. Los policías y los admins son los jugadores con el ACE fijado en policeAce y adminAce.
Encargos y mensajes
Config.Jobs fija cuántos encargos ofrece cada dealer, cada cuánto cambian, la pausa entre dos encargos, el tiempo hasta la recogida y hasta el contacto, y la paga, la reputación y el riesgo policial de cada tipo de encargo. El servicio jobs en Config.Dealers decide quién los reparte. Config.Messages activa la página Mensajes, cuántos mensajes se guardan y el primer mensaje para jugadores nuevos.
Agency Pay
Config.Money.agencyPay activa o desactiva Agency Pay (activado por defecto), indica el recurso de Agency Phone y fija cuántos segundos tiene el jugador para confirmar en el móvil, 90 por defecto. Sin Agency Phone en el servidor, la cesta no lo ofrece.

?Preguntas frecuentes

¿Cómo añado un lugar de dealer sin editar el archivo?

Abre /ablackmarket como admin, ve a la página Admin y usa Añadir mi posición en el dealer, o añade un punto de entrega en la pestaña Entregas. Estos lugares se guardan y sobreviven a los reinicios.

¿Cómo uso mis propios textos?

Pon cualquier clave de locales/en.lua en Config.Text, por ejemplo Config.Text = { prompt_talk = 'Talk to {name}' }. Tiene prioridad sobre todos los archivos de idioma y sobrevive a las actualizaciones.

¿Sigues atascado después de esta página? Nuestro soporte se encarga.