MrDante Posted October 28, 2015 Share Posted October 28, 2015 (edited) Olá, eu tentei fazer um prender por nick, porem nao sei qual é o problema que aconteceu, linha 7 attempt to index local"name"( a user data value), sendo que em outros funções desse script na versão completa funciona tudo correto function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end function prender(nick, thePlayer) if nick then if getPlayerFromPartialName ( nick ) then local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "ComandosPolicia") ) then local prisioneiroparcial = getPlayerFromPartialName( nick ) local nickdojogador = getPlayerName (prisioneiroparcial) local nickdopolicial = getPlayerName( thePlayer ) local prisioneirox, prisioneiroy, prisioneiroz = getElementPosition (prisioneiroparcial) local policiax, policiay, policiaz = getElementPosition (nickdopolicial) local Dist = getDistanceBetweenPoints3D ( prisioneirox, prisioneiroy, prisioneiroz, policiax, policiay, policiaz ) local niveldeprocurado = getPlayerWantedLevel (prisioneiroparcial) if ( Dist < 3 ) then if ( niveldeprocurado > 0 ) then outputChatBox("#000000[#FC0303POLICIA#000000]#A09E9EO #FC0303Jogador #ffffff"..nickdojogador.."#A09E9E Foi Preso Pelo Policial "..nickdopolicial..".", root, 255, 255, 255, true) outputChatBox("#000000[#FC0303POLICIA#000000]#A09E9E Voce foi preso!, ficara por 3 minutos na cadeia!", prisioneiroparcial, 255, 255, 255, true) setElementPosition(prisioneiroparcial, 264.19650268555, 77.602844238281, 1001.0390625) setElementInterior(prisioneiroparcial, 6) setElementFrozen(prisioneiroparcial, true) toggleControl(prisioneiroparcial,"fire", false) setElementData(prisioneiroparcial, "Preso", nickdojogador) elseif ( Dist > 4) then outputChatBox("#000000[#FC0303POLICIA#000000]#A09E9EChegue Mais Perto Do Jogador", thePlayer, 255, 255, 255, true) end end elseif ( niveldeprocurado < 1) then outputChatBox("#000000[#FC0303POLICIA#000000]#A09E9EO Jogador Nao Esta Procurado e Nao Pode Ser Preso!", 255, 255, 255, true) end setTimer ( function() setElementPosition(prisioneiroparcial, 1552.9320068359, -1676.1313476563, 16.1953125) end, 180000, 1) else outputChatBox("#000000[#ff0000POLICIA#000000]#FF0000Você não tem permissão para usar este comando!", thePlayer, 255, 255, 255, true) end end end addCommandHandler("prender", prender) alguem sabe??? Edited November 11, 2015 by Guest Link to comment
DNL291 Posted October 28, 2015 Share Posted October 28, 2015 Os parâmetros estão errados. Deixe-os desta forma: function prender(thePlayer, cmd, nick) Link to comment
MrDante Posted October 29, 2015 Author Share Posted October 29, 2015 Obrigado DNL mas me explica oq esse parâmetro faz? tanto como cmd e comando, eu n entendo oq isso significa ate agr Link to comment
n3wage Posted October 30, 2015 Share Posted October 30, 2015 Quando você adiciona um comando usando addCommandHandler a função passada no segundo argumento recebe dois parametros por padrão. thePlayer = Jogador que digitou o comando. cmd = O comando que o jogador digitou, no seu caso sera sempre a string "prender" mas você poderia adicionar mais comandos para a mesma função então esse parametro iria mudar. Os outros paramêtros depois do cmd (nick no seu caso) é você que define, eles farão parte da sintaxe do comando, por exemplo, uma função assim: function minhaFuncao ( thePlayer, cmd, numero ) Vai ter o seguinte comando: /comando [numero], Você pode adicionar quantos parametros quiser, Vale lembrar tambem que você não precisa usar thePlayer ou cmd para nomear as variaveis, Isso: function minhaFuncao ( thePlayer, cmd ) É a mesma coisa que isso: function minhaFuncao ( PLAYER_QUE_DIGITOU, COMANDO_DIGITADO_PELO_JOGADOR ) Obviamente que você teria que trocar thePlayer por PLAYER_QUE_DIGITOU e cmd por COMANDO_DIGITADO_PELO_JOGADOR nas funções usadas no comando. Link to comment
MrDante Posted November 3, 2015 Author Share Posted November 3, 2015 Muito Obrigado, Explicação otima mas como que que coloco um nome personalizado no cmd? Link to comment
n3wage Posted November 7, 2015 Share Posted November 7, 2015 Muito Obrigado, Explicação otima mas como que que coloco um nome personalizado no cmd? Como assim um nome personalizado? Você diz na variável cmd ? Se sim é só modificar o addCommandHandler, Por exemplo: function x ( player, cmd ) outputChatBox ( "x", player ) end addCommandHandler ( "meucomando", x ) ^ Nessa função a variavel cmd vai ser sempre meucomando (igual está no addCommandHandler). Link to comment
MrDante Posted November 9, 2015 Author Share Posted November 9, 2015 sim era isso mesmo, mas eu n entendi modifica addCommandHandler, pois modificar oq nele?? Link to comment
n3wage Posted November 9, 2015 Share Posted November 9, 2015 É, Acho que não explico bem mesmo rs, Eu estava falando de modificar o comando, teste você mesmo: function x ( player, cmd ) outputChatBox ( "variavel cmd = " .. cmd, player ) end addCommandHandler ( "comando", x ) Dentro do servidor use /comando depois troque o comando no addCommandHandler, por exemplo: addCommandHandler ( "ola", x ) Reinicie o script e digite /ola (ou o comando que você colocou), Fazendo isso você vai ver que a variavel cmd é o comando que o jogador digitou (ou seja, o comando que está no addCommandHandler). Link to comment
MrDante Posted November 11, 2015 Author Share Posted November 11, 2015 ahhhhhhhhh taaaa, tendi rs, nao voce explica bem mas surge duvidas algumas vezes, enfim muito obrigado resolveu tudo correto, obrigado Link to comment
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