diff --git a/client/charge.lua b/client/charge.lua
index e13428b..f8b8439 100644
--- a/client/charge.lua
+++ b/client/charge.lua
@@ -71,6 +71,125 @@ RegisterNetEvent(getScript()..":client:Charge", function(data, outside)
default = 1,
options = nearbyList
}
+ elseif Config.General.lookAtCharge then
+ local selectedPed = nil
+ local highlightedPed = nil
+ local running = true
+
+ CreateThread(function()
+ while running do
+ Wait(0)
+
+ -- Raycast to get entity being looked at
+ local camCoord = GetGameplayCamCoord()
+ local direction = RotationToDirection(GetGameplayCamRot(2))
+ local targetCoord = camCoord + direction * 6.0
+
+ local hit, _ , hitCoords, _, entityHit = PerformRaycast(camCoord, targetCoord, PlayerPedId(), 4)
+ if hit then
+ DrawSphere(hitCoords.x, hitCoords.y, hitCoords.z, 0.05, 255, 255, 255, 0.5)
+ end
+ if entityHit and IsEntityAPed(entityHit) and entityHit ~= PlayerPedId() then
+ if highlightedPed ~= entityHit then
+ if highlightedPed and DoesEntityExist(highlightedPed) then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ end
+ highlightedPed = entityHit
+ SetEntityAlpha(highlightedPed, 200, false)
+ end
+ elseif highlightedPed then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ highlightedPed = nil
+ end
+
+ local loc = vec2(0.89+0.037, 0.9)
+ DrawSprite("timerbars", "all_black_bg", loc.x, loc.y, 0.12, 0.05, 0.0, 255, 255, 255, 255)
+ SetTextScale(0.80, 0.80)
+ SetTextWrap(0.75, 0.985)
+ SetTextJustification(2)
+ SetTextFont(4)
+ SetTextColour(255, 255, 255, 255)
+ BeginTextCommandDisplayText("STRING")
+ AddTextComponentSubstringKeyboardDisplay(highlightedPed and "~s~Selected ID: ~g~"..GetPlayerServerId(NetworkGetPlayerIndexFromPed(highlightedPed)) or "~s~No Selection")
+ EndTextCommandDisplayText(loc.x+0.06, loc.y - 0.026)
+
+ -- Show instructional UI
+ local buttons = {
+ { keys = { 194 }, text = "Cancel" }
+ }
+ if highlightedPed then
+ table.insert(buttons, { keys = { 86, 191 }, text = "Confirm" })
+ end
+ makeInstructionalButtons(buttons)
+
+ -- Handle controls
+ if IsControlJustPressed(0, 194) then -- Backspace
+ if highlightedPed then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ end
+ running = false
+ return
+ end
+
+ if highlightedPed and (IsControlJustPressed(0, 191) or IsControlJustPressed(0, 86)) then
+ local serverId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(highlightedPed))
+ if serverId then
+ running = false
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+
+
+ --Grab Player Job name or Gang Name if needed
+ local getInfo = getPlayer()
+ --Check if image was given when opening the regsiter
+ local img = data.img ~= nil and (Config.System.Menu == "qb" and "
") or Jobs[getInfo.job].label
+
+ local newinputs = {
+ {
+ type = 'select',
+ name = 'billtype',
+ text = locale("menu", "type"),
+ default = billPrev,
+ options = {
+ { value = "cash", text = locale("menu", "cash"), label = locale("menu", "cash") },
+ { value = "bank", text = locale("menu", "card"), label = locale("menu", "card") }
+ }
+ },
+ {
+ type = 'number',
+ isRequired = true,
+ name = 'price',
+ text = locale("menu", "amount_charge")
+ }
+ }
+
+ local dialog = createInput(img, newinputs)
+
+ if dialog then
+ -- If ox_menu style input, fix indexes
+ if dialog[1] then
+ dialog.billtype = dialog[1]
+ dialog.price = dialog[2]
+ end
+
+ billPrev = dialog.billtype
+
+ TriggerServerEvent(getScript()..":server:Charge", serverId, dialog.price, dialog.billtype, data.img, outside, gang)
+
+ if Config.General.Usebzzz then
+ destroyProp(prop)
+ stopAnim('cellphone@', 'cellphone_text_read_base')
+ end
+ end
+ end
+ end
+ end
+ end)
+ return -- Skip continuing function until selection is made
+
else -- If Config.List is false, create input text box for ID's
newinputs[#newinputs+1] = {
type = 'text',
diff --git a/client/polcharge.lua b/client/polcharge.lua
index 2181d69..4e7b4f8 100644
--- a/client/polcharge.lua
+++ b/client/polcharge.lua
@@ -47,6 +47,116 @@ RegisterNetEvent(getScript()..":client:PolCharge", function()
default = 1,
options = nearbyList
}
+
+ elseif Config.General.lookAtCharge then
+ local selectedPed = nil
+ local highlightedPed = nil
+ local running = true
+
+ CreateThread(function()
+ while running do
+ Wait(0)
+
+ -- Raycast to get entity being looked at
+ local camCoord = GetGameplayCamCoord()
+ local direction = RotationToDirection(GetGameplayCamRot(2))
+ local targetCoord = camCoord + direction * 6.0
+
+ local hit, _ , hitCoords, _, entityHit = PerformRaycast(camCoord, targetCoord, PlayerPedId(), 4)
+ if hit then
+ DrawSphere(hitCoords.x, hitCoords.y, hitCoords.z, 0.05, 0, 0, 255, 0.5)
+ end
+ if entityHit and IsEntityAPed(entityHit) and entityHit ~= PlayerPedId() then
+ if highlightedPed ~= entityHit then
+ if highlightedPed and DoesEntityExist(highlightedPed) then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ end
+ highlightedPed = entityHit
+ SetEntityAlpha(highlightedPed, 200, false)
+ end
+ elseif highlightedPed then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ highlightedPed = nil
+ end
+
+ local loc = vec2(0.89+0.037, 0.9)
+ DrawSprite("timerbars", "all_black_bg", loc.x, loc.y, 0.12, 0.05, 0.0, 255, 255, 255, 255)
+ SetTextScale(0.80, 0.80)
+ SetTextWrap(0.75, 0.985)
+ SetTextJustification(2)
+ SetTextFont(4)
+ SetTextColour(255, 255, 255, 255)
+ BeginTextCommandDisplayText("STRING")
+ AddTextComponentSubstringKeyboardDisplay(highlightedPed and "~s~Selected ID: ~b~"..GetPlayerServerId(NetworkGetPlayerIndexFromPed(highlightedPed)) or "~s~No Selection")
+ EndTextCommandDisplayText(loc.x+0.06, loc.y - 0.026)
+
+ -- Show instructional UI
+ local buttons = {
+ { keys = { 194 }, text = "Cancel" }
+ }
+ if highlightedPed then
+ table.insert(buttons, { keys = { 86, 191 }, text = "Confirm" })
+ end
+ makeInstructionalButtons(buttons)
+
+ -- Handle controls
+ if IsControlJustPressed(0, 194) then -- Backspace
+ if highlightedPed then
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+ end
+ running = false
+ return
+ end
+
+ if highlightedPed and (IsControlJustPressed(0, 191) or IsControlJustPressed(0, 86)) then
+ local serverId = GetPlayerServerId(NetworkGetPlayerIndexFromPed(highlightedPed))
+ if serverId then
+ running = false
+ SetEntityAlpha(highlightedPed, 255, false)
+ ResetEntityAlpha(highlightedPed)
+
+ local newinputs = {
+ {
+ type = 'select',
+ name = 'billtype',
+ text = locale("menu", "type"),
+ default = billPrev,
+ options = {
+ { value = "cash", text = locale("menu", "cash"), label = locale("menu", "cash") },
+ { value = "bank", text = locale("menu", "card"), label = locale("menu", "card") }
+ }
+ },
+ {
+ type = 'number',
+ isRequired = true,
+ name = 'price',
+ text = locale("menu", "amount_charge")
+ }
+ }
+
+ local dialog = createInput(Jobs[getPlayer().job].label, newinputs)
+
+ if dialog then
+ -- If ox_menu style input, fix indexes
+ if dialog[1] then
+ dialog.billtype = dialog[1]
+ dialog.price = dialog[2]
+ end
+
+ billPrev = dialog.billtype
+
+ TriggerServerEvent(getScript()..":server:PolCharge", serverId, dialog.price)
+
+ end
+ end
+ end
+ end
+ end)
+ return -- Skip continuing function until selection is made
+
else
newinputs[#newinputs+1] = {
type = 'text',
diff --git a/config.lua b/config.lua
index aebec7b..2bf4515 100644
--- a/config.lua
+++ b/config.lua
@@ -25,7 +25,9 @@ Config = {
General = {
ApGov = false, -- Toggle support for AP-Goverment Tax
+ lookAtCharge = false, -- "true" to use the "look at charge" feature
List = true, -- "true" to use nearby player list feature in the cash registers, "false" for manual id entry
+
PaymentRadius = 15, -- This is how far the playerlist will check for nearby players (based on the person charging)
Usebzzz = true, -- enable if you're using the prop from bzzz
@@ -149,7 +151,8 @@ Config = {
['ambulance'] = { Commission = 0.25, },
},
FineJobConfirmation = false, --"true" makes it so fines need confirmation, "false" skips this ands just removes the money
- FineJobList = true, -- "true" to use nearby player list feature in the cash registers, "false" for manual id entry
+ FineJobList = false, -- "true" to use nearby player list feature in the cash registers, "false" for manual id entry
+ lookAtCharge = true, -- "true" to use the "look at charge" feature
},
}