Jump to content

Erro ao verificar a distancia


Recommended Posts

Posted (edited)

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
Posted
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
Posted

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

Please do not PM me with scripting related question nor support, use the forums instead.

Posted

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)

 

Posted

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

Please do not PM me with scripting related question nor support, use the forums instead.

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...