Jump to content

Impedir Que a Animação Seja Cancelada Ao Cair


Recommended Posts

olá, tem algum control name no toggleControl que impeça que a animação no jogador cancele ao cair? por exemplo de quando o player sair de cima de um veiculo? por que fiz um sistema de algema que esta algemando tudo certinho, mas quando o player é algemado em cima de um veiculo e ele precisa descer, quando ele desce a animação é cancelada

Link to comment
  • Other Languages Moderators

Ou você pode setar rotação nos braços do jogador algemado em vez de setar uma animação. Dai é só ficar chamando todo frame enquanto ele estiver com elementData de algemado.

-- Client-side:
function setCuffed(thePlayer) -- Função que seta a "animação" de algemado.
    -- Left
    setElementBoneRotation(thePlayer, 32, 26.574, 61.3375, 59.2065)
    setElementBoneRotation(thePlayer, 33, 27.844, 15.364, 46.406)
    setElementBoneRotation(thePlayer, 34, -81.0185, 342.875, 326.118)
    -- Right
    setElementBoneRotation(thePlayer, 22, 338.839, 53.4935, 298.452)
    setElementBoneRotation(thePlayer, 23, 307.687, 22.11, 313.594)
    setElementBoneRotation(thePlayer, 24, 96.0475, 357.883, 56.739)

    updateElementRpHAnim(thePlayer) -- Aplica as rotações nos ossos do thePlayer neste frame.
end

addEventHandler("onClientPedsProcessed", root, function() -- Chama essa função a cada frame, quando os personagens são processados.
    for _,player in pairs(getElementsByType("player", root, true)) do -- Para cada jogador próximo, faça:
        if getElementData(player, "algemado") then -- Se o jogador está com a elementData "algemado" então:
            setCuffed(player) -- Seta a animação de algemado nele durante 1 frame.
        end
    end
end)
-- Server-side:
addCommandHandler("algemar", function(theCop, cmd, name) -- Comando que vai algemar/desalgemar alguém. Use /algemar NomeDoPlayer
    if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(theCop)), aclGetGroup ("Policia")) then -- Se quem executou o comando não está na ACL Group "Policia", então:
        outputChatBox("Acesso negado. Você precisa ser um policial para usar este comando.", theCop, 255, 50, 50)
        return -- Cancela a execução dessa função aqui e nem lê o resto.
    end
    if not name then -- Se não foi declarado nada depois do /algemar, então:
        outputChatBox("Erro: É necessário informar o nome do jogador a ser algemado/desalgemado.", theCop, 255, 50, 50)
        return
    end
    local thePlayer = getPlayerFromName(name)
    if thePlayer then -- Se existe o jogador com o nome informado, então: (o nome precisa ser exato, incluindo códigos de cores)
        if getPedOccupiedVehicle(thePlayer) then -- Não permite algemar/desalgemar jogadores que estão em veículos.
            outputChatBox("Erro: Este jogador está em um veículo, não é possível algemar/desalgemar ele.", theCop, 255, 50, 50)
            return
        end
        if getElementData(thePlayer, "algemado") then -- Se o jogador já tem a data de algemado, então:
            setElementData(thePlayer, "algemado", false) -- Remove a data dele, parando a animação de algemado dele.
            disenableControls(thePlayer, true) -- Habilita os controles do jogador.
            outputChatBox("Você desalgemou o jogador "..name, theCop, 255, 255, 0)
        else -- Se o jogador não tem a data de algemado, então:
            setElementData(thePlayer, "algemado", true) -- Coloca a data nele, a animação de algemado será aplicada nele.
            disenableControls(thePlayer, false) -- Desabilita os controles do jogador.
            setPedWeaponSlot (thePlayer, 0) -- Coloca o slot de arma desarmado no jogador. Para ele não ficar segurando armas enquanto algemado.
            outputChatBox("Você algemou o jogador "..name, theCop, 255, 255, 0)
        end
    else -- Se não existe um jogador com o nome informado (ou o nome informado não é exato), então:
        outputChatBox("Erro: Jogador não encontrado: "..name, theCop, 255, 50, 50)
    end
end)

function disenableControls(thePlayer, state) -- Função que ativa/desativa alguns controles específicos do jogador, pra n ficar repetindo código.
    local controls = {"fire", "action", "jump", "sprint", "aim_weapon", "next_weapon", "previous_weapon", "enter_exit"}
    for _,ctrl in pairs (controls) do -- Para cada controle da lista, faça:
        toggleControl (thePlayer, ctrl, state) -- Ativa/desativa o controle.
    end
end

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...