SidneiJR Posted April 20, 2018 Share Posted April 20, 2018 local posicoes = { { 2457.5451660156, -1658.8039550781, 13.3046875 }, } function PosicaoPlayer ( thePlayer, command ) if (getElementDimension(thePlayer) ~= 0) then return end local azar = math.random ( #posicoes ) local veh = getPedOccupiedVehicle(thePlayer) if veh then setElementPosition(veh, unpack ( posicoes [ azar ] ) ) outputChatBox ( "#ffffff「 #00ccffTELE #ffffff」 #FFFFFF".. getPlayerName(thePlayer) .." #FFFFFFFoi para o CJ com seu veículo #ffffff( #00ccff/cjcar #ffffff)", root, 0, 255, 0, true ) end end addCommandHandler ( "cjcar", PosicaoPlayer ) Com o getPedOccupiedVehicle ele verifica o player que está dentro ou tentando entrar no veiculo. Existe outra função que possa verificar apenas quem está dentro do veículo? Link to comment
DNL291 Posted April 20, 2018 Share Posted April 20, 2018 getVehicleOccupant ( veículo, assento ) assento: 0 é o do motorista; 1 pra cima são os passageiros. Você pode usar esta função: isVehicleEmpty Se quiser fazer a verificação só pros passageiros, modifique o inicio do loop for seat = 0, e substitua 0 com 1. 1 Link to comment
SidneiJR Posted April 20, 2018 Author Share Posted April 20, 2018 Tentei diversas formas de aplicar nesse código, mas todas foram sem sucesso. Link to comment
DNL291 Posted April 20, 2018 Share Posted April 20, 2018 local posicoes = { { 2457.5451660156, -1658.8039550781, 13.3046875 }, } function PosicaoPlayer ( thePlayer, command ) if (getElementDimension(thePlayer) ~= 0) then return end local azar = math.random ( #posicoes ) local veh = getPedOccupiedVehicle(thePlayer) if veh then if isVehicleEmpty( veh ) then outputChatBox("este veículo só tem o motorista") else outputChatBox("este veículo tem passageiro(s)") end setElementPosition(veh, unpack ( posicoes [ azar ] ) ) outputChatBox ( "#ffffff「 #00ccffTELE #ffffff」 #FFFFFF".. getPlayerName(thePlayer) .." #FFFFFFFoi para o CJ com seu veículo #ffffff( #00ccff/cjcar #ffffff)", root, 0, 255, 0, true ) end end addCommandHandler ( "cjcar", PosicaoPlayer ) function isVehicleEmpty( vehicle ) if not isElement( vehicle ) or getElementType( vehicle ) ~= "vehicle" then return true end local passengers = getVehicleMaxPassengers( vehicle ) if type( passengers ) == 'number' then for seat = 1, passengers do if getVehicleOccupant( vehicle, seat ) then return false end end end return true end Link to comment
SidneiJR Posted April 20, 2018 Author Share Posted April 20, 2018 Não expliquei totalmente para que seria a troca das funções. Com o getPedOccupiedVehicle ele verifica o player que está dentro ou tentando entrar no veículo, em alguns servidores que possuem esse tipo de teleporte o player costuma se aproveitar dessa função e acaba "movendo" veículos. Como seria esse "movendo"? Simples. Eles apertam f ou g e utilizam uma bind do teleporte rapidamente. Minha intenção é verificar se o player está dentro do veículo e não tentando entrar nele. Link to comment
Other Languages Moderators Lord Henry Posted April 20, 2018 Other Languages Moderators Share Posted April 20, 2018 Já tentou com GetPedOccupiedVehicleSeat? 1 Link to comment
SidneiJR Posted April 20, 2018 Author Share Posted April 20, 2018 2 hours ago, Lord Henry said: Já tentou com GetPedOccupiedVehicleSeat? Tentei utilizar, porém não achei uma forma correta de inserir no código. Link to comment
DNL291 Posted April 21, 2018 Share Posted April 21, 2018 Acho que entendi o que você disse. Fiz um código que verifica se o jogador está entrando no veículo, tente isto: local playerTempVeh = {} local posicoes = { { 2457.5451660156, -1658.8039550781, 13.3046875 }, } function PosicaoPlayer ( thePlayer, command ) if (getElementDimension(thePlayer) ~= 0) then return end local azar = math.random ( #posicoes ) local veh = getPedOccupiedVehicle(thePlayer) if veh and not playerTempVeh[thePlayer] then setElementPosition(veh, unpack ( posicoes [ azar ] ) ) outputChatBox ( "#ffffff「 #00ccffTELE #ffffff」 #FFFFFF".. getPlayerName(thePlayer) .." #FFFFFFFoi para o CJ com seu veículo #ffffff( #00ccff/cjcar #ffffff)", root, 0, 255, 0, true ) end end addCommandHandler ( "cjcar", PosicaoPlayer ) -- addEventHandler( "onVehicleStartEnter", root, function(player,seat) playerTempVeh[player] = source setTimer( function(p) if playerTempVeh[p] then playerTempVeh[p] = nil end setElementFrozen( p, true ) setTimer( setElementFrozen, 50, 1, p, false ) end,10000, 1, player ) end ) addEventHandler( "onElementDestroy", root, function() if getElementType(source) ~= "vehicle" then return end local enteringPlayers = getPlayersFromVehicleInTable( playerTempVeh, source ) if enteringPlayers and #enteringPlayers > 0 then for i, player in ipairs(enteringPlayers) do if isElement(player) and playerTempVeh[player] then playerTempVeh[player] = nil end end end end ) addEventHandler( "onVehicleEnter", root, function(p, seat) if playerTempVeh[p] then playerTempVeh[p] = nil end end ) function removeFromTable() if playerTempVeh[source] then playerTempVeh[source] = nil end end addEventHandler( "onPlayerQuit", root, removeFromTable ) addEventHandler( "onPedWasted", root, removeFromTable ) function getPlayersFromVehicleInTable( t, v ) if type(t) ~= "table" or not isElement(v) then return false end local players = {} for player, vehicle in pairs(t) do if vehicle == v then table.insert( players, player ) end end return players end 1 Link to comment
SidneiJR Posted April 21, 2018 Author Share Posted April 21, 2018 @DNL291 Muito obrigado funcionou perfeitamente, confesso que não esperava algo tão complexo Link to comment
DNL291 Posted April 21, 2018 Share Posted April 21, 2018 (edited) De nada! Como você pode ver no timer, coloquei 10 segundos no tempo limite para o jogador poder entrar no veículo (às vezes tem aquele bug do ped travar em outras coisas e demorar muito), aí dou um freeze e unfreeze pra parar a animação de entrar. Edited April 21, 2018 by DNL291 Link to comment
SidneiJR Posted April 21, 2018 Author Share Posted April 21, 2018 Não consegui identificar o problema, mas por algum motivo no debug aparece erro no setElementFrozen. O teste que eu tinha feito foi em servidor local, já no servidor com players apresentou esse problema, que aparece de forma aleatória. Fora isso sem problemas no script. Link to comment
DNL291 Posted April 21, 2018 Share Posted April 21, 2018 setTimer( function(p) if playerTempVeh[p] then playerTempVeh[p] = nil end if isElement(p) then setElementFrozen( p, true ) setTimer( setElementFrozen, 150, 1, p, false ) end end,10000, 1, player ) Substitua o timer com esse código. Se você perceber qualquer erro, digite /debugscript 3 e mostre aqui a mensagem do debug. 1 Link to comment
SidneiJR Posted April 22, 2018 Author Share Posted April 22, 2018 Sem erros agora. Obrigado mais uma vez. 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