Jump to content

Existe uma função especifica para isso?


Recommended Posts

Olá pessoal,então eu estava verificando a lista de animações e achei essa walk_drunk e gostaria de faze-la se mover para os lados com as teclas W,S,A,D como se fosse um setPedWalkingStyle,será possivel fazer isso?

function ChapaDrunk (source)
  setPedAnimation(source, "ped", "walk_drunk", -1,true,true,false,false)
end
addCommandHandler("bebado", Chapadrunk)

 

Link to comment

sim,intendi seu modo de pensar mas como já disse no post gostaria de fazer ele andar como uma animação,pois se eu colocar o  setPedWalkingStyle vão poder correr e etc... então vai fugir do foco principal que é só fazer andar bêbado sem correr.

Edited by #banana
Link to comment
23 minutes ago, #banana said:

sim,intendi seu modo de pensar mas como já disse no post gostaria de fazer ele andar como uma animação,pois se eu colocar o  setPedWalkingStyle vão poder correr e etc... então vai fugir do foco principal que é só fazer andar bêbado sem correr.

Havia entendido que só precisava do style... 

Para fazer do jeito que você quer, assim que você ativa a animação você vai precisar bloquear o controle de correr com toggleControl(https://wiki.multitheftauto.com/wiki/ToggleControl) e quando sair da animação, você vai precisar habilitar novamente.

 

local isDrunk = false
function drunkPlayer(player,cmd)
  if not (isDrunk) then
  	setPedWalkingStyle(player,126)
    toggleControl(player,"sprint",false)
    isDrunk = true
  else
    setPedWalkingStyle(player,0)
     toggleControl(player,"sprint",true)
    isDrunk = false
  end
end
addCommandHandler("bebado",drunkPlayer)

(Não testei)

Edited by Iaan
Edit
Link to comment
  • Other Languages Moderators
21 hours ago, Iaan said:

 


local isDrunk = false
function drunkPlayer(player,cmd)
  if not (isDrunk) then
  	setPedWalkingStyle(player,126)
    toggleControl(player,"sprint",false)
    isDrunk = true
  else
    setPedWalkingStyle(player,0)
     toggleControl(player,"sprint",true)
    isDrunk = false
  end
end
addCommandHandler("bebado",drunkPlayer)

(Não testei)

Esse jeito acima não vai dar certo. A variável isDrunk será aplicada ao script em si e não aos jogadores. Dessa forma, se um jogador der o comando /bebado e a variável ficar true, dai essa variável será true para todo mundo.

Eu faria desse jeito assim:

function onJoin (source)
    setElementData (source,"drunk.Status", false) -- Todo jogador que entra no server recebe status de bêbado como false por padrão.
end
addEventHandler ("onPlayerJoin", getRootElement(), onJoin)

function drunkPlayer (source)
    if getElementData (source,"drunk.Status") == false then -- Se o jogador estiver com status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 126) -- Coloca estilo de andar bêbado.
        toggleControl (source, "sprint", false) -- Desativa a função de correr, podendo somente andar na velocidade normal ou caminhar.
        setElementData (source, "drunk.Status", true) -- Coloca o status de bêbado desse jogador como true.
    else -- Se o jogador não possuir status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 0) -- Coloca estilo de andar normal.
        toggleControl (source, "sprint", true) -- Ativa a função de correr.
        setElementData (source, "drunk.Status", false) -- Coloca o status de bêbado desse jogador como false.
    end
end
addCommandHandler ("bebado", drunkPlayer) -- Executa essa função ao usar o comando /bebado.

 

  • Like 1
Link to comment
addCommandHandler ("bebado",
    function(player, command)
	    if(getPedWalkingStyle(player ==	0)) then
		    setPedWalkingStyle (player, 126)
		    toggleControl (player, "sprint", false)
		else
			setPedWalkingStyle (player, 0)
		    toggleControl (player, "sprint", true)
		end
	end
)

Eu recomendo usar este codigo, é melhor para o desempenho do que o código acima.

Quero mencionar que não testei.

Edited by xeon17
  • Like 1
Link to comment
  • Other Languages Moderators

 

6 hours ago, xeon17 said:

addCommandHandler ("bebado",
    function(player, command)
	    if(getPedWalkingStyle(player ==	0)) then
		    setPedWalkingStyle (player, 126)
		    toggleControl (player, "sprint", false)
		else
			setPedWalkingStyle (player, 0)
		    toggleControl (player, "sprint", true)
		end
	end
)

Eu recomendo usar este codigo, é melhor para o desempenho do que o código acima.

Quero mencionar que não testei.

Hum não sabia desse getPedWalkingStyle, então assim fica tranquilo:

addCommandHandler ("bebado",
function (source)
    if (getPedWalkingStyle (source) == 126) then
        setPedWalkingStyle (source, 0)
        toggleControl (player, "sprint", true)
    else
        setPedWalkingStyle (source, 126)
        toggleControl (source, "sprint", false)
    end
end)

Dessa forma ele vai setar estilo de bêbado independente de seu estilo atual.

  • Like 1
Link to comment
19 hours ago, lordhenry said:

Esse jeito acima não vai dar certo. A variável isDrunk será aplicada ao script em si e não aos jogadores. Dessa forma, se um jogador der o comando /bebado e a variável ficar true, dai essa variável será true para todo mundo.

Eu faria desse jeito assim:


function onJoin (source)
    setElementData (source,"drunk.Status", false) -- Todo jogador que entra no server recebe status de bêbado como false por padrão.
end
addEventHandler ("onPlayerJoin", getRootElement(), onJoin)

function drunkPlayer (source)
    if getElementData (source,"drunk.Status") == false then -- Se o jogador estiver com status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 126) -- Coloca estilo de andar bêbado.
        toggleControl (source, "sprint", false) -- Desativa a função de correr, podendo somente andar na velocidade normal ou caminhar.
        setElementData (source, "drunk.Status", true) -- Coloca o status de bêbado desse jogador como true.
    else -- Se o jogador não possuir status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 0) -- Coloca estilo de andar normal.
        toggleControl (source, "sprint", true) -- Ativa a função de correr.
        setElementData (source, "drunk.Status", false) -- Coloca o status de bêbado desse jogador como false.
    end
end
addCommandHandler ("bebado", drunkPlayer) -- Executa essa função ao usar o comando /bebado.

 

Exato, meu exemplo foi o mais genérico possível. Queria apenas demonstrar o uso da função e não fazer um script para /bebado.

Link to comment
34 minutes ago, #banana said:

Calma ai galera,se for pra fazer uma disputa de conhecimento sobre scripting eu faço,mas aqui não é lugar.

Não é disputa não, é por que sempre tem um jeito melhor de fazer melhorando o desempenho, entendeu? É sempre bom conhecer como funciona.

;)

Link to comment
  • Moderators
22 hours ago, lordhenry said:

Esse jeito acima não vai dar certo. A variável isDrunk será aplicada ao script em si e não aos jogadores. Dessa forma, se um jogador der o comando /bebado e a variável ficar true, dai essa variável será true para todo mundo.

Eu faria desse jeito assim:


function onJoin (source)
    setElementData (source,"drunk.Status", false) -- Todo jogador que entra no server recebe status de bêbado como false por padrão.
end
addEventHandler ("onPlayerJoin", getRootElement(), onJoin)

function drunkPlayer (source)
    if getElementData (source,"drunk.Status") == false then -- Se o jogador estiver com status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 126) -- Coloca estilo de andar bêbado.
        toggleControl (source, "sprint", false) -- Desativa a função de correr, podendo somente andar na velocidade normal ou caminhar.
        setElementData (source, "drunk.Status", true) -- Coloca o status de bêbado desse jogador como true.
    else -- Se o jogador não possuir status de bêbado como false, faz o seguinte:
        setPedWalkingStyle (source, 0) -- Coloca estilo de andar normal.
        toggleControl (source, "sprint", true) -- Ativa a função de correr.
        setElementData (source, "drunk.Status", false) -- Coloca o status de bêbado desse jogador como false.
    end
end
addCommandHandler ("bebado", drunkPlayer) -- Executa essa função ao usar o comando /bebado.

 

Eu não usaria setElementData só pra verificar o status do jogador. Vai ser uso de largura de banda desnecessária.

O código de @xeon17 deve funcionar, só tem um pequeno erro na linha 3 -  o parenteses de fechar a função tá depois do 0.

Obs: Pra verificar o status do jogador é só usar getPedWalkingStyle().

Link to comment
  • Other Languages Moderators
17 hours ago, DNL291 said:

Eu não usaria setElementData só pra verificar o status do jogador. Vai ser uso de largura de banda desnecessária.

O código de @xeon17 deve funcionar, só tem um pequeno erro na linha 3 -  o parenteses de fechar a função tá depois do 0.

Obs: Pra verificar o status do jogador é só usar getPedWalkingStyle().


Concordo, só que eu não sabia que existia o getPedWalkingStyle, depois que ele mencionou dai mudei pra esse:

On 06/04/2017 at 01:04, lordhenry said:

 

Hum não sabia desse getPedWalkingStyle, então assim fica tranquilo:


addCommandHandler ("bebado",
function (source)
    if (getPedWalkingStyle (source) == 126) then
        setPedWalkingStyle (source, 0)
        toggleControl (player, "sprint", true)
    else
        setPedWalkingStyle (source, 126)
        toggleControl (source, "sprint", false)
    end
end)

Dessa forma ele vai setar estilo de bêbado independente de seu estilo atual.

 

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...