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

Meu comentário foi útil? Deixe um Thanks :D

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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

  • Moderators
Posted

Nah...

Eu prefiro fazer meu próprio, usando createFire.

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

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

Hello, world.


Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese)
Tutorial sobre tabelas - Visitar (Brazilian Portuguese)
Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
  • 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.

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

  • 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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

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

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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

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)

 

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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

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

Meu comentário foi útil? Deixe um Thanks :D

  • 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

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

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

 

Meu comentário foi útil? Deixe um Thanks :D

  • 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?

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

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