File-parity

This commit is contained in:
Hawk 2024-12-30 11:15:34 +01:00
parent 010c93b73a
commit d0911bf62c
No known key found for this signature in database
GPG Key ID: 2890D5366F8BAC14
410 changed files with 7854 additions and 1733 deletions

View File

@ -10,5 +10,5 @@ resource_type 'map' { gameTypes = { ['basic-gamemode'] = true } }
map 'map.lua' map 'map.lua'
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'

View File

@ -10,5 +10,5 @@ resource_type 'map' { gameTypes = { ['basic-gamemode'] = true } }
map 'map.lua' map 'map.lua'
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'

View File

@ -10,7 +10,7 @@ resource_type 'map' { gameTypes = { ['basic-gamemode'] = true } }
map 'map.lua' map 'map.lua'
fx_version 'cerulean' fx_version 'adamant'
game 'rdr3' game 'rdr3'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@ -11,4 +11,4 @@ resource_type 'gametype' { name = 'Freeroam' }
client_script 'basic_client.lua' client_script 'basic_client.lua'
game 'common' game 'common'
fx_version 'cerulean' fx_version 'adamant'

View File

@ -6,7 +6,7 @@ description 'An example money system using KVS.'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
author 'Cfx.re <root@cfx.re>' author 'Cfx.re <root@cfx.re>'
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
client_script 'client.lua' client_script 'client.lua'

View File

@ -6,7 +6,7 @@ description 'A basic resource for storing player identifiers.'
author 'Cfx.re <root@cfx.re>' author 'Cfx.re <root@cfx.re>'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
fx_version 'cerulean' fx_version 'adamant'
game 'common' game 'common'
server_script 'server.lua' server_script 'server.lua'

View File

@ -32,5 +32,5 @@ files {
} }
-- support the latest resource manifest -- support the latest resource manifest
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'

View File

@ -1,4 +1,4 @@
fx_version 'bodacious' fx_version 'adamant'
game 'common' game 'common'
client_script 'dist/client.js' client_script 'dist/client.js'

View File

@ -16,7 +16,7 @@ server_scripts {
"mapmanager_server.lua" "mapmanager_server.lua"
} }
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5', 'rdr3' } games { 'gta5', 'rdr3' }
server_export "getCurrentGameType" server_export "getCurrentGameType"

View File

@ -8,7 +8,7 @@ repository 'https://github.com/citizenfx/cfx-server-data'
client_script 'spawnmanager.lua' client_script 'spawnmanager.lua'
fx_version 'cerulean' fx_version 'adamant'
games { 'rdr3', 'gta5' } games { 'rdr3', 'gta5' }
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@ -9,5 +9,5 @@ repository 'https://github.com/citizenfx/cfx-server-data'
dependency 'yarn' dependency 'yarn'
server_script 'webpack_builder.js' server_script 'webpack_builder.js'
fx_version 'cerulean' fx_version 'adamant'
game 'common' game 'common'

View File

@ -6,7 +6,7 @@ author 'Cfx.re <root@cfx.re>'
description 'Builds resources with yarn. To learn more: https://classic.yarnpkg.com' description 'Builds resources with yarn. To learn more: https://classic.yarnpkg.com'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
fx_version 'cerulean' fx_version 'adamant'
game 'common' game 'common'
server_script 'yarn_builder.js' server_script 'yarn_builder.js'

File diff suppressed because it is too large Load Diff

View File

@ -10,5 +10,5 @@ client_script 'deathevents.lua'
client_script 'vehiclechecker.lua' client_script 'vehiclechecker.lua'
server_script 'server.lua' server_script 'server.lua'
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'

View File

@ -0,0 +1,234 @@
local BLIP_INFO_DATA = {}
--[[
Default state for blip info
]]
function ensureBlipInfo(blip)
if blip == nil then blip = 0 end
SetBlipAsMissionCreatorBlip(blip, true)
if not BLIP_INFO_DATA[blip] then BLIP_INFO_DATA[blip] = {} end
if not BLIP_INFO_DATA[blip].title then BLIP_INFO_DATA[blip].title = "" end
if not BLIP_INFO_DATA[blip].rockstarVerified then BLIP_INFO_DATA[blip].rockstarVerified = false end
if not BLIP_INFO_DATA[blip].info then BLIP_INFO_DATA[blip].info = {} end
if not BLIP_INFO_DATA[blip].money then BLIP_INFO_DATA[blip].money = "" end
if not BLIP_INFO_DATA[blip].rp then BLIP_INFO_DATA[blip].rp = "" end
if not BLIP_INFO_DATA[blip].dict then BLIP_INFO_DATA[blip].dict = "" end
if not BLIP_INFO_DATA[blip].tex then BLIP_INFO_DATA[blip].tex = "" end
return BLIP_INFO_DATA[blip]
end
--[[
Export functions, use these via an export pls
]]
function ResetBlipInfo(blip)
BLIP_INFO_DATA[blip] = nil
end
function SetBlipInfoTitle(blip, title, rockstarVerified)
local data = ensureBlipInfo(blip)
data.title = title or ""
data.rockstarVerified = rockstarVerified or false
end
function SetBlipInfoImage(blip, dict, tex)
RequestStreamedTextureDict(dict, 1)
while not HasStreamedTextureDictLoaded(dict) do
Wait(0)
end
local data = ensureBlipInfo(blip)
data.dict = dict or ""
data.tex = tex or ""
end
function SetBlipInfoEconomy(blip, rp, money)
local data = ensureBlipInfo(blip)
data.money = tostring(money) or ""
data.rp = tostring(rp) or ""
end
function SetBlipInfo(blip, info)
local data = ensureBlipInfo(blip)
data.info = info
end
function AddBlipInfoText(blip, leftText, rightText)
local data = ensureBlipInfo(blip)
if rightText then
table.insert(data.info, {1, leftText or "", rightText or ""})
else
table.insert(data.info, {5, leftText or "", ""})
end
end
function AddBlipInfoName(blip, leftText, rightText)
local data = ensureBlipInfo(blip)
table.insert(data.info, {3, leftText or "", rightText or ""})
end
function AddBlipInfoHeader(blip, leftText, rightText)
local data = ensureBlipInfo(blip)
table.insert(data.info, {4, leftText or "", rightText or ""})
end
function AddBlipInfoIcon(blip, leftText, rightText, iconId, iconColor, checked)
local data = ensureBlipInfo(blip)
table.insert(data.info, {2, leftText or "", rightText or "", iconId or 0, iconColor or 0, checked or false})
end
--[[
All that fancy decompiled stuff I've kinda figured out
]]
local Display = 1
function UpdateDisplay()
if PushScaleformMovieFunctionN("DISPLAY_DATA_SLOT") then
PushScaleformMovieFunctionParameterInt(Display)
PopScaleformMovieFunctionVoid()
end
end
function SetColumnState(column, state)
if PushScaleformMovieFunctionN("SHOW_COLUMN") then
PushScaleformMovieFunctionParameterInt(column)
PushScaleformMovieFunctionParameterBool(state)
PopScaleformMovieFunctionVoid()
end
end
function ShowDisplay(show)
SetColumnState(Display, show)
end
function func_36(fParam0)
BeginTextCommandScaleformString(fParam0)
EndTextCommandScaleformString()
end
function SetIcon(index, title, text, icon, iconColor, completed)
if PushScaleformMovieFunctionN("SET_DATA_SLOT") then
PushScaleformMovieFunctionParameterInt(Display)
PushScaleformMovieFunctionParameterInt(index)
PushScaleformMovieFunctionParameterInt(65)
PushScaleformMovieFunctionParameterInt(3)
PushScaleformMovieFunctionParameterInt(2)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(1)
func_36(title)
func_36(text)
PushScaleformMovieFunctionParameterInt(icon)
PushScaleformMovieFunctionParameterInt(iconColor)
PushScaleformMovieFunctionParameterBool(completed)
PopScaleformMovieFunctionVoid()
end
end
function SetText(index, title, text, textType)
if PushScaleformMovieFunctionN("SET_DATA_SLOT") then
PushScaleformMovieFunctionParameterInt(Display)
PushScaleformMovieFunctionParameterInt(index)
PushScaleformMovieFunctionParameterInt(65)
PushScaleformMovieFunctionParameterInt(3)
PushScaleformMovieFunctionParameterInt(textType or 0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
func_36(title)
func_36(text)
PopScaleformMovieFunctionVoid()
end
end
local _labels = 0
local _entries = 0
function ClearDisplay()
if PushScaleformMovieFunctionN("SET_DATA_SLOT_EMPTY") then
PushScaleformMovieFunctionParameterInt(Display)
end
PopScaleformMovieFunctionVoid()
_labels = 0
_entries = 0
end
function _label(text)
local lbl = "LBL" .. _labels
AddTextEntry(lbl, text)
_labels = _labels + 1
return lbl
end
function SetTitle(title, rockstarVerified, rp, money, dict, tex)
if PushScaleformMovieFunctionN("SET_COLUMN_TITLE") then
PushScaleformMovieFunctionParameterInt(Display)
func_36("")
func_36(_label(title))
PushScaleformMovieFunctionParameterInt(rockstarVerified)
PushScaleformMovieFunctionParameterString(dict)
PushScaleformMovieFunctionParameterString(tex)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
if rp == "" then
PushScaleformMovieFunctionParameterBool(0)
else
func_36(_label(rp))
end
if money == "" then
PushScaleformMovieFunctionParameterBool(0)
else
func_36(_label(money))
end
end
PopScaleformMovieFunctionVoid()
end
function AddText(title, desc, style)
SetText(_entries, _label(title), _label(desc), style or 1)
_entries = _entries + 1
end
function AddIcon(title, desc, icon, color, checked)
SetIcon(_entries, _label(title), _label(desc), icon, color, checked)
_entries = _entries + 1
end
Citizen.CreateThread(function()
local current_blip = nil
while true do
Wait(0)
if IsFrontendReadyForControl() then
local blip = DisableBlipNameForVar()
if IsHoveringOverMissionCreatorBlip() then
if DoesBlipExist(blip) then
if current_blip ~= blip then
current_blip = blip
if BLIP_INFO_DATA[blip] then
local data = ensureBlipInfo(blip)
TakeControlOfFrontend()
ClearDisplay()
SetTitle(data.title, data.rockstarVerified, data.rp, data.money, data.dict, data.tex)
for _, info in next, data.info do
if info[1] == 2 then
AddIcon(info[2], info[3], info[4], info[5], info[6])
else
AddText(info[2], info[3], info[1])
end
end
ShowDisplay(true)
UpdateDisplay()
ReleaseControlOfFrontend()
else
ShowDisplay(false)
end
end
end
else
if current_blip then
current_blip = nil
ShowDisplay(false)
end
end
end
end
end)

View File

@ -0,0 +1,32 @@
fx_version 'adamant'
game 'gta5'
name 'Blip Info Utility'
author 'glitchdetector'
contact 'glitchdetector@gmail.com'
version '1.0.0'
description 'Enables the ability to assign extra information for blips, visible when hovering over them in the pause menu map'
usage [[
exports['blip_info']:ResetBlipInfo(blip)
exports['blip_info']:SetBlipInfo(blip, infoData)
exports['blip_info']:SetBlipInfoTitle(blip, title, rockstarVerified)
exports['blip_info']:SetBlipInfoImage(blip, dict, tex)
exports['blip_info']:SetBlipInfoEconomy(blip, rp, money)
exports['blip_info']:AddBlipInfoText(blip, leftText, rightText)
exports['blip_info']:AddBlipInfoName(blip, leftText, rightText)
exports['blip_info']:AddBlipInfoHeader(blip, leftText, rightText)
exports['blip_info']:AddBlipInfoIcon(blip, leftText, rightText, iconId, iconColor, checked)
]]
client_script 'blip_info.lua'
export 'ResetBlipInfo'
export 'SetBlipInfo'
export 'SetBlipInfoTitle'
export 'SetBlipInfoImage'
export 'SetBlipInfoEconomy'
export 'AddBlipInfoText'
export 'AddBlipInfoName'
export 'AddBlipInfoHeader'
export 'AddBlipInfoIcon'

View File

@ -9,6 +9,6 @@ repository 'https://github.com/citizenfx/cfx-server-data'
client_script 'client.lua' client_script 'client.lua'
server_script 'server.lua' server_script 'server.lua'
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5', 'rdr3' } games { 'gta5', 'rdr3' }
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@ -9,7 +9,7 @@ repository 'https://github.com/citizenfx/cfx-server-data'
client_script 'rconlog_client.lua' client_script 'rconlog_client.lua'
server_script 'rconlog_server.lua' server_script 'rconlog_server.lua'
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5', 'rdr3' } games { 'gta5', 'rdr3' }
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@ -7,7 +7,7 @@ description 'Allows server owners to execute arbitrary server-side or client-sid
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
game 'common' game 'common'
fx_version 'cerulean' fx_version 'adamant'
client_script 'runcode_cl.lua' client_script 'runcode_cl.lua'
server_script 'runcode_sv.lua' server_script 'runcode_sv.lua'

View File

@ -6,7 +6,7 @@ AddEventHandler('runcode:openUi', function(options)
openData = { openData = {
type = 'open', type = 'open',
options = options, options = options,
url = 'https://' .. GetCurrentServerEndpoint() .. '/' .. GetCurrentResourceName() .. '/', url = 'http://' .. GetCurrentServerEndpoint() .. '/' .. GetCurrentResourceName() .. '/',
res = GetCurrentResourceName() res = GetCurrentResourceName()
} }

View File

@ -317,7 +317,7 @@
document.querySelector('#passwordField').style.display = 'none'; document.querySelector('#passwordField').style.display = 'none';
document.querySelector('html').classList.add('in-nui'); document.querySelector('html').classList.add('in-nui');
fetch(`https://${window.parent.GetParentResourceName()}/getOpenData`, { fetch(`http://${window.parent.GetParentResourceName()}/getOpenData`, {
method: 'POST', method: 'POST',
body: '{}' body: '{}'
}).then(a => a.json()) }).then(a => a.json())

View File

@ -6,7 +6,7 @@ author 'Cfx.re <root@cfx.re>'
description 'Handles Social Club conductor session API for RedM. Do not disable.' description 'Handles Social Club conductor session API for RedM. Do not disable.'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
fx_version 'cerulean' fx_version 'adamant'
game 'rdr3' game 'rdr3'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@ -6,7 +6,7 @@ author 'Cfx.re <root@cfx.re>'
description 'Handles the "host lock" for non-OneSync servers. Do not disable.' description 'Handles the "host lock" for non-OneSync servers. Do not disable.'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
fx_version 'cerulean' fx_version 'adamant'
games { 'gta4', 'gta5' } games { 'gta4', 'gta5' }
server_script 'server/host_lock.lua' server_script 'server/host_lock.lua'

View File

@ -7,7 +7,7 @@ description 'A compatibility resource to load basic-gamemode.'
repository 'https://github.com/citizenfx/cfx-server-data' repository 'https://github.com/citizenfx/cfx-server-data'
-- compatibility wrapper -- compatibility wrapper
fx_version 'cerulean' fx_version 'adamant'
game 'common' game 'common'
dependency 'basic-gamemode' dependency 'basic-gamemode'

View File

@ -4,6 +4,7 @@ TwoNa.Framework = nil
TwoNa.Game = {} TwoNa.Game = {}
TwoNa.Functions = TwoNaShared.Functions TwoNa.Functions = TwoNaShared.Functions
TwoNa.Types = TwoNaShared.Types TwoNa.Types = TwoNaShared.Types
TwoNa.Config = Config
TwoNa.TriggerServerCallback = function(name, payload, func) TwoNa.TriggerServerCallback = function(name, payload, func)
if not func then if not func then

View File

@ -24,14 +24,14 @@ end
TwoNaShared.Functions.GetFramework = function() TwoNaShared.Functions.GetFramework = function()
local availableFramework = nil local availableFramework = nil
for k,v in ipairs(TwoNaShared.Types.Frameworks) do for k,v in ipairs(TwoNaShared.Types.Frameworks) do
if GetResourceState(v.ResourceName) == "starting" or GetResourceState(v.ResourceName) == "started" then if GetResourceState(v.ResourceName) ~= "missing" then
availableFramework = v availableFramework = v
end end
end end
if not availableFramework then if not availableFramework then
TwoNaShared.Functions.Log("^1Intet understøttet framework fundet! Kontroller at framework-navnet ikke er ændret.^7") TwoNaShared.Functions.Log("^1Could not find a supported framework! Please ensure that framework script name did not got change.^7")
end end
return availableFramework return availableFramework
@ -41,13 +41,13 @@ TwoNaShared.Functions.GetDatabase = function()
local availableDatabase = nil local availableDatabase = nil
for k,v in ipairs(TwoNaShared.Types.Databases) do for k,v in ipairs(TwoNaShared.Types.Databases) do
if GetResourceState(v.ResourceName) == "starting" or GetResourceState(v.ResourceName) == "started" then if GetResourceState(v.ResourceName) ~= "missing" then
availableDatabase = v availableDatabase = v
end end
end end
if not availableDatabase then if not availableDatabase then
TwoNaShared.Functions.Log("^1Kunne ikke finde en understøttet database! Kontroller at database-scriptnavnet ikke er ændret.^7") TwoNaShared.Functions.Log("^1Could not find a supported database! Please ensure that database script name did not got change.^7")
end end
return availableDatabase return availableDatabase

View File

@ -5,6 +5,7 @@ TwoNa.Framework = nil
TwoNa.Functions = TwoNaShared.Functions TwoNa.Functions = TwoNaShared.Functions
TwoNa.Types = TwoNaShared.Types TwoNa.Types = TwoNaShared.Types
TwoNa.Vehicles = nil TwoNa.Vehicles = nil
TwoNa.Config = Config
TwoNa.MySQL = { TwoNa.MySQL = {
Async = {}, Async = {},
Sync = {} Sync = {}
@ -165,13 +166,17 @@ TwoNa.CreatePlayer = function(xPlayer)
end end
player.getMoney = xPlayer.getMoney player.getMoney = xPlayer.getMoney
player.addBank = function(amount) player.addBank = function(amount)
xPlayer.addAccountMoney('bank', amount) xPlayer.addAccountMoney('bank', tonumber(amount))
end
player.addMoney = function(amount)
xPlayer.addMoney(tonumber(amount))
end end
player.addMoney = xPlayer.addMoney
player.removeBank = function(amount) player.removeBank = function(amount)
xPlayer.removeAccountMoney('bank', amount) xPlayer.removeAccountMoney('bank', tonumber(amount))
end
player.removeMoney = function(amount)
xPlayer.removeMoney(tonumber(amount))
end end
player.removeMoney = xPlayer.removeMoney
elseif Config.Framework.Name == "QBCore" then elseif Config.Framework.Name == "QBCore" then
player.name = xPlayer.PlayerData.charinfo.firstname .. " " .. xPlayer.PlayerData.charinfo.lastname player.name = xPlayer.PlayerData.charinfo.firstname .. " " .. xPlayer.PlayerData.charinfo.lastname
player.accounts = { player.accounts = {
@ -244,6 +249,28 @@ TwoNa.GetPlayerFromIdentifier = function(identifier)
end end
end end
TwoNa.GetPlayerFromCharacterIdentifier = function(charIdentifier)
local xPlayer = nil
if Config.Framework.Name == "ESX" then
for _, player in ipairs(TwoNa.Framework.GetExtendedPlayers()) do
if player.identifier == charIdentifier then
xPlayer = player
break
end
end
elseif Config.Framework.Name == "QBCore" then
for _, player in ipairs(TwoNa.Framework.Functions.GetPlayers()) do
player = TwoNa.Framework.Functions.GetPlayer(player)
if player.PlayerData.citizenid == charIdentifier then
xPlayer = player
end
end
end
return TwoNa.CreatePlayer(xPlayer)
end
TwoNa.GetAllVehicles = function(force) TwoNa.GetAllVehicles = function(force)
if TwoNa.Vehicles and not force then if TwoNa.Vehicles and not force then
return TwoNa.Vehicles return TwoNa.Vehicles
@ -437,6 +464,20 @@ TwoNa.UpdateVehicleOwner = function(plate, target)
end end
end end
TwoNa.RegisterUsableItem = function(name, action)
if Config.Framework.Name == "ESX" then
TwoNa.Framework.RegisterUsableItem(name, function(source)
local xPlayer = TwoNa.Framework.GetPlayerFromId(source)
action(TwoNa.CreatePlayer(xPlayer), source)
end)
elseif Config.Framework.Name == 'QBCore' then
TwoNa.Framework.Functions.CreateUseableItem(name, function(source)
local xPlayer = TwoNa.Framework.Functions.GetPlayer(source)
action(TwoNa.CreatePlayer(xPlayer), source)
end)
end
end
TwoNa.CheckUpdate = function() TwoNa.CheckUpdate = function()
PerformHttpRequest("https://api.github.com/repos/tunasayin/2na_core/releases/latest", function(errorCode, rawData, headers) PerformHttpRequest("https://api.github.com/repos/tunasayin/2na_core/releases/latest", function(errorCode, rawData, headers)
if rawData ~= nil then if rawData ~= nil then

View File

@ -1,11 +1,11 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
author 'tunasayin' author 'tunasayin'
description 'Core script needed for almost all 2na scripts.' description 'Core script needed for almost all 2na scripts.'
version '0.2.8' version '0.3.1'
shared_scripts { shared_scripts {
'Common/*.lua', 'Common/*.lua',

View File

@ -1,8 +1,8 @@
if Configuration.FrameWork == 'esx' then if Configuration.FrameWork == 'esx' then
if Configuration.CoreFolderName == "" then Configuration.CoreFolderName = 'es_extended' end if Configuration.CoreFolderName == "" then Configuration.CoreFolderName = 'es_extended' end
ESX = exports[Configuration.CoreFolderName]:getSharedObject() ESX = exports[Configuration.CoreFolderName]:getSharedObject()
trigger = ESX.TriggerServerCallback trigger = ESX.TriggerServerCallback
elseif Configuration.FrameWork == 'qbcore' then elseif Configuration.FrameWork == 'qbcore' then
if Configuration.CoreFolderName == "" then Configuration.CoreFolderName = 'qb-core' end if Configuration.CoreFolderName == "" then Configuration.CoreFolderName = 'qb-core' end
QBCore = exports[Configuration.CoreFolderName]:GetCoreObject() QBCore = exports[Configuration.CoreFolderName]:GetCoreObject()
trigger = QBCore.Functions.TriggerCallback trigger = QBCore.Functions.TriggerCallback
@ -11,7 +11,7 @@ end
local Type = nil local Type = nil
local fov_max = 90.0 local fov_max = 90.0
local fov_min = 1.0 local fov_min = 1.0
local fov = (fov_max+fov_min)*0.5 local fov = (fov_max + fov_min) * 0.5
local npccreated = {} local npccreated = {}
local animDict = "weapons@first_person@aim_rng@generic@projectile@shared@core" local animDict = "weapons@first_person@aim_rng@generic@projectile@shared@core"
local animDict2 = "mini@strip_club@private_dance@part3" local animDict2 = "mini@strip_club@private_dance@part3"
@ -30,19 +30,31 @@ RegisterNUICallback("exit", function(data)
SetNuiFocus(false, false) SetNuiFocus(false, false)
SendNUIMessage({ SendNUIMessage({
type = "ui", type = "ui",
status = false, status = false,
}) })
else else
SetNuiFocus(false, false) SetNuiFocus(false, false)
SendNUIMessage({ SendNUIMessage({
type = "ui", type = "ui",
status = false, status = false,
}) })
end end
DisplayRadar(true) DisplayRadar(true)
end) end)
local function createBlip(blip, label, image)
exports['blip_info']:SetBlipInfoTitle(blip, label, 0)
exports['blip_info']:SetBlipInfoImage(blip, "carwash", "carwash" .. image)
exports['blip_info']:AddBlipInfoName(blip, "Ejet af", "Staten")
exports['blip_info']:AddBlipInfoName(blip, "Type", "Vedligeholdelse")
exports['blip_info']:AddBlipInfoHeader(blip, "")
exports['blip_info']:AddBlipInfoHeader(blip, "")
exports['blip_info']:AddBlipInfoText(blip, "Beskidt bil? Look no further! Byens bedste bilvask.")
print('')
end
Citizen.CreateThread(function() Citizen.CreateThread(function()
for i, v in ipairs(Locations) do for i, v in ipairs(Locations) do
carwash = AddBlipForCoord(v.Coord) carwash = AddBlipForCoord(v.Coord)
SetBlipSprite(carwash, 100) SetBlipSprite(carwash, 100)
@ -52,8 +64,10 @@ Citizen.CreateThread(function()
BeginTextCommandSetBlipName("STRING") BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName("Bilvask") AddTextComponentSubstringPlayerName("Bilvask")
EndTextCommandSetBlipName(carwash) EndTextCommandSetBlipName(carwash)
createBlip(carwash, "Bilvask", i)
end end
while true do while true do
local ped = PlayerPedId() local ped = PlayerPedId()
local pedcoord = GetEntityCoords(ped) local pedcoord = GetEntityCoords(ped)
vehicle = GetPlayersLastVehicle(ped) vehicle = GetPlayersLastVehicle(ped)
@ -63,11 +77,12 @@ Citizen.CreateThread(function()
if dist < 20 and not washing then if dist < 20 and not washing then
esta = true esta = true
sleep = 0 sleep = 0
DrawMarker(23, v.Coord.x,v.Coord.y,v.Coord.z - 0.50, 0.0, 0.0, 0.0, 0.0, 180.0, 0.0, 4.0, 4.0, 4.0, 10, 228, 255, 100,0, 1, 2, 0, 0) DrawMarker(23, v.Coord.x, v.Coord.y, v.Coord.z - 0.50, 0.0, 0.0, 0.0, 0.0, 180.0, 0.0, 4.0, 4.0, 4.0, 10,
228, 255, 100, 0, 1, 2, 0, 0)
end end
if dist < 1.5 and IsPedInAnyVehicle(ped, false) and not washing then if dist < 1.5 and IsPedInAnyVehicle(ped, false) and not washing then
esta = true esta = true
hintToDisplay("~b~[E]~wu~ ~w~Vask køretøj", v.Coord) hintToDisplay("~b~[E]~wu~ ~w~Vask køretøj", v.Coord)
sleep = 0 sleep = 0
local isDriving = IsPedInAnyVehicle(PlayerPedId(), false) local isDriving = IsPedInAnyVehicle(PlayerPedId(), false)
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
@ -83,17 +98,18 @@ Citizen.CreateThread(function()
Wait(500) Wait(500)
DoScreenFadeIn(1000) DoScreenFadeIn(1000)
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * 1.3, py + GetEntityForwardY(vehicle) * 5.4, pz + 0.12 local x, y, z = px + GetEntityForwardX(vehicle) * 1.3, py + GetEntityForwardY(vehicle) * 5.4,
camCoords = vector3(x, y, z) pz + 0.12
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-2.0, 0.0, -132) camRotation = rx + vector3(-2.0, 0.0, -132)
cam = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords, camRotation, GetGameplayCamFov()) cam = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords, camRotation, GetGameplayCamFov())
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 3000, true, false) RenderScriptCams(true, true, 3000, true, false)
Wait(2600) Wait(2600)
SetNuiFocus(true, true) SetNuiFocus(true, true)
SendNUIMessage({type = "ui",status = true}) SendNUIMessage({ type = "ui", status = true })
end end
end end
if not esta then if not esta then
sleep = 1000 sleep = 1000
@ -101,7 +117,6 @@ Citizen.CreateThread(function()
end end
Citizen.Wait(sleep) Citizen.Wait(sleep)
end end
end) end)
RegisterNUICallback("wash", function(data) RegisterNUICallback("wash", function(data)
@ -111,41 +126,42 @@ RegisterNUICallback("wash", function(data)
local price = Configuration.Prices[tonumber(Type)] local price = Configuration.Prices[tonumber(Type)]
local pedcoord = GetEntityCoords(ped) local pedcoord = GetEntityCoords(ped)
local vehcoord = GetEntityCoords(vehicle) local vehcoord = GetEntityCoords(vehicle)
trigger('buty:getMoney', function (money) trigger('buty:getMoney', function(money)
if money then if money then
SendNotification("Du har betalt for din vask - Læn dig tilbage og vent på vasken er færdig") SendNotification("Du har betalt for din vask - Læn dig tilbage og vent på vasken er færdig")
if Type == "1" then if Type == "1" then
for _, location in ipairs(Locations) do for _, location in ipairs(Locations) do
local dist = #(pedcoord - location.Coord) local dist = #(pedcoord - location.Coord)
if dist < 20 then if dist < 20 then
for _, npcData in ipairs(location.Npc['BASIC']) do for _, npcData in ipairs(location.Npc['BASIC']) do
local modelHash = GetHashKey(npcData.model) local modelHash = GetHashKey(npcData.model)
RequestModel(modelHash) RequestModel(modelHash)
while not HasModelLoaded(modelHash) do while not HasModelLoaded(modelHash) do
Wait(1) Wait(1)
end end
npcData.npc = CreatePed(5, modelHash, vehcoord.x, vehcoord.y + 4.5, vehcoord.z, 1, true, true) npcData.npc = CreatePed(5, modelHash, vehcoord.x, vehcoord.y + 4.5, vehcoord.z, 1, true, true)
SetEntityInvincible(npcData.npc, true) SetEntityInvincible(npcData.npc, true)
SetBlockingOfNonTemporaryEvents(npcData.npc, true) SetBlockingOfNonTemporaryEvents(npcData.npc, true)
local prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true) local prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true)
AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05, -0.05, -0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1) AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05, -0.05,
-0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1)
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * 0.5, py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * 0.5, py + GetEntityForwardY(vehicle) * 9.9,
camCoords = vector3(x, y, z) pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -145) camRotation = rx + vector3(-22.0, 0.0, -145)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end
TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0) TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0)
-- Progress(24000, "Spraying cleaning fluid...") -- Progress(24000, "Spraying cleaning fluid...")
for i = 1, #npcData.steps do for i = 1, #npcData.steps do
local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i]) local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i])
local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex) local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex)
@ -156,14 +172,15 @@ RegisterNUICallback("wash", function(data)
local heading = GetEntityHeading(npcData.npc) local heading = GetEntityHeading(npcData.npc)
RequestNamedPtfxAsset(particleDict) RequestNamedPtfxAsset(particleDict)
while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end
UseParticleFxAssetNextCall(particleDict) UseParticleFxAssetNextCall(particleDict)
local particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002, 0.0, 0.0, heading, 160.0, 6.0, false, false, false) local particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002, 0.0,
0.0, heading, 160.0, 6.0, false, false, false)
Citizen.Wait(1000) Citizen.Wait(1000)
local dirtLevel = GetVehicleDirtLevel(vehicle) local dirtLevel = GetVehicleDirtLevel(vehicle)
SetVehicleDirtLevel(vehicle, dirtLevel - 1) SetVehicleDirtLevel(vehicle, dirtLevel - 1)
end end
SetVehicleDirtLevel(vehicle, 14.0) SetVehicleDirtLevel(vehicle, 14.0)
FreezeEntityPosition(ped, false) FreezeEntityPosition(ped, false)
FreezeEntityPosition(vehicle, false) FreezeEntityPosition(vehicle, false)
@ -182,37 +199,40 @@ RegisterNUICallback("wash", function(data)
for _, location in ipairs(Locations) do for _, location in ipairs(Locations) do
local dist = #(pedcoord - location.Coord) local dist = #(pedcoord - location.Coord)
if dist < 20 then if dist < 20 then
for _, npcData in ipairs(location.Npc['STANDARD']) do for _, npcData in ipairs(location.Npc['STANDARD']) do
for i = 1, 2 do for i = 1, 2 do
local modelHash = GetHashKey(npcData.model) local modelHash = GetHashKey(npcData.model)
RequestModel(modelHash) RequestModel(modelHash)
while not HasModelLoaded(modelHash) do while not HasModelLoaded(modelHash) do
Wait(1) Wait(1)
end end
npcData.npc = CreatePed(5, modelHash, vehcoord.x, vehcoord.y + 4.5, vehcoord.z, 1, true, true) npcData.npc = CreatePed(5, modelHash, vehcoord.x, vehcoord.y + 4.5, vehcoord.z, 1, true,
true)
SetEntityInvincible(npcData.npc, true) SetEntityInvincible(npcData.npc, true)
SetBlockingOfNonTemporaryEvents(npcData.npc, true) SetBlockingOfNonTemporaryEvents(npcData.npc, true)
if done == 0 then if done == 0 then
prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true) prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true)
AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05, -0.05, -0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1) AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05,
-0.05, -0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1)
while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end
TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0) TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0)
-- Progress(24000, "Spraying cleaning fluid...") -- Progress(24000, "Spraying cleaning fluid...")
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * 0.5, py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * 0.5,
camCoords = vector3(x, y, z) py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -145) camRotation = rx + vector3(-22.0, 0.0, -145)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
elseif done == 1 then elseif done == 1 then
-- Progress(24000, "Carefully wiping the entire car bodywork") -- Progress(24000, "Carefully wiping the entire car bodywork")
end end
for i = 1, #npcData.steps do for i = 1, #npcData.steps do
local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i]) local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i])
local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex) local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex)
@ -224,32 +244,34 @@ RegisterNUICallback("wash", function(data)
if done == 0 then if done == 0 then
RequestNamedPtfxAsset(particleDict) RequestNamedPtfxAsset(particleDict)
while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end
UseParticleFxAssetNextCall(particleDict) UseParticleFxAssetNextCall(particleDict)
particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002, 0.0, 0.0, heading, 160.0, 6.0, false, false, false) particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002,
0.0, 0.0, heading, 160.0, 6.0, false, false, false)
else else
TaskStartScenarioInPlace(npcData.npc, "WORLD_HUMAN_MAID_CLEAN", 0, true) TaskStartScenarioInPlace(npcData.npc, "WORLD_HUMAN_MAID_CLEAN", 0, true)
end end
if i == #npcData.steps then if i == #npcData.steps then
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * -9.5, py + GetEntityForwardY(vehicle) * -2.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * -9.5,
camCoords = vector3(x, y, z) py + GetEntityForwardY(vehicle) * -2.9, pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -35) camRotation = rx + vector3(-22.0, 0.0, -35)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
end end
Citizen.Wait(1000) Citizen.Wait(1000)
local dirtLevel = GetVehicleDirtLevel(vehicle) local dirtLevel = GetVehicleDirtLevel(vehicle)
SetVehicleDirtLevel(vehicle, dirtLevel - 1) SetVehicleDirtLevel(vehicle, dirtLevel - 1)
end end
TaskWanderStandard(npcData.npc, 10.0, 10) TaskWanderStandard(npcData.npc, 10.0, 10)
StopParticleFxLooped(particleName) StopParticleFxLooped(particleName)
ClearPedSecondaryTask(npcData.npc) ClearPedSecondaryTask(npcData.npc)
DeleteEntity(prop) DeleteEntity(prop)
done = done + 1 done = done + 1
end end
SetVehicleDirtLevel(vehicle, 14.0) SetVehicleDirtLevel(vehicle, 14.0)
FreezeEntityPosition(ped, false) FreezeEntityPosition(ped, false)
@ -266,48 +288,52 @@ RegisterNUICallback("wash", function(data)
for _, location in ipairs(Locations) do for _, location in ipairs(Locations) do
local dist = #(pedcoord - location.Coord) local dist = #(pedcoord - location.Coord)
if dist < 20 then if dist < 20 then
for _, npcData in ipairs(location.Npc['STANDARD']) do for _, npcData in ipairs(location.Npc['STANDARD']) do
for i = 1, 3 do for i = 1, 3 do
local modelHash = GetHashKey(npcData.model) local modelHash = GetHashKey(npcData.model)
RequestModel(modelHash) RequestModel(modelHash)
while not HasModelLoaded(modelHash) do while not HasModelLoaded(modelHash) do
Wait(1) Wait(1)
end end
npcData.npc = CreatePed(5, modelHash, vehcoord.x - 3.4, vehcoord.y + 4.5, vehcoord.z, 1, true, true) npcData.npc = CreatePed(5, modelHash, vehcoord.x - 3.4, vehcoord.y + 4.5, vehcoord.z, 1,
true, true)
SetEntityInvincible(npcData.npc, true) SetEntityInvincible(npcData.npc, true)
SetBlockingOfNonTemporaryEvents(npcData.npc, true) SetBlockingOfNonTemporaryEvents(npcData.npc, true)
if done == 0 then if done == 0 then
prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true) prop = CreateObject("prop_blox_spray", 0, 0, 0, true, true, true)
AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05, -0.05, -0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1) AttachEntityToEntity(prop, npcData.npc, GetPedBoneIndex(npcData.npc, 28422), 0.05,
-0.05, -0.05, 260.0, 160.0, 0.0, 1, 1, 0, 1, 0, 1)
while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end while not HasAnimDictLoaded(animDict) do Citizen.Wait(100) end
TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0) TaskPlayAnim(npcData.npc, animDict, animName, 1.0, -1, -1, 50, 0, 0, 0, 0)
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * 0.5, py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * 0.5,
camCoords = vector3(x, y, z) py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -145) camRotation = rx + vector3(-22.0, 0.0, -145)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
-- Progress(24000, "Spraying cleaning fluid...") -- Progress(24000, "Spraying cleaning fluid...")
elseif done == 1 then elseif done == 1 then
-- Progress(24000, "Carefully wiping the entire car bodywork...") -- Progress(24000, "Carefully wiping the entire car bodywork...")
elseif done == 2 then elseif done == 2 then
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * 0.5, py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * 0.5,
camCoords = vector3(x, y, z) py + GetEntityForwardY(vehicle) * 9.9, pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -145) camRotation = rx + vector3(-22.0, 0.0, -145)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
-- Progress(50000, "Doing a little dance to charge you more for the premium service...") -- Progress(50000, "Doing a little dance to charge you more for the premium service...")
end end
for i = 1, #npcData.steps do for i = 1, #npcData.steps do
local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i]) local boneIndex = GetEntityBoneIndexByName(vehicle, npcData.steps[i])
local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex) local Position = GetWorldPositionOfEntityBone(vehicle, boneIndex)
@ -318,37 +344,39 @@ RegisterNUICallback("wash", function(data)
local heading = GetEntityHeading(npcData.npc) local heading = GetEntityHeading(npcData.npc)
if i == #npcData.steps then if i == #npcData.steps then
local px, py, pz = table.unpack(GetEntityCoords(vehicle)) local px, py, pz = table.unpack(GetEntityCoords(vehicle))
local x, y, z = px + GetEntityForwardX(vehicle) * -9.5, py + GetEntityForwardY(vehicle) * -2.9, pz + 2.82 local x, y, z = px + GetEntityForwardX(vehicle) * -9.5,
camCoords = vector3(x, y, z) py + GetEntityForwardY(vehicle) * -2.9, pz + 2.82
camCoords = vector3(x, y, z)
local rx = GetEntityRotation(vehicle, 2) local rx = GetEntityRotation(vehicle, 2)
camRotation = rx + vector3(-22.0, 0.0, -35) camRotation = rx + vector3(-22.0, 0.0, -35)
SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000) SetCamParams(cam, camCoords, camRotation, GetGameplayCamFov(), 3000)
SetCamActive(cam, true) SetCamActive(cam, true)
RenderScriptCams(true, true, 5000, true, false) RenderScriptCams(true, true, 5000, true, false)
end end
if done == 0 then if done == 0 then
RequestNamedPtfxAsset(particleDict) RequestNamedPtfxAsset(particleDict)
while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end while not HasNamedPtfxAssetLoaded(particleDict) do Citizen.Wait(100) end
UseParticleFxAssetNextCall(particleDict) UseParticleFxAssetNextCall(particleDict)
particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002, 0.0, 0.0, heading, 160.0, 6.0, false, false, false) particleEffect = StartParticleFxLoopedOnEntity(particleName, prop, 0.2, 0.002,
0.0, 0.0, heading, 160.0, 6.0, false, false, false)
Citizen.Wait(1000) Citizen.Wait(1000)
elseif done == 1 then elseif done == 1 then
TaskStartScenarioInPlace(npcData.npc, "WORLD_HUMAN_MAID_CLEAN", 0, true) TaskStartScenarioInPlace(npcData.npc, "WORLD_HUMAN_MAID_CLEAN", 0, true)
Citizen.Wait(1000) Citizen.Wait(1000)
elseif done == 2 then elseif done == 2 then
AnimationInfinite("mini@repair", "fixing_a_player", npcData.npc) AnimationInfinite("mini@repair", "fixing_a_player", npcData.npc)
Citizen.Wait(6000) Citizen.Wait(6000)
end end
local dirtLevel = GetVehicleDirtLevel(vehicle) local dirtLevel = GetVehicleDirtLevel(vehicle)
SetVehicleDirtLevel(vehicle, dirtLevel - 1) SetVehicleDirtLevel(vehicle, dirtLevel - 1)
end end
TaskWanderStandard(npcData.npc, 10.0, 10) TaskWanderStandard(npcData.npc, 10.0, 10)
StopParticleFxLooped(particleName) StopParticleFxLooped(particleName)
ClearPedSecondaryTask(npcData.npc) ClearPedSecondaryTask(npcData.npc)
DeleteEntity(prop) DeleteEntity(prop)
done = done + 1 done = done + 1
end end
FreezeEntityPosition(ped, false) FreezeEntityPosition(ped, false)
FreezeEntityPosition(vehicle, false) FreezeEntityPosition(vehicle, false)
@ -371,7 +399,6 @@ RegisterNUICallback("wash", function(data)
SendNotification("Du har ikke nok penge") SendNotification("Du har ikke nok penge")
end end
end, Type, price) end, Type, price)
end) end)
@ -386,7 +413,7 @@ setblip = function(name, coords)
AddTextComponentSubstringPlayerName(name) AddTextComponentSubstringPlayerName(name)
EndTextCommandSetBlipName(help) EndTextCommandSetBlipName(help)
SetBlipRoute(help, true) SetBlipRoute(help, true)
SetBlipRouteColour(help,29) SetBlipRouteColour(help, 29)
elseif name == "ends" then elseif name == "ends" then
ends = AddBlipForCoord(coords[1], coords[2], coords[3]) ends = AddBlipForCoord(coords[1], coords[2], coords[3])
SetBlipSprite(ends, 1) SetBlipSprite(ends, 1)
@ -397,7 +424,7 @@ setblip = function(name, coords)
AddTextComponentSubstringPlayerName(name) AddTextComponentSubstringPlayerName(name)
EndTextCommandSetBlipName(ends) EndTextCommandSetBlipName(ends)
SetBlipRoute(ends, true) SetBlipRoute(ends, true)
SetBlipRouteColour(ends,29) SetBlipRouteColour(ends, 29)
end end
end end
@ -406,28 +433,28 @@ function EndCam()
RenderScriptCams(false, true, 1000, true, false) RenderScriptCams(false, true, 1000, true, false)
DestroyCam(cam, false) DestroyCam(cam, false)
cam = nil cam = nil
end end
function hintToDisplay(text,coords) function hintToDisplay(text, coords)
local dist = Vdist(coords.x,coords.y,coords.z,GetEntityCoords(PlayerPedId(-1))) local dist = Vdist(coords.x, coords.y, coords.z, GetEntityCoords(PlayerPedId(-1)))
if dist < 1.5 then if dist < 1.5 then
DrawText3Ds(coords.x,coords.y,coords.z + 1.05,text, 0, 0.1, 0.1,255) DrawText3Ds(coords.x, coords.y, coords.z + 1.05, text, 0, 0.1, 0.1, 255)
else else
DrawText3Ds(coords.x,coords.y,coords.z + 1.05,text, 0, 0.1, 0.1,100) DrawText3Ds(coords.x, coords.y, coords.z + 1.05, text, 0, 0.1, 0.1, 100)
end end
end end
function DrawText3Ds(x, y, z, text) function DrawText3Ds(x, y, z, text)
SetTextScale(0.35, 0.35) SetTextScale(0.35, 0.35)
SetTextFont(4) SetTextFont(4)
SetTextProportional(1) SetTextProportional(1)
SetTextColour(255, 255, 255, 215) SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING") SetTextEntry("STRING")
SetTextCentre(true) SetTextCentre(true)
AddTextComponentString(text) AddTextComponentString(text)
SetDrawOrigin(x,y,z, 0) SetDrawOrigin(x, y, z, 0)
DrawText(0.0, 0.0) DrawText(0.0, 0.0)
ClearDrawOrigin() ClearDrawOrigin()
end end
@ -437,16 +464,16 @@ AnimationInfinite = function(anim, anim2, jugador)
while not HasAnimDictLoaded(anim) do while not HasAnimDictLoaded(anim) do
Citizen.Wait(0) Citizen.Wait(0)
end end
TaskPlayAnim(jugador, anim , anim2 ,8.0, -8.0, -1, 1, 0, false, false, false ) TaskPlayAnim(jugador, anim, anim2, 8.0, -8.0, -1, 1, 0, false, false, false)
end end
LoadAnimDict = function(dict) LoadAnimDict = function(dict)
if not HasAnimDictLoaded(dict) then if not HasAnimDictLoaded(dict) then
RequestAnimDict(dict) RequestAnimDict(dict)
while not HasAnimDictLoaded(dict) do while not HasAnimDictLoaded(dict) do
Wait(1) Wait(1)
end end
end end
end end
SendNotification = function(message) SendNotification = function(message)
@ -458,10 +485,9 @@ end
-- Progress = function(time, text) -- Progress = function(time, text)
-- exports['progressbar']:Progress({ -- exports['progressbar']:Progress({
-- time = time, -- time = time,
-- text = text, -- text = text,
-- color = "linear-gradient(20.5deg, #00E4FF 9.83%, rgba(172, 65, 222, 0) 93.95%)", -- color = "linear-gradient(20.5deg, #00E4FF 9.83%, rgba(172, 65, 222, 0) 93.95%)",
-- color2 = "#00C1FF", -- color2 = "#00C1FF",
-- }) -- })
-- end -- end

View File

@ -1,7 +1,10 @@
Configuration = { Configuration = {
FrameWork = "qbcore", -- esx | qbcore FrameWork = "qbcore", -- esx | qbcore
CoreFolderName = "qb-core", CoreFolderName = "qb-core",
Prices = {500, 1000, 1500}, Prices = {500, 1000, 1500},
} }
Locations = { Locations = {
@ -58,7 +61,9 @@ Locations = {
}, },
{ {
Name = "Bilvask", Name = "Bilvask",
Coord = vector3(-77.52, 6430.34, 31.04), Coord = vector3(-77.52, 6430.34, 31.04),
Npc = { Npc = {
['BASIC'] = { ['BASIC'] = {
{ {
@ -103,7 +108,9 @@ Locations = {
}, },
{ {
Name = "Bilvask", Name = "Bilvask",
Coord = vector3(1345.2, 3600.44, 34.24), Coord = vector3(1345.2, 3600.44, 34.24),
Npc = { Npc = {
['BASIC'] = { ['BASIC'] = {
{ {
@ -148,7 +155,9 @@ Locations = {
}, },
{ {
Name = "Bilvask", Name = "Bilvask",
Coord = vector3(-700.27, -947.79, 19.12), Coord = vector3(-700.27, -947.79, 19.12),
Npc = { Npc = {
['BASIC'] = { ['BASIC'] = {
{ {

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
author 'TreyTrey23' author 'TreyTrey23'
version 'V1.0' version 'V1.0'

View File

@ -1,6 +1,6 @@
game 'gta5' game 'gta5'
author 'Atiysu & frosty' author 'Atiysu & frosty'
fx_version 'cerulean' fx_version 'adamant'
lua54 'yes' lua54 'yes'
shared_scripts { shared_scripts {

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'travel' description 'travel'

View File

@ -2,7 +2,7 @@
--<!>-- BOII | DEVELOPMENT --<!>-- --<!>-- BOII | DEVELOPMENT --<!>--
---------------------------------- ----------------------------------
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
version 'V1.0' version 'V1.0'

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
version 'V1.0' version 'V1.0'

View File

@ -1,2 +1,2 @@
fx_version 'cerulean' fx_version 'adamant'
game "gta5" game "gta5"

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game "gta5" game "gta5"
version '1.0.0' version '1.0.0'

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
author "Swkeep#7049" author "Swkeep#7049"

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
author "Swkeep#7049" author "Swkeep#7049"

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
client_scripts { client_scripts {

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
version 'V1.0' version 'V1.0'

View File

@ -1,4 +1,4 @@
fx_version 'cerulean'; fx_version 'adamant';
games {"gta5"}; games {"gta5"};
lua54 "yes"; lua54 "yes";

View File

@ -0,0 +1,166 @@
Hi, thank you for buying my script, I'm very grateful!
If you need help contact me on discord: okok#3488
Discord server: https://discord.gg/FauTgGRUku
# To display a text UI
exports['okokTextUI']:Open('[Key] Message', 'color', 'position')
Colors:
- lightblue;
- lightgreen;
- lightred;
- lightgrey;
- darkblue;
- darkgreen;
- darkred;
- darkgrey.
Positions:
- right;
- left.
To make the text bold: exports['okokTextUI']:Open('<b>[Key] Message</b>', 'color', 'position')
To insert multiple lines/commands in a text UI: exports['okokTextUI']:Open('[Key] Message 1<br>[Key] Message 2', 'color', 'position')
NOTE: 'color' and 'position' should be placed between ''
# To hide a text UI
exports['okokTextUI']:Close()
How to add new colors:
1. Open styles.css and add the following to the last line.
/* Example Notification */
.example-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f11c";
color: #color_code;
}
.example {
background-color: rgba(20, 20, 20, 0.85);
color: #color_code;
padding: 5px 5px 5px 5px;
}
.example-border {
border-left: 4px solid #color_code;
}
/* Example */
.examplecolor-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #color_code;
font-size: 28px;
}
.examplecolor {
background-color: rgba(240, 240, 240, 0.85);
color: #fff;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.examplecolor-border {
border-left: 4px solid #color_code;
}
If you want to set if the background color is light or dark, simply change the background-color on .examplecolor:
- background-color: rgba(240, 240, 240, 1); /* LIGHT BACKGROUND */
- background-color: rgba(20, 20, 20, 1); /* DARK BACKGROUND */
2. Open scripts.js and add the following to the line 64.
else if (event.data.color == 'examplecolor') { // Example Color
removeClass();
$('#main').addClass('examplecolor-icon');
$('#wrapper').addClass('examplecolor examplecolor-border');
}
3. In order to make esx_doorlock functional change the code of the function started in the line 69 (client.lua) and do the following:
```
Citizen.CreateThread(function()
local inZone = false
local locked = true
local hasAuth = false
local shown = false
local size, displayText = 1, _U('unlocked')
local color
while true do
Citizen.Wait(0)
local letSleep = true
inZone = false
for k,v in ipairs(Config.DoorList) do
if v.distanceToPlayer and v.distanceToPlayer < 50 then
letSleep = false
if v.doors then
for k2,v2 in ipairs(v.doors) do
FreezeEntityPosition(v2.object, v.locked)
end
else
FreezeEntityPosition(v.object, v.locked)
end
end
if v.distanceToPlayer and v.distanceToPlayer < v.maxDistance then
inZone = true
if v.size then
size = v.size
end
if v.locked then
locked = true
else
locked = false
end
if v.isAuthorized then
hasAuth = true
elseif not v.isAuthorized then
hasAuth = false
end
if IsControlJustReleased(0, 38) then
if v.isAuthorized then
v.locked = not v.locked
locked = v.locked
TriggerServerEvent('esx_doorlock:updateState', k, v.locked) -- broadcast new state of the door to everyone
shown = false
end
end
end
end
if inZone and not shown then
shown = true
if locked and hasAuth then
exports['okokTextUI']:Open('[E] Locked', 'lightred', 'left')
elseif not locked and hasAuth then
exports['okokTextUI']:Open('[E] Unlocked', 'lightgreen', 'left')
elseif locked then
exports['okokTextUI']:Open('Locked', 'lightred', 'left')
else
exports['okokTextUI']:Open('Unlocked', 'lightgreen', 'left')
end
elseif not inZone and shown then
exports['okokTextUI']:Close()
shown = false
end
if letSleep then
Citizen.Wait(500)
end
end
end)
```

View File

@ -0,0 +1,24 @@
function Open(message, color, position)
SendNUIMessage({
action = 'open',
message = message,
color = color,
position = position,
})
end
function Close()
SendNUIMessage({
action = 'close'
})
end
RegisterNetEvent('okokTextUI:Open')
AddEventHandler('okokTextUI:Open', function(message, color, position)
Open(message, color, position)
end)
RegisterNetEvent('okokTextUI:Close')
AddEventHandler('okokTextUI:Close', function()
Close()
end)

View File

@ -0,0 +1,20 @@
fx_version 'adamant'
game 'gta5'
author 'okok' -- Discord: okok#3488
description 'okokTextUI'
version '1.0'
ui_page 'web/ui.html'
client_scripts {
'client.lua',
}
files {
'web/*.*'
}
export 'Open'
export 'Close'

View File

@ -0,0 +1,90 @@
played_sound = false
position = ''
function removeClass() {
$("#main").removeClass();
$("#wrapper").removeClass();
}
window.addEventListener('message', function(event) {
var sound = new Audio('sound.mp3');
sound.volume = 0.5;
if (event.data.action == 'open') {
position = event.data.position;
message = event.data.message;
$('#message').html(message);
if (position == 'right') {
$('#ui').css('left', '');
$('#ui').css('right', '1%');
$('#ui').removeClass('hideright');
$('#ui').addClass('showright');
}
if (position == 'left') {
$('#ui').css('right', '');
$('#ui').css('left', '1%');
$('#ui').removeClass('hideleft');
$('#ui').addClass('showleft');
}
if (event.data.color == 'lightblue') { // Light Blue
removeClass();
$('#main').addClass('lightblue-icon');
$('#wrapper').addClass('lightblue lightblue-border');
} else if (event.data.color == 'lightgreen') { // Light Green
removeClass();
$('#main').addClass('lightgreen-icon');
$('#wrapper').addClass('lightgreen lightgreen-border');
} else if (event.data.color == 'lightred') { // Light Red
removeClass();
$('#main').addClass('lightred-icon');
$('#wrapper').addClass('lightred lightred-border');
} else if (event.data.color == 'lightgrey') { // Light Red
removeClass();
$('#main').addClass('lightgrey-icon');
$('#wrapper').addClass('lightgrey lightgrey-border');
} else if (event.data.color == 'darkblue') { // Dark Blue
removeClass();
$('#main').addClass('darkblue-icon');
$('#wrapper').addClass('darkblue darkblue-border');
} else if (event.data.color == 'darkgreen') { // Dark Green
removeClass();
$('#main').addClass('darkgreen-icon');
$('#wrapper').addClass('darkgreen darkgreen-border');
} else if (event.data.color == 'darkred') { // Dark Red
removeClass();
$('#main').addClass('darkred-icon');
$('#wrapper').addClass('darkred darkred-border');
} else if (event.data.color == 'darkgrey') { // Dark Grey
removeClass();
$('#main').addClass('darkgrey-icon');
$('#wrapper').addClass('darkgrey darkgrey-border');
}
if (played_sound == false) {
sound.play();
played_sound = true;
}
} else if (event.data.action == 'close') {
if (position == 'right') {
$('#ui').removeClass('hideleft');
$('#ui').removeClass('showleft');
$('#ui').removeClass('showright');
$('#ui').addClass('hideright');
}
if (position == 'left') {
$('#ui').removeClass('hideright');
$('#ui').removeClass('showright');
$('#ui').removeClass('showleft');
$('#ui').addClass('hideleft');
}
}
played_sound = false;
})

Binary file not shown.

View File

@ -0,0 +1,268 @@
@import url('https://fonts.googleapis.com/css?family=Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&subset=devanagari,latin-ext');
html, body{
font-family: 'Poppins', sans-serif;
overflow: hidden;
}
@keyframes showright {
0% {
transform: translateX(100%);
}
40% {
transform: translateX(0%);
}
80%, 100% {
opacity: 1;
transform: translateX(0px);
}
}
.showright {
animation: showright 1s ease forwards;
}
@keyframes hideright {
0% {
transform: translateX(0px);
}
40% {
transform: translateX(-5%);
}
80%, 100% {
opacity: 0;
pointer-events: none;
transform: translateX(100%);
}
}
.hideright {
animation: hideright 1s ease forwards;
}
@keyframes showleft {
0% {
transform: translateX(-100%);
}
40% {
transform: translateX(0%);
}
80%, 100% {
opacity: 1;
transform: translateX(0px);
}
}
.showleft {
animation: showleft 1s ease forwards;
}
@keyframes hideleft {
0% {
transform: translateX(0px);
}
40% {
transform: translateX(5%);
}
80%, 100% {
opacity: 0;
pointer-events: none;
transform: translateX(-100%);
}
}
.hideleft {
animation: hideleft 1s ease forwards;
}
#ui {
position: absolute;
top: 50%;
}
#wrapper {
height: auto;
margin-bottom: 10px;
min-width: 275px;
margin: 0 0 8px 0;
border-radius: 10px;
}
#main {
margin: 12px 16px 12px 56px;
position: relative;
}
#main::before {
font-size: 24px;
top: calc(50% - 12px);
left: -40px;
line-height: 24px;
position: absolute;
}
#message {
font-size: 16px;
font-weight: 600;
}
/* Light Blue */
.lightblue-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #234799;
font-size: 28px;
}
.lightblue {
background-color: rgba(240, 240, 240, 0.85);
color: #234799;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.lightblue-border {
border-left: 4px solid #234799;
}
/* Light Green */
.lightgreen-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #20ab4d;
font-size: 28px;
}
.lightgreen {
background-color: rgba(240, 240, 240, 0.85);
color: #20ab4d;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.lightgreen-border {
border-left: 4px solid #20ab4d;
}
/* Light Red */
.lightred-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #dc3545;
font-size: 28px;
}
.lightred {
background-color: rgba(240, 240, 240, 0.85);
color: #dc3545;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.lightred-border {
border-left: 4px solid #dc3545;
}
/* Light Grey */
.lightgrey-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #646464;
font-size: 28px;
}
.lightgrey {
background-color: rgba(240, 240, 240, 0.85);
color: #646464;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.lightgrey-border {
border-left: 4px solid #646464;
}
/* Dark Blue */
.darkblue-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #2f83ff;
font-size: 28px;
}
.darkblue {
background-color: rgba(20, 20, 20, 0.85);
color: #fff;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.darkblue-border {
border-left: 4px solid #2f83ff;
}
/* Dark Green */
.darkgreen-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #47cf73;
font-size: 28px;
}
.darkgreen {
background-color: rgba(20, 20, 20, 0.85);
color: #fff;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.darkgreen-border {
border-left: 4px solid #47cf73;
}
/* Dark Red */
.darkred-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #dc3545;
font-size: 28px;
}
.darkred {
background-color: rgba(20, 20, 20, 0.85);
color: #fff;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.darkred-border {
border-left: 4px solid #dc3545;
}
/* Dark Grey */
.darkgrey-icon::before {
font-family: "Font Awesome 5 Free";
content: "\f05a";
color: #969696;
font-size: 28px;
}
.darkgrey {
background-color: rgba(20, 20, 20, 0.85);
color: #fff;
padding: 5px 5px 5px 5px;
margin-bottom: 5px;
}
.darkgrey-border {
border-left: 4px solid #969696;
}

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/solid.min.css" integrity="sha512-jQqzj2vHVxA/yCojT8pVZjKGOe9UmoYvnOuM/2sQ110vxiajBU+4WkyRs1ODMmd4AfntwUEV4J+VfM6DkfjLRg==" crossorigin="anonymous">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="ui">
<div id="wrapper">
<div id="main">
<div id="message"></div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
<script src="scripts.js"></script>
</body>
</html>

View File

@ -149,6 +149,15 @@ function createBlip(name, blip, coords, options)
BeginTextCommandSetBlipName("STRING") BeginTextCommandSetBlipName("STRING")
AddTextComponentString(name) AddTextComponentString(name)
EndTextCommandSetBlipName(ourBlip) EndTextCommandSetBlipName(ourBlip)
exports['blip_info']:SetBlipInfoTitle(ourBlip, name, 0)
exports['blip_info']:SetBlipInfoImage(ourBlip, "arcade", "arcade")
exports['blip_info']:AddBlipInfoName(ourBlip, "Ejet af", "Staten")
exports['blip_info']:AddBlipInfoName(ourBlip, "Type", "Underholdning")
exports['blip_info']:AddBlipInfoHeader(ourBlip, "")
exports['blip_info']:AddBlipInfoHeader(ourBlip, "")
exports['blip_info']:AddBlipInfoText(ourBlip, "Kan du slå highscoren?")
return ourBlip return ourBlip
end end

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
client_scripts { client_scripts {

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
lua54 'yes' lua54 'yes'
game 'gta5' game 'gta5'
shared_scripts { shared_scripts {

View File

@ -1122,7 +1122,7 @@ function BigPacketSell()
end end
Citizen.CreateThread(function() Citizen.CreateThread(function()
local blip = AddBlipForCoord(Config.Blip) local blip = AddBlipForCoord(vector3(-1183.37, -884.14, 13.86))
SetBlipSprite(blip, 106) SetBlipSprite(blip, 106)
SetBlipDisplay(blip, 2) SetBlipDisplay(blip, 2)
SetBlipScale(blip, 0.5) SetBlipScale(blip, 0.5)

View File

@ -19,7 +19,6 @@ Config.CoffeeBag = { 'burgershot_coffee', 'burgershot_macaroon' }
---------Burger Shot Job Coords--------- ---------Burger Shot Job Coords---------
Config.Blip = vector3(-1183.37, -884.14, 13.86)
Config.Duty = vector3(-1194.72, -900.11, 14.50) Config.Duty = vector3(-1194.72, -900.11, 14.50)
Config.Tray = vector3(-1193.90, -894.37, 14.0) Config.Tray = vector3(-1193.90, -894.37, 14.0)
Config.Tray2 = vector3(-1195.26, -892.42, 14.0) Config.Tray2 = vector3(-1195.26, -892.42, 14.0)

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
client_script { client_script {

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
games { 'gta5' } games { 'gta5' }
--dependency 'MenuAPI' --dependency 'MenuAPI'

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'

View File

@ -394,6 +394,7 @@ function DeleteSkinCam(isCanceled)
if Config.TeleportToNewSpawn then if Config.TeleportToNewSpawn then
SetEntityCoords(PlayerPedId(), Config.afterCreateCharSpawn.x, Config.afterCreateCharSpawn.y, Config.afterCreateCharSpawn.z) SetEntityCoords(PlayerPedId(), Config.afterCreateCharSpawn.x, Config.afterCreateCharSpawn.y, Config.afterCreateCharSpawn.z)
SetEntityHeading(PlayerPedId(), Config.afterCreateCharSpawn.w) SetEntityHeading(PlayerPedId(), Config.afterCreateCharSpawn.w)
TriggerServerEvent("hp_charcreator:server:tp")
else else
SetEntityCoords(PlayerPedId(), lastCoords.x, lastCoords.y, lastCoords.z) SetEntityCoords(PlayerPedId(), lastCoords.x, lastCoords.y, lastCoords.z)
SetEntityHeading(PlayerPedId(), lastCoords.w) SetEntityHeading(PlayerPedId(), lastCoords.w)

View File

@ -57,8 +57,8 @@ Config.EnableHandsUpButtonUI = true -- Is there to be a button to raise hands on
Config.HandsUpKey = 'x' -- Key JS (key.code) - https://www.toptal.com/developers/keycode Config.HandsUpKey = 'x' -- Key JS (key.code) - https://www.toptal.com/developers/keycode
Config.HandsUpAnimation = {'missminuteman_1ig_2', 'handsup_enter', 50} Config.HandsUpAnimation = {'missminuteman_1ig_2', 'handsup_enter', 50}
Config.TeleportToNewSpawn = false -- whether the player should be teleported to the spawn point or their last location after creating a character Config.TeleportToNewSpawn = true -- whether the player should be teleported to the spawn point or their last location after creating a character
Config.creatingCharacterCoords = vector4(-1238.62, 104.94, 56.00, 159.28) -- this is where the player player will stand during character creation Config.creatingCharacterCoords = vector4(-914.48, -440.31, 141.54, 206.64) -- this is where the player player will stand during character creation
Config.afterCreateCharSpawn = vector4(-255.93, -983.88, 30.22, 250.85) -- this is where the player will spawn after completing character creation Config.afterCreateCharSpawn = vector4(-255.93, -983.88, 30.22, 250.85) -- this is where the player will spawn after completing character creation
Config.CharacterCreationPedAnimation = {"anim@heists@heist_corona@team_idles@male_a", "idle"} -- animation of the player during character creation Config.CharacterCreationPedAnimation = {"anim@heists@heist_corona@team_idles@male_a", "idle"} -- animation of the player during character creation

View File

@ -1,6 +1,6 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
lua54 'yes' lua54 'yes'
author 'vames™' author 'vames™'

View File

@ -1,3 +1,5 @@
local QBCoreF = exports['qb-core']:GetCoreObject()
QBCore = Config.CoreExport() QBCore = Config.CoreExport()
if Config.AdminCommand.Enabled then if Config.AdminCommand.Enabled then
QBCore.Commands.Add(Config.AdminCommand.Name, Config.AdminCommand.Help, { { QBCore.Commands.Add(Config.AdminCommand.Name, Config.AdminCommand.Help, { {
@ -17,3 +19,8 @@ QBCore.Functions.CreateCallback('hp_charcreator:getCurrentSkin', function(source
cb(result[1].skin) cb(result[1].skin)
end end
end) end)
RegisterServerEvent("hp_multichar:playerConnected", function ()
local src = source
SetPlayerRoutingBucket(src, 0)
end)

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
--description "Object Cleanup - Hyperion VRP" --description "Object Cleanup - Hyperion VRP"
description "Object Cleanup - Hyperion QBCore" description "Object Cleanup - Hyperion QBCore"

View File

@ -8,7 +8,7 @@ download "https://github.com/glitchdetector/fivem-explorer"
description "Hides stuff from the map until you discover it" description "Hides stuff from the map until you discover it"
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
client_script 'config.lua' client_script 'config.lua'

View File

@ -12,8 +12,10 @@ Citizen.CreateThread(function()
SetBlipScale(info.blip, info.scale) SetBlipScale(info.blip, info.scale)
SetBlipColour(info.blip, info.colour) SetBlipColour(info.blip, info.colour)
SetBlipAsShortRange(info.blip, true) SetBlipAsShortRange(info.blip, true)
BeginTextCommandSetBlipName("STRING") BeginTextCommandSetBlipName("STRING")
AddTextComponentString(info.title) AddTextComponentString(info.title)
EndTextCommandSetBlipName(info.blip) EndTextCommandSetBlipName(info.blip)
end end
end) end)
print(GetClockHours()..":"..GetClockMinutes()..":"..GetClockSeconds())

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'Hyperion Fixes / Addons' description 'Hyperion Fixes / Addons'
@ -11,6 +11,6 @@ client_scripts {
'client/**.lua' 'client/**.lua'
} }
-- server_scripts { server_scripts {
-- 'server/**.lua' 'server/**.lua'
-- } }

View File

@ -0,0 +1,4 @@
fx_version "adamant"
games { 'gta5' }
this_is_a_map 'yes'

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -31,7 +31,7 @@ local function ds()
end end
local function spawnTargetMenu(x, y, z, h) local function spawnTargetMenu(x, y, z, h)
exports['qb-target']:AddBoxZone(currentVan, GetEntityCoords(ped), 1.5, 1.5 , { exports['qb-target']:AddBoxZone(currentVan, GetEntityCoords(ped), 1.5, 1.5, {
name = currentVan, name = currentVan,
heading = h, heading = h,
minZ = z - 1.0, minZ = z - 1.0,
@ -44,14 +44,19 @@ local function spawnTargetMenu(x, y, z, h)
num = 1, num = 1,
type = "client", type = "client",
icon = "fas fa-gun", icon = "fas fa-gun",
label = Config.Lang.Buy .. label = function()
" " .. activeItems[1].label .. " | " .. activeItems[1].price .. Config.Lang.Currency, if activeItems[1].iAmount > 0 then
return activeItems[1].label .. "\n" .. activeItems[1].price .. Config.Lang.Currency .. "\n\n" .. Config.Lang.Buy
else
return Config.Lang.SoldOut
end
end,
action = function(entity) action = function(entity)
if IsPedAPlayer(entity) then return false end if IsPedAPlayer(entity) then return false end
TriggerServerEvent('_hp_gv:server:_giveItem', 1) TriggerServerEvent('_hp_gv:server:_giveItem', 1)
end, end,
canInteract = function(entity, distance, data) canInteract = function(entity)
if IsPedAPlayer(entity) then return false end if IsPedAPlayer(entity) then return false end
return true return true
end, end,
@ -60,14 +65,19 @@ local function spawnTargetMenu(x, y, z, h)
num = 2, num = 2,
type = "client", type = "client",
icon = "fas fa-gun", icon = "fas fa-gun",
label = Config.Lang.Buy .. label = function()
" " .. activeItems[2].label .. " | " .. activeItems[2].price .. Config.Lang.Currency, if activeItems[2].iAmount > 0 then
return activeItems[2].label .. "\n" .. activeItems[2].price .. Config.Lang.Currency .. "\n\n" .. Config.Lang.Buy
else
return Config.Lang.SoldOut
end
end,
action = function(entity) action = function(entity)
if IsPedAPlayer(entity) then return false end if IsPedAPlayer(entity) then return false end
TriggerServerEvent('_hp_gv:server:_giveItem', 2) TriggerServerEvent('_hp_gv:server:_giveItem', 2)
end, end,
canInteract = function(entity, distance, data) canInteract = function(entity)
if IsPedAPlayer(entity) then return false end if IsPedAPlayer(entity) then return false end
return true return true
end, end,
@ -78,10 +88,7 @@ local function spawnTargetMenu(x, y, z, h)
end end
local function spawnProp(car) local function spawnProp(car)
local prop = "xm3_prop_xm3_crate_ammo_01a" object = CreateObject(GetHashKey("xm3_prop_xm3_crate_ammo_01a"), 0, 0, 0, true, true, true)
local model = GetHashKey(prop)
object = CreateObject(model, 0, 0, 0, true, true, true)
AttachEntityToEntity(object, car, -1, 0, 0.0 - 1.2, 0.0 - 0.2, 0, 0, 0, false, false, false, false, 1, true) AttachEntityToEntity(object, car, -1, 0, 0.0 - 1.2, 0.0 - 0.2, 0, 0, 0, false, false, false, false, 1, true)
end end
@ -128,12 +135,14 @@ local function addCar(x, y, z, h)
Citizen.Wait(100) Citizen.Wait(100)
end end
car = CreateVehicle(vehiclehash, x, y, z, h, true, false) car = CreateVehicle(vehiclehash, x, y, z - 1, h, true, false)
-- Turn on Vehicle
SetVehicleEngineOn(car, true, true, false)
SetVehicleOnGroundProperly(car) SetVehicleOnGroundProperly(car)
SetEntityInvincible(car, true) SetEntityInvincible(car, true)
SetVehicleNumberPlateText(car, "GUN00VAN") SetVehicleNumberPlateText(car, "GUN00VAN")
SetVehicleDoorsLocked(car, 2) SetVehicleDoorsLocked(car, 7)
SetVehicleDoorOpen(car, 2, true, true) SetVehicleDoorOpen(car, 2, true, true)
SetVehicleDoorOpen(car, 3, true, true) SetVehicleDoorOpen(car, 3, true, true)
@ -146,32 +155,37 @@ local function addCar(x, y, z, h)
addNPC(x, y, z) addNPC(x, y, z)
spawnTargetMenu(x, y, z, h) spawnTargetMenu(x, y, z, h)
Wait(1000)
SoundVehicleHornThisFrame(car)
SetEntityLights(car, true)
Wait(100)
SoundVehicleHornThisFrame(car)
SetEntityLights(car, false)
end) end)
end end
RegisterNetEvent('_hp_gv:client:_spawnVan') RegisterNetEvent('_hp_gv:client:_spawnVan')
AddEventHandler('_hp_gv:client:_spawnVan', function(van) AddEventHandler('_hp_gv:client:_spawnVan', function()
activeVan = van activeVan = GlobalState.ActiveVan
currentVan = "GunVan"..math.random(100000000, 999999999) currentVan = "GunVan" .. (activeVan*2)
activeItems = GlobalState.ActiveItems
if Config.perVanItems then addCar(Config.Gunvans.vehicles[activeVan].coords['x'], Config.Gunvans.vehicles[activeVan].coords['y'],
activeItems = Config.Gunvans.vehicles[activeVan].items Config.Gunvans.vehicles[activeVan].coords['z'], Config.Gunvans.vehicles[activeVan].heading)
else
activeItems = Config.VanItems
end
addCar(Config.Gunvans.vehicles[van].coords['x'], Config.Gunvans.vehicles[van].coords['y'], Config.Gunvans.vehicles[van].coords['z'], Config.Gunvans.vehicles[van].heading)
end) end)
RegisterNetEvent('_hp_gv:client:_destroyVan') RegisterNetEvent('_hp_gv:client:_destroyVan')
AddEventHandler('_hp_gv:client:_destroyVan', function(van) AddEventHandler('_hp_gv:client:_destroyVan', function()
ds() ds()
end) end)
AddEventHandler('onResourceStop', function(resourceName) if Config.Debug then
if (GetCurrentResourceName() ~= resourceName) then AddEventHandler('onResourceStop', function(resourceName)
return if (GetCurrentResourceName() ~= resourceName) then
end return
end
ds()
end) ds()
end)
end

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
description 'Hyperion Rebooted - Gun Van' description 'Hyperion Rebooted - Gun Van'

View File

@ -1,21 +1,22 @@
QBCore = exports['qb-core']:GetCoreObject() QBCore = exports['qb-core']:GetCoreObject()
local ActiveVan = -1
local ActiveItems = {}
local LastVan = nil
local totalVans = #Config.Gunvans.vehicles
math.randomseed(os.time()) math.randomseed(os.time())
local function firstLaunch() GlobalState.ActiveVan = -1
if not LastVan then GlobalState.ActiveItems = {}
LastVan = os.time() GlobalState.LastVan = os.time()
end GlobalState.totalVans = #Config.Gunvans.vehicles
end
firstLaunch()
--Fordi laver du ActiveItems = Items, så laver den en REFERENCE istedet for at KOPIERE array'et over.... -- Fordi laver du ActiveItems = Items, så laver den en REFERENCE istedet for at KOPIERE array'et over....
-- deepcopy(orig)
-- - Type: **Local function**
-- - Creates a deep copy of a table
-- - **Returns** a new table with the same values as the original
--
-- **Parameters**
-- - **orig** = The table to copy
local function deepcopy(orig) local function deepcopy(orig)
local orig_type = type(orig) local orig_type = type(orig)
local copy local copy
@ -31,71 +32,102 @@ local function deepcopy(orig)
return copy return copy
end end
-- #### Spawn Van
-- Func: **spawnVan()**
-- - Type: **Local function**
-- - Spawns the van and sets the active items
local function spawnVan() local function spawnVan()
if ActiveVan ~= -1 or Config.Debug then if GlobalState.ActiveVan ~= -1 or Config.Debug then
LastVan = os.time() GlobalState.LastVan = os.time()
if Config.perVanItems then if Config.perVanItems then
ActiveItems = deepcopy(Config.Gunvans.vehicles[ActiveVan].items) GlobalState.ActiveItems = deepcopy(Config.Gunvans.vehicles[GlobalState.ActiveVan].items)
else else
ActiveItems = deepcopy(Config.VanItems) GlobalState.ActiveItems = deepcopy(Config.VanItems)
end end
print("Van spawned at Coordinates: " .. local time = os.date("%X - %d/%m/%Y", GlobalState.LastVan)
Config.Gunvans.vehicles[ActiveVan].coords.x ..
" " .. Config.Gunvans.vehicles[ActiveVan].coords.y .. " " .. Config.Gunvans.vehicles[ActiveVan].coords.z)
TriggerClientEvent('_hp_gv:client:_spawnVan', -1, ActiveVan) local x = Config.Gunvans.vehicles[GlobalState.ActiveVan].coords.x
local y = Config.Gunvans.vehicles[GlobalState.ActiveVan].coords.y
local z = Config.Gunvans.vehicles[GlobalState.ActiveVan].coords.z
print("At "..time.." a van spawned at Coordinates: " .. x .. " " .. y .. " " .. z)
TriggerClientEvent('_hp_gv:client:_spawnVan', -1, GlobalState.ActiveVan)
end end
end end
-- #### Delete Van
-- Func: **deleteVan()**
-- - Type: **Local function**
-- - Trigger a countdown to delete the van after a certain amount of time
local function deleteVan() local function deleteVan()
Citizen.CreateThread(function() Citizen.CreateThread(function()
Citizen.Wait(Config.duration * 60000) Citizen.Wait(Config.duration * 60000)
ActiveVan = -1 GlobalState.ActiveVan = -1
ActiveItems = {} GlobalState.ActiveItems = {}
TriggerClientEvent('_hp_gv:client:_destroyVan', -1) TriggerClientEvent('_hp_gv:client:_destroyVan', -1)
startCountdown() startCountdown()
end) end)
end end
local function triggerVanSpawn()
GlobalState.ActiveVan = math.random(1, GlobalState.totalVans)
spawnVan()
deleteVan()
end
-- #### Start Van countdown
-- Func: **startCountdown()**
-- - Type: **Local function**
-- - Trigger a countdown to spawn a new van after a certain amount of time
function startCountdown() function startCountdown()
Citizen.CreateThread(function() Citizen.CreateThread(function()
Citizen.Wait(Config.minutesBetweenVans * 60000) Wait(10000)
ActiveVan = math.random(1, totalVans) if Config.SpawnDuringNight then
spawnVan() if GetClockHours() > 20 and GetClockHours() < 5 then
deleteVan() Citizen.Wait(Config.minutesBetweenVans * 60000)
triggerVanSpawn()
end
else
Citizen.Wait(Config.minutesBetweenVans * 60000)
triggerVanSpawn()
end
end) end)
end end
startCountdown() -- startCountdown()
-- #### Give Item
-- GiveItem(src, item)
--
-- src = Player source
--
-- item = item index
local function GiveItem(src, item) local function GiveItem(src, item)
if ActiveItems[item].iAmount <= 0 then if GlobalState.ActiveItems[item].iAmount <= 0 then
return Config.NotifyEmpty(src, ActiveItems[item].label) return Config.NotifyEmpty(src, GlobalState.ActiveItems[item].label)
end end
local Player = QBCore.Functions.GetPlayer(src) local Player = QBCore.Functions.GetPlayer(src)
if Player.Functions.GetMoney('cash') < ActiveItems[item].price then if Player.Functions.GetMoney('cash') < GlobalState.ActiveItems[item].price then
return Config.NotifyNoMoney(src, ActiveItems[item].label) return Config.NotifyNoMoney(src, GlobalState.ActiveItems[item].label)
end end
Player.Functions.RemoveMoney('cash', ActiveItems[item].price, 'Gun Van') Player.Functions.RemoveMoney('cash', GlobalState.ActiveItems[item].price, 'Gun Van')
Config.InventoryExport(src, ActiveItems[item].item, 1) Config.InventoryExport(src, GlobalState.ActiveItems[item].item, 1)
if ActiveItems[item].weaponType == "pistol" then
Config.InventoryExport(src, "pistol_ammo", ActiveItems[item].aAmount) if GlobalState.ActiveItems[item].weaponType == "pistol" then
Config.InventoryExport(src, "pistol_ammo", GlobalState.ActiveItems[item].aAmount)
end end
if ActiveItems[item].triggerCops then
if GlobalState.ActiveItems[item].triggerCops then
Config.EmergencyTrigger() Config.EmergencyTrigger()
end end
ActiveItems[item].iAmount = ActiveItems[item].iAmount - 1
Config.Notify(src, ActiveItems[item].label) GlobalState.ActiveItems[item].iAmount = GlobalState.ActiveItems[item].iAmount - 1
Config.Notify(src, GlobalState.ActiveItems[item].label)
end end
@ -103,13 +135,13 @@ end
if Config.Debug then if Config.Debug then
QBCore.Commands.Add('gv', '', {}, false, function(source, args) QBCore.Commands.Add('gv', '', {}, false, function(source, args)
TriggerClientEvent('_hp_gv:client:_destroyVan', -1) TriggerClientEvent('_hp_gv:client:_destroyVan', -1)
ActiveVan = math.random(1, totalVans) GlobalState.ActiveVan = math.random(1, GlobalState.totalVans)
spawnVan() spawnVan()
end, Config.Permission) end, Config.Permission)
QBCore.Commands.Add('dgv', '', {}, false, function(source, args) QBCore.Commands.Add('dgv', '', {}, false, function(source, args)
ActiveVan = -1 GlobalState.ActiveVan = -1
ActiveItems = {} GlobalState.ActiveItems = {}
TriggerClientEvent('_hp_gv:client:_destroyVan', -1) TriggerClientEvent('_hp_gv:client:_destroyVan', -1)
end, Config.Permission) end, Config.Permission)
end end
@ -121,7 +153,7 @@ AddEventHandler('_hp_gv:server:_giveItem', function(item)
local playerPed = GetPlayerPed(src) local playerPed = GetPlayerPed(src)
local Player = QBCore.Functions.GetPlayer(source) local Player = QBCore.Functions.GetPlayer(source)
local playerCoords = GetEntityCoords(playerPed) local playerCoords = GetEntityCoords(playerPed)
local targetCoords = Config.Gunvans.vehicles[ActiveVan].coords local targetCoords = Config.Gunvans.vehicles[GlobalState.ActiveVan].coords
if #(playerCoords - targetCoords) > 5.5 then if #(playerCoords - targetCoords) > 5.5 then
Config.LogHandler(Player.PlayerData.citizenid .. " " .. Config.Lang.OutsideRange) Config.LogHandler(Player.PlayerData.citizenid .. " " .. Config.Lang.OutsideRange)
@ -135,13 +167,11 @@ AddEventHandler('_hp_gv:server:_giveItem', function(item)
return return
end end
if ActiveVan ~= -1 or Config.Debug then if GlobalState.ActiveVan ~= -1 or Config.Debug then
GiveItem(src, item) GiveItem(src, item)
else else
Config.LogHandler("GunVan | " .. Player.PlayerData.citizenid .. " " .. Config.Lang.OutsideBuyHours) Config.LogHandler("GunVan | " .. Player.PlayerData.citizenid .. " " .. Config.Lang.OutsideBuyHours)
Config.LogHandler("GunVan | " .. Config.LogHandler("GunVan | " .. Config.Lang.TimeUntilNext .. " " .. Config.minutesBetweenVans * 60 - (os.time() - GlobalState.LastVan) .. " " .. Config.Lang.Seconds)
Config.Lang.TimeUntilNext ..
" " .. Config.minutesBetweenVans * 60 - (os.time() - LastVan) .. " " .. Config.Lang.Seconds)
return return
end end
end) end)

View File

@ -9,6 +9,8 @@ Config.Debug = false
-- If false, the resource will not spawn a Gun Van on resource-start. -- If false, the resource will not spawn a Gun Van on resource-start.
-- You'll have to wait until the server triggers a Gun Van spawn. -- You'll have to wait until the server triggers a Gun Van spawn.
Config.SpawnDuringNight = true -- If true, the Gun Van will only be able to spawn during the night (8PM-5AM in-game timecycle). If false, it can spawn during the entire day.
Config.minutesBetweenVans = 180 -- This is the time between each Gun Van spawn. This is in minutes. Config.minutesBetweenVans = 180 -- This is the time between each Gun Van spawn. This is in minutes.
Config.duration = 10 -- This is in minutes. This is the duration of the Gun Van event. After this time, the Gun Van will despawn. Config.duration = 10 -- This is in minutes. This is the duration of the Gun Van event. After this time, the Gun Van will despawn.
@ -20,9 +22,10 @@ Config.duration = 10 -- This is in minutes. This is the duration of the Gun Van
-- Recommended to keep true, to avoid players from cheating and buying items from a distance. -- Recommended to keep true, to avoid players from cheating and buying items from a distance.
Config.DropPlayer = false Config.DropPlayer = false
-- Permission for using the Gun Van commands. -- Permission level for using the Gun Van commands.
Config.Permission = "admin" Config.Permission = "admin"
-- Server-side function.
-- Function to trigger the emergency event. -- Function to trigger the emergency event.
-- This is triggered, if "triggerCops" is set to true for the specific item. -- This is triggered, if "triggerCops" is set to true for the specific item.
Config.EmergencyTrigger = function() Config.EmergencyTrigger = function()
@ -35,18 +38,22 @@ Config.LogHandler = function(msg)
print(msg) print(msg)
end end
-- Server-side function.
Config.NotifyEmpty = function(src, item) Config.NotifyEmpty = function(src, item)
TriggerClientEvent('HudNotification', src, 'error', 'Gun Van', item.."? Jeg er sgu løbet tør makker....") TriggerClientEvent('HudNotification', src, 'error', 'Gun Van', item.."? Jeg er sgu løbet tør makker....")
end end
-- Server-side function.
Config.NotifyNoMoney = function(src, item) Config.NotifyNoMoney = function(src, item)
TriggerClientEvent('HudNotification', src, 'error', 'Gun Van', "Du har ikke råd til at købe en "..item..".") TriggerClientEvent('HudNotification', src, 'error', 'Gun Van', "Du har ikke råd til at købe en "..item..".")
end end
-- Server-side function.
Config.Notify = function(src, item) Config.Notify = function(src, item)
TriggerClientEvent('HudNotification', src, 'success', 'Gun Van', 'Du købte en '..item) TriggerClientEvent('HudNotification', src, 'success', 'Gun Van', 'Du købte en '..item)
end end
-- Client-side function.
Config.InventoryExport = function(src, item, amount) -- Change this to your inventory system. Config.InventoryExport = function(src, item, amount) -- Change this to your inventory system.
exports['ps-inventory']:AddItem(src, item, amount, false, { serie = "722"..tostring(QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(1) .. "GV" .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4))}) exports['ps-inventory']:AddItem(src, item, amount, false, { serie = "722"..tostring(QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(1) .. "GV" .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4))})
end end
@ -152,401 +159,401 @@ Config.Gunvans = {
} }
} }
}, },
{ -- {
coords = vector3(-1269.17, -2661.21, 13.94), -- coords = vector3(-1269.17, -2661.21, 13.94),
heading = 329.6, -- heading = 329.6,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-1018.11, -2193.89, 8.98), -- coords = vector3(-1018.11, -2193.89, 8.98),
heading = 352.8, -- heading = 352.8,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-559.84, -1799.59, 22.61), -- coords = vector3(-559.84, -1799.59, 22.61),
heading = 153.56, -- heading = 153.56,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-559.6, -1681.66, 19.31), -- coords = vector3(-559.6, -1681.66, 19.31),
heading = 350.13, -- heading = 350.13,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-1083.81, -1671.52, 4.7), -- coords = vector3(-1083.81, -1671.52, 4.7),
heading = 126.03, -- heading = 126.03,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-1155.1, -1564.93, 4.43), -- coords = vector3(-1155.1, -1564.93, 4.43),
heading = 168.59, -- heading = 168.59,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-659.96, -735.03, 31.27), -- coords = vector3(-659.96, -735.03, 31.27),
heading = 327.81, -- heading = 327.81,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-1265.44, -820.3, 17.1), -- coords = vector3(-1265.44, -820.3, 17.1),
heading = 252.0, -- heading = 252.0,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-2021.38, -362.03, 44.11), -- coords = vector3(-2021.38, -362.03, 44.11),
heading = 208.51, -- heading = 208.51,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-1601.67, 3093.5, 32.57), -- coords = vector3(-1601.67, 3093.5, 32.57),
heading = 323.71, -- heading = 323.71,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-2166.33, 4284.34, 48.96), -- coords = vector3(-2166.33, 4284.34, 48.96),
heading = 332.96, -- heading = 332.96,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-598.55, 5349.68, 70.47), -- coords = vector3(-598.55, 5349.68, 70.47),
heading = 7.98, -- heading = 7.98,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-678.79, 5797.2, 17.33), -- coords = vector3(-678.79, 5797.2, 17.33),
heading = 64.67, -- heading = 64.67,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(-176.42, 6405.17, 31.86), -- coords = vector3(-176.42, 6405.17, 31.86),
heading = 225.81, -- heading = 225.81,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(1539.5, 6335.8, 23.81), -- coords = vector3(1539.5, 6335.8, 23.81),
heading = 241.77, -- heading = 241.77,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(2195.82, 5609.29, 53.33), -- coords = vector3(2195.82, 5609.29, 53.33),
heading = 166.43, -- heading = 166.43,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(1969.08, 5178.88, 47.6), -- coords = vector3(1969.08, 5178.88, 47.6),
heading = 334.39, -- heading = 334.39,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
{ -- {
coords = vector3(1296.1, 4331.41, 38.24), -- coords = vector3(1296.1, 4331.41, 38.24),
heading = 84.15, -- heading = 84.15,
items = { -- items = {
{ -- {
label = "Pistol", -- Label of the item -- label = "Pistol", -- Label of the item
item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua -- item = "weapon_pistol", -- Name of the item from QBCore/Shared/Items.lua
weaponType = "pistol", -- Only used for ammo. Specify the type of gun. -- weaponType = "pistol", -- Only used for ammo. Specify the type of gun.
iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons? -- iAmount = 1, -- The amount of the item that the gunvan will have in stock. Should never be 0, for obvious reasons?
aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line. -- aAmount = math.random(1,4), -- The amount of ammo that the gunvan will give to the player on purchase, if you don't want to give ammo, remove this line.
price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free. -- price = 35000, -- The price of the item. Don't remove this, just set it to 0 if you want it to be free.
triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger -- triggerCops = true -- If cops should be alerted about a suspicious activity. If not set, it won't trigger Config.EmergencyTrigger
}, -- },
{ -- {
label = "Foldekniv", -- label = "Foldekniv",
item = "weapon_switchblade", -- item = "weapon_switchblade",
iAmount = 1, -- iAmount = 1,
price = 5000, -- price = 5000,
triggerCops = false -- triggerCops = false
} -- }
} -- }
}, -- },
} }
} }

View File

@ -1760,11 +1760,13 @@ html {
height: 30rem; height: 30rem;
width: 30rem; width: 30rem;
left: 100rem; left: 100rem;
top: 33rem; top: 22rem;
overflow-y: auto; overflow-y: auto;
animation-name: zoomInRight; animation-name: zoomInRight;
animation-duration: 1s; animation-duration: 1s;
animation-fill-mode: both; animation-fill-mode: both;
-webkit-mask-image: linear-gradient(180deg, #000 90%, transparent 100%);
mask-image: linear-gradient(180deg, #000 90%, transparent 100%);
} }
.notification .border { .notification .border {
position: relative; position: relative;

View File

@ -2320,7 +2320,7 @@ html {
height: 30rem; height: 30rem;
width: 30rem; width: 30rem;
left: 100rem; left: 100rem;
top: 33rem; top: 22rem;
overflow-y: auto; overflow-y: auto;
-webkit-animation-name: zoomInRight; -webkit-animation-name: zoomInRight;
animation-name: zoomInRight; animation-name: zoomInRight;
@ -2328,6 +2328,8 @@ html {
animation-duration: 1s; animation-duration: 1s;
-webkit-animation-fill-mode: both; -webkit-animation-fill-mode: both;
animation-fill-mode: both; animation-fill-mode: both;
-webkit-mask-image: linear-gradient(180deg, #000 90%, transparent 100%);
mask-image: linear-gradient(180deg, #000 90%, transparent 100%);
.border { .border {
position: relative; position: relative;

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
version '1.0.0' version '1.0.0'

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
lua54 "yes" lua54 "yes"
game "gta5" game "gta5"

View File

@ -1,4 +1,4 @@
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
lua54 'yes' lua54 'yes'
version '1.0' version '1.0'

View File

@ -136,13 +136,10 @@
<script> <script>
// Brug øverste setting på lokal test, udenfor spillet. // Brug øverste setting på lokal test, udenfor spillet.
// const jsonUrl = 'https://corsproxy.io/?https%3A%2F%2Fgit.thnght.pro%2FHyperion%2FPublic%2Fraw%2Fbranch%2Fmain%2Finfo%2Fchangelog.json';
// const teamUrl = 'https://corsproxy.io/?https%3A%2F%2Fgit.thnght.pro%2FHyperion%2FPublic%2Fraw%2Fbranch%2Fmain%2Finfo%2Fstaff.json';
// Brug nedenstående setting, når det er i spillet. // Brug nedenstående setting, når det er i spillet.
const jsonUrl = 'https://git.thnght.pro/Hyperion/Public/raw/branch/main/info/changelog.json'; const jsonUrl = 'https://csaber.ovh/Hyperion/Public/raw/branch/main/info/changelog.json';
const teamUrl = 'https://git.thnght.pro/Hyperion/Public/raw/branch/main/info/staff.json'; const teamUrl = 'https://csaber.ovh/Hyperion/Public/raw/branch/main/info/staff.json';
const newsContainer = document.getElementById('newscontainer'); const newsContainer = document.getElementById('newscontainer');

View File

@ -1,6 +1,6 @@
-- AUTOMATICALLY GENERATED FILE -- AUTOMATICALLY GENERATED FILE
-- ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN -- ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN
fx_version 'cerulean' fx_version 'adamant'
game 'gta5' game 'gta5'
client_script 'map.js' client_script 'map.js'

View File

@ -1,13 +1,40 @@
// AUTOMATICALLY GENERATED FILE // AUTOMATICALLY GENERATED FILE
// ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN // ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN
// //
// Compiled at 2024-02-12T14.54.37 // Compiled at 2024-03-16T21.02.34
setTimeout(EnableEditorRuntime, 0); setTimeout(EnableEditorRuntime, 0);
on('onResourceStop', (name) => { if (name === GetCurrentResourceName()) DisableEditorRuntime(); }); on('onResourceStop', (name) => { if (name === GetCurrentResourceName()) DisableEditorRuntime(); });
// Map patches // Map patches
function applyPatch(md,_e,u){const e=GetEntityIndexFromMapdata(md,_e);if(e===-1)return function applyPatch(md,_e,u){const e=GetEntityIndexFromMapdata(md,_e);if(e===-1)return console.error('Failed to get entity index from mapdata',{mapdataHash:_md,mapdataIndex:md,entityHash:_e});UpdateMapdataEntity(md,e,u)}
UpdateMapdataEntity(md,e,u)}
const const
mp109168018_186640426={position:[-557.1691284179688,-1074.7852783203125,19.968883514404297],matrix:[0.019506722688674927,-0.999809741973877,0,0,0.999809741973877,0.019506722688674927,0,0,0,0,1,0,-557.1691284179688,-1074.7852783203125,19.968883514404297,1]},
mp109168018_197153114={position:[-601.0459594726562,-1101.41259765625,19.680322647094727],matrix:[-0.0005671381950378418,-0.9999992847442627,0.0011921976692974567,0,1,-0.0005672291154041886,-0.000054816307965666056,0,0.000055492331739515066,0.0011921664699912071,0.9999992847442627,0,-601.0459594726562,-1101.41259765625,19.680322647094727,1]},
mp109168018_953816343={position:[-619.3541259765625,-1075.853515625,20.016098022460938],matrix:[-0.0871555283665657,-0.9961947202682495,0,0,0.9961947202682495,-0.0871555283665657,0,0,0,0,1,0,-619.3541259765625,-1075.853515625,20.016098022460938,1]},
mp109168018_1041306121={position:[-552.334228515625,-1089.4630126953125,17.266206741333008],matrix:[0.08715556561946869,0.9961947202682495,0,0,-0.9961947202682495,0.08715556561946869,0,0,0,0,1,0,-552.334228515625,-1089.4630126953125,17.266206741333008,1]},
mp109168018_1064571359={position:[-623.2304077148438,-1077.89794921875,20.10850715637207],matrix:[0.25881919264793396,0.9659258127212524,0,0,-0.9659258127212524,0.25881919264793396,0,0,0,0,1,0,-623.2304077148438,-1077.89794921875,20.10850715637207,1]},
mp109168018_1082381472={position:[-557.0696411132812,-1090.2041015625,18.279254913330078],matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-557.0696411132812,-1090.2041015625,18.279254913330078,1]},
mp109168018_1332460422={position:[-558.7532958984375,-1081.885986328125,19.84859848022461],matrix:[-0.0871555283665657,-0.9961947202682495,0,0,0.9961947202682495,-0.0871555283665657,0,0,0,0,1,0,-558.7532958984375,-1081.885986328125,19.84859848022461,1]},
mp109168018_1392454546={position:[-553.0411376953125,-1078.66650390625,17.70330047607422],matrix:[0.08715556561946869,0.9961947202682495,0,0,-0.9961947202682495,0.08715556561946869,0,0,0,0,1,0,-553.0411376953125,-1078.66650390625,17.70330047607422,1]},
mp109168018_1641981270={position:[-558.6902465820312,-1079.0244140625,17.763818740844727],matrix:[-0.17364713549613953,-0.9848079085350037,0,0,0.9848079085350037,-0.17364713549613953,0,0,0,0,1,0,-558.6902465820312,-1079.0244140625,17.763818740844727,1]},
mp109168018_2137378967={position:[-619.5390625,-1072.1767578125,20.018207550048828],matrix:[-0.0871555283665657,-0.9961947202682495,0,0,0.9961947202682495,-0.0871555283665657,0,0,0,0,1,0,-619.5390625,-1072.1767578125,20.018207550048828,1]},
mp109168018__286280298={position:[-557.1691284179688,-1070.5467529296875,20.100399017333984],matrix:[0.019506722688674927,-0.999809741973877,0,0,0.999809741973877,0.019506722688674927,0,0,0,0,1,0,-557.1691284179688,-1070.5467529296875,20.100399017333984,1]},
mp109168018__339587543={position:[-557.2501831054688,-1066.3912353515625,19.868202209472656],matrix:[0.019506722688674927,-0.999809741973877,0,0,0.999809741973877,0.019506722688674927,0,0,0,0,1,0,-557.2501831054688,-1066.3912353515625,19.868202209472656,1]},
mp109168018__1261513874={position:[-557.3284301757812,-1062.2305908203125,19.74962043762207],matrix:[0.019506722688674927,-0.999809741973877,0,0,0.999809741973877,0.019506722688674927,0,0,0,0,1,0,-557.3284301757812,-1062.2305908203125,19.74962043762207,1]},
mp109168018__1020948082={position:[-622.2045288085938,-1068.4918212890625,19.145280838012695],matrix:[1.1924880638503055e-8,1,0,0,-1,1.1924880638503055e-8,0,0,0,0,1,0,-622.2045288085938,-1068.4918212890625,19.145280838012695,1]},
mp109168018__960251537={position:[-621.8082885742188,-1078.8701171875,20.226768493652344],matrix:[0.9961947202682495,-0.08715522289276123,0,0,0.08715522289276123,0.9961947202682495,0,0,0,0,1,0,-621.8082885742188,-1078.8701171875,20.226768493652344,1]},
mp109168018__906177716={position:[-620.336669921875,-1078.4794921875,18.166370391845703],matrix:[0.08715556561946869,0.9961947202682495,0,0,-0.9961947202682495,0.08715556561946869,0,0,0,0,1,0,-620.336669921875,-1078.4794921875,18.166370391845703,1]},
mp109168018__1937114546={position:[-619.464599609375,-1068.567626953125,18.455127716064453],matrix:[0.08715556561946869,0.9961947202682495,0,0,-0.9961947202682495,0.08715556561946869,0,0,0,0,1,0,-619.464599609375,-1068.567626953125,18.455127716064453,1]},
mp109168018__188100129={position:[-621.5505981445312,-1074.0850830078125,21.351247787475586],matrix:[0.5114529728889465,1.7255138158798218,0,0,-0.9587676525115967,0.2841845452785492,0,0,0,0,1.3133246898651123,0,-621.5505981445312,-1074.0850830078125,21.351247787475586,1]},
mp109168018__1897150592={position:[-623.7925415039062,-1082.3187255859375,20.4724178314209],matrix:[-4.371138828673793e-8,-1,0,0,1,-4.371138828673793e-8,0,0,0,0,1,0,-623.7925415039062,-1082.3187255859375,20.4724178314209,1]},
mp109168018__1264914435={position:[-623.8312377929688,-1084.7269287109375,20.423086166381836],matrix:[-4.371138828673793e-8,-1,0,0,1,-4.371138828673793e-8,0,0,0,0,1,0,-623.8312377929688,-1084.7269287109375,20.423086166381836,1]},
mp109168018__319068293={position:[-623.7927856445312,-1087.1624755859375,20.487333297729492],matrix:[-4.371138828673793e-8,-1,0,0,1,-4.371138828673793e-8,0,0,0,0,1,0,-623.7927856445312,-1087.1624755859375,20.487333297729492,1]},
mp109168018__1575836328={position:[-603.33984375,-1097.5418701171875,19.992372512817383],matrix:[0.61967933177948,-0.7848551273345947,0.00009672320447862148,0,0.7848490476608276,0.6196739077568054,-0.0040246364660561085,0,0.003098819637671113,0.002569896634668112,0.9999918937683105,0,-603.33984375,-1097.5418701171875,19.992372512817383,1]},
mp109168018__1444491956={position:[-601.2568359375,-1099.09619140625,20.20111083984375],matrix:[-0.0009673237800598145,-0.999999463558197,-0.0001115210325224325,0,0.9999993443489075,-0.0009672875166870654,-0.0004172467743046582,0,0.00041713868267834187,-0.0001119246007874608,0.9999999403953552,0,-601.2568359375,-1099.09619140625,20.20111083984375,1]},
mp109168018__2096232912={position:[-557.4906616210938,-1077.6494140625,19.47208023071289],matrix:[0.965925931930542,0.25881868600845337,0,0,-0.25881868600845337,0.965925931930542,0,0,0,0,1,0,-557.4906616210938,-1077.6494140625,19.47208023071289,1]},
mp109168018__101733233={position:[-558.469970703125,-1086.522705078125,19.039886474609375],matrix:[-0.0871555283665657,-0.9961947202682495,0,0,0.9961947202682495,-0.0871555283665657,0,0,0,0,1,0,-558.469970703125,-1086.522705078125,19.039886474609375,1]},
mp109168018__932921467={position:[-558.1162109375,-1089.0191650390625,17.72606658935547],matrix:[-0.17364713549613953,-0.9848079085350037,0,0,0.9848079085350037,-0.17364713549613953,0,0,0,0,1,0,-558.1162109375,-1089.0191650390625,17.72606658935547,1]},
mp109168018__417794469={position:[-552.7431640625,-1081.533447265625,19.886455535888672],matrix:[1.1924880638503055e-8,1,0,0,-1,1.1924880638503055e-8,0,0,0,0,1,0,-552.7431640625,-1081.533447265625,19.886455535888672,1]},
mp109168018__1867033950={position:[-552.548828125,-1085.378662109375,19.30622100830078],matrix:[1.1924880638503055e-8,1,0,0,-1,1.1924880638503055e-8,0,0,0,0,1,0,-552.548828125,-1085.378662109375,19.30622100830078,1]},
mp236008257_703531412={position:[-1261.6522216796875,-2868.904052734375,6.514543533325195],matrix:[0.6416206359863281,-0.7670221328735352,0,0,0.7670221328735352,0.6416206359863281,0,0,0,0,1,0,-1261.6522216796875,-2868.904052734375,6.514543533325195,1]}, mp236008257_703531412={position:[-1261.6522216796875,-2868.904052734375,6.514543533325195],matrix:[0.6416206359863281,-0.7670221328735352,0,0,0.7670221328735352,0.6416206359863281,0,0,0,0,1,0,-1261.6522216796875,-2868.904052734375,6.514543533325195,1]},
mp236008257_810956190={position:[-1279.32568359375,-2855.974365234375,10.99134349822998],matrix:[0.8660253286361694,0.5000001192092896,0,0,-0.5000001192092896,0.8660253286361694,0,0,0,0,1,0,-1279.32568359375,-2855.974365234375,10.99134349822998,1]}, mp236008257_810956190={position:[-1279.32568359375,-2855.974365234375,10.99134349822998],matrix:[0.8660253286361694,0.5000001192092896,0,0,-0.5000001192092896,0.8660253286361694,0,0,0,0,1,0,-1279.32568359375,-2855.974365234375,10.99134349822998,1]},
mp236008257_1101047475={position:[-1281.468017578125,-2857.87451171875,11.342058181762695],matrix:[0.7071075439453125,0.7071059942245483,0,0,-0.7071059942245483,0.7071075439453125,0,0,0,0,1,0,-1281.468017578125,-2857.87451171875,11.342058181762695,1]}, mp236008257_1101047475={position:[-1281.468017578125,-2857.87451171875,11.342058181762695],matrix:[0.7071075439453125,0.7071059942245483,0,0,-0.7071059942245483,0.7071075439453125,0,0,0,0,1,0,-1281.468017578125,-2857.87451171875,11.342058181762695,1]},
@ -181,8 +208,40 @@ mp_1244069447_1004502929={position:[-1117.7899169921875,-2959.3916015625,9.78435
mp_1244069447_1520356007={position:[-1160.6806640625,-2914.669921875,10.159470558166504],matrix:[0.9997658729553223,0.02163759618997574,0,0,-0.02163759618997574,0.9997658729553223,0,0,0,0,1,0,-1160.6806640625,-2914.669921875,10.159470558166504,1]}, mp_1244069447_1520356007={position:[-1160.6806640625,-2914.669921875,10.159470558166504],matrix:[0.9997658729553223,0.02163759618997574,0,0,-0.02163759618997574,0.9997658729553223,0,0,0,0,1,0,-1160.6806640625,-2914.669921875,10.159470558166504,1]},
mp_1244069447_1855434985={position:[-1274.0216064453125,-2853.388671875,8.26334285736084],matrix:[-0.965486466884613,-0.26045316457748413,0,0,0.26045316457748413,-0.965486466884613,0,0,0,0,1,0,-1274.0216064453125,-2853.388671875,8.26334285736084,1]}, mp_1244069447_1855434985={position:[-1274.0216064453125,-2853.388671875,8.26334285736084],matrix:[-0.965486466884613,-0.26045316457748413,0,0,0.26045316457748413,-0.965486466884613,0,0,0,0,1,0,-1274.0216064453125,-2853.388671875,8.26334285736084,1]},
mp_1244069447__1819475074={position:[-1106.0196533203125,-2967.9775390625,8.840656280517578],matrix:[0.9223939180374146,0.3862505555152893,0,0,-0.3862505555152893,0.9223939180374146,0,0,0,0,1,0,-1106.0196533203125,-2967.9775390625,8.840656280517578,1]}, mp_1244069447__1819475074={position:[-1106.0196533203125,-2967.9775390625,8.840656280517578],matrix:[0.9223939180374146,0.3862505555152893,0,0,-0.3862505555152893,0.9223939180374146,0,0,0,0,1,0,-1106.0196533203125,-2967.9775390625,8.840656280517578,1]},
mp_1244069447__1662987169={position:[-1130.58984375,-2942.450927734375,8.558700561523438],matrix:[0.9849218726158142,0.17299985885620117,0,0,-0.17299985885620117,0.9849218726158142,0,0,0,0,1,0,-1130.58984375,-2942.450927734375,8.558700561523438,1]}; mp_1244069447__1662987169={position:[-1130.58984375,-2942.450927734375,8.558700561523438],matrix:[0.9849218726158142,0.17299985885620117,0,0,-0.17299985885620117,0.9849218726158142,0,0,0,0,1,0,-1130.58984375,-2942.450927734375,8.558700561523438,1]},
mp_806765581_1811928400={position:[-575.5780639648438,-1079.4052734375,19.58588981628418],matrix:[0,0,0,0,0,0,0,0,0,0,0,0,-575.5780639648438,-1079.4052734375,19.58588981628418,1]};
on('mapDataLoaded',(md)=>{switch(md){ on('mapDataLoaded',(md)=>{switch(md){
case 109168018:{
const m=GetMapdataFromHashKey(md);
applyPatch(m,186640426,mp109168018_186640426)
applyPatch(m,197153114,mp109168018_197153114)
applyPatch(m,953816343,mp109168018_953816343)
applyPatch(m,1041306121,mp109168018_1041306121)
applyPatch(m,1064571359,mp109168018_1064571359)
applyPatch(m,1082381472,mp109168018_1082381472)
applyPatch(m,1332460422,mp109168018_1332460422)
applyPatch(m,1392454546,mp109168018_1392454546)
applyPatch(m,1641981270,mp109168018_1641981270)
applyPatch(m,2137378967,mp109168018_2137378967)
applyPatch(m,-286280298,mp109168018__286280298)
applyPatch(m,-339587543,mp109168018__339587543)
applyPatch(m,-1261513874,mp109168018__1261513874)
applyPatch(m,-1020948082,mp109168018__1020948082)
applyPatch(m,-960251537,mp109168018__960251537)
applyPatch(m,-906177716,mp109168018__906177716)
applyPatch(m,-1937114546,mp109168018__1937114546)
applyPatch(m,-188100129,mp109168018__188100129)
applyPatch(m,-1897150592,mp109168018__1897150592)
applyPatch(m,-1264914435,mp109168018__1264914435)
applyPatch(m,-319068293,mp109168018__319068293)
applyPatch(m,-1575836328,mp109168018__1575836328)
applyPatch(m,-1444491956,mp109168018__1444491956)
applyPatch(m,-2096232912,mp109168018__2096232912)
applyPatch(m,-101733233,mp109168018__101733233)
applyPatch(m,-932921467,mp109168018__932921467)
applyPatch(m,-417794469,mp109168018__417794469)
applyPatch(m,-1867033950,mp109168018__1867033950)
break}
case 236008257:{ case 236008257:{
const m=GetMapdataFromHashKey(md); const m=GetMapdataFromHashKey(md);
applyPatch(m,703531412,mp236008257_703531412) applyPatch(m,703531412,mp236008257_703531412)
@ -286,7 +345,8 @@ applyPatch(m,1772692473,mp734012453_1772692473)
applyPatch(m,2018138497,mp734012453_2018138497) applyPatch(m,2018138497,mp734012453_2018138497)
applyPatch(m,2120723262,mp734012453_2120723262) applyPatch(m,2120723262,mp734012453_2120723262)
applyPatch(m,2144199542,mp734012453_2144199542) applyPatch(m,2144199542,mp734012453_2144199542)
// applyPatch(m,-949446770,mp734012453__949446770) applyPatch(m,-662023107,mp734012453__662023107)
applyPatch(m,-949446770,mp734012453__949446770)
applyPatch(m,-748114659,mp734012453__748114659) applyPatch(m,-748114659,mp734012453__748114659)
applyPatch(m,-1815248636,mp734012453__1815248636) applyPatch(m,-1815248636,mp734012453__1815248636)
applyPatch(m,-2104140191,mp734012453__2104140191) applyPatch(m,-2104140191,mp734012453__2104140191)
@ -395,6 +455,10 @@ applyPatch(m,1855434985,mp_1244069447_1855434985)
applyPatch(m,-1819475074,mp_1244069447__1819475074) applyPatch(m,-1819475074,mp_1244069447__1819475074)
applyPatch(m,-1662987169,mp_1244069447__1662987169) applyPatch(m,-1662987169,mp_1244069447__1662987169)
break} break}
case -806765581:{
const m=GetMapdataFromHashKey(md);
applyPatch(m,1811928400,mp_806765581_1811928400)
break}
}}) }})
/** /**
* GCC compiled flatbush package * GCC compiled flatbush package
@ -435,7 +499,7 @@ break}
g<<1)&1431655765)<<1|(a|a<<1)&1431655765)>>>0}; g<<1)&1431655765)<<1|(a|a<<1)&1431655765)>>>0};
// Map additions // Map additions
const mai=Flatbush.from(new Uint8Array([251,55,16,0,21,0,0,0,13,111,131,67,160,33,128,196,13,111,161,67,64,67,113,196,66,174,132,67,160,33,128,196,66,174,162,67,64,67,113,196,209,229,136,67,124,84,129,196,209,229,166,67,247,168,115,196,35,22,138,67,124,84,129,196,35,22,168,67,247,168,115,196,177,0,154,67,14,75,128,196,177,0,184,67,28,150,113,196,177,0,154,67,109,119,128,196,177,0,184,67,218,238,113,196,177,0,154,67,194,164,128,196,177,0,184,67,133,73,114,196,126,234,133,67,14,162,40,196,126,234,188,67,14,34,13,196,169,168,132,67,212,21,39,196,169,168,187,67,212,149,11,196,129,109,128,67,243,80,38,196,129,109,183,67,243,208,10,196,37,21,129,67,229,181,40,196,37,21,184,67,229,53,13,196,196,38,16,196,252,91,180,196,158,44,154,68,14,144,183,67,196,38,16,196,252,91,180,196,158,44,154,68,14,144,183,67,76,92,14,196,252,91,180,196,218,17,155,68,14,144,183,67,18,130,10,196,187,94,180,196,247,254,156,68,20,133,183,67,234,146,12,196,252,91,180,196,139,246,155,68,14,144,183,67,159,119,8,196,4,99,180,196,48,4,158,68,242,115,183,67,219,56,178,67,133,157,128,196,219,56,208,67,10,59,114,196,208,125,158,67,91,243,120,196,208,125,188,67,91,243,105,196,18,92,159,67,174,247,120,196,18,92,189,67,174,247,105,196,153,17,203,67,98,226,128,196,204,8,1,68,195,68,102,196,196,38,16,196,187,94,180,196,247,254,156,68,14,144,183,67,159,119,8,196,4,99,180,196,48,4,158,68,242,115,183,67,196,38,16,196,4,99,180,196,48,4,158,68,14,144,183,67,20,0,19,0,18,0,17,0,16,0,15,0,14,0,7,0,8,0,10,0,9,0,1,0,2,0,3,0,6,0,4,0,5,0,13,0,12,0,11,0,0,0,0,0,64,0,84,0]).buffer) const mai=Flatbush.from(new Uint8Array([251,55,16,0,24,0,0,0,20,160,36,196,4,8,139,196,20,32,19,196,4,72,130,196,196,38,16,196,252,91,180,196,158,44,154,68,14,144,183,67,196,38,16,196,252,91,180,196,158,44,154,68,14,144,183,67,76,92,14,196,252,91,180,196,218,17,155,68,14,144,183,67,234,146,12,196,252,91,180,196,139,246,155,68,14,144,183,67,159,119,8,196,4,99,180,196,48,4,158,68,242,115,183,67,18,130,10,196,187,94,180,196,247,254,156,68,20,133,183,67,126,234,133,67,14,162,40,196,126,234,188,67,14,34,13,196,169,168,132,67,212,21,39,196,169,168,187,67,212,149,11,196,37,21,129,67,229,181,40,196,37,21,184,67,229,53,13,196,129,109,128,67,243,80,38,196,129,109,183,67,243,208,10,196,146,219,43,196,6,221,141,196,146,91,11,196,12,58,123,196,176,175,24,196,229,85,142,196,96,95,250,195,229,149,128,196,18,92,159,67,174,247,120,196,18,92,189,67,174,247,105,196,208,125,158,67,91,243,120,196,208,125,188,67,91,243,105,196,153,17,203,67,98,226,128,196,204,8,1,68,195,68,102,196,219,56,178,67,133,157,128,196,219,56,208,67,10,59,114,196,35,22,138,67,124,84,129,196,35,22,168,67,247,168,115,196,177,0,154,67,14,75,128,196,177,0,184,67,28,150,113,196,177,0,154,67,109,119,128,196,177,0,184,67,218,238,113,196,177,0,154,67,194,164,128,196,177,0,184,67,133,73,114,196,13,111,131,67,160,33,128,196,13,111,161,67,64,67,113,196,66,174,132,67,160,33,128,196,66,174,162,67,64,67,113,196,209,229,136,67,124,84,129,196,209,229,166,67,247,168,115,196,146,219,43,196,4,99,180,196,48,4,158,68,14,144,183,67,13,111,131,67,124,84,129,196,219,56,208,67,64,67,113,196,146,219,43,196,4,99,180,196,48,4,158,68,14,144,183,67,23,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,22,0,21,0,11,0,12,0,0,0,13,0,17,0,16,0,15,0,14,0,20,0,19,0,18,0,0,0,64,0,96,0]).buffer)
const mad=[ const mad=[
[1161501201,[1.1155345439910889,-0.015307113528251648,0,0,0.013801871798932552,1.0001251697540283,0,0,0,0,1.2510757446289062,0,461.1374816894531,-976.0744018554688,45.34185028076172,1],[0,0,-0.7906398446632473],"",""], [1161501201,[1.1155345439910889,-0.015307113528251648,0,0,0.013801871798932552,1.0001251697540283,0,0,0,0,1.2510757446289062,0,461.1374816894531,-976.0744018554688,45.34185028076172,1],[0,0,-0.7906398446632473],"",""],
[237666878,[1.5072165727615356,0,0,0,0,0.5461482405662537,0,0,0,0,0.55289226770401,0,328.3942565917969,-537.8745727539062,32.602569580078125,1],[0,0,0],"",""], [237666878,[1.5072165727615356,0,0,0,0,0.5461482405662537,0,0,0,0,0.55289226770401,0,328.3942565917969,-537.8745727539062,32.602569580078125,1],[0,0,0],"",""],
@ -457,7 +521,10 @@ const mad=[
[3391605035,[1.0001496076583862,0,0,0,0,1.0001496076583862,0,0,0,0,1.0001496076583862,0,306.1729431152344,-1004.6400756835938,28.327970504760742,1],[0,0,0],"",""], [3391605035,[1.0001496076583862,0,0,0,0,1.0001496076583862,0,0,0,0,1.0001496076583862,0,306.1729431152344,-1004.6400756835938,28.327970504760742,1],[0,0,0],"",""],
[3391605035,[1.0001704692840576,0,0,0,0,1.0001704692840576,0,0,0,0,1.0001704692840576,0,303.7954406738281,-1004.6400756835938,28.327970504760742,1],[0,0,0],"",""], [3391605035,[1.0001704692840576,0,0,0,0,1.0001704692840576,0,0,0,0,1.0001704692840576,0,303.7954406738281,-1004.6400756835938,28.327970504760742,1],[0,0,0],"",""],
[3391605035,[1.000132441520691,0,0,0,0,1.000132441520691,0,0,0,0,1.000132441520691,0,295.36138916015625,-995.05078125,28.28951072692871,1],[0,0,0],"",""], [3391605035,[1.000132441520691,0,0,0,0,1.000132441520691,0,0,0,0,1.000132441520691,0,295.36138916015625,-995.05078125,28.28951072692871,1],[0,0,0],"",""],
[3391605035,[1.0001882314682007,0,0,0,0,1.0001882314682007,0,0,0,0,1.0001882314682007,0,292.8675842285156,-995.05078125,28.28951072692871,1],[0,0,0],"",""] [3391605035,[1.0001882314682007,0,0,0,0,1.0001882314682007,0,0,0,0,1.0001882314682007,0,292.8675842285156,-995.05078125,28.28951072692871,1],[0,0,0],"",""],
[4161376827,[2.111374855041504,0.1013675332069397,0,0,-0.0791717991232872,1.6503369808197021,0.0029179255943745375,0,0.00016804266488179564,-0.0027414276264607906,1.5927640199661255,0,-555.7451171875,-1083.6842041015625,21.66668128967285,1],[0.1671850587351082,0,2.7465510917447356],"",""],
[3620375846,[-0.9045930504798889,0.426042765378952,0,0,-0.4256702661514282,-0.904579222202301,0,0,0,0,1.0003007650375366,0,-622.4307861328125,-1069.906982421875,21.355087280273438,1],[0,0,154.79960616537525],"",""],
[3947803982,[0.9017730355262756,-0.24603529274463654,0,0,0.2635563015937805,0.9649773240089417,0,0,0,0,1.0470552444458008,0,-623.501220703125,-1077.25048828125,21.35099983215332,1],[0,0,-15.27615407266089],"",""]
] ]
const additionCreatedEventName='mapfixes:additionCreated', additionDeletedEventName='mapfixes:additionDeleted' const additionCreatedEventName='mapfixes:additionCreated', additionDeletedEventName='mapfixes:additionDeleted'
const LOAD_MODEL = -2; const LOAD_MODEL = -2;

Some files were not shown because too many files have changed in this diff Show More