Jump to content

Job Bombeito


Recommended Posts

  • Other Languages Moderators

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

Link to comment
  • Other Languages Moderators
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
Link to comment
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()

Link to comment
  • Other Languages Moderators

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.

Link to comment

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)

 

Link to comment
  • Other Languages Moderators

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
Link to comment
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

 

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