Перейти к содержанию

Рекомендуемые сообщения

Задумался про проблему генерации неписями рассказов "на лету" через скрипт. Но надо сделать так, чтобы каждый NPC рассказывал одну и ту-же историю, а не каждый раз новую. Казалось бы, банальность, однако для этого надо запоминать параметры беседы для каждого NPC, в то время как генерирующий скрипт должен быть один и вызываться из диалога.

 

Допустим, NPC с ID MyNPC не уникален, их несколько. Где же запоминать параметры каждого NPC?

Можно повесить на MyNPC локальный скрипт, тогда у каждого экземпляра MyNPC будет свой скрипт со своими переменными.

Осталось только как-то читать и писать эти переменные из глобального скрипта. Напрямую это пожалуй невозможно. Но можно организовать обмен через глобальные переменные. Механизм такой:

 

Имеем две глобальные переменные, скажем My_Buffer и My_Flag.

 

Из топика диалога вызывается глобальный скрипт, который генерирует случайное число, записывает его в My_Buffer. А в My_Flag записывает единицу (поднимает "сигнальный флажок", что означает наличие новой информации в MyBuffer).

 

Локальный скрипт (он выполняется на всех экземплярах MyNPC)сначала проверяет, находится ли данный экземпляр рядом с игроком (что позволяет предположить, что диалог имеет место с этим экземпляром). Если это верно, то проверяем MyFlag.

Если MyFlag == 1, считываем MyBuffer и обнуляем MyFlag (опускам "сигнальный флажок"). Вуаля. Мы передали случайное число в локальный скрипт и он сохранил его в локальной переменной

Теперь из локального скрипта вызываем ещё один глобальный скрипт (собственно, сам генератор), которому через другую глобальную переменную передаём полученное случайное число. Он использует это число для генерации на его основе псевдослучайной последовательности. Из одинаковых исходных чисел получаются одинаковые последовательности, следовательно и текст будет генерироваться каждый раз один и тот-же. Этот текст выводится с помощью функции MessageBox в текущее диалоговое окно.

 

Получив один раз случайное число, локальный скрипт запоминает его и все последующие разы вызывает генератор подав ему на вход именно это число, что позволяет получать один и тот-же текст.

Недостаток данной методики в том, что она довольно сложна, кроме того, если рядом с игроком стоит сразу несколько MyNPC, рассказанную одним историю может запомнить другой. Впрочем, тут тоже можно что-нить придумать при желании.

 

- ----

 

Кстати, то, что с одной стороны недостаток, с другой может оказаться достоинством. Ведь таким образом стоящий рядом NPC может "услышать" что-то в разговоре игрока и другого NPC и вмешаться в беседу, рассказав свою историю вместо того, кого об этом попросили!

Изменено пользователем z-Hunter
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...