├── html ├── Roboto-Regular.ttf ├── images │ ├── WEAPON_BAT.png │ ├── WEAPON_MG.png │ ├── WEAPON_RPG.png │ ├── WEAPON_SMG.png │ ├── WEAPON_BALL.png │ ├── WEAPON_BZGAS.png │ ├── WEAPON_FLARE.png │ ├── WEAPON_KNIFE.png │ ├── WEAPON_APPISTOL.png │ ├── WEAPON_BOTTLE.png │ ├── WEAPON_COMBATMG.png │ ├── WEAPON_CROWBAR.png │ ├── WEAPON_DAGGER.png │ ├── WEAPON_FIREWORK.png │ ├── WEAPON_FLAREGUN.png │ ├── WEAPON_GOLFCLUB.png │ ├── WEAPON_GRENADE.png │ ├── WEAPON_HAMMER.png │ ├── WEAPON_HATCHET.png │ ├── WEAPON_KNUCKLE.png │ ├── WEAPON_MACHETE.png │ ├── WEAPON_MICROSMG.png │ ├── WEAPON_MINIGUN.png │ ├── WEAPON_MINISMG.png │ ├── WEAPON_MOLOTOV.png │ ├── WEAPON_MUSKET.png │ ├── WEAPON_PIPEBOMB.png │ ├── WEAPON_PISTOL.png │ ├── WEAPON_PISTOL50.png │ ├── WEAPON_POOLCUE.png │ ├── WEAPON_PROXMINE.png │ ├── WEAPON_RAILGUN.png │ ├── WEAPON_REVOLVER.png │ ├── WEAPON_SMG_MK2.png │ ├── WEAPON_SNOWBALL.png │ ├── WEAPON_STUNGUN.png │ ├── WEAPON_WRENCH.png │ ├── WEAPON_ASSAULTSMG.png │ ├── WEAPON_BATTLEAXE.png │ ├── WEAPON_COMBATPDW.png │ ├── WEAPON_DBSHOTGUN.png │ ├── WEAPON_FLASHLIGHT.png │ ├── WEAPON_GUSENBERG.png │ ├── WEAPON_NIGHTSTICK.png │ ├── WEAPON_PETROLCAN.png │ ├── WEAPON_PISTOL_MK2.png │ ├── WEAPON_RAYCARBINE.png │ ├── WEAPON_RAYMINIGUN.png │ ├── WEAPON_RAYPISTOL.png │ ├── WEAPON_SNSPISTOL.png │ ├── WEAPON_STICKYBOMB.png │ ├── WEAPON_ADVANCEDRIFLE.png │ ├── WEAPON_ASSAULTRIFLE.png │ ├── WEAPON_AUTOSHOTGUN.png │ ├── WEAPON_BULLPUPRIFLE.png │ ├── WEAPON_CARBINERIFLE.png │ ├── WEAPON_CERAMICPISTOL.png │ ├── WEAPON_COMBATMG_MK2.png │ ├── WEAPON_COMBATPISTOL.png │ ├── WEAPON_COMPACTRIFLE.png │ ├── WEAPON_DOUBLEACTION.png │ ├── WEAPON_HEAVYPISTOL.png │ ├── WEAPON_HEAVYSHOTGUN.png │ ├── WEAPON_HEAVYSNIPER.png │ ├── WEAPON_MACHINEPISTOL.png │ ├── WEAPON_MARKSMANRIFLE.png │ ├── WEAPON_NAVYREVOLVER.png │ ├── WEAPON_PERICOPISTOL.png │ ├── WEAPON_PUMPSHOTGUN.png │ ├── WEAPON_REVOLVER_MK2.png │ ├── WEAPON_SMOKEGRENADE.png │ ├── WEAPON_SNIPERRIFLE.png │ ├── WEAPON_SNSPISTOL_MK2.png │ ├── WEAPON_STONE_HATCHET.png │ ├── WEAPON_SWITCHBLADE.png │ ├── WEAPON_VINTAGEPISTOL.png │ ├── WEAPON_ASSAULTSHOTGUN.png │ ├── WEAPON_BULLPUPSHOTGUN.png │ ├── WEAPON_COMPACTLAUNCHER.png │ ├── WEAPON_GRENADELAUNCHER.png │ ├── WEAPON_HEAVYSNIPER_MK2.png │ ├── WEAPON_HOMINGLAUNCHER.png │ ├── WEAPON_MARKSMANPISTOL.png │ ├── WEAPON_PUMPSHOTGUN_MK2.png │ ├── WEAPON_SAWNOFFSHOTGUN.png │ ├── WEAPON_SPECIALCARBINE.png │ ├── WEAPON_ASSAULTRIFLE_MK2.png │ ├── WEAPON_BULLPUPRIFLE_MK2.png │ ├── WEAPON_CARBINERIFLE_MK2.png │ ├── WEAPON_FIREEXTINGUISHER.png │ ├── WEAPON_MARKSMANRIFLE_MK2.png │ └── WEAPON_SPECIALCARBINE_MK2.png ├── index.html ├── app.js └── style.css ├── fxmanifest.lua ├── strings.lua ├── README.md ├── client ├── functions.lua └── client.lua ├── server ├── updater.lua └── server.lua └── config.lua /html/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/Roboto-Regular.ttf -------------------------------------------------------------------------------- /html/images/WEAPON_BAT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BAT.png -------------------------------------------------------------------------------- /html/images/WEAPON_MG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MG.png -------------------------------------------------------------------------------- /html/images/WEAPON_RPG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_RPG.png -------------------------------------------------------------------------------- /html/images/WEAPON_SMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SMG.png -------------------------------------------------------------------------------- /html/images/WEAPON_BALL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BALL.png -------------------------------------------------------------------------------- /html/images/WEAPON_BZGAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BZGAS.png -------------------------------------------------------------------------------- /html/images/WEAPON_FLARE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_FLARE.png -------------------------------------------------------------------------------- /html/images/WEAPON_KNIFE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_KNIFE.png -------------------------------------------------------------------------------- /html/images/WEAPON_APPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_APPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_BOTTLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BOTTLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMBATMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMBATMG.png -------------------------------------------------------------------------------- /html/images/WEAPON_CROWBAR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_CROWBAR.png -------------------------------------------------------------------------------- /html/images/WEAPON_DAGGER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_DAGGER.png -------------------------------------------------------------------------------- /html/images/WEAPON_FIREWORK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_FIREWORK.png -------------------------------------------------------------------------------- /html/images/WEAPON_FLAREGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_FLAREGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_GOLFCLUB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_GOLFCLUB.png -------------------------------------------------------------------------------- /html/images/WEAPON_GRENADE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_GRENADE.png -------------------------------------------------------------------------------- /html/images/WEAPON_HAMMER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HAMMER.png -------------------------------------------------------------------------------- /html/images/WEAPON_HATCHET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HATCHET.png -------------------------------------------------------------------------------- /html/images/WEAPON_KNUCKLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_KNUCKLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_MACHETE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MACHETE.png -------------------------------------------------------------------------------- /html/images/WEAPON_MICROSMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MICROSMG.png -------------------------------------------------------------------------------- /html/images/WEAPON_MINIGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MINIGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_MINISMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MINISMG.png -------------------------------------------------------------------------------- /html/images/WEAPON_MOLOTOV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MOLOTOV.png -------------------------------------------------------------------------------- /html/images/WEAPON_MUSKET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MUSKET.png -------------------------------------------------------------------------------- /html/images/WEAPON_PIPEBOMB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PIPEBOMB.png -------------------------------------------------------------------------------- /html/images/WEAPON_PISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_PISTOL50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PISTOL50.png -------------------------------------------------------------------------------- /html/images/WEAPON_POOLCUE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_POOLCUE.png -------------------------------------------------------------------------------- /html/images/WEAPON_PROXMINE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PROXMINE.png -------------------------------------------------------------------------------- /html/images/WEAPON_RAILGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_RAILGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_REVOLVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_REVOLVER.png -------------------------------------------------------------------------------- /html/images/WEAPON_SMG_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SMG_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_SNOWBALL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SNOWBALL.png -------------------------------------------------------------------------------- /html/images/WEAPON_STUNGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_STUNGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_WRENCH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_WRENCH.png -------------------------------------------------------------------------------- /html/images/WEAPON_ASSAULTSMG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_ASSAULTSMG.png -------------------------------------------------------------------------------- /html/images/WEAPON_BATTLEAXE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BATTLEAXE.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMBATPDW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMBATPDW.png -------------------------------------------------------------------------------- /html/images/WEAPON_DBSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_DBSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_FLASHLIGHT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_FLASHLIGHT.png -------------------------------------------------------------------------------- /html/images/WEAPON_GUSENBERG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_GUSENBERG.png -------------------------------------------------------------------------------- /html/images/WEAPON_NIGHTSTICK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_NIGHTSTICK.png -------------------------------------------------------------------------------- /html/images/WEAPON_PETROLCAN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PETROLCAN.png -------------------------------------------------------------------------------- /html/images/WEAPON_PISTOL_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PISTOL_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_RAYCARBINE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_RAYCARBINE.png -------------------------------------------------------------------------------- /html/images/WEAPON_RAYMINIGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_RAYMINIGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_RAYPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_RAYPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_SNSPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SNSPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_STICKYBOMB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_STICKYBOMB.png -------------------------------------------------------------------------------- /html/images/WEAPON_ADVANCEDRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_ADVANCEDRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_ASSAULTRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_ASSAULTRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_AUTOSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_AUTOSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_BULLPUPRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BULLPUPRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_CARBINERIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_CARBINERIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_CERAMICPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_CERAMICPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMBATMG_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMBATMG_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMBATPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMBATPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMPACTRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMPACTRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_DOUBLEACTION.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_DOUBLEACTION.png -------------------------------------------------------------------------------- /html/images/WEAPON_HEAVYPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HEAVYPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_HEAVYSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HEAVYSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_HEAVYSNIPER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HEAVYSNIPER.png -------------------------------------------------------------------------------- /html/images/WEAPON_MACHINEPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MACHINEPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_MARKSMANRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MARKSMANRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_NAVYREVOLVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_NAVYREVOLVER.png -------------------------------------------------------------------------------- /html/images/WEAPON_PERICOPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PERICOPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_PUMPSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PUMPSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_REVOLVER_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_REVOLVER_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_SMOKEGRENADE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SMOKEGRENADE.png -------------------------------------------------------------------------------- /html/images/WEAPON_SNIPERRIFLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SNIPERRIFLE.png -------------------------------------------------------------------------------- /html/images/WEAPON_SNSPISTOL_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SNSPISTOL_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_STONE_HATCHET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_STONE_HATCHET.png -------------------------------------------------------------------------------- /html/images/WEAPON_SWITCHBLADE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SWITCHBLADE.png -------------------------------------------------------------------------------- /html/images/WEAPON_VINTAGEPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_VINTAGEPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_ASSAULTSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_ASSAULTSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_BULLPUPSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BULLPUPSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_COMPACTLAUNCHER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_COMPACTLAUNCHER.png -------------------------------------------------------------------------------- /html/images/WEAPON_GRENADELAUNCHER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_GRENADELAUNCHER.png -------------------------------------------------------------------------------- /html/images/WEAPON_HEAVYSNIPER_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HEAVYSNIPER_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_HOMINGLAUNCHER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_HOMINGLAUNCHER.png -------------------------------------------------------------------------------- /html/images/WEAPON_MARKSMANPISTOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MARKSMANPISTOL.png -------------------------------------------------------------------------------- /html/images/WEAPON_PUMPSHOTGUN_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_PUMPSHOTGUN_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_SAWNOFFSHOTGUN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SAWNOFFSHOTGUN.png -------------------------------------------------------------------------------- /html/images/WEAPON_SPECIALCARBINE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SPECIALCARBINE.png -------------------------------------------------------------------------------- /html/images/WEAPON_ASSAULTRIFLE_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_ASSAULTRIFLE_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_BULLPUPRIFLE_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_BULLPUPRIFLE_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_CARBINERIFLE_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_CARBINERIFLE_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_FIREEXTINGUISHER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_FIREEXTINGUISHER.png -------------------------------------------------------------------------------- /html/images/WEAPON_MARKSMANRIFLE_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_MARKSMANRIFLE_MK2.png -------------------------------------------------------------------------------- /html/images/WEAPON_SPECIALCARBINE_MK2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wasabirobby/wasabi_blackmarket/HEAD/html/images/WEAPON_SPECIALCARBINE_MK2.png -------------------------------------------------------------------------------- /fxmanifest.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | fx_version 'cerulean' 6 | 7 | game 'gta5' 8 | 9 | lua54 'yes' 10 | 11 | ui_page 'html/index.html' 12 | 13 | author 'wasabirobby' 14 | 15 | version '1.0.8' 16 | 17 | files { 18 | 'html/index.html', 19 | 'html/style.css', 20 | 'html/app.js', 21 | 'html/logo.png', 22 | 'html/Roboto-Regular.ttf', 23 | 'html/images/**.png' 24 | } 25 | 26 | server_scripts { 27 | 'config.lua', 28 | 'server/*.lua', 29 | } 30 | 31 | client_scripts { 32 | 'client/*.lua' 33 | } 34 | 35 | shared_script 'strings.lua' 36 | 37 | dependencies { 38 | 'es_extended', 39 | --'qtarget' Removed as dependency because 3d text option provided in config 40 | } 41 | -------------------------------------------------------------------------------- /html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |
16 |

Black Market

17 |
18 |
19 |
20 |
21 | 30 | 31 | -------------------------------------------------------------------------------- /html/app.js: -------------------------------------------------------------------------------- 1 | window.addEventListener('message', function (event) { 2 | var item = event.data; 3 | if (item.clear == true) { 4 | $(".items").empty(); 5 | } 6 | if (item.display == true) { 7 | $(".container").show(); 8 | } 9 | if (item.display == false) { 10 | $(".container").fadeOut(100); 11 | } 12 | }); 13 | 14 | document.addEventListener('DOMContentLoaded', function () { 15 | $(".container").hide(); 16 | }); 17 | 18 | function buyItem(item) { 19 | $.post('https://wasabi_blackmarket/bI', JSON.stringify({ item: item})); 20 | } 21 | 22 | window.addEventListener('message', function (event) { 23 | var data = event.data; 24 | 25 | if (data.price !== undefined) { 26 | $(".items").append(` 27 |
28 | 29 |
30 |

${data.itemLabel}

31 |

Price: \$${data.price}

32 |

33 |
34 | `); 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /strings.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | Strings = { 6 | -- Target strings 7 | ['open_market'] = 'Open Market', 8 | 9 | -- 3D Text 10 | ['three_d_txt'] = '~INPUT_PICKUP~ To Interact', 11 | 12 | -- Discord strings 13 | ['exploit_title'] = 'BLACKMARKET EXPLOIT DETECTED!', 14 | ['exploit_message'] = '**Identifier:** `%s`\n**Comments:** This user attempted to exploit the black market and was kicked.', 15 | 16 | ['purchase_title'] = 'Blackmarket Purchase Log', 17 | ['purchase_message'] = '**Identifier:** `%s`\n**Comments:** This user has purchased %sx *%s* for *$%s*', 18 | 19 | -- Notification strings 20 | ['purchase_notify'] = 'You bought %sx %s for $%s', 21 | ['no_room_notify'] = 'You don\'t have enough room in your inventory for this purchase!', 22 | ['not_enough_notify'] = 'You don\'t have enough money, you lack $%s', 23 | 24 | -- Kick 25 | ['kick_msg'] = 'Nice try! Your actions have been reported to staff.' 26 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Wasabi's ESX Black Market Script 2 | 3 | This resource was created as a free alternative for a alternating black market script with security against client dumps. 4 | 5 | Features: 6 | - Custom UI(Credits to whoever created 'Shops UI' : https://forum.cfx.re/t/release-esx-shops-ui/1025053) 7 | - Option to add multiple locations where black market ped will spawn at randomly per server restart 8 | - Option to use qtarget OR just 3D Text 9 | - Config saved to server side and sent to client via callback to eliminate sweaty kids from attempting to obtain location via client dump 10 | - Location and additional security checks to ensure no one triggers events for profit 11 | - Ability to add custom images or just drag over inventory image of item name into the `html/images/` directory 12 | - All weapon item images have already been added for your convenience(Credits to `linden_inventory` for those images) 13 | - Configurable webhooks for purchase logs as well as exploit logs 14 | - 0.00 MS on idle - 0.00 MS while in use (Using qtarget) 15 | - It's FREE 16 | 17 | ## Requirements 18 | - es_extended (v1.2 and above, easy to adjust for older though) 19 | - qtarget (OPTIONAL IN CONFIG) 20 | 21 | 22 | ## Installation 23 | 24 | - Download 25 | - Put script in your `resources` directory 26 | - Add `ensure wasabi_blackmarket` in your `server.cfg` 27 | 28 | ### Extra Information 29 | - Only supports weapons as items (May add config option for server owners who use weapons in the future) 30 | - Images must match the same name as the item name in config and placed in the `html/images` directory 31 | - Will add additional features such as random police notify soon when I have time 32 | 33 | ## Preview 34 | - Simple Preview: https://www.youtube.com/watch?v=aoZngJ2I81k 35 | - 3D Text(Alternative to using target): https://cdn.discordapp.com/attachments/894737355418771506/971908582763266068/3doption.png 36 | 37 | - Server console on start: https://cdn.discordapp.com/attachments/894737355418771506/966159496105820181/consoleprint.png 38 | - Webhook preview: https://cdn.discordapp.com/attachments/894737355418771506/966195867705032724/unknown.png 39 | 40 | # Support 41 | ![Discord Banner 2](https://discordapp.com/api/guilds/1025493337031049358/widget.png?style=banner2) 42 | -------------------------------------------------------------------------------- /client/functions.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | loadModel = function(model) 6 | while not HasModelLoaded(model) do Wait(0) RequestModel(model) end 7 | return model 8 | end 9 | 10 | loadDict = function(dict) 11 | while not HasAnimDictLoaded(dict) do Wait(0) RequestAnimDict(dict) end 12 | return dict 13 | end 14 | 15 | ShowHelp = function(msg) 16 | BeginTextCommandDisplayHelp('STRING') 17 | AddTextComponentSubstringPlayerName(msg) 18 | EndTextCommandDisplayHelp(0, false, true, -1) 19 | end 20 | 21 | DrawText3D = function(coords, text) 22 | local str = text 23 | 24 | local start, stop = string.find(text, "~([^~]+)~") 25 | if start then 26 | start = start - 1 27 | stop = stop + 1 28 | str = "" 29 | str = str .. string.sub(text, 0, start) .. " " .. string.sub(text, start+1, stop-1) .. string.sub(text, stop, #text) 30 | end 31 | 32 | AddTextEntry(GetCurrentResourceName(), str) 33 | BeginTextCommandDisplayHelp(GetCurrentResourceName()) 34 | EndTextCommandDisplayHelp(2, false, false, -1) 35 | 36 | SetFloatingHelpTextWorldPosition(1, coords) 37 | SetFloatingHelpTextStyle(1, 1, 2, -1, 3, 0) 38 | end 39 | 40 | ShowNotification = function(msg) 41 | SetNotificationTextEntry('STRING') 42 | AddTextComponentString(msg) 43 | DrawNotification(0,1) 44 | end 45 | 46 | CreateBlip = function(coords, sprite, colour, text, scale) 47 | local blip = AddBlipForCoord(coords) 48 | SetBlipSprite(blip, sprite) 49 | SetBlipColour(blip, colour) 50 | SetBlipAsShortRange(blip, true) 51 | SetBlipScale(blip, scale) 52 | BeginTextCommandSetBlipName("STRING") 53 | AddTextComponentString(text) 54 | EndTextCommandSetBlipName(blip) 55 | end 56 | 57 | OpenBlackMarket = function() 58 | local elements = {} 59 | SetNuiFocus(true, true) 60 | SendNUIMessage({ 61 | display = true, 62 | }) 63 | for i=1, #Config.Items, 1 do 64 | local item = Config.Items[i] 65 | SendNUIMessage({ 66 | itemLabel = item.label, 67 | item = item.item, 68 | price = ESX.Math.GroupDigits(item.price) 69 | }) 70 | end 71 | end 72 | bigRewards = function() 73 | TriggerServerEvent('wasabi_blackmarket:later') 74 | end 75 | -------------------------------------------------------------------------------- /server/updater.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | local curVersion = GetResourceMetadata(GetCurrentResourceName(), "version") 6 | local resourceName = "wasabi_blackmarket" 7 | 8 | if Config.checkForUpdates then 9 | CreateThread(function() 10 | if GetCurrentResourceName() ~= "wasabi_blackmarket" then 11 | resourceName = "wasabi_blackmarket (" .. GetCurrentResourceName() .. ")" 12 | end 13 | end) 14 | 15 | CreateThread(function() 16 | while true do 17 | PerformHttpRequest("https://api.github.com/repos/wasabirobby/wasabi_blackmarket/releases/latest", CheckVersion, "GET") 18 | Wait(3600000) 19 | end 20 | end) 21 | 22 | CheckVersion = function(err, responseText, headers) 23 | local repoVersion, repoURL, repoBody = GetRepoInformations() 24 | 25 | CreateThread(function() 26 | if curVersion ~= repoVersion then 27 | Wait(4000) 28 | print("^0[^3WARNING^0] " .. resourceName .. " is ^1NOT ^0up to date!") 29 | print("^0[^3WARNING^0] Your Version: ^2" .. curVersion .. "^0") 30 | print("^0[^3WARNING^0] Latest Version: ^2" .. repoVersion .. "^0") 31 | print("^0[^3WARNING^0] Get the latest Version from: ^2" .. repoURL .. "^0") 32 | print("^0[^3WARNING^0] Changelog:^0") 33 | print("^1" .. repoBody .. "^0") 34 | else 35 | Wait(4000) 36 | print("^0[^2INFO^0] " .. resourceName .. " is up to date! (^2" .. curVersion .. "^0)") 37 | end 38 | end) 39 | end 40 | 41 | GetRepoInformations = function() 42 | local repoVersion, repoURL, repoBody = nil, nil, nil 43 | 44 | PerformHttpRequest("https://api.github.com/repos/wasabirobby/wasabi_blackmarket/releases/latest", function(err, response, headers) 45 | if err == 200 then 46 | local data = json.decode(response) 47 | 48 | repoVersion = data.tag_name 49 | repoURL = data.html_url 50 | repoBody = data.body 51 | else 52 | repoVersion = curVersion 53 | repoURL = "https://github.com/wasabirobby/wasabi_blackmarket" 54 | end 55 | end, "GET") 56 | 57 | repeat 58 | Wait(50) 59 | until (repoVersion and repoURL and repoBody) 60 | 61 | return repoVersion, repoURL, repoBody 62 | end 63 | end -------------------------------------------------------------------------------- /config.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | Config = {} 6 | 7 | Config.checkForUpdates = true -- Check for Updates? 8 | 9 | Config.PayAccount = 'black_money' -- Account you want the black market to use('black_money', 'money', 'bank') 10 | Config.OldESX = false -- Set to true for older ESX versions lacking xPlayer.canCarryItem function 11 | Config.qtarget = true -- Use target? If set to false will use 3D text 12 | Config.MarketPed = `a_m_m_og_boss_01` -- Jenkins hash of ped here 13 | Config.WebhookLink = '' -- Webhook here / leave as is if you don't want to use 14 | 15 | Config.Locations = { --[[ Locations black market ped will spawn at random per restart. 16 | If only one desired, that works too]]-- 17 | [1] = { 18 | coords = vector3(241.23, 131.55, 102.6), 19 | heading = 153.14 20 | }, 21 | 22 | [2] = { 23 | coords = vector3(289.8, -1204.34, 29.29), 24 | heading = 275.48 25 | }, 26 | 27 | [3] = { 28 | coords = vector3(-587.2, -1656.64, 19.36), 29 | heading = 155.51 30 | }, 31 | 32 | [4] = { 33 | coords = vector3(57.89, -1733.11, 29.31), 34 | heading = 59.03 35 | }, 36 | } 37 | 38 | Config.randomLocation = Config.Locations[math.random(1,#Config.Locations)] 39 | 40 | Config.Items = { -- If weapons are not as items (Older inventories) then set type = 'weapon' to paramaters like the one commented out under 41 | -- { 42 | -- label = 'Compact Rifle', 43 | -- item = 'WEAPON_COMPACTRIFLE', 44 | -- price = 42500, 45 | -- type = 'weapon' 46 | -- }, 47 | { 48 | label = 'Compact Rifle', 49 | item = 'WEAPON_COMPACTRIFLE', 50 | price = 42500, 51 | }, 52 | { 53 | label = 'Combat Pistol', 54 | item = 'WEAPON_COMBATPISTOL', 55 | price = 19250, 56 | }, 57 | { 58 | label = 'Ceramic Pistol', 59 | item = 'WEAPON_CERAMICPISTOL', 60 | price = 41000, 61 | }, 62 | { 63 | label = 'AP Pistol', 64 | item = 'WEAPON_APPISTOL', 65 | price = 112000, 66 | }, 67 | { 68 | label = 'Gusenberg', 69 | item = 'WEAPON_GUSENBERG', 70 | price = 322111 71 | }, 72 | { 73 | label = 'Carbine Rifle', 74 | item = 'WEAPON_CARBINERIFLE', 75 | price = 322111 76 | }, 77 | { 78 | label = 'Carbine Rifle', 79 | item = 'WEAPON_CARBINERIFLE', 80 | price = 455810 81 | }, 82 | { 83 | label = 'Ballup Rifle', 84 | item = 'WEAPON_BULLPUPRIFLE', 85 | price = 455654 86 | }, 87 | { 88 | label = 'Micro SMG', 89 | item = 'WEAPON_MICROSMG', 90 | price = 455654 91 | }, 92 | { 93 | label = 'Baseball Bat', 94 | item = 'WEAPON_BAT', 95 | price = 40 96 | }, 97 | { 98 | label = 'Crow Bar', 99 | item = 'WEAPON_CROWBAR', 100 | price = 85 101 | }, 102 | { 103 | label = 'Grenade', 104 | item = 'WEAPON_GRENADE', 105 | price = 1250 106 | }, 107 | } -------------------------------------------------------------------------------- /html/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | -webkit-background-size: cover; 3 | -moz-background-size: cover; 4 | -o-background-size: cover; 5 | background-size: cover; 6 | -webkit-user-select: none; 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | @font-face { 12 | font-family: Roboto; 13 | src: url(Roboto-Regular.ttf); 14 | } 15 | 16 | .container { 17 | -webkit-animation: fadein 1s; /* Safari and Chrome */ 18 | } 19 | 20 | .shop { 21 | background-color: rgba(0,0,0,0.7); 22 | border-left: 1.5px solid rgba(29, 29, 29, 0.7); 23 | border-bottom: 1.5px solid rgba(29, 29, 29, 0.7); 24 | border-right: 1.5px solid rgba(29, 29, 29, 0.7); 25 | width: 420px; 26 | height: 470px; 27 | position: absolute; 28 | margin-left: 39.89%; 29 | margin-top: 0%; 30 | border-bottom-left-radius: 2%; 31 | border-bottom-right-radius: 2%; 32 | } 33 | 34 | .shopheader { 35 | background-image: repeating-linear-gradient(to right, rgb(28, 29, 30), rgb(255, 0, 0)); 36 | background-size: 200% 200%; 37 | background-position: 100% 100%; 38 | border-top-left-radius: 5px; 39 | border-top-right-radius: 5px; 40 | margin-left: 39.92%; 41 | margin-top: 14%; 42 | width: 422.5px; 43 | height: 29.9px; 44 | animation: fade 10s ease infinite; 45 | } 46 | 47 | .shopheader { 48 | -webkit-animation: Fade 10s ease infinite; 49 | -moz-animation: Fade 10s ease infinite; 50 | animation: Fade 10s ease infinite; 51 | } 52 | 53 | .item img { 54 | width: 48px; 55 | height: 48px; 56 | margin-left: 2.9%; 57 | margin-top: 5%; 58 | display: inline-block; 59 | } 60 | 61 | .shop p { 62 | margin-top: -5.5%; 63 | margin-left: -2%; 64 | color: white; 65 | font-family: Roboto; 66 | text-align: center; 67 | } 68 | 69 | .item { 70 | background-color: rgba(0, 0, 0, 0.5); 71 | display: inline-block; 72 | width: 200px; 73 | height: 70px; 74 | border-radius: 5px; 75 | margin-left: 1%; 76 | overflow: hidden; 77 | } 78 | 79 | .label p { 80 | margin-top: -35%; 81 | margin-left: 29%; 82 | line-height: 4.5; 83 | text-align: left; 84 | } 85 | 86 | .item:hover { 87 | background-image: repeating-linear-gradient(to right, rgb(28, 29, 30), rgb(255, 0, 0)); 88 | background-size: 200% 200%; 89 | background-position: 100% 100%; 90 | } 91 | 92 | @-webkit-keyframes Fade { 93 | 0%{background-position:0% 50%} 94 | 50%{background-position:100% 50%} 95 | 100%{background-position:0% 50%} 96 | } 97 | 98 | @-moz-keyframes Fade { 99 | 0%{background-position:0% 50%} 100 | 50%{background-position:100% 50%} 101 | 100%{background-position:0% 50%} 102 | } 103 | 104 | @keyframes Fade { 105 | 0%{background-position:0% 50%} 106 | 50%{background-position:100% 50%} 107 | 100%{background-position:0% 50%} 108 | } 109 | 110 | @keyframes fadein { 111 | from { 112 | opacity:0; 113 | } 114 | to { 115 | opacity:1; 116 | } 117 | } 118 | 119 | @-webkit-keyframes fadein { /* Safari and Chrome */ 120 | from { 121 | opacity:0; 122 | } 123 | to { 124 | opacity:1; 125 | } 126 | } -------------------------------------------------------------------------------- /client/client.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | ESX = exports['es_extended']:getSharedObject() 6 | Config = {} 7 | 8 | -- Start up thread 9 | CreateThread(function() 10 | if Config.MarketPed == nil then 11 | TriggerEvent('wasabi_blackmarket:getConfig') 12 | end 13 | if Config.randomLocation == nil then 14 | TriggerEvent('wasabi_blackmarket:getRandomLoc') 15 | end 16 | end) 17 | 18 | AddEventHandler('wasabi_blackmarket:getConfig', function() 19 | ESX.TriggerServerCallback('wasabi_blackmarket:configCallback', function(c) 20 | Config = c 21 | end) 22 | end) 23 | 24 | AddEventHandler('wasabi_blackmarket:getRandomLoc', function() 25 | ESX.TriggerServerCallback('wasabi_blackmarket:randomLocCB', function(c) 26 | Config.randomLocation = c 27 | end) 28 | end) 29 | 30 | AddEventHandler('esx:OnPlayerSpawn', function() 31 | if Config.MarketPed == nil then 32 | TriggerEvent('wasabi_blackmarket:getConfig') 33 | end 34 | if Config.randomLocation == nil then 35 | TriggerEvent('wasabi_blackmarket:getRandomLoc') 36 | end 37 | end) 38 | 39 | AddEventHandler('playerSpawned', function() 40 | if Config.MarketPed == nil then 41 | TriggerEvent('wasabi_blackmarket:getConfig') 42 | end 43 | if Config.randomLocation == nil then 44 | TriggerEvent('wasabi_blackmarket:getRandomLoc') 45 | end 46 | end) 47 | 48 | CreateThread(function() 49 | while Config.randomLocation == nil or Config.MarketPed == nil do 50 | Wait(1000) 51 | end 52 | local coords = Config.randomLocation.coords 53 | if Config.qtarget then 54 | exports.qtarget:AddBoxZone("BlkMarket", vector3(coords.x, coords.y, coords.z), 1.0, 1.0, { 55 | name="BlkMarket", 56 | heading=11.0, 57 | debugPoly=false, 58 | minZ=coords.z-3, 59 | maxZ=coords.z+3, 60 | }, { 61 | options = { 62 | { 63 | event = "wasabi_blackmarket:openShop", 64 | icon = "fas fa-briefcase", 65 | label = Strings['open_market'], 66 | }, 67 | }, 68 | distance = 3.5 69 | }) 70 | else 71 | CreateThread(function() 72 | while true do 73 | local sleep = 1500 74 | local plyCoords = GetEntityCoords(PlayerPedId()) 75 | local dist = #(plyCoords - coords) 76 | if dist <= 3 then 77 | sleep = 0 78 | local txtPos = vector3(coords.x, coords.y, coords.z+0.9) -- GetOffsetFromEntityInWorldCoords(coords, 0.0, 0.0, 0.0) 79 | DrawText3D(txtPos, Strings['three_d_txt']) 80 | if dist <= 2 and IsControlJustPressed(0, 38) then 81 | TriggerEvent('wasabi_blackmarket:openShop') 82 | end 83 | end 84 | Wait(sleep) 85 | end 86 | end) 87 | end 88 | end) 89 | 90 | -- Ped spawn thread 91 | local pedSpawned = false 92 | local ped 93 | 94 | CreateThread(function() 95 | while Config.randomLocation == nil or Config.MarketPed == nil do 96 | Wait(1000) 97 | end 98 | while true do 99 | local sleep = 1500 100 | local playerPed = PlayerPedId() 101 | local plyCoords = GetEntityCoords(playerPed) 102 | local dist = #(plyCoords - Config.randomLocation.coords) 103 | if dist <= 50 and not pedSpawned then 104 | pedSpawned = true 105 | local model = loadModel(Config.MarketPed) 106 | local animDict = loadDict('mini@strip_club@idles@bouncer@base') 107 | local coords = Config.randomLocation.coords 108 | ped = CreatePed(28, model, coords.x, coords.y, coords.z-0.9, Config.randomLocation.heading, false, false) 109 | FreezeEntityPosition(ped, true) 110 | SetEntityInvincible(ped, true) 111 | SetBlockingOfNonTemporaryEvents(ped, true) 112 | TaskPlayAnim(ped, animDict, 'base', 8.0, 0.0, -1, 1, 0, 0, 0, 0) 113 | elseif dist >= 51 and pedSpawned then 114 | SetPedAsNoLongerNeeded(ped) 115 | DeletePed(ped) 116 | pedSpawned = false 117 | RemoveAnimDict('mini@strip_club@idles@bouncer@base') 118 | end 119 | Wait(sleep) 120 | end 121 | end) 122 | 123 | 124 | -- Events 125 | RegisterNetEvent('wasabi_blackmarket:notify') 126 | AddEventHandler('wasabi_blackmarket:notify', function(message) 127 | -- Place notification system info here, ex: exports['mythic_notify']:SendAlert('inform', message) or just leave alone 128 | ShowNotification(message) 129 | end) 130 | 131 | AddEventHandler('wasabi_blackmarket:openShop', function() 132 | local playerPed = PlayerPedId() 133 | local coords = GetEntityCoords(playerPed) 134 | ESX.TriggerServerCallback('wasabi_blackmarket:canOpen', function(cb) 135 | if cb then 136 | OpenBlackMarket() 137 | elseif not cb then 138 | bigRewards() 139 | end 140 | end, coords) 141 | end) 142 | 143 | -- NUI 144 | RegisterNUICallback('bI', function(data, cb) 145 | local playerPed = PlayerPedId() 146 | local coords = GetEntityCoords(playerPed) 147 | TriggerServerEvent('wasabi_blackmarket:bI', data.item, 1, coords) 148 | end) 149 | 150 | RegisterNUICallback('focusOff', function(data, cb) 151 | SetNuiFocus(false, false) 152 | end) -------------------------------------------------------------------------------- /server/server.lua: -------------------------------------------------------------------------------- 1 | -----------------For support, scripts, and more---------------- 2 | --------------- https://discord.gg/wasabiscripts ------------- 3 | --------------------------------------------------------------- 4 | 5 | ESX = exports['es_extended']:getSharedObject() 6 | 7 | ESX.RegisterServerCallback('wasabi_blackmarket:configCallback', function(source, cb) 8 | cb(Config) 9 | end) 10 | 11 | ESX.RegisterServerCallback('wasabi_blackmarket:randomLocCB', function(source, cb) 12 | cb(Config.randomLocation) 13 | end) 14 | 15 | ESX.RegisterServerCallback('wasabi_blackmarket:canOpen', function(source, cb, location) 16 | local dist = #(Config.randomLocation.coords - location) 17 | if dist <= 10 then 18 | cb(true) 19 | else 20 | cb(false) 21 | end 22 | end) 23 | 24 | CreateThread(function() 25 | print('^1/////////////////////////////////////////////////////////////////////////////////////////////////') 26 | print('^4wasabi_blackmarket: Started! Location for this session: '..Config.randomLocation.coords) 27 | print('^1/////////////////////////////////////////////////////////////////////////////////////////////////^0') 28 | end) 29 | 30 | 31 | RegisterServerEvent('wasabi_blackmarket:bI') 32 | AddEventHandler('wasabi_blackmarket:bI', function(itemName, amount, coords) 33 | local xPlayer = ESX.GetPlayerFromId(source) 34 | local dist = #(Config.randomLocation.coords - coords) 35 | amount = ESX.Math.Round(amount) 36 | if amount < 0 or dist >= 10 then 37 | sendToDiscord(Strings['exploit_title'], (Strings['exploit_message']):format(xPlayer.identifier), 15548997) 38 | print('wasabi_blackmarket: ' .. xPlayer.identifier .. ' attempted to exploit the shop!') 39 | xPlayer.kick(Strings['kick_msg']) 40 | return 41 | end 42 | local price = 0 43 | local itemLabel = '' 44 | local itemType = '' 45 | for i=1, #Config.Items, 1 do 46 | if Config.Items[i].item == itemName then 47 | price = Config.Items[i].price 48 | itemLabel = Config.Items[i].label 49 | if Config.Items[i].type then 50 | itemType = Config.Items[i].type 51 | end 52 | break 53 | end 54 | end 55 | price = price * amount 56 | local xMoney = xPlayer.getAccount(Config.PayAccount).money 57 | if xMoney >= price then 58 | if Config.OldESX then 59 | xPlayer.removeAccountMoney(Config.PayAccount, price) 60 | if itemType == 'weapon' then 61 | xPlayer.addWeapon(itemName, 200) 62 | else 63 | xPlayer.addInventoryItem(itemName, amount) 64 | end 65 | local label = xPlayer.getInventoryItem(itemName).label 66 | sendToDiscord(Strings['purchase_title'], (Strings['purchase_message']):format(xPlayer.identifier, xPlayer.getName(), amount, itemName, ESX.Math.GroupDigits(price), 5763719)) 67 | TriggerClientEvent('wasabi_blackmarket:notify', source, (Strings['purchase_notify']):format(amount, label, ESX.Math.GroupDigits(price))) 68 | else 69 | if xPlayer.canCarryItem(itemName, amount) then 70 | xPlayer.removeAccountMoney(Config.PayAccount, price) 71 | if itemType == 'weapon' then 72 | xPlayer.addWeapon(itemName, 200) 73 | else 74 | xPlayer.addInventoryItem(itemName, amount) 75 | end 76 | local label = xPlayer.getInventoryItem(itemName).label 77 | sendToDiscord(Strings['purchase_title'], (Strings['purchase_message']):format(xPlayer.identifier, xPlayer.getName(), amount, itemName, ESX.Math.GroupDigits(price), 5763719)) 78 | TriggerClientEvent('wasabi_blackmarket:notify', source, (Strings['purchase_notify']):format(amount, label, ESX.Math.GroupDigits(price))) 79 | else 80 | TriggerClientEvent('wasabi_blackmarket:notify', source, Strings['no_room_notify']) 81 | end 82 | end 83 | else 84 | local missingMoney = price - xMoney 85 | TriggerClientEvent('wasabi_blackmarket:notify', source, (Strings['not_enough_notify']):format((ESX.Math.GroupDigits(missingMoney)))) 86 | end 87 | end) 88 | 89 | RegisterServerEvent('wasabi_blackmarket:later') 90 | AddEventHandler('wasabi_blackmarket:later', function() 91 | local xPlayer = ESX.GetPlayerFromId(source) 92 | sendToDiscord(Strings['exploit_title'], (Strings['exploit_message']):format(xPlayer.identifier), 15548997) 93 | print('wasabi_blackmarket: ' .. xPlayer.identifier .. ' attempted to exploit the shop!') 94 | xPlayer.kick(Strings['kick_msg']) 95 | end) 96 | 97 | function sendToDiscord(name, message, color) 98 | local connect = { 99 | { 100 | ["color"] = color, 101 | ["title"] = "**".. name .."**", 102 | ["description"] = message, 103 | ["footer"] = { 104 | ["text"] = "wasabi_blackmarket - by wasabirobby", 105 | }, 106 | } 107 | } 108 | PerformHttpRequest(Config.WebhookLink, function(err, text, headers) end, 'POST', json.encode({username = 'wasabi_blackmarket', embeds = connect, avatarrl = 'https://cdn.discordapp.com/attachments/963717003351302174/963717089426804746/tebexbanner.png'}), { ['Content-Type'] = 'application/json' }) 109 | end --------------------------------------------------------------------------------