Jump to content

comando de tirar


Recommended Posts

Então,eu criei um script,de colocar o player dentro da viatura,/colocar nomedojogador,o jogador fica numa animação congelada,não pode digitar e nem nada,e fica na parte de tras da viatura (personalizada),assim podendo ir 5 pessoas na viatura,porem eu não sei como fazer pra tirar o jogador de dentro dela,supostamente com um /retirar nomedojogador
 

function colocanavtr (police, _, name)
    if hasObjectPermissionTo(police, "function.Colocar") then
        local preso = getPlayerFromPartialName(name)
        local px, py, pz = getElementPosition (police)
        local bx, by, bz = getElementPosition (preso)
        local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz)
        if not preso then
            return outputChatBox('#bebebe Jogador invalido.', police, 255, 255, 255, true)
        end
        if preso == police then
            return outputChatBox('#bebebe Você não pode se colocar na viatura.', police, 255, 255, 255, true)
        end
        if getPedOccupiedVehicle(police) then
            return outputChatBox('#bebebe Você não pode colocar alguem de dentro da viatura.', police, 255, 255, 255, true)
        end
        if getPedOccupiedVehicle(preso) then
            return outputChatBox('#bebebe Você não pode colocar um meliante enquanto ele estiver dentro de um veículo.', police, 255, 255, 255, true)
        end
        if dist >= 1 then
            return outputChatBox('#bebebe Você precisa chegar mais perto para prender.', police, 255, 255, 255, true)
        end
        setElementData (preso, 'navtr', true)                             
        addEventHandler('onPlayerCommand', preso, onCommand)              
        local vtr = carros[police]
        setElementData (vtr, 'compreso', true)        
        attachElements (preso, vtr, 0.2, -1.5, 0, 0,0,90)
        setElementFrozen (preso, true)
        toggleAllControls (preso, false)
        takeAllWeapons (preso)
        setPedAnimation (preso, 'ped','CAR_dead_LHS')
        vrx, vry, vrz = getElementRotation(vtr)
        setElementRotation(preso, vrx, vry, vrz+83)    
        warpPedIntoVehicle (police, vtr)
    end
end
addCommandHandler ('colocar', colocanavtr)

 

Edited by DNL291
Use o botão para o código Lua da próxima vez
Link to comment
  • Other Languages Moderators

Crie outra função para remover, ela deverá ser tipo assim:

function retirardavtr (police, _, name)
	if hasObjectPermissionTo (police, "function.Colocar") then
		local preso = getPlayerFromPartialName (name)
		if (preso) then
			if (preso == police) then
				return outputChatBox ("Você não pode se remover da viatura.", police, 190, 190, 190)
			end
			if (getElementData (preso, 'navtr')) then -- Prefira o uso de aspas duplas para strings com mais de 1 caractere.
				local px, py, pz = getElementPosition (police)
				local bx, by, bz = getElementPosition (preso)
				local dist = getDistanceBetweenPoints3D (px, py, pz, bx, by, bz)
				if (dist >= 3) then
					return outputChatBox ("Você precisa chegar mais perto para removê-lo.", police, 190, 190, 190)
				end
				setElementData (preso, 'navtr', false)
				removeEventHandler ('onPlayerCommand', preso, onCommand)
				local vtr = carros[police]
				setElementData (vtr, 'compreso', false)
				detachElements (preso, vtr)
				setElementFrozen (preso, false)
				toggleAllControls (preso, true)
				setPedAnimation (preso)
			else
				outputChatBox ("Este jogador não está preso.", police, 190, 190, 190)
			end
		else
			outputChatBox ("Jogador invalido.", police, 190, 190, 190)
		end
	end
end
addCommandHandler ("retirar", retirardavtr)

Obs: Não testado.

Percebo que vc está com alguns vícios de programação, tente evitá-los:

  1. Use aspas duplas " nas strings que possuem mais de um caractere. Aspas simples ' é melhor usado para strings que possuem somente 1 caractere.
  2. Evite usar códigos #hex onde for desnecessário. Se o seu outputChatBox usa ao todo somente 1 cor, declare a cor direto nos parâmetros RGB em vez do texto. Assim vc não precisa usar o parâmetro colorcoded. Como fiz acima.
  3. Evite condição negativa (If not). Se possível, faça-o como um else. Assim como fiz acima.

Espero ter ajudado.

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