+[T]rakin Posted November 25, 2018 Share Posted November 25, 2018 Como faço para quando um veiculo cair da água ele ir para uma determinada posição? Link to comment
Other Languages Moderators Lord Henry Posted November 25, 2018 Other Languages Moderators Share Posted November 25, 2018 (edited) Não sei se esta é a melhor maneira de fazer isso, pois não achei nenhuma função que detecte colisão na água. Então usei um onClientRender para ficar verificando o tempo todo se o veículo está na água ou não. Para não ficar verificando de maneira desnecessária, quando o jogador sai do veículo, ele deve parar de verificar. E quando ele entrar em um veículo como motorista, começa a verificar novamente. client-side local posX, posY, posZ = 527.23, 631.9, 2.19 -- Posição teste onde o veículo será movido ao colidir na água. function vehicleRender () if getPedOccupiedVehicle (localPlayer) then if isElementInWater (getPedOccupiedVehicle (localPlayer)) then setElementPosition (getPedOccupiedVehicle (localPlayer), posX, posY, posZ) end end end addEventHandler ("onClientVehicleEnter", root, function (thePlayer, seat) if thePlayer == localPlayer then if seat == 0 then addEventHandler("onClientRender", root, vehicleRender) end end end) addEventHandler ("onClientVehicleExit", root, function (thePlayer, seat) if thePlayer == localPlayer then removeEventHandler("onClientRender", root, vehicleRender) end end) Edited November 25, 2018 by Lord Henry 1 Link to comment
+[T]rakin Posted November 25, 2018 Author Share Posted November 25, 2018 1 hour ago, Lord Henry said: Não sei se esta é a melhor maneira de fazer isso, pois não achei nenhuma função que detecte colisão na água. Então usei um onClientRender para ficar verificando o tempo todo se o veículo está na água ou não. Para não ficar verificando de maneira desnecessária, quando o jogador sai do veículo, ele deve parar de verificar. E quando ele entrar em um veículo como motorista, começa a verificar novamente. client-side local posX, posY, posZ = 527.23, 631.9, 2.19 -- Posição teste onde o veículo será movido ao colidir na água. function vehicleRender () if getPedOccupiedVehicle (localPlayer) then if isElementInWater (getPedOccupiedVehicle (localPlayer)) then setElementPosition (getPedOccupiedVehicle (localPlayer), posX, posY, posZ) end end end addEventHandler ("onClientVehicleEnter", root, function (thePlayer, seat) if thePlayer == localPlayer then if seat == 0 then addEventHandler("onClientRender", root, vehicleRender) end end end) addEventHandler ("onClientVehicleExit", root, function (thePlayer, seat) if thePlayer == localPlayer then removeEventHandler("onClientRender", root, vehicleRender) end end) Funciono perfeitamente, outra pergunta tem como tipo quando o veiculo teleporta depois de uns segundos ele ser destruido? É para um servidor de rpg ai eu quero que nao fica veiculo do local para os jogadores não fica roubado sabe Link to comment
Other Languages Moderators Lord Henry Posted November 26, 2018 Other Languages Moderators Share Posted November 26, 2018 Você pode usar um setTimer para destruir o veículo após tantos segundos que ele ficou vazio e também pode cancelar esse timer quando alguém entrar no veículo. No entanto, não existe uma função que detecta quando um veículo é criado. Se o player criar o veículo e não entrar nele, o timer não será criado. server-side vehTimer = {} addEventHandler ("onVehicleExit", getRootElement(), function (thePlayer, seat, jacker, forcedByScript) local counter = 0 for seat, player in pairs(getVehicleOccupants(source)) do counter = counter + 1 end if counter == 0 then -- Se o veículo ficou vazio após esse player sair dele, então: vehTimer[source] = setTimer (destroyElement, 5000, 1, source) -- destroi o veículo após 5 segundos que alguém saiu dele. end end) addEventHandler ("onVehicleEnter", getRootElement(), function (thePlayer, seat, jacked) if isTimer (vehTimer[source]) then killTimer (vehTimer[source]) end end) 1 1 Link to comment
+[T]rakin Posted November 26, 2018 Author Share Posted November 26, 2018 Opa muito obrigado! Link to comment
+[T]rakin Posted November 26, 2018 Author Share Posted November 26, 2018 Mano me desculpa por está incomodando mas agora que me lembrei os jogadores não pode usar o barco senão teleporta também rsrs. Alguma forma para saber qual veiculo o jogador está?? Link to comment
Other Languages Moderators Lord Henry Posted November 26, 2018 Other Languages Moderators Share Posted November 26, 2018 Só usar getVehicleType e verificar se o veículo não é um barco. local posX, posY, posZ = 527.23, 631.9, 2.19 -- Posição teste onde o veículo será movido ao colidir na água. function vehicleRender () if getPedOccupiedVehicle (localPlayer) then if isElementInWater (getPedOccupiedVehicle (localPlayer)) then setElementPosition (getPedOccupiedVehicle (localPlayer), posX, posY, posZ) end end end addEventHandler ("onClientVehicleEnter", root, function (thePlayer, seat) if thePlayer == localPlayer then if seat == 0 then if getVehicleType (source) ~= "Boat" then addEventHandler("onClientRender", root, vehicleRender) end end end end) addEventHandler ("onClientVehicleExit", root, function (thePlayer, seat) if thePlayer == localPlayer then removeEventHandler("onClientRender", root, vehicleRender) end end) 1 Link to comment
brunob22 Posted November 27, 2018 Share Posted November 27, 2018 ate onde eu sei. o forum e para ajudar o pessoal com problemas em seus codigo. não distribuir codigos prontos assim nunca vao aparender Link to comment
Vazern Posted November 28, 2018 Share Posted November 28, 2018 On 26/11/2018 at 10:04, Lord Henry said: Só usar getVehicleType e verificar se o veículo não é um barco. local posX, posY, posZ = 527.23, 631.9, 2.19 -- Posição teste onde o veículo será movido ao colidir na água. function vehicleRender () if getPedOccupiedVehicle (localPlayer) then if isElementInWater (getPedOccupiedVehicle (localPlayer)) then setElementPosition (getPedOccupiedVehicle (localPlayer), posX, posY, posZ) end end end addEventHandler ("onClientVehicleEnter", root, function (thePlayer, seat) if thePlayer == localPlayer then if seat == 0 then if getVehicleType (source) ~= "Boat" then addEventHandler("onClientRender", root, vehicleRender) end end end end) addEventHandler ("onClientVehicleExit", root, function (thePlayer, seat) if thePlayer == localPlayer then removeEventHandler("onClientRender", root, vehicleRender) end end) Desculpem pelo erro, meu PC está horrível. Então, acho que se ele utilizasse um loop, com getElementsByType("vehicle") e uma verificação de controller, ele consegue fazer isto. setTimer(function() for index, vehicle in ipairs(getElementsByType("vehicle") do if not vehicle:getController() then vehicle:destroy() end end end, 4000, 0) Não sei se isto faz lógica, só testando. 14 hours ago, brunob22 said: ate onde eu sei. o forum e para ajudar o pessoal com problemas em seus codigo. não distribuir codigos prontos assim nunca vao aparender Acho que a forma que ajuda, vai de cada um, ele passou o código, mas também explicou, sendo assim, cabe ao criador do tópico, e a quem está vendo aquilo, absorver ou não o conhecimento. No entanto, o que você está fazendo é pior ainda, criticar um usuário, que de uma forma, ou de outra, o ajudou. Link to comment
DNL291 Posted November 30, 2018 Share Posted November 30, 2018 Também tem aquele helicóptero que fica na água. 1 Link to comment
Other Languages Moderators Lord Henry Posted November 30, 2018 Other Languages Moderators Share Posted November 30, 2018 20 minutes ago, DNL291 said: Também tem aquele helicóptero que fica na água. Seasparrow (447). 1 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