diff --git a/resources/fingerpoint/__resource.lua b/resources/fingerpoint/__resource.lua new file mode 100644 index 000000000..4787b880d --- /dev/null +++ b/resources/fingerpoint/__resource.lua @@ -0,0 +1 @@ +client_script 'client.lua' \ No newline at end of file diff --git a/resources/fingerpoint/client.lua b/resources/fingerpoint/client.lua new file mode 100644 index 000000000..62af2abb9 --- /dev/null +++ b/resources/fingerpoint/client.lua @@ -0,0 +1,107 @@ +local mp_pointing = false +local keyPressed = false + +local function startPointing() + local ped = GetPlayerPed(-1) + RequestAnimDict("anim@mp_point") + while not HasAnimDictLoaded("anim@mp_point") do + Wait(0) + end + SetPedCurrentWeaponVisible(ped, 0, 1, 1, 1) + SetPedConfigFlag(ped, 36, 1) + Citizen.InvokeNative(0x2D537BA194896636, ped, "task_mp_pointing", 0.5, 0, "anim@mp_point", 24) + RemoveAnimDict("anim@mp_point") +end + +local function stopPointing() + local ped = GetPlayerPed(-1) + Citizen.InvokeNative(0xD01015C7316AE176, ped, "Stop") + if not IsPedInjured(ped) then + ClearPedSecondaryTask(ped) + end + if not IsPedInAnyVehicle(ped, 1) then + SetPedCurrentWeaponVisible(ped, 1, 1, 1, 1) + end + SetPedConfigFlag(ped, 36, 0) + ClearPedSecondaryTask(PlayerPedId()) +end + +local once = true +local oldval = false +local oldvalped = false + +Citizen.CreateThread(function() + while true do + Wait(0) + + if once then + once = false + end + + if not keyPressed then + if IsControlPressed(0, 29) and not mp_pointing and IsPedOnFoot(PlayerPedId()) then + Wait(200) + if not IsControlPressed(0, 29) then + keyPressed = true + startPointing() + mp_pointing = true + else + keyPressed = true + while IsControlPressed(0, 29) do + Wait(50) + end + end + elseif (IsControlPressed(0, 29) and mp_pointing) or (not IsPedOnFoot(PlayerPedId()) and mp_pointing) then + keyPressed = true + mp_pointing = false + stopPointing() + end + end + + if keyPressed then + if not IsControlPressed(0, 29) then + keyPressed = false + end + end + if Citizen.InvokeNative(0x921CE12C489C4C41, PlayerPedId()) and not mp_pointing then + stopPointing() + end + if Citizen.InvokeNative(0x921CE12C489C4C41, PlayerPedId()) then + if not IsPedOnFoot(PlayerPedId()) then + stopPointing() + else + local ped = GetPlayerPed(-1) + local camPitch = GetGameplayCamRelativePitch() + if camPitch < -70.0 then + camPitch = -70.0 + elseif camPitch > 42.0 then + camPitch = 42.0 + end + camPitch = (camPitch + 70.0) / 112.0 + + local camHeading = GetGameplayCamRelativeHeading() + local cosCamHeading = Cos(camHeading) + local sinCamHeading = Sin(camHeading) + if camHeading < -180.0 then + camHeading = -180.0 + elseif camHeading > 180.0 then + camHeading = 180.0 + end + camHeading = (camHeading + 180.0) / 360.0 + + local blocked = 0 + local nn = 0 + + local coords = GetOffsetFromEntityInWorldCoords(ped, (cosCamHeading * -0.2) - (sinCamHeading * (0.4 * camHeading + 0.3)), (sinCamHeading * -0.2) + (cosCamHeading * (0.4 * camHeading + 0.3)), 0.6) + local ray = Cast_3dRayPointToPoint(coords.x, coords.y, coords.z - 0.2, coords.x, coords.y, coords.z + 0.2, 0.4, 95, ped, 7); + nn,blocked,coords,coords = GetRaycastResult(ray) + + Citizen.InvokeNative(0xD5BB4025AE449A4E, ped, "Pitch", camPitch) + Citizen.InvokeNative(0xD5BB4025AE449A4E, ped, "Heading", camHeading * -1.0 + 1.0) + Citizen.InvokeNative(0xB0A6CFD2C69C1088, ped, "isBlocked", blocked) + Citizen.InvokeNative(0xB0A6CFD2C69C1088, ped, "isFirstPerson", Citizen.InvokeNative(0xEE778F8C7E1142E2, Citizen.InvokeNative(0x19CAFA3C87F7C2FF)) == 4) + + end + end + end +end) \ No newline at end of file diff --git a/server.cfg b/server.cfg index d31d51043..9a4df0e93 100644 --- a/server.cfg +++ b/server.cfg @@ -81,7 +81,7 @@ ensure VK_Main ensure VK_Interiors ensure Jailer ///ensure SpeedLimit -ensure Point-Finger +ensure fingerpoint ensure Hands-Up ensure Tackle ensure WeazelNewsCam