50 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local isCrouching = false
 | |
| local walkSet = 'default'
 | |
| 
 | |
| local function loadAnimSet(anim)
 | |
|     if not HasAnimSetLoaded(anim) then
 | |
|         RequestAnimSet(anim)
 | |
|         while not HasAnimSetLoaded(anim) do
 | |
|             Wait(10)
 | |
|         end
 | |
|     end
 | |
| end
 | |
| 
 | |
| local function resetAnimSet()
 | |
|     local ped = PlayerPedId()
 | |
|     ResetPedMovementClipset(ped, 1.0)
 | |
|     ResetPedWeaponMovementClipset(ped)
 | |
|     ResetPedStrafeClipset(ped)
 | |
| 
 | |
|     if walkSet ~= 'default' then
 | |
|         loadAnimSet(walkSet)
 | |
|         SetPedMovementClipset(ped, walkSet, 1.0)
 | |
|         RemoveAnimSet(walkSet)
 | |
|     end
 | |
| end
 | |
| 
 | |
| RegisterNetEvent('crouchprone:client:SetWalkSet', function(clipset)
 | |
|     walkSet = clipset
 | |
| end)
 | |
| 
 | |
| RegisterCommand('togglecrouch', function()
 | |
|     local ped = PlayerPedId()
 | |
|     if IsPedSittingInAnyVehicle(ped) or IsPedFalling(ped) or IsPedSwimming(ped) or IsPedSwimmingUnderWater(ped) or IsPauseMenuActive() then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     ClearPedTasks(ped)
 | |
|     if isCrouching then
 | |
|         resetAnimSet()
 | |
|         SetPedStealthMovement(ped, false, 'DEFAULT_ACTION')
 | |
|         isCrouching = false
 | |
|     else
 | |
|         loadAnimSet('move_ped_crouched')
 | |
|         SetPedMovementClipset(ped, 'move_ped_crouched', 1.0)
 | |
|         SetPedStrafeClipset(ped, 'move_ped_crouched_strafing')
 | |
|         isCrouching = true
 | |
|     end
 | |
| end, false)
 | |
| 
 | |
| -- Optional: Register a keybind so they can press CTRL (36) to toggle
 | |
| RegisterKeyMapping('togglecrouch', 'Toggle Crouch', 'keyboard', 'LCONTROL')
 | 
