1) Обычно, когда делаются квесты, создаются журнальные записи и по этим журнальным записям определяется, что квест уже давали
2) Просто надо делать так, чтобы название топика встречалось в уже добавленных топиках типа Приветствия
3) А ты не делай объект типа контейнер – ты делай объект типа активатор, на месте твоего контейнера или двери, на него вешай скрипт, который делает невидимым реальную дверь или контейнер, располагающуюся по тем же координатам, так при активации этого скрипта ты можешь делать проверку на нахождение ключа в инвенторе или чего-нибудь подобное, после чего реальная дверь или контейнер становится видимым, заменяя предыдущий активатор… Но можно и по другому
Просто вешай скрипт, где есть проверка на активацию объекта, таким образом ты можешь заменять действие, которое должно происходить при активации объекта (открытие двери, контейнера) на свое – замени проверкой на наличие ключа или чего ты там хочешь и все
4) Поставь ему Alert 100 и Class Guard, а потом навесь на него такой скрипт в котором происходить например проверка на то, не атакуется ли NPC и дальность до атакуемого NPC (это опционально – чтобы он «слышал крики
») если проверка показывает, что хороших обежают и что он их слышит – делай его враждебным к игроку через Set Fight 100 или чего-то подобное – дома посмотрю подробнее.