Jump to content

Carro fantasma


Recommended Posts

novamente venho incomodar vocês.

estou tentando criar um script de carro fantasma( criar um carro, criar um ped, warpa o ped no carro, deixa o ped invisivel e faze o ped dirigir ate o jogador)

bom a unica coisa que não consegui foi faze o ped dirigir até o jogador.

se tiverem alguma sugestão de como faze!

obrigado

Link to comment

Use a função setPedControlState (clientside), com o control accelerate para acelerar o veículo e brake_reverse para desacelerar. Além disso, vehicle_left e vehicle_right para virar o veículo para os lados; e obter a posição do jogador, você deve calcular o tempo para virar o veículo, de acordo com a posição do jogador.

Se o jogador estiver se movendo você pode usar o event onClientRender para atualizar as posições do jogador.

Se você criar o veículo de frente para o jogador não precisará fazer isso (a menos que o jogador esteja andando).

Link to comment

bom, ja comecei o script, porem o carro não aparece! qual o problema?

function carroFantasma() 
    local x1, y1, z1 = 138.70454406738, 2491.1267089844, 16.484375 
    CarrFant = createVehicle(466, x1, y1, z1) 
    MotoristaFant = createPed(234, x1, y1, z1) 
warpPedIntoVehicle ( MotoristaFant, CarrFant ) 
setElementAlpha(MotoristaFant, 0) 
end 
addEventHandler("onClientResourceStart", getRootElement(),  carroFantasma) 
  
  
addEvent("onVeiculoAndarPraFrente",true) 
addEvent("onVeiculoAndarPraEsquerda",true) 
addEvent("onVeiculoAndarPraDireita",true) 
addEvent("onVeiculoAndarPraTras",true) 
  
  
addEventHandler("onVeiculoAndarPraFrente",root, 
function ( ) 
    setPedControlState ( MotoristaFant, "accelerate", true )  
end) 
  
addEventHandler("onVeiculoAndarPraEsquerda",root, 
function ( ) 
    setPedControlState ( MotoristaFant, "vehicle_left", true )  
end) 
  
addEventHandler("onVeiculoAndarPraDireita",root, 
function ( ) 
    setPedControlState ( MotoristaFant, "vehicle_right", true )  
end) 
  
addEventHandler("onVeiculoAndarPraTras",root, 
function ( ) 
    setPedControlState ( MotoristaFant, "brake_reverse", true )  
end) 
  
function atualizarCordenadas() 
    local players = getElementsByType ( "player" ) 
    for theKey,thePlayer in ipairs(players) do 
    if (getElementData(players, "alvo") = true) then 
    local x, y, z = getElementPosition(players) 
end 
end 
end 
addEventHandler ( "onClientRender", getRootElement(), atualizarCordenadas ) 

Link to comment

Esse código além de estar com erros, você está usando métodos bem maus ( não eficientes, cheios de eventos desnecessários ).

Also, a menos que o veículo perseguidor esteja mesmo atrás do veículo sendo seguido, esse código simplesmente vai fazer o perseguidor seguir os mesmos controles que o sendo perseguido.

Link to comment

Evento "onClientResourceStart" é clientside, use "onResourceStart" com o argumento resourceRoot invés de getRootElement() (você não quer criar o veículo com o ped sempre que algum resource for iniciado).

Pra que tantos custom events? Você não precisa criar vários eventos para ser chamado pelo serverside. Basta fazer assim:

addEventHandler("callSetPedControlState", root,  
function (control) 
    setPedControlState( MotoristaFant, control, true ) 
end) 

E definir o control quando chamar com triggerClientEvent/triggerEvent. Se quiser pode até colocar a boolean para ser definida no argumento, para ativar/desativar a função.

A função para atualizar as coordenadas pode ser inútil, a menos que você precise criar.

Link to comment
  • 2 weeks later...

Isso não vai assim.. Você tem que programar um "motor" (não é bem esse nome, mas foi o melhor que encontrei para explicar isso) de AI (inteligência artificial) para o veículo efetuar alguma coisa quando lhe aparece um obstáculo, e saber todos os caminhos possiveis para chegar ao jogador (há funções na wiki para você verificar se há alguma coisa na sua frente, você pode usá-los, mas você vai ter que pensar em todas as possibilidades como por exemplo, você vai em linha reta, mas tem uma parede na frente, você tem dois caminhos: o da esquerda e o da direita, os dois estão abertos, mas o da esquerda está fechado mais à frente, enquanto que o da direita é o certo. Você tem que fazer uma AI que consiga descobrir o caminho certo).

Agora, se tudo isso for num mapa com apenas algumas paredes ou até um sítio livre de obstáculos, então você pode simplesmente usar onClientRender, getElementPosition e getElementRotation para atualizar o script sobre as coordenadas do jogador e mudar a rota do veículo (se for um mapa com apenas algumas paredes, poderá ser necessário o método descrito acima por mim, mas será mais fácil visto que não será necessário a verificação de obstáculos na frente do veículo, exceto as paredes obviamente).

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...