Вот откопал по памяти, в поиске, пару старых сообщений на эту тему.
Zirrex Пытался заставить всех НПС говорить свои диалоги приватно, чтобы они не мешали играть остальным игрокам, но ничего не выходит. Использовал функцию:
Neverwinter Script
void ActionStartConversation(object oObjectToConverseWith, string sDialogResRef="", int bPrivateConversation=FALSE, int bPlayHello=TRUE)
По умолчанию стоит эта функция:
Neverwinter Script
int BeginConversation(string sResRef="", object oObjectToDialog=OBJECT_INVALID)
И вот что странно, ведь когда sDialogResRef пустой, в описании так и написано, скрипт должен использовать диалог по умолчанию, т.е. диалог, который установлен в настройках НПС, но почему-то, когда в скрипте пишешь (""), то НПС становится нем как рыба.
Zirrex Lex, а как ты сам скрипт оформлял? Если вспомнить, то сама функция находится в сприпте "nw_c2_default4". Так вот вместо "BeginConversation()" я писал так:
Neverwinter Script
AssignCommand(oShouter, ActionStartConversation(OBJECT_SELF, "", TRUE, FALSE));
Работать не желает. Стоит удалить все после "OBJECT_SELF", и закрыть скобку, как диалог тут же оживает.
Aiwan, это то понятно. Мне же не разговор НПС нужен, а чтобы в момент обращения игрока к НПС, остальные игроки не видели диалога, который создает НПС игроку, обратившемуся к нему.
Приведу простой пример. Идет квест. Подбегает к НПС персонаж, который в квесте не участвует, и активирует диалог. Фразы НПС вылезают в общий чат и приводят к "спаму" разговорного чата, что несколько дезориентирует тех, кто участвует в квесте, и мешает игре квестовиков.
В дальнейшем я хочу все диалоги перевести на переменные, и брать их оттуда, генерируя диалог на ходу, но надо еще разобраться, как это сделать. Лучше иметь одну базу диалогов, чем для каждого нового НПС делать отдельный файл. Во-первых, диалоги можно выделить любым цветом, ну и конечно же скрыть от показа, когда они не нужны окружающим НПС игрокам.
Zirrex Попробую так. Но, что странно, уже пробовал делать подобным образом, и не вышло.
Забавно, какие-то НПС отвечают, какие-то нет. Не очень понимаю, по какому принципу выбирает.
И вот что интересно, если написать:
Neverwinter Script
AssignCommand(OBJECT_SELF, ActionStartConversation(oShouter, ""));
Общаются все, но стоит добавить:
Neverwinter Script
AssignCommand(OBJECT_SELF, ActionStartConversation(oShouter, "", TRUE));
Как некоторые тут же замолкают. Глюк?
З.Ы. Надо больше спать, совсем уже не соображаю...