131 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- This function is responsible for drawing all the 3d texts ('Press [E] to take off the wheel' e.g)
 | |
| function Draw3DText(coords, textInput, scaleX)
 | |
|     scaleX = scaleX * Config.textScale
 | |
|     local px, py, pz = table.unpack(GetGameplayCamCoords())
 | |
|     local dist = GetDistanceBetweenCoords(px, py, pz, coords, true)
 | |
|     local scale = (1 / dist) * 20
 | |
|     local fov = (1 / GetGameplayCamFov()) * 100
 | |
|     scale = scale * fov
 | |
|     
 | |
|     SetTextScale(scaleX * scale, scaleX * scale)
 | |
|     SetTextFont(Config.textFont or 4)
 | |
|     SetTextProportional(1)
 | |
|     SetTextDropshadow(1, 1, 1, 1, 255)
 | |
|     SetTextEdge(2, 0, 0, 0, 150)
 | |
|     SetTextDropShadow()
 | |
|     SetTextOutline()
 | |
|     SetTextEntry("STRING")
 | |
|     SetTextCentre(1)
 | |
|     AddTextComponentString(textInput)
 | |
|     SetDrawOrigin(coords, 0)
 | |
|     DrawText(0.0, 0.0)
 | |
|     ClearDrawOrigin()
 | |
| end
 | |
| 
 | |
| function KeybindTip(message)
 | |
|     SetTextComponentFormat("STRING")
 | |
|     AddTextComponentString(message)
 | |
|     EndTextCommandDisplayHelp(0, 0, 0, 200)
 | |
| end
 | |
| 
 | |
| function IsPlayerUnreachable()
 | |
|     local playerPed = PlayerPedId()
 | |
|     return IsPedInAnyVehicle(playerPed) or IsPedRagdoll(playerPed) or IsEntityDead(playerPed)
 | |
| end
 | |
| 
 | |
| function RemoveHandWeapons()
 | |
|     SetCurrentPedWeapon(PlayerPedId(), -1569615261, true)
 | |
| end
 | |
| 
 | |
| function DisableInputs()
 | |
|     -- https://docs.fivem.net/docs/game-references/controls/#controls
 | |
|     local inputs = {14, 15, 16, 17, 23, 24, 25, 44, 45, 140, 141, 142, 143, 261, 262, 263, 264}
 | |
| 
 | |
|     for k, input in pairs(inputs) do
 | |
|         DisableControlAction(0, input, true)
 | |
|     end
 | |
| end
 | |
| 
 | |
| function IsVehicleLocked(entity)
 | |
|     if not IsEntityAVehicle(entity) then
 | |
|         return false
 | |
|     end
 | |
|     
 | |
|     local lockStatus = GetVehicleDoorLockStatus(entity)
 | |
|     return lockStatus == 2 or lockStatus == 3 or lockStatus == 4 or lockStatus == 10
 | |
| end
 | |
| 
 | |
| function PlayAnim(dict, anim, flag, duration)
 | |
|     Citizen.CreateThread(function()
 | |
|         RequestAnimDict(dict)
 | |
|         local timeout = 0
 | |
|         while not HasAnimDictLoaded(dict) do
 | |
|             Citizen.Wait(50)
 | |
|             timeout = timeout + 1
 | |
|             if timeout > 100 then
 | |
|                 return
 | |
|             end
 | |
|         end
 | |
|         TaskPlayAnim(PlayerPedId(), dict, anim, 1.5, 1.0, duration or -1, flag or 1, 0, false, false, false)
 | |
|         RemoveAnimDict(dict)
 | |
|     end)
 | |
| end
 | |
| 
 | |
| 
 | |
| function ShowTooltip(message)
 | |
|     SetTextComponentFormat("STRING")
 | |
|     AddTextComponentString(message)
 | |
|     EndTextCommandDisplayHelp(0, 0, 1, -1)
 | |
| end
 | |
| 
 | |
| 
 | |
| CURRENT_KEYBIND_TIP = nil
 | |
| 
 | |
| function SetKeybindTip(message)
 | |
|     if CURRENT_KEYBIND_TIP == message then
 | |
|         return
 | |
|     end
 | |
|     CURRENT_KEYBIND_TIP = message
 | |
| 
 | |
|     Citizen.CreateThread(function()
 | |
|         while CURRENT_KEYBIND_TIP == message do
 | |
|             local sleep = 100
 | |
|             if CURRENT_KEYBIND_TIP then
 | |
|                 sleep = 1
 | |
|                 ShowKeybindTip(CURRENT_KEYBIND_TIP)
 | |
|             end
 | |
|             Citizen.Wait(sleep)
 | |
|         end
 | |
|     end)
 | |
| end
 | |
| 
 | |
| function ResetKeybindTip()
 | |
|     if CURRENT_KEYBIND_TIP ~= nil then
 | |
|         CURRENT_KEYBIND_TIP = nil
 | |
|     end
 | |
| end
 | |
| 
 | |
| function ShowKeybindTip(message)
 | |
|     SetTextComponentFormat("STRING")
 | |
|     AddTextComponentString(message)
 | |
| 
 | |
|     EndTextCommandDisplayHelp(0, 0, 0, -1)
 | |
| end
 | |
| 
 | |
| RegisterNetEvent('kq_towing:client:notify')
 | |
| AddEventHandler('kq_towing:client:notify', function(message)
 | |
|     Notify(message)
 | |
| end)
 | |
| 
 | |
| function Notify(message)
 | |
|     SetTextComponentFormat("STRING")
 | |
|     AddTextComponentString(message)
 | |
|     EndTextCommandDisplayHelp(0, 0, 0, 2000)
 | |
| end
 | |
| 
 | |
| -- Call this event to cancel the placement of a rope
 | |
| RegisterNetEvent('kq_towing:client:cancelPlacement')
 | |
| AddEventHandler('kq_towing:client:cancelPlacement', function()
 | |
|     PLACING_ROPE = false
 | |
| end)
 | |
| 
 | 
