-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.lua
142 lines (131 loc) · 4.95 KB
/
client.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
local QBCore = nil
local closestDealerShip = nil
local closestDealerShipKey = nil
QBCore = exports['qb-core']:GetCoreObject()
RegisterNuiCallbackType("get_vehicles")
RegisterNUICallback("get_vehicles", function(data, cb)
Citizen.CreateThread(function()
local shop = data.shop
local vehicles = QBCore.Shared.Vehicles
local shopVehicles = {}
for k, v in pairs(vehicles) do
if v["shop"] == shop then
table.insert(shopVehicles, v)
end
end
cb({vehicles=shopVehicles})
end)
end)
RegisterNuiCallbackType("buy_vehicle")
RegisterNUICallback("buy_vehicle", function(data, cb)
TriggerServerEvent("dealership_system:server:buyVehicle", data.vehicle)
cb(true)
end)
RegisterNetEvent('dealership_system:client:buyVehicle', function(vehicle, plate)
local vehicleSpawnPoint = closestDealerShip.spawnpoint
QBCore.Functions.TriggerCallback('QBCore:Server:SpawnVehicle', function(netId)
local veh = NetToVeh(netId)
exports['ti_fuel']:setFuel(veh, 100)
SetVehicleNumberPlateText(veh, plate)
SetEntityHeading(veh, vehicleSpawnPoint.w)
TriggerEvent('vehiclekeys:client:SetOwner', QBCore.Functions.GetPlate(veh))
--TriggerServerEvent('qb-mechanicjob:server:SaveVehicleProps', QBCore.Functions.GetVehicleProperties(veh))
end, vehicle, vehicleSpawnPoint, true)
end)
for k, v in pairs(Config.dealerships) do
local dealership = Config.dealerships[k]
local dealershipBlip = AddBlipForCoord(dealership.coords)
SetBlipSprite(dealershipBlip, dealership.blip)
SetBlipDisplay(dealershipBlip, 4)
SetBlipScale(dealershipBlip, 1.0)
SetBlipColour(dealershipBlip, dealership.color)
SetBlipAsShortRange(dealershipBlip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(dealership.name)
EndTextCommandSetBlipName(dealershipBlip)
end
Citizen.CreateThread(function()
while true do
GetClosestDealerShip()
Wait(15000)
end
end)
Citizen.CreateThread(function()
while true do
local player = PlayerPedId()
local playerCoords = GetEntityCoords(player)
local dealership = closestDealerShip
if dealership == nil then
Wait(2000)
return
end
local distance = #(playerCoords - dealership.coords)
if distance < 5.0 then
DrawMarker(dealership.marker.type, dealership.coords.x, dealership.coords.y, dealership.coords.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, dealership.marker.scale.x, dealership.marker.scale.y, dealership.marker.scale.z, 255/dealership.marker.color.x, 255/dealership.marker.color.y, 255/dealership.marker.color.z, 100, false, true, 2, false, false, false, false)
if distance < 3 then
local screenCoords, sX, sY = GetScreenCoordFromWorldCoord(dealership.coords.x, dealership.coords.y, dealership.coords.z + 1) -- returns boolean (if found), [2], [3]
SetTextFont(0)
SetTextProportional(1)
SetTextScale(0.0, 0.5)
SetTextColour(255, 255, 255, 255)
SetTextDropshadow(0, 0, 0, 0, 255)
SetTextEdge(1, 0, 0, 0, 255)
SetTextDropShadow()
SetTextOutline()
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString("Press E to open the dealership")
if screenCoords then
DrawText(sX, sY)
else
DrawText(0.5, 0.5)
end
if IsControlJustPressed(0, 38) then
TriggerEvent("dealership_system:Client:OpenScreen", closestDealerShipKey, closestDealerShip)
end
end
Wait(0)
else
Wait(2000)
end
end
end)
function GetClosestDealerShip()
local player = PlayerPedId()
local playerCoords = GetEntityCoords(player)
local dealerships = Config.dealerships
local closestkey = nil
local closest = nil
local distance = nil
for k, v in pairs(dealerships) do
local dist = #(playerCoords - v.coords)
if not distance or dist < distance then
distance = dist
closest = v
closestkey = k
end
end
closestDealerShip = closest
closestDealerShipKey = closestkey
end
-- Screen stuff
local screenisopen = false
function ToggleScreen(dealerkey, dealer)
screenisopen = not screenisopen
SetNuiFocus(screenisopen, screenisopen)
SendNUIMessage({
type = 'toggle_screen',
value = screenisopen,
dealership = dealerkey or nil,
dealerdata = dealer or nil
})
end
RegisterNetEvent("dealership_system:Client:OpenScreen")
AddEventHandler("dealership_system:Client:OpenScreen", function(dealerkey, dealer)
ToggleScreen(dealerkey, dealer)
end)
RegisterNuiCallbackType("toggle_screen")
RegisterNUICallback("toggle_screen", function(data, cb)
ToggleScreen()
cb("ok")
end)