Neste tutorial, veremos como fazer uma almofada de cura simples. Este tutorial é um script, não uma construção. Este script pressupõe que você já tenha algo configurado como:
- Área de trabalho
- Heal Pad
- Parte
- Script
- Parte
- Heal Pad
Caso contrário, crie algo idêntico a isto. Você pode nomeá-lo como quiser, pois o nome não importa.
Vamos entrar na parte do script. Vamos começar fazendo um evento Touched.
script.Parent.Touched: Connect (function (hit) end)
O código dentro desta função agora será executado sempre que a parte for tocada. Mas não podemos simplesmente curar o jogador. Como podemos saber se é um jogador? Se descobrisse que a parte era apenas o chão, o script quebraria. Precisamos adicionar uma instrução if para determinar se é um jogador. Fazemos isso adicionando esta declaração:
script.Parent.Touched: Connect (function (hit) if hit.Parent: FindFirstChildOfClass ("Humanoid") then end end)
Esta instrução if verifica se o hit tem um Humanóide em seu pai. Mas por que em seu pai, não em si mesmo? Simples. O 'golpe', se for o personagem de um jogador, é um dos membros, não o modelo. Agora que temos a instrução if, vamos curar o jogador.
script.Parent.Touched: Connect (function (hit) local hum = hit.Parent: FindFirstChildOfClass ("Humanoid") se hum then hum.Health = hum.MaxHealth end end)
Este código define o A saúde do humanóide à sua saúde máxima, essencialmente curando-os. Simples assim.
O script anterior permitia que o jogador curasse até 100% de sua saúde, mas e se quisermos apenas curá-los um pouco? Bem, usamos o mesmo código de antes, só que em vez de definir a saúde do jogador para um valor fixo, adicionamos à saúde atual.
script.Parent.Touched: Connect (function (hit) local hum = hit.Parent: FindFirstChildOfClass ("Humanoid") se hum then hum.Health = hum.MaxHealth * 0.1 + hum.Health end end)
Cada vez que o jogador tocar a parte agora, isso adicionará 10% da saúde máxima do jogador. Coloquei o símbolo * antes do sinal + para evitar qualquer confusão com a ordem das operações.
Um último problema, porém: a função dispara muitas vezes! Queremos que ele seja acionado apenas uma vez e, em seguida, inicie o resfriamento. Para fazer isso, usamos debounce.
local db = false script.Parent.Touched: Connect (function (hit) if db == false then db = true local hum = hit.Parent: FindFirstChildOfClass ("Humanoid") se hum then hum.Health = hum.MaxHealth * 0.1 + hum. Fim de espera de saúde (5) db = fim falso)
Aqui, a função será acionada uma vez e aguarde 5 segundos antes de poder ser acionada novamente.