Scripts/resources/[hp]/hp_gv/client/client.lua

178 lines
5.2 KiB
Lua
Raw Normal View History

2024-12-29 19:48:41 +00:00
QBCore = exports['qb-core']:GetCoreObject()
local car = nil
local ped = nil
local object = nil
local activeItems = {}
local activeVan = nil
local currentVan = nil
local function ds()
if car ~= nil then
DeleteEntity(car)
exports['qb-target']:RemoveZone(currentVan)
car = nil
currentVan = nil
end
if ped ~= nil then
DeleteEntity(ped)
ped = nil
end
if object ~= nil then
DeleteEntity(object)
object = nil
end
if activeItems ~= nil then
activeItems = {}
end
if activeVan ~= nil then
activeVan = nil
end
end
local function spawnTargetMenu(x, y, z, h)
exports['qb-target']:AddBoxZone(currentVan, GetEntityCoords(ped), 1.5, 1.5 , {
name = currentVan,
heading = h,
minZ = z - 1.0,
maxZ = z + 1.0,
debugPoly = false
},
{
options = {
{
num = 1,
type = "client",
icon = "fas fa-gun",
label = Config.Lang.Buy ..
" " .. activeItems[1].label .. " | " .. activeItems[1].price .. Config.Lang.Currency,
action = function(entity)
if IsPedAPlayer(entity) then return false end
TriggerServerEvent('_hp_gv:server:_giveItem', 1)
end,
canInteract = function(entity, distance, data)
if IsPedAPlayer(entity) then return false end
return true
end,
},
{
num = 2,
type = "client",
icon = "fas fa-gun",
label = Config.Lang.Buy ..
" " .. activeItems[2].label .. " | " .. activeItems[2].price .. Config.Lang.Currency,
action = function(entity)
if IsPedAPlayer(entity) then return false end
TriggerServerEvent('_hp_gv:server:_giveItem', 2)
end,
canInteract = function(entity, distance, data)
if IsPedAPlayer(entity) then return false end
return true
end,
},
},
distance = 3.0
})
end
local function spawnProp(car)
local prop = "xm3_prop_xm3_crate_ammo_01a"
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)
end
local function addNPC(x, y, z)
local animDict = "amb@world_human_leaning@male@wall@back@hands_together@base"
local anim = "base"
local model = GetHashKey(Config.Gunvans.ped)
RequestModel(model)
while not HasModelLoaded(model) do
Wait(15)
end
ped = CreatePed(4, model, x, y, z, 0.0, true, true)
AttachEntityToEntity(ped, car, -1, 0 - 0.7, 0.0 - 3.0, 0.0 + 0.3, 0, 0, 220.0, false, false, false, false, 1, true)
if not HasAnimDictLoaded(animDict) then
RequestAnimDict(animDict)
while not HasAnimDictLoaded(animDict) do
Wait(100)
end
end
TaskPlayAnim(ped, animDict, anim, 2.0, 2.5, -1, 50, 0, false, false, false)
SetPedCanBeTargetted(ped, false)
SetEntityInvincible(ped, true)
SetEntityAsMissionEntity(ped, true, true)
SetModelAsNoLongerNeeded(model)
FreezeEntityPosition(ped, true)
spawnProp(car)
end
local function addCar(x, y, z, h)
local vehiclehash = GetHashKey('speedo4')
RequestModel(vehiclehash)
Citizen.CreateThread(function()
local waiting = 0
while not HasModelLoaded(vehiclehash) do
waiting = waiting + 100
Citizen.Wait(100)
end
car = CreateVehicle(vehiclehash, x, y, z, h, true, false)
SetVehicleOnGroundProperly(car)
SetEntityInvincible(car, true)
SetVehicleNumberPlateText(car, "GUN00VAN")
SetVehicleDoorsLocked(car, 2)
SetVehicleDoorOpen(car, 2, true, true)
SetVehicleDoorOpen(car, 3, true, true)
FreezeEntityPosition(car, true)
SetVehicleUndriveable(car, true)
SetVehicleMod(car, 5, 1, false)
SetVehicleMod(car, 48, 24, false)
addNPC(x, y, z)
spawnTargetMenu(x, y, z, h)
end)
end
RegisterNetEvent('_hp_gv:client:_spawnVan')
AddEventHandler('_hp_gv:client:_spawnVan', function(van)
activeVan = van
currentVan = "GunVan"..math.random(100000000, 999999999)
if Config.perVanItems then
activeItems = Config.Gunvans.vehicles[activeVan].items
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)
RegisterNetEvent('_hp_gv:client:_destroyVan')
AddEventHandler('_hp_gv:client:_destroyVan', function(van)
ds()
end)
AddEventHandler('onResourceStop', function(resourceName)
if (GetCurrentResourceName() ~= resourceName) then
return
end
ds()
end)