×
Меню
Индекс

MSFD Показ переменных и предопределенного текста

 
Чтобы показать переменную в окне сообщения, вы должны использовать синтаксис, описывающий формат числа для отображения.
 
ВНИМАНИЕ — в оригинальном файле справки очень много неверной информации об этом!
 
MessageBox "You have %.0f days left", days_left
 
Символ % обозначает переменную.
Цифра после точки определяет число цифр для отображения, "f" показывает переменную типа float.
 
В файле справки перечислены несколько типов (f для float, D для short или long и S для переменной типа string), из них я смог заставить работать только f.
 
Тем не менее, %g и %G отлично работает для переменных типа short и long (спасибо Niyt Owl).
Вы можете использовать такой формат  %.3g, но число назначенных цифр будет просто проигнорирован.
Эти обозначения не жестко закреплены за типами переменных, %.3f также покажет переменную типа short или long.
 
Строковые переменные упоминаются в справке, но, насколько мне известно, не реализованы.
Тем не менее, вы можете использовать предопределенный текст в окнах сообщения, но НЕ используйте % для этого – в скриптах применяется ^ (спасибо Ragnar_GD):
 
Предопределенный текст:
^PCName     Имя игрока.
^PCClass     Класс игрока.
^PCRace     Раса игрока.
^PCRank     Ранг игрока во фракции говорящего.
^NextPCRank     Следующий ранг игрока во фракции говорящего.
^Cell         Текущая ячейка игрока.
^Global     Любая глобальная переменная. Тип Float показывается как 1.1, например ^Gamehour
^Name     Имя говорящего.
^Race     Раса говорящего.
^Class     Класс говорящего.
^Faction  Фракция говорящего. Если он не принадлежит ни к какой фракции, то будет пропуск.
^Rank     Ранг говорящего.
 
Примечание: вы также можете отображать глобальную переменную обычным способом, используя синтаксис, как показано выше (%.1f), что приведет к тем же результатам.
Если использовать ^Global в книге, Морр вылетает при попытке доступа или изменения переменной, когда книга открыта.
Этого нужно избегать любой ценой (Информация с форумов / Chris_K)
 
Примечание: Последний список в скриптах работает несколько не так, как в диалогах, так как эти переменные, по умолчанию назначаются как значения для игрока, а не для вызывающего актера. Так что ^Name и ^PCName покажут имя игрока.
 
Пример: Дурацкий простой скрипт, демонстрирующий весь возможный синтаксис:
 
Begin test1
 
short var_1
long var_2
float var_3
; GameHour глобальная переменная типа float
 
set var_1 to 1
set var_2 to 2
set var_3 to 3
 
 
MessageBox "^PCName, у вас %g голов, %G рук, и %.5f золота. Можно сказать, что здесь в ^cell уже поздно. Сейчас ^GameHour часов, а точнее, %.2f часов!", var_1, var_2, var_3, GameHour
 
End