Jump to content

Como Irei fazer com oque o veiculo irá para um lugar especifico


Recommended Posts

Quero criar uma função com que eu resgate o veiculo, preciso de uma função que ao clicar o carro sera teletransportado para um local definido

só fiz o local aonde irá clicar:

Button_VS_Warp_s = guiCreateStaticImage(381, 98, 166, 25, "images/button_standard.png", false, Window_VS)
Button_VS_Warp_o = guiCreateStaticImage(381, 98, 166, 25, "images/button_mouse.png", false, Window_VS)
Button_VS_Warp = guiCreateLabel(381, 98, 166, 25, "Resgatar", false, Window_VS)
guiSetFont(Button_VS_Warp, "default-bold-small")
guiLabelSetColor(Button_VS_Warp, 255, 255, 255)
guiLabelSetVerticalAlign(Button_VS_Warp, "center")
guiLabelSetHorizontalAlign(Button_VS_Warp, "center")


aqui o carro trás até mim, porem não quero que irá até o player

	elseif source == Button_VS_Warp then
	       if not isInColExport () then
		triggerServerEvent("WarpMyVehicle", localPlayer, ID)

 

Edited by ViniGuzela
Link to comment
13 hours ago, DNL291 said:

Edita a função que warpa o veículo e troca por setElementPosition com as coordenadas desejadas.

Button_VS_sn = guiCreateLabel(381, 28, 166, 25, "Spawnar", false, Window_VS)
elseif ( source == Button_VS_Warp ) then
		fadeCamera( false )
		setTimer( fadeCamera, 1500, 1, true )
		setTimer( setElementPosition, 1500, 1, Cplayer, -1639.25244, 1203.28857, 8.22800 )
		guiSetVisible( Button_VS_sn, false )
			showCursor( false )

assim?

 

Link to comment
11 hours ago, DNL291 said:

A função que teleporta o carro está no lado server, edita lá em vez disso.

elseif ( source == Button_VS_Warp ) then
fadeCamera( false )
setTimer( fadeCamera, 1500, 1, true )
setTimer( setElementPosition, 1500, 1, Cplayer, -1639.25244, 1203.28857, 8.22800 )
guiSetVisible( Window_VS, false )
showCursor( false )

é isso?

Link to comment
  • Moderators

Cplayer é o que? Precisa ser o carro.

Em qual lado está o carro? Você vai precisar da referência dele, ou seja variável.

Se está no lado server desista desse código, não tem nada a ver com o veículo.

Está no evento "WarpMyVehicle" ? Se sim, modifique lá, fazendo essas alterações naquele trecho.

Link to comment
16 hours ago, DNL291 said:

Cplayer é o que? Precisa ser o carro.

Em qual lado está o carro? Você vai precisar da referência dele, ou seja variável.

Se está no lado server desista desse código, não tem nada a ver com o veículo.

Está no evento "WarpMyVehicle" ? Se sim, modifique lá, fazendo essas alterações naquele trecho.

detran = { -- x, y, z, rotation, vehicle, colShape, ownerAccount
	[1] = {746.4, -1334.81, 13.54, 180, false, nil, nil}, -- Esta coordenada está no seu script.
	[2] = {756.4, -1334.81, 13.54, 180, false, nil, nil}, -- Esta coordenada eu inventei.
}

customCarNames = {}

function criarShapes () -- Cria cada colShape nas vagas e coloca eles na mesma table das vagas, como sendo o 5º elemento de cada uma.
    for i, vaga in ipairs (detran) do -- Para cada vaga, faça:
        vaga[6] = createColSphere (vaga[1], vaga[2], vaga[3], 4) -- Adiciona um quinto elemento na vaga, depois do false. Que é uma colShape esférica de 4 metros de raio.
    end
    addEventHandler ("onColShapeLeave", resourceRoot, liberarVaga) -- Ativa essa função quando um elemento sair de dentro de qualquer colShape deste resource. (se usar root, funcionaria com todos os colShapes do server e seria mais pesado de processar)
    addEventHandler ("onColShapeHit", resourceRoot, liberarVehicle) -- Ativa essa função quando um elemento entrar em qualquer colShape deste resource. Vai verificar se o elemento que entrou é o dono daquela vaga.
end
addEventHandler ("onResourceStart", resourceRoot, criarShapes)

addEvent("WarpMyVehicle", true)
addEventHandler("WarpMyVehicle", root, function(id)
	local vehicle = getVehicleByID(id)
    if isElement(vehicle) then
        if (not getVehicleOccupant (vehicle, 0)) and (not getVehicleOccupant (vehicle, 1)) and (not getVehicleOccupant (vehicle, 2)) and (not getVehicleOccupant (vehicle, 3)) then -- Se o veículo a ser rebocado está vazio, então:
            for i, vaga in ipairs (detran) do -- Para cada vaga, faça:
                if (vaga[5] == vehicle) then
                    return outputChatBox ("Seu veículo #00FF66"..(customCarNames[getElementModel(vehicle)] or getVehicleNameFromModel(getElementModel(vehicle))).."#ff3232 já está no DETRAN.", source, 255, 50, 50, true) -- Manda isso pro jogador e para de executar essa função.
                end
            end
            if getElementInterior(source) == 0 then
                if getPlayerMoney(source) >= tonumber(1000) then
                    for i, vaga in ipairs (detran) do -- Para cada vaga, faça:
                        if not vaga[5] then -- Se a vaga está desocupada (não tem nenhum veículo no 5º elemento da vaga), então:
                            vaga[5] = vehicle
                            vaga[7] = getAccountName (getPlayerAccount (source))
                            -- takePlayerMoney (source, 1000)
                            setElementPosition (vaga[5], vaga[1], vaga[2], vaga[3]) -- Troquei o unpack por declarar direto os itens da table.
                            setElementRotation (vaga[5], 0, 0, vaga[4])
                            -- outputChatBox ("congelou, trancou e blindou") -- Somente para testes.
                            setElementFrozen (vaga[5], true) -- Congela o veículo.
                            setVehicleLocked (vaga[5], true) -- Tranca o veículo.
                            setVehicleDamageProof (vaga[5], true) -- Blinda o veículo.
                            setVehicleDoorOpenRatio (vaga[5], 0, 0)
                            setVehicleDoorOpenRatio (vaga[5], 1, 0)
                            setVehicleDoorOpenRatio (vaga[5], 2, 0)
                            setVehicleDoorOpenRatio (vaga[5], 3, 0)
                            setVehicleDoorOpenRatio (vaga[5], 4, 0)
                            setVehicleDoorOpenRatio (vaga[5], 5, 0) -- Fecha todas as portas do veículo, para evitar que entrem nele pra zoar.
                            setVehicleEngineState (vaga[5], false) -- Desliga o motor do veículo.
                            outputChatBox ("O seu veiculo #00ff66"..(customCarNames[getElementModel(vehicle)] or getVehicleNameFromModel(getElementModel(vehicle))).."#c1c1c1 foi levado ao DETRAN.", source, 193, 193, 193, true)
                            return
                        end
                    end
                    outputChatBox ("Não há vagas disponíveis no DETRAN.", source, 255, 50, 50, true)
                else
                    outputChatBox ("Você não tem dinheiro suficiente para levarmos seu veículo até o DETRAN.", source, 255, 50, 50, true)
                end
            else
                outputChatBox ("Não podemos levar seu veículo ao DETRAN se você estiver em interiores.", source, 255, 50, 50, true)
            end
        else
            outputChatBox ("Não podemos levar seu veículo enquanto ele estiver ocupado por alguém.", source, 255, 50, 50, true)
        end
    else
        outputChatBox ("O seu veiculo não está spawnado.", source, 255, 50, 50, true)
    end
end)

function getVehicleByID(id)
	for i, veh in ipairs (getElementsByType("vehicle")) do
		if getElementData(veh, "ID") == id then
			return veh
		end
	end
end

function liberarVaga (leaveElement) -- Essa função é ativada quando qualquer elemento sair de qualquer colShape deste resource. O evento ativador só é adicionado depois que os colShapes são criados, evitando erros.
    for i, vaga in ipairs (detran) do -- Para cada vaga, faça:
        if (source == vaga[6]) then -- Se o colShape cujo elemento saiu pertence a esta vaga, então: (source = colShape envolvido no evento)
            if (leaveElement == vaga[5]) then -- Se o elemento que saiu é o veículo desta vaga, então: (evita de liberar a vaga quando algo sai da vaga sem ser o veículo dela)
                vaga[5] = false -- Libera a vaga.
                vaga[7] = nil -- Libera o proprietário da vaga.
                if (getVehicleController(leaveElement)) then
                    outputChatBox ("Liberou a vaga #00ff66"..i.."#c1c1c1 do DETRAN.", getVehicleController(leaveElement), 193, 193, 193, true) -- Somente para testes.
                end
                return -- Para de executar essa função pois não precisa nem verificar o resto do loop.
            elseif (leaveElement) and (getElementType (leaveElement) == "player") and (not getPedOccupiedVehicle (leaveElement)) then -- Senão se o elemento que saiu for um jogador que não está em um veículo, então:
                if (getAccountName (getPlayerAccount (leaveElement)) == vaga[7]) then -- Se o jogador que saiu tem o mesmo login do proprietário desta vaga, então:
                    -- outputChatBox ("congelou, trancou e blindou") -- Somente para testes.
                    setElementPosition (vaga[5], vaga[1], vaga[2], vaga[3])
                    setElementRotation (vaga[5], 0, 0, vaga[4])
                    setElementFrozen (vaga[5], true) -- Congela novamente o veículo.
                    setVehicleLocked (vaga[5], true) -- Tranca novamente o veículo.
                    setVehicleDamageProof (vaga[5], true) -- Blinda novamente o veículo.
                    setVehicleDoorOpenRatio (vaga[5], 0, 0)
                    setVehicleDoorOpenRatio (vaga[5], 1, 0)
                    setVehicleDoorOpenRatio (vaga[5], 2, 0)
                    setVehicleDoorOpenRatio (vaga[5], 3, 0)
                    setVehicleDoorOpenRatio (vaga[5], 4, 0) -- Fecha todas as portas do veículo novamente.
                    setVehicleDoorOpenRatio (vaga[5], 5, 0)
                    setVehicleEngineState (vaga[5], false) -- Desliga o motor do veículo.
                    outputChatBox ("Seu #00ff66"..(customCarNames[getElementModel(vaga[5])] or getVehicleNameFromModel(getElementModel(vaga[5]))).."#c1c1c1 voltou a ficar protegido e trancado.", leaveElement, 193, 193, 193, true)
                    return -- Para de executar essa função pois não precisa verificar o resto do loop.
                end
            end
        end
    end
end

function liberarVehicle (hitElement) -- Essa função é ativada quando qualquer elemento entra em qualquer colShape deste resource.
    for i, vaga in ipairs (detran) do -- Para cada vaga, faça:
        if (source == vaga[6]) then -- Se o colShape cujo elemento entrou pertence a esta vaga, então: (source = colShape envolvido no evento)
            if (hitElement) and (getElementType (hitElement) == "player") then -- Se o elemento que colidiu for um player, então:
                if (getAccountName (getPlayerAccount (hitElement)) == vaga[7]) then -- Se o jogador que entrou tem o mesmo login do proprietário desta vaga, então: (evita de liberar o veículo quando um jogador entra no colShape sem ser dono dela)
                    -- outputChatBox ("descongelou, destrancou e desblindou") -- Somente para testes.
                    setElementFrozen (vaga[5], false) -- Descongela o veículo.
                    setVehicleLocked (vaga[5], false) -- Destranca o veículo.
                    setVehicleDamageProof (vaga[5], false) -- Desblinda o veículo.
                    outputChatBox ("Este é seu #00ff66"..(customCarNames[getElementModel(vaga[5])] or getVehicleNameFromModel(getElementModel(vaga[5]))).."#c1c1c1. Liberamos ele pra você.", hitElement, 193, 193, 193, true)
                    return -- Para de executar essa função pois não precisa nem verificar o resto do loop.
                end
            end
        end
    end
end

com isso vou conseguir?

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