Jump to content

Carro fantasma


Recommended Posts

Posted

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

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

Posted

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).

Please do not PM me with scripting related question nor support, use the forums instead.

Posted

"Adivinhar" o caminho até ao jogador não é uma coisa assim tão fácil, a menos que seja em linha reta ou num mapa muito pequeno que só tem paredes.

"[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007

Posted

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 ) 

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

Posted

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.

"[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007

Posted

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.

Please do not PM me with scripting related question nor support, use the forums instead.

Posted

eu estava em duvida de criar em client ou em server. Acho melhor cria o ped e o carro pelo server. valeu vou melhorar o script

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

  • 2 weeks later...
Posted

funcionaria se eu conseguisse pegar o angulo do jogador local e faze com que o carro se dirija até ele sempre em frente?

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

Posted

Não, o carro simplesmente vai seguir na direção do jogador, mas vai bater contra qualquer obstáculo que apareça.

"[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007

Posted

existe algum metodo matematico para checar se a nova posição do jogador mudo mais pra x ou mais pra y?( quero usar isso para que o carro pegue as coordenadas certas do jogador local e eu conseguir usar setPedControlState)

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

Posted

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).

"[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007

Posted

obrigado a ambos pela ajuda. Anderl parece que o método de obstáculos e AI são melhores. vou estudar mais lua para fazer isso, ainda sou iniciante para AI, mas não vou desistir. Valeu DNL291 e Anderl.

560x95_FFFFFF_09FF00_050505_000000.png

"Querer não é poder, mas tentar é avançar"!

Posted

De nada :P

"[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007

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...