Exports & API
External functions for integrating with other scripts.
Overview
hsJobQuest V2 provides exports for:
Reading player data
Checking skills
Querying mission status
Economy information
Faction reputation
Server Exports
GetPlayerData
Get a player's complete data.
local playerData = exports['hsJobQuestV2']:GetPlayerData(citizenId)Parameters:
citizenId
string
Player identifier
Returns: table or nil
Example return:
{
citizenid = "ABC123",
name = "John Doe",
xp = 5250,
rank = 6,
money = 15000,
prestige = 1,
skill_points = 3,
total_deliveries = 85,
perfect_deliveries = 42,
total_earnings = 125000,
total_distance = 234.5
}Example:
-- In another server script
local playerData = exports['hsJobQuestV2']:GetPlayerData(citizenId)
if playerData and playerData.rank >= 5 then
-- Player is eligible for special content
endGetPlayerRank
Get a player's current rank.
local rank = exports['hsJobQuestV2']:GetPlayerRank(citizenId)Parameters:
citizenId
string
Player identifier
Returns: number (1-10) or nil
Example:
local rank = exports['hsJobQuestV2']:GetPlayerRank(citizenId)
if rank >= 10 then
print("Max rank achieved!")
endGetPlayerPrestige
Get a player's prestige level.
local prestige = exports['hsJobQuestV2']:GetPlayerPrestige(citizenId)Parameters:
citizenId
string
Player identifier
Returns: number (0-5) or nil
Example:
local prestige = exports['hsJobQuestV2']:GetPlayerPrestige(citizenId)
if prestige > 0 then
print("This player has prestiged " .. prestige .. " times!")
endGetSkillLevel
Get a specific skill level.
local level = exports['hsJobQuestV2']:GetSkillLevel(citizenId, category, skillName)Parameters:
citizenId
string
Player identifier
category
string
Skill category
skillName
string
Skill name
Skill Categories & Skills:
driving:speed_boost,fuel_efficiency,handling,brake_powerefficiency:quick_load,gps_enhancement,bonus_finder,stamina,long_haulcombat:vehicle_armor,evade_police,threat_awareness,package_insurancespecial:double_xp,money_multiplier,lucky_drops
Returns: number (0 to max level)
Example:
local fuelLevel = exports['hsJobQuestV2']:GetSkillLevel(citizenId, 'driving', 'fuel_efficiency')
if fuelLevel > 0 then
print("Player has fuel efficiency level: " .. fuelLevel)
endGetSkillValue
Get the actual value of a skill (not level).
local value = exports['hsJobQuestV2']:GetSkillValue(citizenId, category, skillName)Parameters:
citizenId
string
Player identifier
category
string
Skill category
skillName
string
Skill name
Returns: number - The skill's effect value
Example:
-- Fuel efficiency at level 3 = 30% reduction
local fuelReduction = exports['hsJobQuestV2']:GetSkillValue(citizenId, 'driving', 'fuel_efficiency')
-- fuelReduction = 30HasActiveMission
Check if player has an active mission.
local hasMission = exports['hsJobQuestV2']:HasActiveMission(citizenId)Parameters:
citizenId
string
Player identifier
Returns: boolean
Example:
if exports['hsJobQuestV2']:HasActiveMission(citizenId) then
-- Player is on a delivery, don't start other jobs
TriggerClientEvent('notify', source, 'Finish your delivery first!')
return
endGetActiveMission
Get active mission details.
local mission = exports['hsJobQuestV2']:GetActiveMission(citizenId)Parameters:
citizenId
string
Player identifier
Returns: table or nil
Example return:
{
id = "MISSION_123",
jobType = "food_delivery",
jobName = "Food Delivery",
missionType = "standard",
currentDeliveryIndex = 2,
totalDeliveries = 3,
startTime = 1699000000,
vehicle = "burrito3",
faction = "courier_corp"
}Example:
local mission = exports['hsJobQuestV2']:GetActiveMission(citizenId)
if mission and mission.missionType == "express" then
print("Player is doing an express delivery!")
endGetFactionReputation
Get player's reputation with a faction.
local rep = exports['hsJobQuestV2']:GetFactionReputation(citizenId, factionId)Parameters:
citizenId
string
Player identifier
factionId
string
Faction identifier
Faction IDs:
courier_corp- General courier workmedical_express- Medical deliveriesluxury_logistics- High-end deliveriesstreet_runners- Underground deliveriesindustrial_freight- Heavy cargo
Returns: number (reputation points)
Reputation Levels:
0-500
Unknown
500-1000
Known
1000-2500
Trusted
2500-5000
Respected
5000+
Elite Partner
Example:
local rep = exports['hsJobQuestV2']:GetFactionReputation(citizenId, 'courier_corp')
if rep >= 1000 then
-- Player is "Trusted" with Courier Corp
print("Player has access to special courier missions!")
endGetATMBalance
Get player's ATM balance.
local balance = exports['hsJobQuestV2']:GetATMBalance(citizenId)Parameters:
citizenId
string
Player identifier
Returns: number - Balance amount
Example:
local balance = exports['hsJobQuestV2']:GetATMBalance(citizenId)
print("Player has $" .. balance .. " in their delivery account")AddATMBalance
Add money to player's ATM balance.
local success = exports['hsJobQuestV2']:AddATMBalance(citizenId, amount, reason)Parameters:
citizenId
string
Player identifier
amount
number
Amount to add
reason
string
Transaction reason
Returns: boolean - Success status
Example:
-- Bonus from another script
local success = exports['hsJobQuestV2']:AddATMBalance(citizenId, 500, "Bonus from community event")
if success then
TriggerClientEvent('notify', source, 'You received a $500 bonus!')
endRemoveATMBalance
Remove money from player's ATM balance.
local success = exports['hsJobQuestV2']:RemoveATMBalance(citizenId, amount, reason)Parameters:
citizenId
string
Player identifier
amount
number
Amount to remove
reason
string
Transaction reason
Returns: boolean - Success status
Example:
-- Fine system
local success = exports['hsJobQuestV2']:RemoveATMBalance(citizenId, 1000, "Late delivery penalty")
if success then
TriggerClientEvent('notify', source, 'You were fined $1000 for late delivery')
endGetEconomyMultiplier
Get current economy multiplier for a job.
local multiplier = exports['hsJobQuestV2']:GetEconomyMultiplier(jobType)Parameters:
jobType
string
Job type identifier
Job Types:
food_deliverypackage_deliverymedical_deliveryluxury_deliverycargo_delivery
Returns: number (0.8 to 1.5) - Demand multiplier
Example:
local mult = exports['hsJobQuestV2']:GetEconomyMultiplier('food_delivery')
-- mult = 1.15 (high demand)
local basePay = 500
local adjustedPay = basePay * mult -- $575Client Exports
IsOnMission
Check if local player is on a mission.
local onMission = exports['hsJobQuestV2']:IsOnMission()Returns: boolean
Example:
if exports['hsJobQuestV2']:IsOnMission() then
print("You're currently on a delivery!")
endGetCurrentObjective
Get current mission objective.
local objective = exports['hsJobQuestV2']:GetCurrentObjective()Returns: string or nil
Possible Values:
spawn_vehicle- Player needs to spawn their delivery vehicleload_packages- Player needs to load packages into vehiclego_to_delivery- Player is traveling to delivery locationretrieve_package- Player needs to retrieve package from vehicledeliver_package- Player needs to deliver package to recipientreturn_vehicle- Player needs to return vehicle to complete mission
Example:
local objective = exports['hsJobQuestV2']:GetCurrentObjective()
if objective == 'deliver_package' then
print("Get ready to deliver the package!")
endGetMissionProgress
Get delivery progress.
local current, total = exports['hsJobQuestV2']:GetMissionProgress()Returns:
number|nil- Current delivery indexnumber|nil- Total deliveries
Example:
local current, total = exports['hsJobQuestV2']:GetMissionProgress()
if current and total then
print("Delivery " .. current .. " of " .. total)
endGetDistanceTraveled
Get distance traveled in current mission.
local km = exports['hsJobQuestV2']:GetDistanceTraveled()Returns: number - Kilometers traveled
Example:
local distance = exports['hsJobQuestV2']:GetDistanceTraveled()
print("You've traveled " .. string.format("%.2f", distance) .. " km")GetMissionVehicle
Get current mission vehicle entity.
local vehicle = exports['hsJobQuestV2']:GetMissionVehicle()Returns: number|nil - Vehicle entity handle or nil
Example:
local vehicle = exports['hsJobQuestV2']:GetMissionVehicle()
if vehicle and DoesEntityExist(vehicle) then
local health = GetVehicleEngineHealth(vehicle)
print("Mission vehicle health: " .. health)
endGetMissionJobType
Get current mission's job type.
local jobType = exports['hsJobQuestV2']:GetMissionJobType()Returns: string|nil - Job type identifier
Example:
local jobType = exports['hsJobQuestV2']:GetMissionJobType()
if jobType == 'medical_delivery' then
print("Drive carefully - medical supplies on board!")
endGetMissionType
Get current mission type.
local missionType = exports['hsJobQuestV2']:GetMissionType()Returns: string|nil - Mission type
Mission Types:
standard- Regular deliveryexpress- Time-sensitive deliverybonus_hunt- Bonus objective huntinglong_haul- Long distance delivery
Example:
local missionType = exports['hsJobQuestV2']:GetMissionType()
if missionType == 'express' then
print("Hurry! This is an express delivery!")
endIntegration Examples
Example 1: Restrict Other Jobs During Mission
-- In your other job script (server-side)
RegisterCommand('startotherjob', function(source)
local citizenId = GetPlayerIdentifier(source)
if exports['hsJobQuestV2']:HasActiveMission(citizenId) then
TriggerClientEvent('notify', source, "Finish your delivery first!")
return
end
-- Start the other job
print("Starting new job for " .. citizenId)
end)Example 2: Skill-Based Fuel Reduction
-- In your fuel script (server-side)
function CalculateFuelConsumption(source, distance)
local citizenId = GetPlayerIdentifier(source)
local fuelReduction = exports['hsJobQuestV2']:GetSkillValue(citizenId, 'driving', 'fuel_efficiency') or 0
local baseConsumption = distance * 0.1 -- 0.1 fuel per meter
local reduction = 1 - (fuelReduction / 100)
return baseConsumption * reduction
endExample 3: Rank-Based Rewards
-- Give bonus based on delivery rank (server-side)
RegisterNetEvent('myscript:giveBonus', function()
local source = source
local citizenId = GetPlayerIdentifier(source)
local rank = exports['hsJobQuestV2']:GetPlayerRank(citizenId) or 1
local bonus = rank * 100 -- $100 per rank
exports['qb-core']:GetPlayer(source).Functions.AddMoney('cash', bonus)
TriggerClientEvent('notify', source, 'Received rank bonus: $' .. bonus)
end)Example 4: Check Faction Standing
-- VIP area access based on faction rep (server-side)
function CanAccessVIPArea(citizenId)
local rep = exports['hsJobQuestV2']:GetFactionReputation(citizenId, 'luxury_logistics')
return rep >= 5000 -- "Elite Partner" status required
end
RegisterNetEvent('checkVIPAccess', function()
local source = source
local citizenId = GetPlayerIdentifier(source)
if CanAccessVIPArea(citizenId) then
TriggerClientEvent('openVIPDoor', source)
else
TriggerClientEvent('notify', source, 'You need 5000+ Luxury Logistics rep!')
end
end)Example 5: Custom HUD Integration
-- Display mission info on custom HUD (client-side)
CreateThread(function()
while true do
Wait(1000)
if exports['hsJobQuestV2']:IsOnMission() then
local current, total = exports['hsJobQuestV2']:GetMissionProgress()
local objective = exports['hsJobQuestV2']:GetCurrentObjective()
local distance = exports['hsJobQuestV2']:GetDistanceTraveled()
-- Send to your custom HUD
SendNUIMessage({
type = 'updateMission',
data = {
progress = current .. '/' .. total,
objective = objective,
distance = string.format("%.1f km", distance)
}
})
end
end
end)Example 6: Anti-Cheat Integration
-- Prevent teleporting during missions (server-side)
AddEventHandler('playerTeleported', function(source, oldCoords, newCoords)
local citizenId = GetPlayerIdentifier(source)
if exports['hsJobQuestV2']:HasActiveMission(citizenId) then
local mission = exports['hsJobQuestV2']:GetActiveMission(citizenId)
-- Log suspicious activity
print(string.format('[ANTICHEAT] Player %s teleported during mission %s',
citizenId, mission.id))
-- Optionally cancel their mission
TriggerEvent('hsjobquest:server:cancelMission', citizenId)
end
end)Example 7: Dynamic Economy Integration
-- Adjust prices based on delivery demand (server-side)
RegisterCommand('checkdeliverydemand', function(source)
local demands = {}
local jobTypes = {'food_delivery', 'package_delivery', 'medical_delivery', 'luxury_delivery', 'cargo_delivery'}
for _, jobType in ipairs(jobTypes) do
local mult = exports['hsJobQuestV2']:GetEconomyMultiplier(jobType)
demands[jobType] = mult
end
TriggerClientEvent('showDemands', source, demands)
end)Notes
All
citizenIdparameters should use the framework's identifier system (e.g., QBCore'scitizenid, ESX'sidentifier)Client exports only work on the local client and cannot be called from server
Server exports can be called from any server-side script
Always check return values for
nilbefore using themSkill values are percentages (e.g., 30 = 30% reduction/bonus)
Economy multipliers update dynamically based on player activity
Support
Version: 2.1.0 Last Updated: 2025