Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 54 additions & 88 deletions [esx_addons]/esx_drugs/client/main.lua
Original file line number Diff line number Diff line change
@@ -1,101 +1,74 @@
local menuOpen = false
local inZoneDrugShop = false
local inRangeMarkerDrugShop = false
local cfgMarker = Config.Marker;

--slow loop
CreateThread(function()
while true do
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
local distDrugShop = #(coords - Config.CircleZones.DrugDealer.coords)

inRangeMarkerDrugShop = false
if(distDrugShop <= Config.Marker.Distance) then
inRangeMarkerDrugShop = true
end

if distDrugShop < 1 then
inZoneDrugShop = true
else
inZoneDrugShop = false
if menuOpen then
menuOpen=false
end
end

Wait(500)
end
end)

--drawk marker
CreateThread(function()
while true do
local Sleep = 1500
if(inRangeMarkerDrugShop) then
Sleep = 0
local coordsMarker = Config.CircleZones.DrugDealer.coords
local color = cfgMarker.Color
DrawMarker(cfgMarker.Type, coordsMarker.x, coordsMarker.y,coordsMarker.z - 1.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
cfgMarker.Size, color.r,color.g,color.b,color.a,
false, true, 2, false, nil, nil, false)
end
Wait(Sleep)
end
end)

--main loop
CreateThread(function ()
while true do
local Sleep = 1500
if inZoneDrugShop and not menuOpen then
Sleep = 0
ESX.ShowHelpNotification(TranslateCap('dealer_prompt'),true)
if IsControlJustPressed(0, 38) then
OpenDrugShop()
end
end
Wait(Sleep)
end
end)
do
local menuOpen = false
local cfgMarker = Config.Marker
local dealerCoords = Config.CircleZones.DrugDealer.coords
local drugDealerPoint = ESX.Point:new({
coords = dealerCoords,
distance = 2,
enter = function()
ESX.TextUI(TranslateCap('dealer_prompt'))
end,
leave = function()
ESX.HideUI()
if menuOpen then
menuOpen = false
end
end,
inside = function(self)
DrawMarker(cfgMarker.Type, dealerCoords.x, dealerCoords.y, dealerCoords.z - 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, cfgMarker.Size, cfgMarker.Color.r, cfgMarker.Color.g, cfgMarker.Color.b, cfgMarker.Color.a, false, true, 2, false, nil, nil, false)
if IsControlJustPressed(0, 38) then
OpenDrugShop()
menuOpen = true
end
end
})
end

function OpenDrugShop()
local elements = {
{unselectable = true, icon = "fas fa-cannabis", title = TranslateCap('dealer_title')}
{ unselectable = true, icon = "fas fa-cannabis", title = TranslateCap('dealer_title') }
}
menuOpen = true

for k, v in pairs(ESX.GetPlayerData().inventory) do
local inventory = ESX.GetPlayerData().inventory
for i = 1, #inventory do
local v = inventory[i]
local price = Config.DrugDealerItems[v.name]

if price and v.count > 0 then
elements[#elements+1] = {
icon = "fas fa-shopping-basket",
title = ('%s - <span style="color:green;">%s</span>'):format(v.label, TranslateCap('dealer_item', ESX.Math.GroupDigits(price))),
title = ('%s - <span style="color:green;">%s</span>'):format(
v.label,
TranslateCap('dealer_item', ESX.Math.GroupDigits(price))
),
name = v.name,
price = price,
}
end
end

ESX.OpenContext("right", elements, function(menu,element)
local elements2 = {
{unselectable = true, icon = "fas fa-shopping-basket", title = element.title},
{icon = "fas fa-shopping-basket", title = "Amount", input = true, inputType = "number", inputPlaceholder = "Amount you want to sell", inputValue=0, inputMin = Config.SellMenu.Min, inputMax = Config.SellMenu.Max},
{icon = "fas fa-check-double", title = "Confirm", val = "confirm"}
ESX.OpenContext("right", elements, function(menu, element)
local sellElements = {
{ unselectable = true, icon = "fas fa-shopping-basket", title = element.title },
{
icon = "fas fa-shopping-basket",
title = "Amount",
input = true,
inputType = "number",
inputPlaceholder = "Amount you want to sell",
inputValue = 0,
inputMin = Config.SellMenu.Min,
inputMax = Config.SellMenu.Max
},
{ icon = "fas fa-check-double", title = "Confirm", val = "confirm" }
}

ESX.OpenContext("right", elements2, function(menu2,element2)
ESX.OpenContext("right", sellElements, function(sellMenu, sellElement)
ESX.CloseContext()
local count = tonumber(menu2.eles[2].inputValue)

if count < 1 then
return
end

TriggerServerEvent('esx_drugs:sellDrug',tostring(element.name), count)
end, function(menu)
local count = tonumber(sellMenu.eles[2] and sellMenu.eles[2].inputValue)
if not count or count < 1 then return end
TriggerServerEvent('esx_drugs:sellDrug', tostring(element.name), count)
end, function(sellMenu)
menuOpen = false
end)
end, function(menu)
Expand All @@ -114,12 +87,10 @@ end)
function OpenBuyLicenseMenu(licenseName)
menuOpen = true
local license = Config.LicensePrices[licenseName]

local elements = {
{unselectable = true, title = TranslateCap('purchase_license')},
{title = ('%s - <span style="color:green;">%s</span>'):format(license.label, TranslateCap('dealer_item', ESX.Math.GroupDigits(license.price))), value = licenseName, price = license.price, licenseName = license.label}
}

ESX.OpenContext("right", elements, function(menu,element)
ESX.TriggerServerCallback('esx_drugs:buyLicense', function(boughtLicense)
if boughtLicense then
Expand All @@ -136,27 +107,22 @@ end

function CreateBlipCircle(coords, text, radius, color, sprite)
local blip = AddBlipForRadius(coords, radius)

SetBlipHighDetail(blip, true)
SetBlipColour(blip, 1)
SetBlipAlpha (blip, 128)

-- create a blip in the middle
blip = AddBlipForCoord(coords)

SetBlipHighDetail(blip, true)
SetBlipSprite (blip, sprite)
SetBlipScale (blip, 1.0)
SetBlipColour (blip, color)
SetBlipAsShortRange(blip, true)

BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName(text)
EndTextCommandSetBlipName(blip)
end

CreateThread(function()
for k,zone in pairs(Config.CircleZones) do
for _, zone in pairs(Config.CircleZones) do
CreateBlipCircle(zone.coords, zone.name, zone.radius, zone.color, zone.sprite)
end
end)
end)
Loading