[Fallout Inspired] Terminal

Hello, I’m back working on another thing for fun which is scripting related its a field im not doing too hot in but heres what i made (Everything was made via me with the help of a lot of devpost on the fourm and a few videos)

Blender model


image


Studio View (Model)


Display (Scripts/In-game)

image


(My bad for the quality)


Scripts (local and normal scripts)

image


Open scripts (Local and Normal)
Open script (Local script)
local frame1 = script.Parent.Frame
local terminal1 = script.Parent.Terminal
local terminalworkspace = workspace["terminal V.0.1"]
local prompta = game.Workspace["terminal V.0.1"].Hitbox.E

local Top_text = [[Safe Lock Mechanism Status: Locked]]
local Gui_TText = script.Parent.Terminal.Top

local Bottom_text = [[> Accessing Safe Functions...]]
local Gui_BText = script.Parent.Terminal.Bottom

local Index = 1
local Index1 = 1

prompta.Triggered:Connect(function(input)
	frame1.Visible = true
	terminal1.Visible = true
	terminalworkspace.WORDS.Material = Enum.Material.Neon
	game.Workspace["terminal V.0.1"].LL.SpotLight.Enabled = true
	print("Opened")
	while Index <= #Top_text do
		Gui_TText.Text = string.sub(Top_text, 1, Index)
		Index = Index + 1
		wait(delay)
	end
	wait(0.5)
	while Index1 <= #Bottom_text do
		Gui_BText.Text = string.sub(Bottom_text, 1, Index1)
		Index1 = Index1 + 1
		wait(delay)
	end
end)

Animation loader (Script)
local ProximityPrompt = script.Parent
local Anim = script:WaitForChild("Idle") 

game.Workspace["terminal V.0.1"].Hitbox.E.Triggered:Connect(function(plr)
	local hum = plr.Character:WaitForChild("Humanoid") 
	local loadAnim = hum.Animator:LoadAnimation(Anim) 

	loadAnim:Play() 
end)

Open Lights (Normal script)
local prompta = game.Workspace["terminal V.0.1"].Hitbox.E



prompta.Triggered:Connect(function()
	game.workspace["terminal V.0.1"].WORDS.Material = Enum.Material.Neon
	game.Workspace["terminal V.0.1"].LL.SpotLight.Enabled = true
end)

Lookat script (Local Script)
local lookpart = workspace["terminal V.0.1"].rotation
local RS = game:GetService("RunService")
local plr = game.Players.LocalPlayer
local prompta = game.Workspace["terminal V.0.1"].Hitbox.E


prompta.Triggered:Connect(function()
	RS.RenderStepped:Connect(function()
		if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
			plr.Character.HumanoidRootPart.CFrame = CFrame.new(plr.Character.HumanoidRootPart.CFrame.Position, lookpart.Position)
			wait(1)
			print("test")
			game.StarterGui["Terminal_ V.0.1"]["Open scripts"]["Lookat script"].Enabled = false
			return
		end
	end)
end)


Telport script
local speed = 5
local playerMod = require(game:GetService("Players").LocalPlayer.PlayerScripts:WaitForChild("PlayerModule"))

local controls = playerMod:GetControls()


game.Workspace["terminal V.0.1"].Hitbox.E.Triggered:Connect(function()
	game.Players.LocalPlayer.Character:MoveTo(game.Workspace["terminal V.0.1"].teleportParta.Position)
	game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame *= CFrame.Angles(math.rad(0),math.rad(180),math.rad(0))
	controls:Disable()
end)

Close scripts (WIP)

image

Close (Local script)
local player = game:GetService("Players")
local frame = player.LocalPlayer.PlayerGui["Terminal_ V.0.1"].Frame
local playerMod = require(game:GetService("Players").LocalPlayer.PlayerScripts:WaitForChild("PlayerModule"))
local controls = playerMod:GetControls()
local frame2 = player.LocalPlayer.PlayerGui["Terminal_ V.0.1"].Terminal


script.Parent.MouseButton1Click:Connect(function()
	frame.Visible = false
	frame2.Visible = false
	game.Workspace["terminal V.0.1"].LL.SpotLight.Enabled = false
	game.Workspace["terminal V.0.1"].WORDS.Material = Enum.Material.Marble
	controls:Enable()
end)

Issues:

  1. When tested with 2 players the user using the Terminal once they exit the light still glows for the player NOT in the terminal. But its off for the user using the terminal (I think its because I can’t make Close Light a normal script like Open Light in scripts
Players View


  1. Player is still facing the rotation when out of the Terminal
Picture for 2

3.The animation is still playing even after closing the terminal [FIXED]

The fix was easy I had to do

for _, v in pairs(hum.Animator:GetPlayingAnimationTracks()) do
	v:Stop()
end

The point of this is to show what I’ve done over 4-5 days
I’m not just asking for help but also feedback if you have any. Other than that thanks have a good Night/Day (Do keep in mind im a bit new to scripting because, I’ve never got too invested in scripting lol)

1 Like

Also do keep in mind this is not finished by any means, far from it as I plan to make these in the future after improving my first Version

just do Anim:Stop() when you close the GUI

(for the animation playing after prompt ended problem)

2 Likes

I’ve been testing that and nothing happens code

local Anim = game.StarterGui["Terminal_ V.0.1"]["Open scripts"]["Animation loader"]:WaitForChild('Idle') 

game.StarterGui["Terminal_ V.0.1"].Frame.Exit.MouseButton1Click:Connect(function(plr)
	local hum = plr.Character:WaitForChild("Humanoid") 
	local loadAnim = hum.Animator:LoadAnimation(Anim) 
	loadAnim:Stop()
end)
1 Like

You need to iterate through all the animations and stop the one you need.
Example:

for _, v in pairs(Humanoid.Animator:GetPlayingAnimationTracks()) do
	if v.Name=="Hold" then v:Stop() end
end
2 Likes

So yeah, I was doing testing with that in 3 ways A seprate script a Normal script refrencing a proxy prompt it went well


Issue is its not what I want to refrence I want to refrence a button named “Exit” in the gui thus I did. (Local script refrencing the exit button which is a Child of the so-called ‘Exit’ button both are in starter gui.
And I got Infinite yield possible on 'Players.lsand13.PlayerGui.Terminal_ V.0.1.Frame.Exit.Close:WaitForChild("Idle")

Code
local player = game:GetService("Players")
local frame = player.LocalPlayer.PlayerGui["Terminal_ V.0.1"].Frame
local playerMod = require(game:GetService("Players").LocalPlayer.PlayerScripts:WaitForChild("PlayerModule"))
local controls = playerMod:GetControls()
local frame2 = player.LocalPlayer.PlayerGui["Terminal_ V.0.1"].Terminal
local Anim = script:WaitForChild("Idle")


script.Parent.MouseButton1Click:Connect(function(plr)
	frame.Visible = false
	frame2.Visible = false
	game.Workspace["terminal V.0.1"].LL.SpotLight.Enabled = false
	game.Workspace["terminal V.0.1"].WORDS.Material = Enum.Material.Marble
	controls:Enable()
	print('tets')
	local hum = plr.Character:WaitForChild("Humanoid")

	local loadAnim = hum.Animator:LoadAnimation(Anim)

	for _, v in pairs(hum.Animator:GetPlayingAnimationTracks()) do
		if v.Animation.Name == "Idle" then
			v:Stop()
		end
	end
	
end)

After all that I did it with a seprate normal script thats a child of ‘exit’ which makes nothing happen

Could I please have the model for the terminal? I don’t need any scripts I just think the model looks amazing and I would really like to have it, if possible. If you don’t want to then don’t feel forced to.

1 Like

Oh sure! I don’t mind this is all for fun I’m glad you like the model.

1 Like

Thank you so much! Quick question, did you make the model using blender? Just like the post if you did.
Thanks!

Yeah In blender I had to draft it mutiple times due to me not getting a good refrence but I was able to get it done so I can start scripting.

1 Like