Jump to content

Job Bombeito


Recommended Posts

Posted (edited)

Olá quero criar um job diferente, ao invés de ir no marker e "addCommandHandler" ou "onMarkerHit",  ter que apagar fogos de um local com o caminhão de bombeiro, para depois poder apagar o próximo fogo...

Ajudem Por Favor :D

Edited by danilin
  • Other Languages Moderators
Posted

Boa sorte amiguinho. Já tive essa ideia também, mas tive que parar de criar jobs para fazer manutenção dos outros resources.

  • Other Languages Moderators
Posted

Opa, e aí.

Então, não sei se minha lógica tá correta, mas vamos lá.

Você pode fazer uma gambiarra pra isso funcionar, com a seguinte receita de bolo: crie um pedestre, deixando-o com opacidade 0 (invisível), use também createFire para aplicar o fogo nesse pedestre. Feito isso, você pode verificar do lado client, usando onClientPedDamage se a arma que o jogador está usando para "atacar" (apagar o fogo) é o extintor. E, quando a vida do ped for menor que 0, você pode destruir o source(o pedestre) e o fogo, e então fazer um trigger para o lado server, dando uma recompensa ou sei lá o que você pretende.

Nunca coloquei em prática essa lógica, então não sei se pode funcionar, mas teste-a. :)

  • Other Languages Moderators
Posted
3 hours ago, MaligNos said:

Ele não quer saber como faz pra destruir o fogo, ele quer saber como faz para detectar que o fogo foi destruído pelo extintor. Ativando alguma função quando isso acontecer.

  • Other Languages Moderators
Posted (edited)
22 hours ago, MaligNos said:

Ah sim. @danilin, você pode usar o evento: onClientPlayerWeaponFire identificando a arma (se igual a extintor) e obtendo a localização (x,y,z) do alvo e usando nos parâmetros do extinguishFire(x,y,z,radius) que então caso retorne true o fogo foi apagado.

extinguishFire sempre retornará true, mesmo que não haja fogo no local. Só retorna false se houver algum parâmetro errado.

Edited by Lord Henry
Posted
1 hour ago, Lord Henry said:

extinguishFire sempre retornará true, mesmo que não haja fogo no local. Só retorna false se houver algum parâmetro errado.

Faz sentido, inclusive já meio que supos que isso ocorreria antes mesmo comentar (tô sem MTA, ai complica testes desse tipo)

Basta ele salvar as posições (x,y,z) utilizadas no createFire() e então no evento onClientPlayerWeaponFire verificar se a posição que está "atirando" com o extintor coincide com as utilizadas no createFire()  (seria bom utilizar alguma taxa de variação ( parâmetro size do createFire() ) em relação ao eixo central x,y,z na verificação, pois se não para apagar o fogo iria ter que mirar exatamente na coordenada x,y,z de criação do fogo) e então caso a verificação seja true usa o extinguishFire()

  • Other Languages Moderators
Posted

Estou fazendo uns testes aqui e estou conseguindo. Estou fazendo a coordenada com variação de 1 para os lados X, Y e Z. (Se o fogo está na posição 0, 0, 0 ele acerta até nas posições -1, -1, -1 até as posições 1, 1, 1.

Para facilitar esse cálculo, estou transformando as coordenadas em inteiros durante a verificação usando math.floor

O fogo não é um elemento, portanto não tem como usar getElementHealth nele. Então estou usando uma variável para estocar a "vida" do fogo. Acertando no fogo diminui a vida em 1. Quando chegar em 0, usa o extinguishFire e ativa a função de vitória.

O único problema que ainda estou tendo é que as vezes o jogador apaga o fogo com o extintor, mas ainda tem vida restante na variável, então o fogo não é visível mas ainda está sendo considerado vivo pelo script. Estou usando a vida de 60%, geralmente funciona perfeitamente e o fogo é apagado com sucesso.

Além de tudo isso, estou usando alguns dxDrawText na tela para informar ao jogador a quantidade de vida do fogo e informar se ele está acertando ou errando o alvo. Também estou usando um createColSphere para que o fogo só apareça quando o jogador colidir nele, dessa forma o fogo só é criado quando o jogador chega perto, pois se demorar demais o fogo apaga sozinho.

Enfim, o código não está tão grande mas está um tanto complexo.

Posted

Realmente essa questão da vida do fogo é algo a ser pensado, pois pelo meu comentário anterior provavelmente o fogo iria apagar rápido (logo que atirasse ia ser acionado o extinguishFire e então apagaria) não ia ter a "graça" de ficar com o extintor um certo tempo até apagar. Talvez definir que com x acertos do onClientPlayerWeaponFire reduziria o tamanho do fogo aos poucos, começa com createFire(x,y,z,10) e com o tempo vai decrementando...

x == 10
createFire(x,y,z,10)
extinguishFire(x,y,z,10)
x == 20
createFire(x,y,z,9)
extinguishFire(x,y,z,9)

 

  • Other Languages Moderators
Posted

Entendi o que vc quis dizer. Mas acho que ficar apagando e criando um fogo novo o tempo todo seria muito pesado. Sem contar que é perceptível que "nasce" um fogo novo.

  • Other Languages Moderators
Posted (edited)

Existe a opção de editar. Mas ela só é visível por um curto período depois de postar, creio que até 5 minutos. Após esse tempo, não é mais possível editar.

Ela aparece do lado da opção de Quote.

Edited by Lord Henry
Posted
5 hours ago, danilin said:

Confundir as teclas amigo, e não tem a opção de renomear o texto. mais tenho certeza que você entendeu que a palavra correta e bombeiro :D

 

On 11/09/2018 at 02:16, danilin said:

Olá quero criar um job diferente, ao invés de ir no marker e "addCommandHandler" ou "onMarkerHit",  ter que apagar fogos de um local com o caminhão de bombeiro, para depois poder apagar o próximo fogo...

Ajudem Por Favor :D

 

  • Other Languages Moderators
Posted

E como vai o job? Algum progresso? Vc tentou alguma das coisas que falamos? O que exatamente você não está conseguindo fazer nele?

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