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