Messages
23
Reactions
0
Credits
1,155
Joined
Apr 2022
Messages
138
Reactions
0
Credits
4
Joined
Sep 2021
Messages
296
Reactions
1
Credits
1,279
Joined
Aug 2022
Messages
579
Reactions
0
Credits
105
Joined
Dec 2023
Messages
114
Reactions
0
Credits
1,847
Joined
Oct 2023
Messages
188
Reactions
0
Credits
38
Joined
Jun 2023
Messages
210
Reactions
0
Credits
1
Joined
Mar 2023
Messages
271
Reactions
0
Credits
1,038
Joined
Sep 2023
Messages
37
Reactions
2
Credits
1,893
Joined
Nov 2022
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
5
Reactions
0
Credits
21
Joined
Aug 2022
soargaming,
wrote:
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
-=Stripped Content=-
sooo cool i want it but need to get some credits
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
75
Reactions
0
Credits
6
Joined
Dec 2023
Messages
3
Reactions
0
Credits
9
Joined
Feb 2023
soargaming,
wrote:
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
-=Stripped Content=-
adwadwad
awdwadawdsa yes i want please now
Messages
97
Reactions
0
Credits
22
Joined
Dec 2022
Config = {}
-- █▀ █▀▄ ▄▀▄ █▄ ▄█ ██▀ █ █ ▄▀▄ █▀▄ █▄▀
-- █▀ █▀▄ █▀█ █ ▀ █ █▄▄ ▀▄▀▄▀ ▀▄▀ █▀▄ █ █
Config.Core = "ESX" -- "ESX" / "QB-Core"
Config.CoreExport = function()
return exports['qb-core']:GetCoreObject()
end
Config.PlayerLoaded = 'QBCore:Client:OnPlayerLoaded'
[email protected] for QB-Core: 'QBCore:Client:OnPlayerLoaded'
Config.Notification = function(message, type)
if type == "success" then
TriggerEvent('QBCore:Notify', message, 'success', 5000)
elseif type == "error" then
TriggerEvent('QBCore:Notify', message, 'error', 5000)
end
end
Config.Interact = {
Enabled = false,
Open = function(message)
exports["interact"]:Open("E", message) -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
exports['qb-core']:DrawText(message, 'right')
end,
Close = function()
exports["interact"]:Close() -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
exports['qb-core']:HideText()
end,
}
-- ▀█▀ █▀▄ ▄▀▄ █▄ █ ▄▀▀ █ ▄▀▄ ▀█▀ ██▀
-- █ █▀▄ █▀█ █ ▀█ ▄██ █▄▄ █▀█ █ █▄▄
Config.Translate = {
['open_menu'] = "Press ~INPUT_CONTEXT~ to open the menu",
['menu.title'] = {icon = '', label = "Select the type of exam"},
['menu.theory_a'] = {icon = 'far fa-file-alt', label = "Motorcycle theory (%s$)"},
['menu.practical_a'] = {icon = 'fas fa-motorcycle', label = "Motorcycle practical (%s$)"},
['menu.theory_b'] = {icon = 'far fa-file-alt', label = "Car theory (%s$)"},
['menu.practical_b'] = {icon = 'fas fa-car-side', label = "Car practical (%s$)"},
['menu.theory_c'] = {icon = 'far fa-file-alt', label = "Truck theory (%s$)"},
['menu.practical_c'] = {icon = 'fas fa-truck', label = "Truck practical (%s$)"},
['exceeded_speed_limit'] = "You have exceeded the speed limit (%s/%s), the speed limit is %s kmh",
['vehicle_was_damaged'] = "The vehicle was damaged (%s/%s)",
['exceeded_error_limit'] = "You have exceeded the error limit, you must return to the driving school.",
['started_practical'] = "You have started the practical exam, follow the examiners' instructions.",
['complete_theory'] = "Press ~INPUT_CONTEXT~ to complete the theory exam.",
['success_practical'] = "Congratulations, you have obtained your driving license.",
['failed_practical'] = "Unfortunately, you did not manage to obtain a driving license.",
['the_maneuvering_area_is_occupied'] = "The maneuvering area is occupied.", -- Config.CheckIsManeuveringAreaIsOccupied
['not_enough_cash'] = "You do not have enough money for this exam",
['not_enough_cash_and_bank'] = "You do not have enough cash and money in your bank account for this exam",
}
-- █▄ ▄█ ▄▀▄ █ █▄ █ ▄▀▀ ██▀ ▀█▀ ▀█▀ █ █▄ █ ▄▀ ▄▀▀
-- █ ▀ █ █▀█ █ █ ▀█ ▄██ █▄▄ █ █ █ █ ▀█ ▀▄█ ▄██
Config.AccessOnMarker = false -- Do you want to use access to the exam selection menu as E in marker?
Config.UseTarget = true
Config.TargetResource = 'ox_target'
Config.Target = function()
exports[Config.TargetResource]:addBoxZone({
coords = vec(Config.Zones["menu"].coords.x, Config.Zones["menu"].coords.y, Config.Zones["menu"].coords.z+0.35),
size = vec(4.0, 4.0, 4.0),
debug = false,
useZ = true,
rotation = 60,
distance = 9.0,
options = {
{
name = 'driveschoolv2',
event = 'vms_driveschoolv2:openMenu',
icon = 'fa-regular fa-file-lines',
label = "Drive School"
}
}
})
end
Config.UseSoundsUI = true -- Do you want to use interaction sounds in the UI?
Config.EnableBlur = true -- Do you want to blur the background in the game when you have the UI running?
Config.PossibleChargeByBank = true -- if you set it true, when the player does not have enough cash, it will try to take it from his bank account
Config.EnableMaxSpeedLoop = true
Config.MaxSpeedLoopTimeout = 1000 -- if Config.EnableMaxSpeedLoop = true and exceeds the maximum speed, will have 1 second (1000 milliseconds) to reduce the speed, otherwise another error will be charged
Config.MaxSpeed = 50 -- if you don't want a speed limit set nil
Config.SpeedMultiplier = 3.6 -- kmh = 3.6 / mph = 2.236936
Config.MaxDriveErrors = 5 -- How much maximum a player can get bugs for vehicle damage, on 5 will require going back to driving school and failing the test
Config.CheckIsManeuveringAreaIsOccupied = true -- If the maneuvering area is occupied, the practical exam will not start and the player will receive notification about it
Config.Examiner = {
Enabled = true, -- Do you want to use a ped as an examiner who sits with the player in the vehicle?
SpokenCommands = true,
SpokenLanguage = "EN", -- "EN", "DE", "BG", "ES", "FR", "PT"
PedModel = 'ig_fbisuit_01' -- https://wiki.rage.mp/index.php?title=Peds
}
Config.Licenses = {
Theory = {
['A'] = {name = 'theory_a', price = 450, enabled = true},
['B'] = {name = 'theory_b', price = 500, enabled = true},
['C'] = {name = 'theory_c', price = 700, enabled = true}
},
Practical = {
['A'] = {name = 'drive_a', price = 950, enabled = true},
['B'] = {name = 'drive_b', price = 1000, enabled = true},
['C'] = {name = 'drive_c', price = 1500, enabled = true}
}
}
Config.Questions = {
['A'] = {
QuestionsCount = 18, -- Number of all questions for the draw pool
QuestionToAnswer = 18, -- Questions the player will have to answer
NeedAnswersToPass = 12, -- Number of questions a player must answer correctly to pass the theory exam
},
['B'] = {
QuestionsCount = 17,
QuestionToAnswer = 17,
NeedAnswersToPass = 11,
},
['C'] = {
QuestionsCount = 5,
QuestionToAnswer = 5,
NeedAnswersToPass = 3,
},
}
Config.Tasks = {
{label = "Start the engine", id = 1},
{label = "Turn on the headlights", id = 2},
{label = "Go straight ahead", id = 3},
{label = "Park in reverse bias", id = 4},
{label = "Parallel park in front", id = 5},
{label = "Parallel park in reverse", id = 7},
{label = "Leave the maneuvering area", id = 8},
{label = "Take a public road", id = 9},
{label = "Stop before the pedestrian crossing", id = 10},
{label = "Free ride 0.00km / 2.00km", id = 11},
{label = "Return to the driving school", id = 12},
}
Config.Zones = {
["menu"] = {
menuType = "ox_lib", -- "esx_menu_default" / "esx_context" / "qb-menu" / "ox_lib"
menuPosition = 'left', -- only for esx_menu_default and esx_context
coords = vector3(-893.67, -2402.06, 14.125),
marker = {
id = 36, -- https://docs.fivem.net/docs/game-references/markers/
color = {115, 255, 115, 120}, -- R(ed), G(reen), B(lue), A(lpha)
scale = vec(0.65, 0.65, 0.65),
bobUpAndDown = false, -- jumping marker
rotate = true -- rotating marker
},
blip = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 523,
display = 4,
scale = 0.8,
color = 46,
name = "Driving School"
}
},
["return_vehicle"] = {
coords = vector3(-890.08, -2377.37, 12.94),
marker = {
id = 1, -- https://docs.fivem.net/docs/game-references/markers/
color = {255, 0, 0, 120}, -- R(ed), G(reen), B(lue), A(lpha)
scale = vec(1.5, 1.5, 0.75),
bobUpAndDown = false, -- jumping marker
rotate = true -- rotating marker
},
blip = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 467,
display = 4,
scale = 1.0,
color = 2,
routeColor = 2,
name = "Return to Drive School"
}
}
}
Config.Practical = {
['Vehicles'] = { -- https://docs.fivem.net/docs/game-references/vehicle-models/
A = 'pcj',
B = 'premier',
C = 'boxville_vms',
},
['Marker'] = { -- https://docs.fivem.net/docs/game-references/markers/
id = 20,
size = vec(0.35, 0.35, 0.35),
rotate = {0.0, 180.0, 0.0},
rgba = {255, 255, 0, 140},
rotataing = true
},
['Blip'] = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 270,
display = 4,
scale = 0.8,
color = 28,
routeColor = 28,
name = "Point"
},
['SpawnPoint'] = vector4(-723.38, -2210.23, 4.9, 49.79),
}
Config.PracticalTest = { -- if you don't know what each action does, don't touch it to avoid spoiling the exam route
[1] = {
action = function()
if Config.Examiner.SpokenCommands and driveErrors 2.00 then
SendNUIMessage({action = 'updateDriveProgress', count = 2.00, id = 11})
SendNUIMessage({action = 'updateTasks', done = 11})
setBlipToSchool(true)
break
end
end
end
end
},
[12] = {
action = function()
local inRange = false
local shown = false
if Config.Examiner.SpokenCommands and currentExam and (driveErrors = Config.MaxDriveErrors) then
SendNUIMessage({action = 'audioTask', filename = string.lower(Config.Examiner.SpokenLanguage)..'_12.mp3'})
end
while currentExam do
inRange = false
local sleep = true
local myPed = PlayerPedId()
local myVehicle = GetVehiclePedIsIn(myPed, false)
if myVehicle then
local myCoords = GetEntityCoords(myVehicle)
local returnTable = Config.Zones["return_vehicle"]
local distance = #(myCoords - returnTable.coords)
if distance < 25.0 then
sleep = false
DrawMarker(returnTable.marker.id, returnTable.coords.x, returnTable.coords.y, returnTable.coords.z, 0, 0, 0, 0, 0, 0, returnTable.marker.scale, returnTable.marker.color[1], returnTable.marker.color[2], returnTable.marker.color[3], returnTable.marker.color[4], returnTable.marker.bobUpAndDown, false, false, returnTable.marker.rotate, false, false, false)
if distance < 1.5 then
inRange = true
if Config.Core == "ESX" and not Config.Interact.Enabled then
ESX.ShowHelpNotification(Config.Translate['complete_theory'])
end
if IsControlJustPressed(0, 38) then
DeleteVehicle(myVehicle)
if Config.Examiner.Enabled then
DeletePed(examinerPed)
end
setBlipToSchool(false)
SendNUIMessage({action = 'updateTasks', done = 12})
SendNUIMessage({action = 'closeTasks'})
if Config.Interact.Enabled then
Config.Interact.Close()
end
break
end
end
end
if Config.Interact.Enabled then
if inRange and not shown then
shown = true
Config.Interact.Open(Config.Translate['complete_theory'])
elseif not inRange and shown then
shown = false
Config.Interact.Close()
end
end
end
Citizen.Wait(sleep and 1000 or 1)
end
end
},
}[/config]
-- █▀ █▀▄ ▄▀▄ █▄ ▄█ ██▀ █ █ ▄▀▄ █▀▄ █▄▀
-- █▀ █▀▄ █▀█ █ ▀ █ █▄▄ ▀▄▀▄▀ ▀▄▀ █▀▄ █ █
Config.Core = "ESX" -- "ESX" / "QB-Core"
Config.CoreExport = function()
return exports['qb-core']:GetCoreObject()
end
Config.PlayerLoaded = 'QBCore:Client:OnPlayerLoaded'
[email protected] for QB-Core: 'QBCore:Client:OnPlayerLoaded'
Config.Notification = function(message, type)
if type == "success" then
TriggerEvent('QBCore:Notify', message, 'success', 5000)
elseif type == "error" then
TriggerEvent('QBCore:Notify', message, 'error', 5000)
end
end
Config.Interact = {
Enabled = false,
Open = function(message)
exports["interact"]:Open("E", message) -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
exports['qb-core']:DrawText(message, 'right')
end,
Close = function()
exports["interact"]:Close() -- Here you can use your TextUI or use my free one - https://github.com/vames-dev/interact
exports['qb-core']:HideText()
end,
}
-- ▀█▀ █▀▄ ▄▀▄ █▄ █ ▄▀▀ █ ▄▀▄ ▀█▀ ██▀
-- █ █▀▄ █▀█ █ ▀█ ▄██ █▄▄ █▀█ █ █▄▄
Config.Translate = {
['open_menu'] = "Press ~INPUT_CONTEXT~ to open the menu",
['menu.title'] = {icon = '', label = "Select the type of exam"},
['menu.theory_a'] = {icon = 'far fa-file-alt', label = "Motorcycle theory (%s$)"},
['menu.practical_a'] = {icon = 'fas fa-motorcycle', label = "Motorcycle practical (%s$)"},
['menu.theory_b'] = {icon = 'far fa-file-alt', label = "Car theory (%s$)"},
['menu.practical_b'] = {icon = 'fas fa-car-side', label = "Car practical (%s$)"},
['menu.theory_c'] = {icon = 'far fa-file-alt', label = "Truck theory (%s$)"},
['menu.practical_c'] = {icon = 'fas fa-truck', label = "Truck practical (%s$)"},
['exceeded_speed_limit'] = "You have exceeded the speed limit (%s/%s), the speed limit is %s kmh",
['vehicle_was_damaged'] = "The vehicle was damaged (%s/%s)",
['exceeded_error_limit'] = "You have exceeded the error limit, you must return to the driving school.",
['started_practical'] = "You have started the practical exam, follow the examiners' instructions.",
['complete_theory'] = "Press ~INPUT_CONTEXT~ to complete the theory exam.",
['success_practical'] = "Congratulations, you have obtained your driving license.",
['failed_practical'] = "Unfortunately, you did not manage to obtain a driving license.",
['the_maneuvering_area_is_occupied'] = "The maneuvering area is occupied.", -- Config.CheckIsManeuveringAreaIsOccupied
['not_enough_cash'] = "You do not have enough money for this exam",
['not_enough_cash_and_bank'] = "You do not have enough cash and money in your bank account for this exam",
}
-- █▄ ▄█ ▄▀▄ █ █▄ █ ▄▀▀ ██▀ ▀█▀ ▀█▀ █ █▄ █ ▄▀ ▄▀▀
-- █ ▀ █ █▀█ █ █ ▀█ ▄██ █▄▄ █ █ █ █ ▀█ ▀▄█ ▄██
Config.AccessOnMarker = false -- Do you want to use access to the exam selection menu as E in marker?
Config.UseTarget = true
Config.TargetResource = 'ox_target'
Config.Target = function()
exports[Config.TargetResource]:addBoxZone({
coords = vec(Config.Zones["menu"].coords.x, Config.Zones["menu"].coords.y, Config.Zones["menu"].coords.z+0.35),
size = vec(4.0, 4.0, 4.0),
debug = false,
useZ = true,
rotation = 60,
distance = 9.0,
options = {
{
name = 'driveschoolv2',
event = 'vms_driveschoolv2:openMenu',
icon = 'fa-regular fa-file-lines',
label = "Drive School"
}
}
})
end
Config.UseSoundsUI = true -- Do you want to use interaction sounds in the UI?
Config.EnableBlur = true -- Do you want to blur the background in the game when you have the UI running?
Config.PossibleChargeByBank = true -- if you set it true, when the player does not have enough cash, it will try to take it from his bank account
Config.EnableMaxSpeedLoop = true
Config.MaxSpeedLoopTimeout = 1000 -- if Config.EnableMaxSpeedLoop = true and exceeds the maximum speed, will have 1 second (1000 milliseconds) to reduce the speed, otherwise another error will be charged
Config.MaxSpeed = 50 -- if you don't want a speed limit set nil
Config.SpeedMultiplier = 3.6 -- kmh = 3.6 / mph = 2.236936
Config.MaxDriveErrors = 5 -- How much maximum a player can get bugs for vehicle damage, on 5 will require going back to driving school and failing the test
Config.CheckIsManeuveringAreaIsOccupied = true -- If the maneuvering area is occupied, the practical exam will not start and the player will receive notification about it
Config.Examiner = {
Enabled = true, -- Do you want to use a ped as an examiner who sits with the player in the vehicle?
SpokenCommands = true,
SpokenLanguage = "EN", -- "EN", "DE", "BG", "ES", "FR", "PT"
PedModel = 'ig_fbisuit_01' -- https://wiki.rage.mp/index.php?title=Peds
}
Config.Licenses = {
Theory = {
['A'] = {name = 'theory_a', price = 450, enabled = true},
['B'] = {name = 'theory_b', price = 500, enabled = true},
['C'] = {name = 'theory_c', price = 700, enabled = true}
},
Practical = {
['A'] = {name = 'drive_a', price = 950, enabled = true},
['B'] = {name = 'drive_b', price = 1000, enabled = true},
['C'] = {name = 'drive_c', price = 1500, enabled = true}
}
}
Config.Questions = {
['A'] = {
QuestionsCount = 18, -- Number of all questions for the draw pool
QuestionToAnswer = 18, -- Questions the player will have to answer
NeedAnswersToPass = 12, -- Number of questions a player must answer correctly to pass the theory exam
},
['B'] = {
QuestionsCount = 17,
QuestionToAnswer = 17,
NeedAnswersToPass = 11,
},
['C'] = {
QuestionsCount = 5,
QuestionToAnswer = 5,
NeedAnswersToPass = 3,
},
}
Config.Tasks = {
{label = "Start the engine", id = 1},
{label = "Turn on the headlights", id = 2},
{label = "Go straight ahead", id = 3},
{label = "Park in reverse bias", id = 4},
{label = "Parallel park in front", id = 5},
{label = "Parallel park in reverse", id = 7},
{label = "Leave the maneuvering area", id = 8},
{label = "Take a public road", id = 9},
{label = "Stop before the pedestrian crossing", id = 10},
{label = "Free ride 0.00km / 2.00km", id = 11},
{label = "Return to the driving school", id = 12},
}
Config.Zones = {
["menu"] = {
menuType = "ox_lib", -- "esx_menu_default" / "esx_context" / "qb-menu" / "ox_lib"
menuPosition = 'left', -- only for esx_menu_default and esx_context
coords = vector3(-893.67, -2402.06, 14.125),
marker = {
id = 36, -- https://docs.fivem.net/docs/game-references/markers/
color = {115, 255, 115, 120}, -- R(ed), G(reen), B(lue), A(lpha)
scale = vec(0.65, 0.65, 0.65),
bobUpAndDown = false, -- jumping marker
rotate = true -- rotating marker
},
blip = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 523,
display = 4,
scale = 0.8,
color = 46,
name = "Driving School"
}
},
["return_vehicle"] = {
coords = vector3(-890.08, -2377.37, 12.94),
marker = {
id = 1, -- https://docs.fivem.net/docs/game-references/markers/
color = {255, 0, 0, 120}, -- R(ed), G(reen), B(lue), A(lpha)
scale = vec(1.5, 1.5, 0.75),
bobUpAndDown = false, -- jumping marker
rotate = true -- rotating marker
},
blip = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 467,
display = 4,
scale = 1.0,
color = 2,
routeColor = 2,
name = "Return to Drive School"
}
}
}
Config.Practical = {
['Vehicles'] = { -- https://docs.fivem.net/docs/game-references/vehicle-models/
A = 'pcj',
B = 'premier',
C = 'boxville_vms',
},
['Marker'] = { -- https://docs.fivem.net/docs/game-references/markers/
id = 20,
size = vec(0.35, 0.35, 0.35),
rotate = {0.0, 180.0, 0.0},
rgba = {255, 255, 0, 140},
rotataing = true
},
['Blip'] = { -- https://docs.fivem.net/docs/game-references/blips/
sprite = 270,
display = 4,
scale = 0.8,
color = 28,
routeColor = 28,
name = "Point"
},
['SpawnPoint'] = vector4(-723.38, -2210.23, 4.9, 49.79),
}
Config.PracticalTest = { -- if you don't know what each action does, don't touch it to avoid spoiling the exam route
[1] = {
action = function()
if Config.Examiner.SpokenCommands and driveErrors 2.00 then
SendNUIMessage({action = 'updateDriveProgress', count = 2.00, id = 11})
SendNUIMessage({action = 'updateTasks', done = 11})
setBlipToSchool(true)
break
end
end
end
end
},
[12] = {
action = function()
local inRange = false
local shown = false
if Config.Examiner.SpokenCommands and currentExam and (driveErrors = Config.MaxDriveErrors) then
SendNUIMessage({action = 'audioTask', filename = string.lower(Config.Examiner.SpokenLanguage)..'_12.mp3'})
end
while currentExam do
inRange = false
local sleep = true
local myPed = PlayerPedId()
local myVehicle = GetVehiclePedIsIn(myPed, false)
if myVehicle then
local myCoords = GetEntityCoords(myVehicle)
local returnTable = Config.Zones["return_vehicle"]
local distance = #(myCoords - returnTable.coords)
if distance < 25.0 then
sleep = false
DrawMarker(returnTable.marker.id, returnTable.coords.x, returnTable.coords.y, returnTable.coords.z, 0, 0, 0, 0, 0, 0, returnTable.marker.scale, returnTable.marker.color[1], returnTable.marker.color[2], returnTable.marker.color[3], returnTable.marker.color[4], returnTable.marker.bobUpAndDown, false, false, returnTable.marker.rotate, false, false, false)
if distance < 1.5 then
inRange = true
if Config.Core == "ESX" and not Config.Interact.Enabled then
ESX.ShowHelpNotification(Config.Translate['complete_theory'])
end
if IsControlJustPressed(0, 38) then
DeleteVehicle(myVehicle)
if Config.Examiner.Enabled then
DeletePed(examinerPed)
end
setBlipToSchool(false)
SendNUIMessage({action = 'updateTasks', done = 12})
SendNUIMessage({action = 'closeTasks'})
if Config.Interact.Enabled then
Config.Interact.Close()
end
break
end
end
end
if Config.Interact.Enabled then
if inRange and not shown then
shown = true
Config.Interact.Open(Config.Translate['complete_theory'])
elseif not inRange and shown then
shown = false
Config.Interact.Close()
end
end
end
Citizen.Wait(sleep and 1000 or 1)
end
end
},
}[/config]