local UIS = game:GetService("UserInputService") -- Service used to get the key pressed by a player
 local Part = game.Workspace.Part
UIS.InputBegan:connect(function(input,gameProcessed)
    if input.UserInputType == Enum.UserInputType.Keyboard then -- Checks if the player uses a Keyboard
        if input.KeyCode == Enum.KeyCode.E then script.Parent.Sound:Play() wait(5) script.Parent.Sound:Stop() -- Checks if the player pressed the "E" key
            if UIS:GetFocusedTextBox() == nil then -- Checks if the player is typing on a textbox like the chat... If not then...
                for i,v in pairs(game.Workspace.NPCs:GetChildren()) do -- Finds all the children from the folder. In this case it will find all the NPCs
                    local mag = (v.Torso.Position-game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude -- Makes a variable for the position between the character and the npc.
                    if mag <= 10 then -- If the magnitude is less than or equal to 10 studs then
                        print() --start of effect
							game.Workspace.ColorKey.BrickColor = BrickColor.new("Lime green")
                         for j = 6,-7,-.5 do
							Part.Position = Vector3.new(-4, j, 0)
							wait(.01)
						  end
				
							wait(2)
							
							for t = -7, 6, .5 do
								Part.Position = Vector3.new(-4, t, 0)
								wait(.01)
							end
							game.Workspace.ColorKey.BrickColor = BrickColor.new("Really red")
							-- end of effect

                       	for i = 1,0.6,-0.05 do
                            wait()
                            script.Parent.ImageColor3 = Color3.new(i,i,i)
                        end
                        wait()
                        for i = 0.6,1,0.05 do
                            wait()
                            script.Parent.ImageColor3 = Color3.new(i,i,i)
                        end
                        --This effect is like when you pressed a button it will darken.
                        v.NPCTalk:FireServer()
                    end
                end
            end
        end
    end
end)
 
while wait() do
    script.Parent.Visible = false -- Makes it invisible on screen
    for i,v in pairs(game.Workspace.NPCs:GetChildren()) do -- Finds all the children from the folder. In this case it will find all the NPCs
        local mag = (v.Torso.Position-game.Players.LocalPlayer.Character.HumanoidRootPart.Position).magnitude -- Makes a variable for the position between the character and the npc.
        if mag <= 10 then -- If the magnitude is less than or equal to 10 studs then
            local WSP = game.Workspace.CurrentCamera:WorldToScreenPoint(v.Torso.Position) -- The position of the NPC's Torso to 2d
            script.Parent.Visible = true
            script.Parent.Position = UDim2.new(0,WSP.X,0,WSP.Y)
            script.Parent.TextLabel.Text = "to chat with "..v.Name -- Refreshes the text and puts the name of the npc
        end
    end
end

2 comments

0

contextactionservice and userinputstate