SherlocK Posted September 10, 2019 Author Share Posted September 10, 2019 (edited) 49 minutes ago, Lord Henry said: Atualize essa aba com F5. Eu coloquei o código depois. ah ok, vc eh foda, vou testar ele aqui entao ja pronto daí vou assistir o vídeo entender bem toda a linha de raciocínio e comandos, daí eu vou tentar escrever o código pra entender melhor cada função 1 hour ago, Lord Henry said: Vídeo: Reveal hidden contents [vídeo removido pelo usuário] Script: Reveal hidden contents 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 funcionou perfeitamente, e muito melhor doq eu queria, parabéns man, muito obg pela sua ajuda, desculpa ocupar seu tempo, desculpa ae qlqr coisa sou muito leigo com essas paradas de programação e vc tirou um tempo para me ajudar. Obrigado pela força man, se eh foda Edited September 11, 2019 by Lord Henry 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