[C]outo Posted January 3, 2021 Share Posted January 3, 2021 Boa noite galera, estou com um problema sobre o uso "getPedOccupiedVehicleSeat". Abaixo eu quero inserir a função que o veículo se torne destrutível quando o jogador sai do veículo, mas quero que isso aconteça apenas quando o jogador seja o motorista do veículo, mas todas as maneiras que eu tento a função não funciona pelo fato do evento "onClientVehicleExit" chamar a função quando o jogador já está fora do veículo, assim não funcionando o "getPedOccupiedVehicleSeat". O que eu devo fazer? function onClientVehicleExit(player) if (player == localPlayer) then if getElementData(player,"Modo Passivo") then for k,v in ipairs(getElementsByType("vehicle")) do setVehicleDamageProof(source,false) exports["bvd-notices"]:addNotification("VEÍCULO DESTRUTIVEL",'error') end end end end addEventHandler("onClientVehicleExit", root, onClientVehicleExit) Desde já, agradeço quem puder ajudar. Link to comment
Otavio Posted January 3, 2021 Share Posted January 3, 2021 Voce deve realizar essa funcao no server! Usa-se este evento no server( onVehicleStartExit ) , nao use onVehicleExit, pois nao ira destruir o veiculo, pois o player ja estara fora dele! eu fiz um script parecido para meu servidor esses dias, que ficou desta forma function AclParaCadaCarro(source) local seat = getPedOccupiedVehicleSeat(source) local Veiculo = getPedOccupiedVehicle(source) local Conta = getAccountName(getPlayerAccount(source)) if getElementModel(Veiculo) == 416 and not isObjectInACLGroup( "user."..Conta, aclGetGroup ("SAMU")) and seat == 0 then local x, y, z = getElementPosition(Veiculo) removePedFromVehicle(source, Veiculo) setElementPosition(source, x+4, y, z) end end addEventHandler("onVehicleEnter", getRootElement(), AclParaCadaCarro) --[[ Server-Side ]] 1 Link to comment
Boechat Posted January 6, 2021 Share Posted January 6, 2021 On 02/01/2021 at 22:55, [C]outo said: todas as maneiras que eu tento a função não funciona pelo fato do evento "onClientVehicleExit" chamar a função quando o jogador já está fora do veículo Se o problema é esse, use o onClientVehicleStartExit, que vai chamar a função quando o player começar a sair do veículo. Link to comment
[C]outo Posted January 6, 2021 Author Share Posted January 6, 2021 On 03/01/2021 at 12:50, Otavio said: Voce deve realizar essa funcao no server! Usa-se este evento no server( onVehicleStartExit ) , nao use onVehicleExit, pois nao ira destruir o veiculo, pois o player ja estara fora dele! eu fiz um script parecido para meu servidor esses dias, que ficou desta forma function AclParaCadaCarro(source) local seat = getPedOccupiedVehicleSeat(source) local Veiculo = getPedOccupiedVehicle(source) local Conta = getAccountName(getPlayerAccount(source)) if getElementModel(Veiculo) == 416 and not isObjectInACLGroup( "user."..Conta, aclGetGroup ("SAMU")) and seat == 0 then local x, y, z = getElementPosition(Veiculo) removePedFromVehicle(source, Veiculo) setElementPosition(source, x+4, y, z) end end addEventHandler("onVehicleEnter", getRootElement(), AclParaCadaCarro) --[[ Server-Side ]] Interessante, obrigado amigo. 3 hours ago, Boechat said: Se o problema é esse, use o onClientVehicleStartExit, que vai chamar a função quando o player começar a sair do veículo. Também tive essa ideia, mas ocorreria alguns problemas durante o jogo pelo fato de não acontecer a real saída do veículo pelo jogador. Link to comment
Other Languages Moderators Lord Henry Posted January 6, 2021 Other Languages Moderators Share Posted January 6, 2021 @Otavionão se usa source como parâmetro de função. @[C]outofaça o script server-side, com onVehicleExit e utilizando o parâmetro do assento para saber se foi o motorista que saiu do veículo. function desblindar (thePed, seat) if (seat == 0) then if (getElementData (thePed, "Modo Passivo")) then setVehicleDamageProof (source, false) outputChatBox ("Seu veículo agora está destrutível.", thePed) end end end addEventHandler ("onVehicleExit", root, desblindar) 2 Link to comment
[C]outo Posted January 6, 2021 Author Share Posted January 6, 2021 7 minutes ago, Lord Henry said: @Otavionão se usa source como parâmetro de função. @[C]outofaça o script server-side, com onVehicleExit e utilizando o parâmetro do assento para saber se foi o motorista que saiu do veículo. function desblindar (thePed, seat) if (seat == 0) then if (getElementData (thePed, "Modo Passivo")) then setVehicleDamageProof (source, false) outputChatBox ("Seu veículo agora está destrutível.", thePed) end end end addEventHandler ("onVehicleExit", root, desblindar) A uns dias atras eu fiz dessa mesma maneira, mas quando o jogador desce recebe apenas a mensagem mas o veículo continua blindado Problema resolvido, agradeço a todos que ajudaram. Link to comment
Other Languages Moderators Lord Henry Posted January 6, 2021 Other Languages Moderators Share Posted January 6, 2021 (edited) Provavelmente pois você ficou sem o modo passivo. Então a condição não vai passar e o veículo continuará blindado. Remova a condição de modo passivo para que o veículo desblinde sempre que o motorista sair dele. (se quiser evitar que ocorra com Staffs usando /pro, vc deverá criar tal exceção.) Verifique se o veículo está blindado antes de desblindá-lo e enviar a mensagem, caso contrário a mensagem vai ficar aparecendo pra todo mundo que sair de seus veículos, mesmo se não estiverem blindados. function desblindar (thePed, seat) if (seat == 0) then -- Se o jogador saiu do assento do motorista, então: if (isVehicleDamageProof (source)) then -- Se o veículo está blindado quando o jogador sair dele, então: setVehicleDamageProof (source, false) -- Desblinda o veículo. outputChatBox ("Seu veículo agora está destrutível.", thePed) end end end addEventHandler ("onVehicleExit", root, desblindar) Edited January 6, 2021 by Lord Henry 1 Link to comment
[C]outo Posted January 6, 2021 Author Share Posted January 6, 2021 3 minutes ago, Lord Henry said: Provavelmente pois você ficou sem o modo passivo. Então a condição não vai passar e o veículo continuará blindado. Remova a condição de modo passivo para que o veículo desblinde sempre que o motorista sair dele. (se quiser evitar que ocorra com Staffs usando /pro, vc deverá criar tal exceção.) Verifique se o veículo está blindado antes de desblindá-lo e enviar a mensagem, caso contrário a mensagem vai ficar aparecendo pra todo mundo que sair de seus veículos, mesmo se não estiverem blindados. function desblindar (thePed, seat) if (seat == 0) then -- Se o jogador saiu do assento do motorista, então: if (isVehicleDamageProof (source)) then -- Se o veículo está blindado quando o jogador sair dele, então: setVehicleDamageProof (source, false) -- Desblinda o veículo. outputChatBox ("Seu veículo agora está destrutível.", thePed) end end end addEventHandler ("onVehicleExit", root, desblindar) Já foi resolvido, o problema que estava ocorrendo era que o veículo estava sendo blindado duas vezes no server e client. Retirei do client e a função está funcionando perfeitamente. Obrigado amigo. 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