threevictor Posted April 4, 2017 Posted April 4, 2017 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)
Iaan Posted April 4, 2017 Posted April 4, 2017 (edited) https://wiki.multitheftauto.com/wiki/SetPedWalkingStyle ID: 126 (MOVE_DRUNKMAN) Olhando a wiki, dá pra ver todos os ID e estilos pra andar. Edited April 4, 2017 by Iaan
threevictor Posted April 4, 2017 Author Posted April 4, 2017 (edited) 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 April 4, 2017 by #banana
Iaan Posted April 4, 2017 Posted April 4, 2017 (edited) 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 April 4, 2017 by Iaan Edit
Other Languages Moderators Lord Henry Posted April 5, 2017 Other Languages Moderators Posted April 5, 2017 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. 1
xeon17 Posted April 5, 2017 Posted April 5, 2017 (edited) 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 April 5, 2017 by xeon17 1
Other Languages Moderators Lord Henry Posted April 6, 2017 Other Languages Moderators Posted April 6, 2017 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. 1
Iaan Posted April 6, 2017 Posted April 6, 2017 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.
threevictor Posted April 6, 2017 Author Posted April 6, 2017 (edited) Calma ai galera,se for pra fazer uma disputa de conhecimento sobre scripting eu faço,mas aqui não é lugar. Edited April 6, 2017 by #banana
Iaan Posted April 6, 2017 Posted April 6, 2017 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.
DNL291 Posted April 6, 2017 Posted April 6, 2017 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().
Other Languages Moderators Lord Henry Posted April 7, 2017 Other Languages Moderators Posted April 7, 2017 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now