mirror of
https://github.com/ND-Framework/ND_Core.git
synced 2026-08-17 05:56:01 +01:00
Add files via upload
This commit is contained in:
72
ND_Doorlocks/source/client.lua
Normal file
72
ND_Doorlocks/source/client.lua
Normal file
@@ -0,0 +1,72 @@
|
||||
-- For support join my discord: https://discord.gg/Z9Mxu72zZ6
|
||||
local nearDoor = true
|
||||
|
||||
function drawText3D(coords, text)
|
||||
local onScreen, _x, _y = World3dToScreen2d(coords.x, coords.y, coords.z + 0.5)
|
||||
local pX, pY, pZ = table.unpack(GetGameplayCamCoords())
|
||||
SetTextScale(0.4, 0.4)
|
||||
SetTextFont(4)
|
||||
SetTextProportional(1)
|
||||
SetTextEntry("STRING")
|
||||
SetTextCentre(true)
|
||||
SetTextColour(255, 255, 255, 255)
|
||||
SetTextOutline()
|
||||
AddTextComponentString(text)
|
||||
DrawText(_x, _y)
|
||||
end
|
||||
|
||||
function getDoorText(locked)
|
||||
if locked then
|
||||
return "Locked [E]"
|
||||
end
|
||||
return "Unlocked [E]"
|
||||
end
|
||||
|
||||
function isAuthorized(door)
|
||||
nearDoor = true
|
||||
for _, authorizedJob in pairs(door.authorizedJobs) do
|
||||
if job == authorizedJob then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
pedCoords = GetEntityCoords(PlayerPedId())
|
||||
if nearDoor then
|
||||
job = exports["ND_Core"]:getCharacterInfo().department
|
||||
nearDoor = false
|
||||
end
|
||||
Citizen.Wait(1000)
|
||||
end
|
||||
end)
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
for doorID, door in pairs(doorList) do
|
||||
if #(pedCoords - door.textCoords) < door.accessDistance and isAuthorized(door) then
|
||||
drawText3D(door.textCoords, getDoorText(door.locked))
|
||||
for _, doors in pairs(door.doors) do
|
||||
local entity = GetClosestObjectOfType(doors.coords.x, doors.coords.y, doors.coords.z, 1.0, doors.hash, false, false, false)
|
||||
FreezeEntityPosition(entity, door.locked)
|
||||
end
|
||||
end
|
||||
if IsControlJustPressed(0, 51) then
|
||||
door.locked = not door.locked
|
||||
TriggerServerEvent("ND_Doorlocks:syncDoor", doorID, door.locked)
|
||||
end
|
||||
end
|
||||
Citizen.Wait(0)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent("ND_Doorlocks:syncDoor")
|
||||
AddEventHandler("ND_Doorlocks:syncDoor", function(doorID, state)
|
||||
doorList[doorID].locked = state
|
||||
for _, doors in pairs(doorList[doorID].doors) do
|
||||
local entity = GetClosestObjectOfType(doors.coords.x, doors.coords.y, doors.coords.z, 1.0, doors.hash, false, false, false)
|
||||
SetEntityHeading(entity, doors.heading)
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user