Configuration
All spoodyCreations resources are tailored to support a all different types of configurations & settings, here below is our configuration file you may use for assistance.
--- Your Core Name Below (ESX)
ESX = exports['es_extended']:getSharedObject()
RegisterNetEvent('spoodyConfig:notify', function(message, type)
Config.Notify(message, type)
end)
Config = {
Job = {
Name = "vu",
Unemployed = "unemployed",
UnemployedGrade = 0,
Grades = {
Owner = 4,
Manager = 3,
Bartender = 2,
Stripper = 1,
DJ = 0,
},
Coords = {
Management = vec3(98.3250, -1297.9237, 35.5849), --- Coordinates of where the managers/owner will interact with their business.
},
Management = {
MaxEntryFeePrice = 1000000, --- default: $1,000,000
},
Bartender = {
Create = vec4(112.7081, -1282.3154, 29.6188, 204.1790), --- The location where the bartender will make drinks
Orders = vec4(115.9411, -1280.3109, 29.6188, 296.1577), --- The location where the bartender will review and accept orders
--- The locations where players can order drinks from.
OrderLocations = {
["Main Bar #1"] = { coords = vec3(111.5705, -1285.7264, 29.6188), deliveryTime = "1-2 Minutes" },
["Main Bar #2"] = { coords = vec3(114.8360, -1283.7278, 29.6188), deliveryTime = "1-2 Minutes" },
["Main Bar #3"] = { coords = vec3(118.6295, -1281.2690, 29.6189), deliveryTime = "1-2 Minutes" },
["Upper Seating #1"] = { coords = vec3(127.3918, -1278.5341, 29.2180), deliveryTime = "1-2 Minutes" },
["Upper Seating #2"] = { coords = vec3(129.3170, -1280.3790, 29.2175), deliveryTime = "1-2 Minutes" },
["Upper Seating #3"] = { coords = vec3(132.3553, -1277.4349, 29.2190), deliveryTime = "1-2 Minutes" },
["Upper Seating #4"] = { coords = vec3(127.1861, -1285.9552, 29.2190), deliveryTime = "1-2 Minutes" },
["Main Seating #1"] = { coords = vec3(122.8612, -1293.9916, 28.4443), deliveryTime = "1-2 Minutes" },
["Main Seating #2"] = { coords = vec3(118.7692, -1296.3054, 28.4444), deliveryTime = "1-2 Minutes" },
["Main Seating #3"] = { coords = vec3(118.5756, -1286.4192, 28.4443), deliveryTime = "1-2 Minutes" },
["Main Seating #4"] = { coords = vec3(114.4083, -1288.7969, 28.4443), deliveryTime = "1-2 Minutes" },
["Pool Seating #1"] = { coords = vec3(106.1076, -1301.8075, 21.2), deliveryTime = "3-4 Minutes" },
["Pool Seating #2"] = { coords = vec3(103.6438, -1297.6372, 21.2), deliveryTime = "3-4 Minutes" },
["Pool Seating #3"] = { coords = vec3(101.3776, -1293.5559, 21.2), deliveryTime = "3-4 Minutes" },
["Private Room #1"] = { coords = vec3(126.4207, -1291.7017, 21.3936), deliveryTime = "3-4 Minutes" },
["Private Room #2"] = { coords = vec3(114.8083, -1297.9819, 21.3937), deliveryTime = "3-4 Minutes" },
["Private Room #3"] = { coords = vec3(122.8282, -1283.7328, 21.3937), deliveryTime = "3-4 Minutes" },
["Private Room #4"] = { coords = vec3(109.4501, -1292.1410, 21.3937), deliveryTime = "3-4 Minutes" },
},
IceTub = vec4(113.5518, -1281.7991, 29.6189, 208.9053), --- The location where the ped will walk to when creating drinks
InventoryPath = 'nui://ox_inventory/web/images/%s.png', --- Your file path to inventory images (must add %s.png)
MaxStock = 100, --- The amount of stock that is maximum
RestockPrice = math.random(14500, 19500), --- Between $14,500 - $19,500
DrunkTime = 300000, --- (in ms) 5 MINUTES
Alcohol = { --- "createTime" is in Seconds.
['logger'] = { item = 'logger', label = 'Logger Beer', price = 500, createTime = 10, object = 'prop_beer_logger' },
['pisswaser2'] = { item = 'pisswaser2', label = 'Pisswaser Blackberry', price = 500, createTime = 10, object = 'prop_beer_pissh' },
['pisswaser3'] = { item = 'pisswaser3', label = 'Pisswaser Original', price = 500, createTime = 10, object = 'prop_beer_pissh' },
['whiskey'] = { item = 'whiskey', label = "Ted's Original Whiskey", price = 1500, createTime = 10, object = 'prop_cs_whiskey_bot_stop' },
['icream'] = { item = 'icream', label = "I-Scream Tequila", price = 950, createTime = 10, object = 'p_cs_shot_glass_2_s' },
['woowoo'] = { item = 'woowoo', label = "WooWoo Tequila", price = 1650, createTime = 10, object = 'p_cs_shot_glass_2_s' },
['scotch'] = { item = 'scotch', label = "Scott's Scotch Whiskey", price = 13500, createTime = 25, object = 'prop_cs_whiskey_bot_stop' },
['opmcocktail'] = { item = 'opmcocktail', label = "Orange Fox Cocktail", price = 5000, createTime = 25, object = 'prop_drink_redwine' },
['vinewoodrose'] = { item = 'vinewoodrose', label = "Blêuter'd Champagne", price = 150000, createTime = 25, object = 'hei_p_hei_champ_flute_s' },
},
},
Stripper = {
ThrowAmount = 1500, --- The amount of money that will be thrown at a stripper
Poles = {
[1] = {coords = vector3(121.77, -1289.25, 29.26)},
[2] = {coords = vector3(116.66, -1292.19, 29.26)},
[3] = {coords = vector3(111.50, -1295.17, 29.26)},
[4] = {coords = vector3(127.19, -1294.079, 21.69)},
[5] = {coords = vector3(116.336, -1300.352, 21.69)},
[6] = {coords = vector3(109.549, -1288.595, 21.69)},
[7] = {coords = vector3(120.391, -1282.339, 21.69)},
[8] = {coords = vector3(114.499, -1277.792, 21.387)},
[9] = {coords = vector3(108.674, -1281.162, 21.387)},
[10] = {coords = vector3(128.152, -1301.439, 21.387)},
[11] = {coords = vector3(122.327, -1304.808, 21.387)},
[12] = {coords = vector3(106.7449, -1313.185, 29.84)},
[13] = {coords = vector3(109.5838, -1311.546, 29.847)},
[14] = {coords = vector3(112.2671, -1309.997, 29.84)},
},
InteractionPoints = {
[1] = {coords = vec4(112.7142, -1297.5542, 28.4369, 28.9253), using = false},
[2] = {coords = vec4(113.8446, -1295.9053, 28.4443, 81.0689), using = false},
[3] = {coords = vec4(115.8506, -1294.7974, 28.4443, 344.149), using = false},
[4] = {coords = vec4(117.7501, -1294.5684, 28.4443, 27.5553), using = false},
[5] = {coords = vec4(118.9049, -1293.0874, 28.4443, 69.1557), using = false},
[6] = {coords = vec4(121.4407, -1291.9110, 28.4443, 356.549), using = false},
[7] = {coords = vec4(122.9724, -1291.5497, 28.4443, 39.1920), using = false},
[8] = {coords = vec4(124.0497, -1289.8409, 28.4443, 77.2927), using = false},
[9] = {coords = vec4(123.4066, -1287.9463, 28.4443, 131.130), using = false},
[10] = {coords = vec4(120.6301, -1287.5103, 28.4443, 205.750), using = false},
[11] = {coords = vec4(119.5221, -1289.1487, 28.4443, 245.246), using = false},
[12] = {coords = vec4(117.0674, -1290.2152, 28.4443, 163.058), using = false},
[13] = {coords = vec4(115.3895, -1290.5402, 28.4443, 205.999), using = false},
[14] = {coords = vec4(114.3093, -1292.0380, 28.4443, 257.430), using = false},
[15] = {coords = vec4(112.1021, -1293.2117, 28.4443, 167.176), using = false},
[16] = {coords = vec4(110.1196, -1293.5924, 28.4352, 211.525), using = false},
[17] = {coords = vec4(109.1720, -1295.0626, 28.4262, 259.703), using = false},
},
},
DJ = {
Enabled = true,
Locations = {
Laptop = vec4(119.9733, -1299.5848, 29.2189, 355.3701),
Disc = vec4(119.3236, -1300.1082, 29.2189, 23.0214),
Speaker = {
Coords = vec3(117.0968, -1292.1071, 29.2189),
Distance = 25.0
}
}
},
},
Property = {
InteriorChange = true, --- Allow the managers to change the interior? (currently only supported by Fiv3Devs VU MLO)
InteriorCoordinates = vec3(113.652557, -1300.96277, 37.40684), -- General Interior Coordinates Area
ManageInteriorCoords = {
[1] = vec3(115.4121, -1286.5154, 21.3943), --- Pink & Purple Rooms
[2] = vec3(121.1789, -1296.4280, 21.3944) --- Blue 7 Red Rooms
},
CameraRadar = true, --- Show the radar after the player exits camera mode?
--- Camera Locations
Cameras = {
[1] = {coords = vec3(136.965729, -1294.070312, 32.025932), rotation = vec3(-16.613962, 0.000000, 142.032532)},
[2] = {coords = vec3(123.773178, -1305.549194, 32.021133), rotation = vec3(-23.031284, 0.000000, 310.851501)},
[3] = {coords = vec3(144.760635, -1293.219238, 31.688671), rotation = vec3(-16.613953, 0.000000, 2.544038)},
[4] = {coords = vec3(85.052940, -1288.845459, 34.780720), rotation = vec3(-50.039104, 0.000000, 339.630371)},
[5] = {coords = vec3(99.785950, -1281.506958, 34.801464), rotation = vec3(-27.401312, 0.000000, 295.260468)},
[6] = {coords = vec3(126.768631, -1297.664673, 31.485422), rotation = vec3(-18.346220, 0.000000, 317.937927)},
[7] = {coords = vec3(136.899704, -1287.566772, 31.526592), rotation = vec3(-11.023391, 0.000000, 84.748276)},
[8] = {coords = vec3(114.816872, -1304.815063, 31.935255), rotation = vec3(-13.385594, 0.000000, 322.661560)},
[9] = {coords = vec3(109.246490, -1296.231323, 31.774519), rotation = vec3(-10.354091, 0.000000, 357.149323)},
[10] = {coords = vec3(130.179260, -1286.947144, 24.712542), rotation = vec3(-20.117863, 0.000000, 101.676910)},
[11] = {coords = vec3(114.195259, -1305.023682, 27.166935), rotation = vec3(-27.283197, 0.000000, 77.267258)},
[12] = {coords = vec3(120.192589, -1287.279541, 23.906916), rotation = vec3(-34.015556, 0.000000, 351.990448)},
[13] = {coords = vec3(123.152115, -1291.765869, 24.178938), rotation = vec3(-35.472301, 0.000000, 238.486359)},
[14] = {coords = vec3(123.852600, -1300.112061, 24.185398), rotation = vec3(-33.543163, 0.000000, 253.722198)},
[15] = {coords = vec3(122.941811, -1300.721313, 24.256653), rotation = vec3(-32.913143, 0.000000, 157.225693)},
[16] = {coords = vec3(99.680161, -1290.463013, 32.049622), rotation = vec3(-34.266567, 0.000000, 349.915558)},
[17] = {coords = vec3(106.551476, -1293.867554, 32.413326), rotation = vec3(-29.266554, 0.000000, 87.474609)},
[18] = {coords = vec3(86.447670, -1290.260376, 33.677620), rotation = vec3(-27.927982, 0.000000, 249.482300)},
[19] = {coords = vec3(110.749611, -1310.326782, 37.850056), rotation = vec3(-24.581547, 0.000000, 63.065422)},
},
InteriorLabels = {
["Red Room"] = {
coords = vec3(129.5955, -1300.8156, 21.3937),
styles = {
["vu_red1"] = { label = "Bedroom"},
["vu_red2"] = { label = "Prison Room" },
["vu_red3"] = { label = "BDSM Room" },
["vu_red4"] = { label = "Hospital Room" },
}
},
["Blue Room"] = {
coords = vec3(120.8607, -1305.1598, 21.3937),
styles = {
["vu_blue1"] = { label = "Bedroom"},
["vu_blue2"] = { label = "Prison Room" },
["vu_blue3"] = { label = "BDSM Room" },
["vu_blue4"] = { label = "Hospital Room" },
}
},
["Pink Room"] = {
coords = vec3(115.9771, -1277.2211, 21.3937),
styles = {
["vu_pink1"] = { label = "Bedroom"},
["vu_pink2"] = { label = "Prison Room" },
["vu_pink3"] = { label = "BDSM Room" },
["vu_pink4"] = { label = "Hospital Room" },
}
},
["Purple Room"] = {
coords = vec3(106.8606, -1281.5951, 21.3937),
styles = {
["vu_purple1"] = { label = "Bedroom"},
["vu_purple2"] = { label = "Prison Room" },
["vu_purple3"] = { label = "BDSM Room" },
["vu_purple4"] = { label = "Hospital Room" },
}
},
},
},
Player = {
Coords = {
EntryFeePurchase = vec3(136.0380, -1290.7318, 29.2190),
}
},
Settings = {
DefaultEntryFee = 500, --- The default entry fee price (can be changed by the manager/owner)
--- Entrance Poly to check if a player has purchased an entry fee
EntranceDoorPoly = {
coords = vec3(132.6944, -1288.8281, 29.2189), --- Coordinates of the door base
size = vec3(3.0, 2.5, 3.0), --- Size of the door
rotation = 30.0, --- Rotation of the poly
debug = false, --- Debug? will show the size and marker of the door
onEnter = function()
base:checkEntry() --- Ignore
end
},
Debug = false, --- Enable if you are having unexpected issues
RefusalCoordinates = vec4(134.1109, -1291.5481, 29.2190, 204.4458) --- The coordinates of where the player will walk to if they are refused for any reason
},
---@alias notiTypes "error" | "success" | "inform" | "warning"
---@param message string
---@param type? notiTypes
Notify = function(message, type)
lib.notify({
title = 'Vanilla Unicorn',
description = message,
type = type or 'inform'
})
end
}
LOCALES = {
--- Notifications
['VU_CLOSED'] = "Vanilla Unicorn is currently closed, come back later",
['VU_MISSING_PAYMENT'] = "You must pay the entry fee in order to enter",
['VU_FEE_INSUFFICIENT'] = "You don't have enough money to purchase this fee.",
['VU_BAR_ORDERED'] = "Successfully ordered 1x %s.",
['VU_BAR_ALREADY_ORDERED'] = "You have already placed an order, please wait.",
['VU_BAR_INSUFFICIENT_FUNDS'] = "You don't have enough money for this order.",
['VU_BAR_CLOSED'] = "The bar is currently closed, come back later.",
['VU_BARTENDER_FAIL'] = "There are no nearby consumers to create a drink for.",
['VU_BARTENDER_CREATING'] = "Creating %s",
['VU_BARTENDER_NO_ORDERS'] = "There are no active orders",
['VU_BARTENDER_CLOSED_ORDER'] = "Successfully Closed this order.",
['VU_BARTENDER_ORDER_EXISTS'] = "This order no longer exists.",
['VU_MANAGER_CAMERAS'] = "~INPUT_CELLPHONE_RIGHT~ Next Camera\n~INPUT_CELLPHONE_RIGHT~ Previous Camera\n~INPUT_DETONATE~ Night Vision\n~INPUT_CELLPHONE_CANCEL~ Exit",
['VU_MANAGER_OFFERED'] = "You have been offered a position at Vanilla Unicorn!",
['VU_MANAGER_POSITION_DETAILS'] = "**Position**: %s \n\n**Base Pay**: $%s/hr",
['VU_MANAGER_WITHDREW'] = "Successfully withdrew $%s.",
['VU_MANAGER_WITHDREW_FAIL'] = "This business does not have enough funds to make that withdrawal.",
['VU_MANAGER_INVEST'] = "Successfully invested $%s.",
['VU_MANAGER_INVEST_FAIL'] = "You don't have enough cash to invest.",
['VU_STRIPPER_THROW_FAIL'] = "You don't have enough money to throw",
['VU_BARTENDER_ORDER_PLACED'] = "A new order has been placed at the bar!",
['VU_BARTENDER_GAVE'] = "You gave %s 1x %s",
['VU_BARTENDER_RECEIVED'] = "You recieved 1x %s",
['VU_MANAGER_HIRE_FAILED'] = "This player already has this job",
['VU_MANAGER_PLAYER_NOT_ONLINE'] = "This player is not online.",
['VU_MANAGER_STOCKROOM_FULL'] = "The stockroom has already been restocked.",
['VU_MANAGER_RESTOCK_METHOD_1_FAIL'] = "Your business cannot afford this restock.",
['VU_MANAGER_RESTOCK_METHOD_2_FAIL'] = "You don't have enough money for this restock.",
['VU_MANAGER_CLOSED'] = "Vanilla Unicorn is now closed!",
['VU_MANAGER_OPEN'] = "Vanilla Unicorn is now open!",
['VU_MANAGER_ENTRYFEE'] = "The Entry Fee is too expensive.",
['VU_MANAGER_ENTRY_UPDATED'] = "Entry fee successfully updated!",
['VU_EMPLOYEE_NOTIFY_PR'] = "You were promoted to %s!",
['VU_MANAGER_EMPLOYEE_PR'] = "Successfully promoted %s to %s!",
['VU_MANAGER_EMPLOYEE_FR'] = "Successfully fired %s from this business.",
['VU_MANAGER_STOCK_UPDATED'] = "Successfully restocked alcohol",
['VU_MANAGER_1'] = "%s has accepted your hire request! (%s)",
['VU_MANAGER_2'] = "You were hired to Vanilla Unicorn (%s)",
['VU_MANAGER_3'] = "%s has declined your hire request.",
--- Text UIs
['VU_TEXT_UI_PURCHASE_ENTRY'] = "E - Purchase Entry Fee",
['VU_TEXT_UI_STRIPPER_CHANGE_INTERIOR'] = "E - Change Room Interior",
['VU_TEXT_UI_BARTENDER_1'] = "E - View Orders",
['VU_TEXT_UI_BARTENDER_2'] = "E - Create Drink",
['VU_TEXTUI_DJ_OPEN'] = "E - Open DJ",
--- 3D Text
['VU_3DTEXT_INTERACT'] = "[~g~E~w~] Watch",
['VU_3DTEXT_STRIPPER_USE_POOL'] = "[~q~E~w~] Dance",
['VU_3DTEXT_STRIPPER_INTERACT'] = "[~g~E~w~] Throw Money (~g~$%s~w~)\n[~r~G~w~] Exit",
['VU_3DTEXT_PURCHASE_DRINK'] = "[~g~E~w~] Order a Drink",
['VU_3DTEXT_BARTENDER_INTERACTING'] = "Closest Player: ~b~%s~w~ (~b~%s~w~) \n[~g~E~w~] Place Drink\n[~r~G~w~] Cancel",
}Last updated