Jump to content

Anti Comando


Recommended Posts

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

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
  • 5 weeks later...

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

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 by Lord Henry
Link to comment
  • Other Languages Moderators

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?

 

  • Haha 1
Link to comment
  • Other Languages Moderators

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 by Lord Henry
  • Haha 2
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...