Interactive Power-ups
Looking to bring a vibrant and unique menu full of new features to your server? This interactive power-up menu is a fully customizable menu, with build in features like a flashlight, rappelling rope, area scan, mini-drone and much more.
Get it here: gamzkystore.com
Support: Discord
Detailed preview: Youtube
Features
- The overlay position and rotation is updated with the player and camera movement, creating an immersive 3D effect.
- A total of 8 slots are configurable with a unique power-up, cooldown, job/item restriction, icon, sound-effect and more.
- Can works as a s̲t̲a̲n̲d̲a̲l̲o̲n̲e̲ script without any requirements, but it is also configured and tested for o̲x̲, e̲s̲x̲ and q͟b to handle item and job restrictions.
- Includes 6 highly configurable power-ups, which are described in more detail below.
Power-ups included with the script (any power-up can be tweaked or removed)
- A toggleable flashlight, which is synchronized between nearby players.
- An area scan, revealing either all nearby peds or only real players for a defined amount of time.
- A mini-drone, looks for nearby peds or only real players, and aims a laser at the closest one.
- A smokescreen to quickly create cover.
- The ability to equip armour.
- A rappelling rope, enabling you to rappel down any building (only partially synced between clients).
- (Additionally) an indication of the ammo in the currently equipped weapon.
How it works
- Press [E] (or another configured key) to open the overlay.
- Use a configured key, to toggle a power-up.
- The power-up is executed, if you meet the cooldown, item and/or job requirements.
- After the cooldown has passed, the power-up is ready to be used again.
Resmon: Idle: 0.02ms - Overlay with power-ups active: 0.04 to 0.1ms
Core/framework related functions are still accessible in the encrypted version, feel free to create a support ticket in our Discord in case of questions.
Config
Config = {}
Config.InteractionKey = 38 -- E (see https://docs.fivem.net/docs/game-references/controls/ if you want to change the key)
Config.CenteredPedBoneId = 24816 -- 24816 is the bone for the spine, you can change this to the bone you want to center the UI on.
Config.CenteredPedOffset = vector3(0.3, -0.2, -0.03) -- The offset of the UI from the bone, you can change this to the offset you want.
Config.FirstPersonPosition = vector2(0.9, 0.15) -- The position of the UI in first person view {values between 0.0 and 1.0, vector2(0.5, 0.5) is the center of the screen}, you can change this to the position you want. You can completely remove this variable if you do not want the UI to be shown in first person view.
Config.Layout = {
[1] = { -- This cell is not used by default, feel free to use and tweak it. All the options are explained below.
-- !! REQUIRED PARAMETERS !!
-- label = 'flashlight-icon.svg', -- The displayed label, can also be an image defined in the resources/images folder
-- row = 1, -- The row of the powerup icon in the 3x3 grid
-- col = 1, -- The column of the powerup icon in the 3x3 grid
-- !! OPTIONAL PARAMETERS !!
-- keyLabel = 'L', -- The key label of the powerup
-- keyNumber = 182, -- The key number of the powerup (see https://docs.fivem.net/docs/game-references/controls/ if you want to change the key)
-- startSound = 'flashlight-enable.wav', -- The sound that plays when the powerup is enabled, remove if you don't want a sound
-- endSound = 'flashlight-disable.wav', -- The sound that plays when the powerup is disabled, remove if you don't want a sound
-- action = function(toggled) -- The action that is executed when the powerup is toggled
-- ToggleFlashlight(toggled) -- Toggle the flashlight
-- end,
-- animation = 'flashlight', -- The animation that plays when the powerup is toggled, remove if you don't want an animation
-- cooldown = 1000, -- The cooldown of the powerup in milliseconds, if you do not define a cooldown the powerup can be toggled on and off.
-- requiredJob = { 'police' }, -- The jobs that can use the powerup, remove if you don't want a job restriction. You can define multiple jobs like this: { 'police', 'ambulance' }
-- requiredItem = 'flashlight', -- The required item to use the powerup, remove if you don't want an item restriction
-- removeOnToggle = false, -- If true, the item will be removed when the powerup is toggled
-- volume = 0.75, -- The volume of the startSound and endSound, value between 0.0 and 1.0
-- randomizeSound = 0.1, -- The amount of randomization to the sound, towards -1 decreases frequency, towards 1 increases frequency. This makes sure the sound is not too repetitive over multiple uses.
-- outlineStyle = 'dotted', -- The style of the cell outline, remove if you don't want an outline
},
[2] = { -- This cell toggles the flashlight
label = 'flashlight-icon.svg',
row = 1,
col = 2,
keyLabel = 'L',
keyNumber = 182,
startSound = 'flashlight-enable.wav',
endSound = 'flashlight-disable.wav',
action = function(toggled)
ToggleFlashlight(toggled)
end,
animation = 'flashlight',
},
[3] = { -- This cell displays the current ammo of the player's weapon
label = '0/0',
row = 1,
col = 3,
update = function()
return GetWeaponAmmo()
end,
},
[4] = { -- This cell enables the drone
label = 'drone-icon.svg',
row = 2,
col = 1,
keyLabel = 'H',
keyNumber = 74,
cooldown = 15000,
action = function(toggled)
EnableAreaDrone()
end,
},
[5] = { -- This cell refreshes the player's armour
label = 'vest-icon.svg',
row = 2,
col = 3,
keyLabel = 'K',
keyNumber = 311,
cooldown = 20000,
animation = 'armour',
requiredItem = 'armour',
removeOnToggle = true,
action = function(toggled)
GiveArmorToPlayer()
end,
},
[6] = { -- This cell deploys a smoke grenade
label = 'smoke-icon.svg',
row = 3,
col = 1,
keyLabel = 'Z',
keyNumber = 20,
cooldown = 10000,
requiredItem = 'weapon_smokegrenade',
removeOnToggle = true,
action = function(toggled)
DeploySmoke()
end,
},
[7] = { -- This cell scans the area for peds/players
label = 'scan-icon.svg',
row = 3,
col = 2,
keyLabel = 'X',
keyNumber = 73,
cooldown = 3000,
animation = 'scan',
startSound = 'scan.wav',
randomizeSound = -0.05,
action = function(toggled)
ExecuteAreaScan()
end,
},
[8] = { -- This cell allows the player to rappel down a rope
label = 'rope-icon.svg',
row = 3,
col = 3,
keyLabel = 'B',
keyNumber = 29,
cooldown = 3000,
requiredItem = 'rope',
removeOnToggle = false,
action = function(toggled)
RappelDownRope()
end,
},
}
-- All animations that are used are defined below
Config.Animations = {
flashlight = { -- The animation label used throughout the script
dict = 'random@arrests', -- The dictionary of the animation
anim = 'generic_radio_chatter', -- The animation
duration = 300, -- The duration of the animation in milliseconds
flag = 51, -- The flag of the animation
-- animationStart = 0.5, -- If you want to start the animation at a specific point, you can set the animationStart to the point you want to start the animation at (value between 0.0 and 1.0)
},
-- More animations are defined in the script here, but left out of this preview.
}
-- The configuration for the flashlight powerup
Config.Flashlight = {
attachBone = 64729, -- The bone id to attach the flashlight to, 10706 is the bone for the right clavicle
boneOffset = vector3(0.08, 0.07, -0.06), -- The offset of the flashlight from the bone
pointOffset = vector3(0.1, 4.0, -0.9), -- The offset of the point from the bone where the light will point at
intensity = 1.0, -- The intensity of the flashlight
distance = 20.0, -- The distance of the flashlight
syncDistance = 200.0, -- The maximum distance at which the flashlight will be visible to other players
prop = { -- Configure a flashlight prop
enabled = true, -- if true, the prop will be spawned when the player is using the flashlight
presistent = true, -- if true, the prop will not be despawned when the player is using the flashlight
model = 'prop_flash_unit', -- The model of the prop
position = vector3(0.14, 0.02, -0.06), -- The position of the prop with respect to the attachBone
rotation = vector3(180, -0.60, 22.0) -- The rotation of the prop with respect to the attachBone
}
}
-- The configuration for the scan powerup
Config.Scan = {
scanRadius = 75.0, -- The radius of the scan
fadeOpacityRadius = 25.0, -- The radius after which the opacity of the scan is gradually reduced
scanDuration = 3000, -- The duration of the scan
opacity = 0.3, -- The opacity of the scan
color = { r = 255, g = 230, b = 128 }, -- The rgb color of the scan
onlyTargetPlayers = false, -- If true, the scan will only highlight actual players, not peds
highlight = {
boneId = 12844, -- The bone id of the player to highlight, in this case 12844 is the head
spriteSize = 0.01, -- The size of the highlight sprite
textureDict = 'trafficcam', -- The texture dictionary of the highlight sprite
textureName = 'cursor', -- The texture name of the highlight sprite
color = { r = 255, g = 255, b = 255 }, -- The rgb color of the sprite (note that the default sprite itself is already yellow, so this will color will be applied on top of it)
additionalHighlightDuration = 5000, -- The additional duration of the highlight after the scan has fully completed
}
}
-- The configuration for the drone powerup
Config.Drone = {
model = 'ba_prop_battle_cameradrone', -- The model of the drone
height = 1.25, -- The average height at which the drone moves above the player
radius = 1.0, -- The radius of the drone's movement
speed = 0.5, -- The speed of the drone's movement
activeTime = 10000, -- The time the drone is active for untill it despawns
laserColor = { r = 255, g = 230, b = 128, a = 255 }, -- The color of the laser
maxLaserDistance = 75.0, -- The maximum distance of the laser, if no ped/player is within this distance, the drone will not be able to target them
requiresLineOfSight = true, -- If true, the drone will only be able to target peds/players that are within line of sight
onlyTargetPlayers = false, -- If true, the drone will only be able to target actual players, not peds
particle = { -- The particle effects that play when the drone spawns and despawns
['start'] = { dict = 'core', name = 'ent_sht_telegraph_pole', size = 0.3, duration = 1000 },
['end'] = { dict = 'core', name = 'ent_sht_electrical_box', size = 0.5, duration = 7500 }
}
}
-- The configuration for the rope powerup
Config.Rope = {
minLength = 1.0, -- The minimum length of the rope
maxLength = 100.0, -- The maximum length of the rope
introAnimation = 'rappel_start', -- The animation that plays when the player starts rappelling (see Config.Animations)
outroAnimation = 'rappel_end', -- The animation that plays when the player stops rappelling (see Config.Animations)
syncPositionOnStandStill = true, -- If true, the player's position will be synced to other clients every 500ms if the player is not moving. If this is set to false, the position of the rappeling player will not be synced to other clients until the ground is reached.
}
-- The configuration for the smoke powerup
Config.Smoke = {
dict = 'core', -- The dictionary of the smoke particle effect
name = 'exp_grd_grenade_smoke', -- The name of the smoke particle effect
size = 2.0, -- The size of the smoke particle effect
duration = 20000, -- The duration of the smoke particle effect
syncDistance = 400.0, -- The maximum distance at which the smoke particle effect will be synced to other players
useExplosionForSound = true, -- If true, the script will also create a very small smoke explosion at the smoke location, to create the sound effect
}
-- Change any notification text below
Config.Locales = {
['missing_job'] = 'You do not have the required job to use this.',
['missing_item'] = 'You do not have the required item to use this.',
['cannot_toggle'] = 'You cannot toggle this action.',
['no_suitable_location'] = 'Could not find a suitable location to rappel down.',
['unable_to_find_rope_ground'] = 'Unable to find any ground beneath the rope.',
['rope_too_short'] = 'The rope would be too short to rappel down.',
['rope_too_long'] = 'The rope would be too long to rappel down.',
['cannot_rappel'] = 'You cannot rappel down right now.',
}
-- Debug mode enables some prints that can help you debug the script.
Config.Debug = false
Code is accessible | Partially (config/framework/ui related code is accessible) |
Subscription-based | No |
Lines (approximately) | ~2000 |
Requirements | None |
Support | Yes |