ViniGuzela Posted September 12, 2019 Share Posted September 12, 2019 (edited) 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 September 12, 2019 by ViniGuzela Link to comment
DNL291 Posted September 13, 2019 Share Posted September 13, 2019 Edita a função que warpa o veículo e troca por setElementPosition com as coordenadas desejadas. Link to comment
ViniGuzela Posted September 14, 2019 Author Share Posted September 14, 2019 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
DNL291 Posted September 14, 2019 Share Posted September 14, 2019 A função que teleporta o carro está no lado server, edita lá em vez disso. Link to comment
ViniGuzela Posted September 15, 2019 Author Share Posted September 15, 2019 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
DNL291 Posted September 15, 2019 Share Posted September 15, 2019 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
ViniGuzela Posted September 16, 2019 Author Share Posted September 16, 2019 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
DNL291 Posted September 16, 2019 Share Posted September 16, 2019 Se esse evento for compatível com o sistema que você usa sim. Só modificar o código e o setElementPosition. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now