manawydan Posted February 18, 2013 Share Posted February 18, 2013 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
DNL291 Posted February 19, 2013 Share Posted February 19, 2013 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
Anderl Posted February 19, 2013 Share Posted February 19, 2013 "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. Link to comment
manawydan Posted February 20, 2013 Author Share Posted February 20, 2013 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
Anderl Posted February 20, 2013 Share Posted February 20, 2013 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
manawydan Posted February 20, 2013 Author Share Posted February 20, 2013 pode me dizer alguns erros que cometi? Link to comment
DNL291 Posted February 21, 2013 Share Posted February 21, 2013 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
manawydan Posted February 21, 2013 Author Share Posted February 21, 2013 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 Link to comment
manawydan Posted March 2, 2013 Author Share Posted March 2, 2013 funcionaria se eu conseguisse pegar o angulo do jogador local e faze com que o carro se dirija até ele sempre em frente? Link to comment
Anderl Posted March 2, 2013 Share Posted March 2, 2013 Não, o carro simplesmente vai seguir na direção do jogador, mas vai bater contra qualquer obstáculo que apareça. Link to comment
manawydan Posted March 2, 2013 Author Share Posted March 2, 2013 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) Link to comment
Anderl Posted March 2, 2013 Share Posted March 2, 2013 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
manawydan Posted March 3, 2013 Author Share Posted March 3, 2013 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. 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