Olá pessoal, bem, eu queria apresentar a vocês meu sistema de prompt custom, feito do 0 com OOP. Bem, não é nada muito complexo, mas na pratica ele serve como um sistema de prompt igual o do roblox. Quando ele termina de executar ele retorna uma função.
Como podem ver no video, toda vez que a ação é completa o cubo diminui de tamanho.
Para ele funcionar é muito simples.
local function call()
game.TweenService:Create(
workspace.Part,
TweenInfo.new(.25,Enum.EasingStyle.Sine),
{
Size = workspace.Part.Size/1.2
}
):Play()
end
local Proximity = require(game.ReplicatedStorage.ProximityService)
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
repeat wait() until character.PrimaryPart
local new = Proximity:newButton(workspace.Part, character.PrimaryPart, call)
new:Initialize(Enum.KeyCode.F)
Bem, oque isso significa? Seria como um método de criação, toda vez que você quiser adicionar uma part a esse sistema você usa a função Proximity:newButton(workspace.Part, character.PrimaryPart, call)
Dessa forma criando um novo botão dentro da part(Primeira variável)
A segunda variável é onde ele é relativa, caso você passe nil, ao invés dele retornar um erro, a parte onde se calcula a posição se torna a Câmera do player.
Oque o “new:Initialize(Enum.KeyCode.F)” faz? Simples, ele inicia o processo de cálculos de posição. O único parâmetro que ele pede é Tecla que você quer usar no botão, caso você não queira passar nenhuma, por padrão é definida como E.
Essas não são as únicas funções, tem mais:
Função Disable():
Código
Ele desativa todo o sistema por padrão desconectando todas as funções fazendo com que tudo pare de gastar memoria. Exemplo de Código:
new:Disable() – Muito simples kkkkk.
Função ChangeConfig():
Código
Ela exige duas variaveis, o nome do que você quer mudar(var1), e o novo valor(var2);
Todas as configurações são estas:
Configurations = {
OneClick = false; -- One click seria uma opção caso queira que ele seja ativo somente uma vez e nada mais.
TerminalWarns = true; -- Avisos serão criados no output caso seja true.
ActiveDistance = 10; -- Distancia minima para ser ativo
HoldDuration = .5; -- Duração em segundos de quanto tempo é a função
Button = Enum.KeyCode.E -- tecla padrão caso não definida.
}
Update 1:
Adicionado Eventos ao module, para melhor controle. Segue a lista:
IsOnArea: Ativo toda vez que o player está dentro da área(retorna distancia em studs);
Exemplo em código
local new = Proximity:newButton(workspace.Part, character.PrimaryPart, call)
new:Initialize(Enum.KeyCode.F)
new.IsOnArea(function(Distancia)
warn('Player está na área', Distancia)
end)
ActionCompleted: Ativo toda vez que o player tenha terminado a ação(sem retorno);
Exemplo em código
local new = Proximity:newButton(workspace.Part, character.PrimaryPart, call)
new:Initialize(Enum.KeyCode.F)
new.ActionCompleted:Connect(function()
warn('Ação completa')
end)
Activated: Ativo toda vez que o player está proximo e segura a tecla de atalho(sem retorno)
Exemplo em código
local new = Proximity:newButton(workspace.Part, character.PrimaryPart, call)
new:Initialize(Enum.KeyCode.F)
new.Activated:Connect(function()
warn('Ação em andamento.')
end)
Bem, é isto, espero que gostem de usar, o link para ele é este: https://www.roblox.com/library/6998495750/ProximityService