You can try to play with account tags,for example,when a player complete your quest,this quest give the player's account a special tag.
After,on the OnMoveOver of your teleport,you can check the account tag,if the tag is not in his account,cannot use the teleport.
If you want the player repeat the quest to enter,just remove the tag when the player use the teleport in the OnMoveOver method.
When player complete the quest:
Account acct = from.Mobile.Account as Account;
acct.SetTag("YourQuest", "Completed");
When your player use the teleport:
Account acct = from.Mobile.Account as Account;
acct.SetTag("YourQuest", "NotCompleted");
And the OnMoveOver tag check:
if (acct.GetTag("YourQuest") == "NotCompleted")
{
from.SendMessage("Your need to complete YourQuest to use this teleport.");
}
Make sure you got at top of teleport script:
If you want to player just get the quest and complete one time,forget about the "NotCompleted" tag.