Hello, Uh... I need help to fiqure out what is wrong, Can ya'll do this for me? It's kinda long




--// Services


local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Players = game:GetService("Players")





--// Main Variables


local Detected NPC = nil
local Detected = false
local Chatting = false
local Skip = false 
local Exit = false





--// Player


local Player = Players.LocalPlayer
local Camera = game.Workspace.CurrentCamera

local Gui = script.Parent
local Sounds = Gui.Sounds
local PromptLabel = Gui.PromptLabel
local LineLabel = Gui.LineLabel





--// Character


local Character = Player.Character or Player.CharacterAdded:Wait()
local CharHMR = Character:WaitForChild("HumanoidRootPart")





--// NPC


local NPCS = game.Workspace:WaitForChild("NPCS")





--// Functions


UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.X then
		if Chatting == true then
			Exit = true 
			Sounds.Click:Play()
        end
    end
end)
       
     



UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.Z then
		if Chatting == true then
			Exit = true
			Sounds.Click.Play()
		end
	end
end)

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.E then
		
		
		if Detected == true then
			local Lines = DetectedNPC:FindFirstChild("Lines")
			
			if Lines then
				Sounds.Click:Play()
				
				Chatting = true
				Detected = false
				
				LineLabel.Text = " "
				
				PromptLabel:TweenSize(UDim2.new(0, 0, 0, 0), "Out", "Linear", 0.2)
				LineLabel:TweenSize(UDim2.new(0, 0, 0.8, 0), "In", "Linear", 0.2)                                                                                                        
		
				wait(0.5)
				
				for i, Line in pairs(Lines:GetChildren()) do
					local Text = Line.Value
					
					for i = 1, #Text do
						LineLabel.Text = string.sub(Text, 1, i)
						Sounds.Talk:Play()
						if Skip == true then 
							Skip = false
							LineLabel.Text = Exit
							break
						end
						if Exit == true then
							break
						end
						wait(0.07)
					end
					if Exit == true then
						Exit = false
						break
					end
					repeat wait() until Skip == true or Exit == true
					Skip = false                                                                                      
				end
				
				Exit = false
				Skip = false
				
				PromptLabel:TweenSize(UDim2(0, 0, 0, 0), "Out", "Linear")
				LineLabel:TweenSize(UDim2(0, 0, 0.8, 0), "In", "Linear")
				
				wait(0.5)
				
				Chatting = false
				Detected = false
			end
		end
	end
end)



--// Main Loop


RunService.RenderStepped:Connect(function()
	
end)
	
	
	if Detected == false and Chatting == false then
		for i, NPC in pairs(NPCS:GetChildren()) do
			local Humanoid = NPC:FindFirstChild ("Humanoid")
			local HMR = NPC:FindFirstChild("HumanoidRootPart")
			
			if Humanoid and HMR then
				if (HMR.Position - CharHMR.Position).magnitude < 15 then
					Detected = true
					DetectedNPC = NPC
				    PromptLabel:TweenSize(UDim2(0, 60, 0, 60), "In", "Linear")
					print(DetectedNPC.Name)
				end
			end
		
	    end
     end

   if Detected == true and Chatting == false then
	local Humanoid = NPC:FirstChild ("Humanoid")
	local HMR = NPC:FindFirstChild("HumanoidRootPart")		
	
    if Humanoid and HMR then
	    if (HMR.Position - CharHMR.Position).magnitude > 15 then
		    Detected = false
	        DetectedNPC = nil
	        PromptLabel:TweenSize(UDim2(0, 60, 0, 60), "Out", "Linear")
	        print("No Longer Detected NPC")
		else
			local WTSP = Camera:WorldToScreenPoint(HMR.Position)
			PromptLabel.Position = UDim2.new(0, WTSP.X, 0, WTSP.Y)
         end
     end
 end

 if Chatting == true then
	local Humanoid = DetectedNPC:FindFirstChild("Humanoid")
	local HMR = DetectedNPC:FindFirstChild("HumanoidRootPart")
	
	if Humanoid and HMR then
		Camera.CameraType = Enum.CameraType.Scriptable
		Camera.CFrame = Camera.CFrame:Lerp(HMR.CFrame * CFrame.new(-4, 4, -7) * CFrame.fromOrientation(math.rad(-20), math.rad(215), 0), 0.07) 
	end
else
	Camera.CameraType = Enum.CameraType.Custom
end



6 comments

0

By The Way, The Output Has no "Warnings"

0

is this a server or a local script?

0

maybe local script because everything the player interacts with needs a local script i think.

0

You should use game:GetService("Chat")

0

This is a local script, And also This Isn't your 'normal chat' system, It poss to be something else.

0