-
Notifications
You must be signed in to change notification settings - Fork 61
refactor(esx_drugs): code structure #85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from 1 commit
c23e1c5
e2838d3
22fb44b
975d65c
ce2fd59
cb29623
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,62 +1,46 @@ | ||
| local menuOpen = false | ||
| local inZoneDrugShop = false | ||
| local inRangeMarkerDrugShop = false | ||
| local dealerTextShow = false | ||
| local cfgMarker = Config.Marker; | ||
|
|
||
| --slow loop | ||
| CreateThread(function() | ||
| while true do | ||
| local Sleep = 1500 | ||
| 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 | ||
| inRangeMarkerDrugShop = (distDrugShop <= Config.Marker.Distance) | ||
| inZoneDrugShop = (distDrugShop < 1) | ||
| if not inZoneDrugShop and menuOpen then | ||
| menuOpen = false | ||
| end | ||
|
|
||
| Wait(500) | ||
| end | ||
| end) | ||
|
|
||
| --drawk marker | ||
| CreateThread(function() | ||
| while true do | ||
| local Sleep = 1500 | ||
| if(inRangeMarkerDrugShop) then | ||
| 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() | ||
| 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) | ||
| if inZoneDrugShop and not menuOpen then | ||
| if not dealerTextShow then | ||
| ESX.TextUI(TranslateCap('dealer_prompt')) | ||
| dealerTextShow = true | ||
| end | ||
| if IsControlJustPressed(0, 38) then | ||
| OpenDrugShop() | ||
| end | ||
| else | ||
| if dealerTextShow then | ||
| ESX.HideUI() | ||
| dealerTextShow = false | ||
| end | ||
| end | ||
| else | ||
| if dealerTextShow then | ||
| ESX.HideUI() | ||
| dealerTextShow = false | ||
| end | ||
| end | ||
| Wait(Sleep) | ||
| Wait(Sleep) | ||
| end | ||
| end) | ||
|
|
||
|
|
@@ -65,10 +49,8 @@ function OpenDrugShop() | |
| {unselectable = true, icon = "fas fa-cannabis", title = TranslateCap('dealer_title')} | ||
| } | ||
| menuOpen = true | ||
|
|
||
| for k, v in pairs(ESX.GetPlayerData().inventory) do | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Don't use pairs. Use numeric loop instead as you don't even use key. |
||
| local price = Config.DrugDealerItems[v.name] | ||
|
|
||
| if price and v.count > 0 then | ||
| elements[#elements+1] = { | ||
| icon = "fas fa-shopping-basket", | ||
|
|
@@ -78,22 +60,18 @@ function OpenDrugShop() | |
| } | ||
| 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", elements2, function(menu2,element2) | ||
| ESX.CloseContext() | ||
| local count = tonumber(menu2.eles[2].inputValue) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what if count fails? |
||
|
|
||
| if count < 1 then | ||
| return | ||
| end | ||
|
|
||
| TriggerServerEvent('esx_drugs:sellDrug',tostring(element.name), count) | ||
| end, function(menu) | ||
| menuOpen = false | ||
|
|
@@ -114,12 +92,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 | ||
|
|
@@ -136,20 +112,15 @@ 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) | ||
|
|
@@ -159,4 +130,4 @@ CreateThread(function() | |
| for k,zone in pairs(Config.CircleZones) do | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The same here. You don't need key. |
||
| CreateBlipCircle(zone.coords, zone.name, zone.radius, zone.color, zone.sprite) | ||
| end | ||
| end) | ||
| end) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really like the code structure. Can you use do end code blocks so it much clearer.
Last code snippet: https://www.lua.org/pil/4.2.html