How to put this Dialogue SCRIPT on an NPC game object?

Hi!
I found this awesome RPG-style NPC Dialogue Script on YouTube, and applied it to my own project.

using UnityEngine;
using System.Collections;

public class NPCDialog : MonoBehaviour {
	//Declar variables.
	string[] NPCTalk = new string[7];
	string[] PCTalk = new string[7];
	int myIndex = 0;
	bool myTalking = true;

	void Start()
	{
	//Initialize values.
		NPCTalk[0] = "Wake up!";
		NPCTalk[1] = "You showed up in our barn last night. Who are you?";
		NPCTalk[2] = "You look like someone who’s been running all night. My dear... Those cuts of yours look bad. Have you been attacked?";
		NPCTalk[3] = "You should go wash up, my wife will heat some soup, and we could talk more.";
		NPCTalk[4] = "Our village is called Şchei.";
		NPCTalk[5] = "Just get those wounds cleaned, and we can discuss further on the matter. You will find our well in the middle of the yard, by the cornfields. Come see me at my house. It’s the only two storeyed one in this yard.";
		NPCTalk[6] = "Don’t wonder off just yet. I could use a fellow like yourself.";

		PCTalk[0] = @"Where am I?";
		PCTalk[1] = @"...";
		PCTalk[2] = @"I met a pack of wolves.";
		PCTalk[3] = @"What is this place?";
		PCTalk[4] = @"Is there any work to be found around here?";
		PCTalk[5] = @"I will. Thank you.";
		PCTalk[6] = @"Understood.";
		}

	void OnGUI () {
	//Display the Dialog.
	if(myTalking){
			GUI.Label(new Rect (40, 200, 350, 120), NPCTalk[myIndex]);
			if (GUI.Button(new Rect(20,270,350,30), PCTalk[myIndex]))
				if(myIndex >= 6)
					myIndex= 6;
			    else
			     myIndex++;
			 if (GUI.Button(new Rect(20,310,150,30),"Say again."))
			    myIndex = 0;
			 if (GUI.Button(new Rect(20,350,100,30), "Goodbye!"))
			    myTalking = false;
			    }
		}
	}

Normally, it is supposed to be attached to the MainCamera of the Player, but I would want to somehow attach it to an NPC game object, with a collider as trigger. There has to be some function to find the game object tagged ‘Player’, find it’s ‘MainCamera’ component and only then should it show.
I’m fairly new to scripting, so please if you know some functions to make this possible, help me out!
If not, I wish you a pleasant day!

Based on what you have asked for,

  • There has to be some function to find the game object tagged ‘Player’
    GameObject.FindWithTag

  • find it’s ‘MainCamera’ component
    GameObject.GetComponent
    If your Main Camera is a child object of player: Transform.Find

  • and only then should it show
    → Not sure what you mean but logic would be like as per pseudo-code below:

    if(ConditionsAreMet) {
    // Do what is to be performed
    }