#DaNiLiN Posted August 25, 2018 Share Posted August 25, 2018 Existe alguma forma de privar um comando caso rival estiver perto? agora caso ele estiver numa distancia de 300 Metros eu conseguir utilizar o comando tranquilamente. Link to comment
Jonas^ Posted August 25, 2018 Share Posted August 25, 2018 (edited) Qual comando você quer bloquear? Talvez com esta função você consiga fazer isto: GetDistanceBetweenPoints3D Mas, você quer fazer a verificação do jogador rival como? por team? OBS: Da próxima vez crie tópico na área correta - Programação em Lua Edited August 25, 2018 by OverKILL Link to comment
#DaNiLiN Posted August 26, 2018 Author Share Posted August 26, 2018 Ex: eu sou da BOPE mais quero usar /kit porém to perto de algum player da cv e não consigo usar o comando Link to comment
#DaNiLiN Posted August 26, 2018 Author Share Posted August 26, 2018 Existe alguma forma de privar um comando caso rival estiver perto? agora caso ele estiver numa distancia de 300 Metros eu conseguir utilizar o comando tranquilamente. Ex: eu sou da BOPE mais quero usar /kit porém to perto de algum player da cv e não consigo usar o comando Link to comment
Other Languages Moderators Lord Henry Posted August 26, 2018 Other Languages Moderators Share Posted August 26, 2018 Para verificar sua distância em relação a outro player, use getDistanceBetweenPoints3D. Use também um getElementsByType ("player") para obter todos os players online. E um loop de FOR para verificar quais players estão perto demais de vc. Os que estiverem perto demais, verifique se são da CV com isObjectInACLGroup. Se nenhum deles for da CV ou se não houver ninguém por perto, o comando funciona normalmente, caso contrário manda uma mensagem avisando que há um rival por perto. Link to comment
#DaNiLiN Posted September 25, 2018 Author Share Posted September 25, 2018 tentei assim porém deu erro nas seguintes linhas. function AntiComando (source) local players = getElementsByType("player") local playerrivalx, playerrivaly, playerrivalz = getElementPosition ( players ) -- Encontrar posição do rival local player1x, player1y, player1z = getElementPosition ( source ) -- Encontrar posição do elemento a executar a funçãp local dist = getDistanceBetweenPoints3D ( playerrivalx, playerrivaly, playerrivalz, player1x, player1y, player1z ) -- Calcular a distancia entre os dois elementos if ( dist < 5 ) then -- se a distancia for 5 executara o Chat Box outputChatBox("#FFFFFFComando Não poder ser utilizado perto de um rival!", source, 255, 255, 255, true) -- Chat Box elseif ( dist > 100 )then -- Caso ao contrario a distancia for 100 executara a função a seguir outputChatBox("#FFFFFFcomando utilizado com sucesso.!", source, 255, 255, 255, true) -- Chat Box end end addCommandHandler("a",AntiComando) erro linha: 3, 5 , 6 Img> https://imgur.com/n9E4D69 Link to comment
Other Languages Moderators Lord Henry Posted September 25, 2018 Other Languages Moderators Share Posted September 25, 2018 (edited) Você já tentou traduzir e entender os erros que aparecem? DanilinS.lua:3: Bad argument 'getElementPosition' [Expected element at argument 1, got table] Argumento inválido no 'getElementPosition' [Esperava um elemento no argumento 1, mas recebeu uma tabela] DanilinS.lua:5: Bad argument 'getDistanceBetweenPoints3D' [Expected vector3 at argument 1, got boolean] Argumento inválido no 'getDistanceBetweenPoints3D' [Esperava um vector3 no argumento 1, mas recebeu valor booleano (false)] DanilinS.lua:6: Error: attempt to compare boolean with number Erro: Tentativa de comparar valor booleano com um número (comparação impossível) OBS: vector3 é uma matriz, que possui 3 valores numéricos (inteiros ou reais) que são coordenadas X, Y e Z respectivamente. Você pode declará-lo como uma table contendo esses 3 valores ou você pode declarar cada um dos 3 valores respectivamente. Isso significa que ele estava esperando coordenadas X, Y e Z no argumento 1, mas recebeu booleano. Também gostaria que vc me explicasse o que acontece na linha 2. A variável players recebe quais dados mesmo? Edited September 25, 2018 by Lord Henry Link to comment
#DaNiLiN Posted September 25, 2018 Author Share Posted September 25, 2018 eu estava seguindo seus passos... montando o distance3d e etc ai tava no elementdata mais antes disso já dava esses 3 erros.. e não entendi o porque :\ vou tentar usando loop de FOR Link to comment
Other Languages Moderators Lord Henry Posted September 25, 2018 Other Languages Moderators Share Posted September 25, 2018 E as minhas perguntas, consegue responder? 9 hours ago, Lord Henry said: Você já tentou traduzir e entender os erros que aparecem? [...] Também gostaria que vc me explicasse o que acontece na linha 2. A variável players recebe quais dados mesmo? 1 Link to comment
#DaNiLiN Posted September 26, 2018 Author Share Posted September 26, 2018 eu respondi '-', " eu estava colocando "elementdata" para obter todos player online, porém pegando as posição dos rivais ao redor.... acho que estava fazendo certo. Link to comment
Other Languages Moderators Lord Henry Posted September 27, 2018 Other Languages Moderators Share Posted September 27, 2018 (edited) Tá, você não é capaz nem de responder minhas perguntas. Permita-me responder para você: On 25/09/2018 at 10:03, Lord Henry said: Você já tentou traduzir e entender os erros que aparecem? R: Não, nem tentei traduzir e não entendi os erros. Mas agora que vi que o @Lord Henry traduziu e me disse oq significam, vou tentar arrumar. On 25/09/2018 at 10:03, Lord Henry said: Também gostaria que vc me explicasse o que acontece na linha 2. A variável players recebe quais dados mesmo? R: De acordo com a Wiki do getElementsByType, essa função retorna uma lista contendo todos os elementos do tipo declarado. No caso, retorna uma lista com todos os jogadores online no server. Isso significa que a variável players não é um jogador e sim uma lista de jogadores online. function AntiComando (source) -- source = player que executou o comando desta função. (/a) local players = getElementsByType ("player") -- players = uma lista de jogadores online. local playerrivalx, playerrivaly, playerrivalz = getElementPosition ( players ) -- ERRO: Não é possível encontrar a posição de uma lista, pois ela não é um elemento. local player1x, player1y, player1z = getElementPosition ( source ) -- player1x, player1y, player1z = Posição X, Y e Z do jogador que executou o comando /a local dist = getDistanceBetweenPoints3D ( playerrivalx, playerrivaly, playerrivalz, player1x, player1y, player1z ) -- ERRO: playerrivalx, playerrivaly, playerrivalz não existem, pois deu erro na linha 3. Portanto a variável dist também dará erro. if ( dist < 5 ) then -- ERRO: Não tem como comparar FALSE com 5. outputChatBox("#FFFFFFComando Não poder ser utilizado perto de um rival!", source, 255, 255, 255, true) elseif ( dist > 100 ) then -- ERRO: Não tem como comparar FALSE com 100. outputChatBox("#FFFFFFcomando utilizado com sucesso.!", source, 255, 255, 255, true) end end addCommandHandler ("a", AntiComando) Edited September 27, 2018 by Lord Henry 2 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