86 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			No EOL
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local function HandsUpLoop()
 | |
|     CreateThread(function()
 | |
|         while InHandsup do
 | |
|             if Config.DisabledHandsupControls then
 | |
|                 for control, state in pairs(Config.DisabledHandsupControls) do
 | |
|                     DisableControlAction(0, control, state)
 | |
|                 end
 | |
|             end
 | |
| 
 | |
|             if IsPlayerAiming(PlayerId()) then
 | |
|                 ClearPedSecondaryTask(PlayerPedId())
 | |
|                 CreateThread(function()
 | |
|                     Wait(350)
 | |
|                     InHandsup = false
 | |
|                 end)
 | |
|             end
 | |
| 
 | |
|             Wait(0)
 | |
|         end
 | |
|     end)
 | |
| end
 | |
| 
 | |
| if Config.HandsupEnabled then
 | |
|     local function ToggleHandsUp(commandType)
 | |
|         RegisterCommand(commandType, function()
 | |
|             if IsPedInAnyVehicle(PlayerPedId(), false) and not Config.HandsupInCar and not InHandsup then
 | |
|                 return
 | |
|             end
 | |
|             Handsup()
 | |
|         end, false)
 | |
|     end
 | |
| 
 | |
|     if Config.HoldToHandsUp then
 | |
|         ToggleHandsUp('+handsup')
 | |
|         ToggleHandsUp('-handsup')
 | |
|     else
 | |
|         ToggleHandsUp('handsup')
 | |
|     end
 | |
| 
 | |
|     function Handsup()
 | |
|         local playerPed = PlayerPedId()
 | |
|         if not IsPedHuman(playerPed) then
 | |
|             return
 | |
|         end
 | |
|         if IsInActionWithErrorMessage() then
 | |
|             return
 | |
|         end
 | |
| 
 | |
|         InHandsup = not InHandsup
 | |
|         if InHandsup then
 | |
|             LocalPlayer.state:set('currentEmote', 'handsup', true)
 | |
|             DestroyAllProps()
 | |
|             local dict = "random@mugging3"
 | |
|             RequestAnimDict(dict)
 | |
|             while not HasAnimDictLoaded(dict) do
 | |
|                 Wait(0)
 | |
|             end
 | |
|             TaskPlayAnim(PlayerPedId(), dict, "handsup_standing_base", 3.0, 3.0, -1, 49, 0, false,
 | |
|                 IsThisModelABike(GetEntityModel(GetVehiclePedIsIn(PlayerPedId(), false))) and 4127 or false, false)
 | |
|             HandsUpLoop()
 | |
|         else
 | |
|             LocalPlayer.state:set('currentEmote', nil, true)
 | |
|             ClearPedSecondaryTask(PlayerPedId())
 | |
|             if Config.ReplayEmoteAfterHandsup and IsInAnimation then
 | |
|                 local emote = RP[CurrentAnimationName]
 | |
|                 if not emote then
 | |
|                     return
 | |
|                 end
 | |
| 
 | |
|                 Wait(400)
 | |
|                 DestroyAllProps()
 | |
|                 OnEmotePlay(CurrentAnimationName, CurrentTextureVariation)
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     TriggerEvent('chat:addSuggestion', '/handsup', Translate('handsup'))
 | |
| 
 | |
|     if Config.HandsupKeybindEnabled then
 | |
|         RegisterKeyMapping("handsup", Translate('register_handsup'), "keyboard", Config.HandsupKeybind)
 | |
|     end
 | |
| 
 | |
|     CreateExport('IsPlayerInHandsUp', function()
 | |
|         return InHandsup
 | |
|     end)
 | |
| end | 
