2026-04-14 17:41:39 +02:00

164 lines
6.2 KiB
Lua

-- Blip
Citizen.CreateThread(function()
for i, location in pairs(Config.Locations) do
if location.blip.active then
local storeBlip = AddBlipForCoord(location.coords.x, location.coords.y, location.coords.z)
SetBlipSprite(storeBlip, location.blip.sprite)
SetBlipScale(storeBlip, location.blip.scale)
SetBlipColour(storeBlip, location.blip.color)
SetBlipDisplay(storeBlip, 4)
SetBlipAsShortRange(storeBlip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName(location.blip.label)
EndTextCommandSetBlipName(storeBlip)
end
end
end)
-- INTERACTION
Citizen.CreateThread(function()
while true do
if not Config.TextUIHandler.type then
break
end
local cooldown = 1500
local coords = GetEntityCoords(PlayerPedId())
local near = false
for _, location in pairs(Config.Locations) do
local dist = #(coords - location.coords)
if dist < Config.TextUIHandler.distance and not menuOpen then
near = true
cooldown = 0
if Config.TextUIHandler.type == 'drawtext' then
DrawMarker(2, location.coords.x, location.coords.y, location.coords.z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.2, 0.15, 200, 0, 0, 222, false, false, false, false, false, false, false)
DrawText3Ds(location.coords.x, location.coords.y, location.coords.z + 0.15, Config.TextUIHandler.text)
else
ShowHelpNotification(Config.TextUIHandler.text)
DrawMarker(1, location.coords.x, location.coords.y, location.coords.z - 0.90, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 1.5, 1.5, 0.5, 0, 128, 255, 100, false, true, 2, false, false, false, false)
end
if IsControlJustPressed(0, Config.MenuOpenKey) then
OpenWeaponShop(_)
exports['hex_4_hud']:HideHud(true)
DisplayRadar(false)
HideHelpNotification()
end
end
end
if not near then
exports['hex_4_hud']:HideHud(false)
HideHelpNotification()
DisplayRadar(true)
end
Wait(cooldown)
end
end)
local textUICache = false
function ShowHelpNotification(text)
if Config.TextUIHandler.type == 'default' then
AddTextEntry('helpNotification', text)
DisplayHelpTextThisFrame('helpNotification', false)
end
if not textUICache then
if Config.TextUIHandler.type == 'esx_textui' then
TriggerEvent('ESX:TextUI', text)
end
if Config.TextUIHandler.type == 'qb_default_textui' then
TriggerEvent('qb-core:client:DrawText', text, 'left')
end
if Config.TextUIHandler.type == 'custom' then
-- Your code here
end
textUICache = true
end
end
function HideHelpNotification()
if textUICache then
if Config.TextUIHandler.type == 'esx_textui' then
TriggerEvent('ESX:HideUI')
end
if Config.TextUIHandler.type == 'qb_default_textui' then
TriggerEvent('qb-core:client:HideText')
end
if Config.TextUIHandler.type == 'custom' then
-- Your code here
end
textUICache = false
end
end
-- Draw Text 3D
function DrawText3Ds(x,y,z, text)
local onScreen,_x,_y=World3dToScreen2d(x,y,z)
local px,py,pz=table.unpack(GetGameplayCamCoords())
SetTextScale(0.35, 0.35)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x,_y)
local factor = (string.len(text)) / 370
DrawRect(_x,_y+0.0125, 0.015+ factor, 0.03, 41, 11, 41, 68)
ClearDrawOrigin()
end
-- Weapon settings
RegisterNetEvent("codem-weaponshop:BuyWeapon-c")
AddEventHandler("codem-weaponshop:BuyWeapon-c",function(WeaponData)
if not Config.GiveWeaponAfterBuy then
return
end
if type(WeaponData) == "table" then
local ped = PlayerPedId()
GiveWeaponToPed(ped, GetHashKey(WeaponData.weapon), Config.WeaponDefaultAmmo, false, false)
SetPedAmmo(ped, GetHashKey(WeaponData.weapon), Config.WeaponDefaultAmmo)
SetCurrentPedWeapon(ped, GetHashKey(WeaponData.weapon), true)
local weapon = GetSelectedPedWeapon(ped)
if WeaponData.skin then
GiveWeaponComponentToPed(ped, GetHashKey(WeaponData.weapon), GetHashKey(WeaponData.skin))
return
end
if WeaponData.tint then
SetPedWeaponTintIndex(ped, GetHashKey(WeaponData.weapon), WeaponData.tint.id)
end
else
local ped = PlayerPedId()
GiveWeaponToPed(ped, GetHashKey(WeaponData), Config.WeaponDefaultAmmo, false, false)
SetPedAmmo(ped, GetHashKey(WeaponData), Config.WeaponDefaultAmmo)
SetCurrentPedWeapon(ped, GetHashKey(WeaponData), true)
end
end)
RegisterNetEvent("codem-weaponshop-client:UseWeaponAttachments")
AddEventHandler("codem-weaponshop-client:UseWeaponAttachments",function(attachment)
local PlayerPed = PlayerPedId()
local found, currentWeapon = GetCurrentPedWeapon(PlayerPed, true)
local component = FormatWeapontoAttachment(currentWeapon, attachment)
if found then
if currentWeapon then
if DoesWeaponTakeWeaponComponent(currentWeapon, component) then
if not HasPedGotWeaponComponent(PlayerPed, currentWeapon, component) then
GiveWeaponComponentToPed(PlayerPed, currentWeapon, component)
TriggerServerEvent("codem-weaponshop-client:RemoveItem", attachment)
FormatMessage("equip")
else
FormatMessage("alreadyhavecomponent")
end
else
FormatMessage("attachmentincompatible")
end
end
else
FormatMessage("weaponcantfound")
end
end)