Jump to content

Erro ao verificar a distancia


Recommended Posts

Alguém pra me dar um help nisso? 

ERROR: Prender.lua:8: attempt to compare number with boolean

 

Já tentei fazer assim porém deu o mesmo problema (acredito que o que eu fiz esteja errado):               

                elseif ( dist > 5 )  then
                return outputChatBox("#FF0000fChegue mais perto do jogador para prender!", Policial, 255, 255, 255, true )
                elseif ( dist < 6 )then
                    return outputChatBox("#FF0000Chegue mais perto do jogador para prender!", Policial, 255, 255, 255, true )
                end

 

                local jX, jY, jZ = getElementPosition (Jogador) 
                local pX, pY, pZ = getElementPosition (Policial)
                local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ)
                if Jogador == Policial then
                    return outputChatBox("#ff0000Voce não pode se Prender.", Policial, 255, 255, 255, true)
                elseif ( estrelasdeprocurado == 0 ) then
                    return outputChatBox("#ff0000Este Jogador não está sendo Procurado!", Policial, 255, 255, 255, true )
                elseif dist >= 3 then
                    return outputChatBox("#ff0000Chegue mais perto do Jogador para Prender!", Policial, 255, 255, 255, true )
                end
            
                Prender(Jogador)
                outputChatBox("#ff0000Voce Recebeu R$1.000 Por prender o Jogador "..getPlayerName(Jogador).."", Policial, 255 , 255, 255, true)
                givePlayerMoney(Policial, 1000)
            else
                outputChatBox("#ff0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
            end

 

Edited by WeeD1
Link to comment
3 minutes ago, WeeD1 said:

Alguém pra me dar um help nisso? 

ERROR: Prender.lua:8: attempt to compare number with boolean

 

Já tentei fazer assim porém deu o mesmo problema:               

                elseif ( dist > 5 )  then
                return outputChatBox("#FF0000fChegue mais perto do jogador para prender!", Policial, 255, 255, 255, true )
                elseif ( dist < 6 )then
                    return outputChatBox("#FF0000Chegue mais perto do jogador para prender!", Policial, 255, 255, 255, true )
                end

 


                local jX, jY, jZ = getElementPosition (Jogador) 
                local pX, pY, pZ = getElementPosition (Policial)
                local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ)
                if Jogador == Policial then
                    return outputChatBox("#ff0000Voce não pode se Prender.", Policial, 255, 255, 255, true)
                elseif ( estrelasdeprocurado == 0 ) then
                    return outputChatBox("#ff0000Este Jogador não está sendo Procurado!", Policial, 255, 255, 255, true )
                elseif dist >= 3 then
                    return outputChatBox("#ff0000Chegue mais perto do Jogador para Prender!", Policial, 255, 255, 255, true )
                end
            
                Prender(Jogador)
                outputChatBox("#ff0000Voce Recebeu R$1.000 Por prender o Jogador "..getPlayerName(Jogador).."", Policial, 255 , 255, 255, true)
                givePlayerMoney(Policial, 1000)
            else
                outputChatBox("#ff0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
            end

 

Você recuperou o jogador de uma string e o converteu para player? Com o getPlayerFromPartialName

 

  • Like 1
Link to comment
  • Moderators

Faça uma depuração básica no código e descubra o que está errado:

                outputChatBox("jogador " ..tostring(Jogador))
                outputChatBox("policial "..tostring(Policial))
                outputChatBox("estrelasdeprocurado "..tostring(estrelasdeprocurado))
                local jX, jY, jZ = getElementPosition (Jogador) 
                local pX, pY, pZ = getElementPosition (Policial)
                local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ)
                if Jogador == Policial then
                    return outputChatBox("#ff0000Voce não pode se Prender.", Policial, 255, 255, 255, true)
                elseif ( estrelasdeprocurado == 0 ) then
                    return outputChatBox("#ff0000Este Jogador não está sendo Procurado!", Policial, 255, 255, 255, true )
                elseif dist >= 3 then
                    return outputChatBox("#ff0000Chegue mais perto do Jogador para Prender!", Policial, 255, 255, 255, true )
                end
            
                Prender(Jogador)
                outputChatBox("#ff0000Voce Recebeu R$1.000 Por prender o Jogador "..getPlayerName(Jogador).."", Policial, 255 , 255, 255, true)
                givePlayerMoney(Policial, 1000)
            else
                outputChatBox("#ff0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
            end

 

  • Thanks 1
Link to comment

Eu não entendi muito bem isso, testei no servidor porém não deu em nada... vou deixar aqui o código completo :

 

 

function prisao(Policial, cmd, Jogador)	
    local accName = getAccountName ( getPlayerAccount ( Policial ) )
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "PM" ) ) then
		if cmd == "prender" then
			if Jogador then
				Jogador = getPlayerFromPartialName(Jogador)
				estrelasdeprocurado = getPlayerWantedLevel(Jogador)
				local jX, jY, jZ = getElementPosition (Jogador) 
				local pX, pY, pZ = getElementPosition (Policial)
				local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ)
				if Jogador == Policial then
					return outputChatBox("#FF0000Voce não pode se Prender.", Policial, 255, 255, 255, true)
				elseif ( estrelasdeprocurado == 0 ) then
					return outputChatBox("#FF0000Este Jogador não está sendo Procurado!", Policial, 255, 255, 255, true )
				elseif dist >= 3 then
					return outputChatBox("#FF0000Chegue mais perto do Jogador para Prender!", Policial, 255, 255, 255, true )
				end
			
				Prender(Jogador)
				outputChatBox("#FF0000Voce Recebeu R$1.000 Por prender o Jogador "..getPlayerName(Jogador).."", Policial, 255 , 255, 255, true)
				givePlayerMoney(Policial, 1000)
			else
				outputChatBox("#FF0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
			end
		elseif cmd == "liberar" then
			if Jogador then
				Jogador = getPlayerFromPartialName(Jogador)
				estrelasdeprocurado = getPlayerWantedLevel(Jogador)
				if Jogador == Policial then
					return outputChatBox("#FF0000Voce não pode se Liberar!", Policial, 255, 255, 255, true)
				elseif not getElementData(Jogador, "preso") or not getElementData(rRoot,""..getPlayerSerial(Jogador).."-j") then
					return outputChatBox("#FF0000Este jogador não está Preso!", Policial, 255, 255, 255, true )
				end
				
				Liberar(Jogador)
			else
				outputChatBox("#FF0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
			end
		end
	else
	end
end
addCommandHandler("prender", prisao)

 

Link to comment
  • Moderators

Tente isto:


function prisao(Policial, cmd, Jogador)	
    local accName = getAccountName ( getPlayerAccount ( Policial ) )
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "PM" ) ) then
		if cmd == "prender" then
			if Jogador then
				local Jogador = getPlayerFromPartialName(Jogador)
				if not (isElement(Jogador)) then return outputChatBox("#FF0000Esse jogador não existe!", Policial, 255, 255, 255, true) end
				
				local estrelasdeprocurado = getPlayerWantedLevel(Jogador)
				local jX, jY, jZ = getElementPosition (Jogador) 
				local pX, pY, pZ = getElementPosition (Policial)
				local dist = getDistanceBetweenPoints3D ( pX, pY, pZ, jX, jY, jZ)
				if Jogador == Policial then
					return outputChatBox("#FF0000Voce não pode se Prender.", Policial, 255, 255, 255, true)
				elseif ( estrelasdeprocurado == 0 ) then
					return outputChatBox("#FF0000Este Jogador não está sendo Procurado!", Policial, 255, 255, 255, true )
				elseif dist >= 3 then
					return outputChatBox("#FF0000Chegue mais perto do Jogador para Prender!", Policial, 255, 255, 255, true )
				end
			
				Prender(Jogador)
				outputChatBox("#FF0000Voce Recebeu R$1.000 Por prender o Jogador "..getPlayerName(Jogador).."", Policial, 255 , 255, 255, true)
				givePlayerMoney(Policial, 1000)
			else
				outputChatBox("#FF0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
			end
		elseif cmd == "liberar" then
			if Jogador then
				local Jogador = getPlayerFromPartialName(Jogador)
				if not (isElement(Jogador)) then return outputChatBox("#FF0000Esse jogador não existe!", Policial, 255, 255, 255, true) end
				
				local estrelasdeprocurado = getPlayerWantedLevel(Jogador)
				if Jogador == Policial then
					return outputChatBox("#FF0000Voce não pode se Liberar!", Policial, 255, 255, 255, true)
				elseif not getElementData(Jogador, "preso") or not getElementData(rRoot,""..getPlayerSerial(Jogador).."-j") then
					return outputChatBox("#FF0000Este jogador não está Preso!", Policial, 255, 255, 255, true )
				end
				
				Liberar(Jogador)
			else
				outputChatBox("#FF0000Digite o Nome do Jogador!", Policial, 255, 255, 255, true)
			end
		end
	end
end
addCommandHandler("prender", prisao)

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

 

  • Thanks 1
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...