Installation
Installation guide for this resource
Ensure following order in your server.cfg
ensure ox_lib
ensure <your_frame_work>
ensure bv-guidedmissile
For ox_inventory > data > items
['mil_laptop'] = {
label = 'Military Grade Laptop',
weight = 1000,
stack = false
}
For qb-core > shared > items
mil_laptop = { name = 'mil_laptop', label = 'Military Grade Laptop', weight = 1000, type = 'item', image = 'mil_laptop.png', unique = true, useable = true, shouldClose = true, description = 'A Military grade laptop.' },
Config:
ConfigSettings = {
framework = 'qbox', -- esx, qbox, qbcore
skillCheck = function() -- Set to true to disable
return lib.skillCheck({'easy', 'easy', {areaSize = 60, speedMultiplier = 2}, 'hard'}, {'w', 'a', 's', 'd'})
end,
cameraFuzzStrength = 0.18,
killStreaks = false, -- Enables built-in kill Streak System
BallisticMissiles = {
[`w_ex_vehiclemissile_4`] = {
fuelLevel = 100.0,
fuelConsumptionRate = 0.1,
missileMach = 18.0,
boostSpeed = 40.0,
camOffset = vec3(0.0, 0.0, 0.0),
particleOffset = vec3(0.0, -1.0, 0.0),
particleSize = 1.0,
explosionType = 81, -- (https://docs.fivem.net/natives/?_0xE3AD2BDBAEE269AC)
damageScale = 5.0,
spawnHeight = 550.0,
minDistance = 600.0,
maximumDistance = 1000.0,
name = "Chernobog Missile",
description = "A <strong>next-gen hypersonic missile</strong> equipped with AI-guided precision. Reaches Mach 18 with low-altitude, terrain-hugging flight. Built for overwhelming speed and surgical impact.",
image = "assets/chernobog.png",
requireJob = {
enabled = false,
name = 'police',
grade = 1
},
killStreak = 3, -- Kill streak needed to select this missile.
CruiseMissile = true -- will act as a cruise missile inspired from COD
},
[`w_smug_airmissile_02`] = {
fuelLevel = 100.0,
fuelConsumptionRate = 0.08,
missileMach = 16.0,
boostSpeed = 40.0,
camOffset = vec3(1.0, -3.0, 0.60),
particleOffset = vec3(0.0, 0.0, 0.0),
particleSize = 1.0,
explosionType = 81,
damageScale = 8.0,
spawnHeight = 400.0,
minDistance = 1000.0,
maximumDistance = 1500.0,
name = "HMX-081",
description = "The <strong>HMX-081</strong> is a next-generation hypersonic missile equipped with <strong>AI-assisted targeting</strong> and <strong>terrain-following guidance</strong>. Reaching speeds up to Mach 16, it delivers precision and power at extreme ranges.",
image = "assets/hmx081.png",
requireJob = {
enabled = true,
name = 'police',
grade = 2
},
killStreak = 4, -- Kill streak needed to select this missile.
CruiseMissile = false
},
[`w_ex_vehiclemissile_1`] = {
fuelLevel = 100.0,
fuelConsumptionRate = 0.06,
missileMach = 16.0,
boostSpeed = 40.0,
camOffset = vec3(1.0, -3.0, 0.60),
particleOffset = vec3(0.0, -1.0, 0.0),
particleSize = 1.0,
explosionType = 81,
damageScale = 10.0,
spawnHeight = 400.0,
minDistance = 1500.0,
maximumDistance = 2000.0,
name = "Hellfire Missile",
description = "Advanced <strong>hypersonic cruise missile</strong> with AI-powered targeting. Capable of Mach 16 speeds with terrain-following capability.",
image = "assets/hellfire.png",
requireJob = {
enabled = true,
name = 'police',
grade = 4
},
killStreak = 5, -- Kill streak needed to select this missile.
CruiseMissile = false
}
},
blipSettings = {
sprite = 548,
colour = 5,
scale = 1.0,
display = 2
},
laptopModel = "prop_laptop_lester2",
itemName = 'mil_laptop', -- Set to false to disable use as item
boostKEY = 'B',
switchVisionKey = 'CAPITAL',
detonateKey = 'E',
cancelKey = 'C',
OnPlayerUseLaptop = function()
DisplayRadar(false)
if GetResourceState('ox_target') == 'started' then
exports.ox_target:disableTargeting(true)
elseif GetResourceState('qb-target') == 'started' then
exports['qb-target']:AllowTargeting(false)
end
LocalPlayer.state.invBusy = true
end,
OnPlayerMissileTerminated = function()
ClearTimecycleModifier()
ClearFocus()
DisplayRadar(true)
if GetResourceState('ox_target') == 'started' then
exports.ox_target:disableTargeting(false)
elseif GetResourceState('qb-target') == 'started' then
exports['qb-target']:AllowTargeting(true)
end
LocalPlayer.state.invBusy = false
end,
keyOptions = function(detonateKey, boostKey, switchkey)
return {
string.format('Press <span class="key">%s</span> to Detonate', detonateKey),
string.format('Press <span class="key">%s</span> to Boost', boostKey),
string.format('Press <span class="key">%s</span> to Switch Vision', switchkey)
}
end,
Notify = function(data)
data.title = data.title or 'SYSTEM'
data.description = data.description or 'NADA'
data.duration = data.duration or 6000
data.type = data.type or 'inform'
if data.src then
lib.notify(data.src, {
title = data.title,
description = data.description,
showDuration = true,
position = 'center-right',
type = data.type,
duration = data.duration
})
else
lib.notify({
title = data.title,
description = data.description,
showDuration = true,
position = 'center-right',
type = data.type,
duration = data.duration
})
end
end,
Translations = {
NOT_ENOUGH_FUEL = "Fuel is too low to boost!",
NOT_ENOUGH_STREAKS = "You don't have enough kill streaks to select this missile!",
NOT_ENOUGH_GRADE = "You're rank is not high enough to select this missile!",
NOT_AUTHORIZED = "You're not authorized to select this missile!",
IN_VEHICLE = "You can't do that while inside a vehicle!",
IS_DEAD = "You can't do that whilst dead or unconscious!",
IN_WATER = "You can't do that while in water!",
ALREADY_USING = "You're already using a military laptop!",
KILLSTREAK = "You're on owning! (%s)",
}
}
Last updated